diff --git a/changelog b/changelog
index 6759e97..38e83c3 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20091219 tpd src/axiom-website/patches.html 20091219.02.tpd.patch
+20091219 tpd src/axiom-website/hyperdoc files added
 20091219 tpd src/axiom-website/patches.html 20091219.01.lxd.patch
 20091219 lxd books/bookvol7.1 fix typos
 20091219 lxd books/bookvol1 fix typos
diff --git a/src/axiom-website/hyperdoc/Makefile b/src/axiom-website/hyperdoc/Makefile
new file mode 100644
index 0000000..ed35f68
--- /dev/null
+++ b/src/axiom-website/hyperdoc/Makefile
@@ -0,0 +1,416 @@
+TANGLE=${AXIOM}/bin/lib/notangle
+
+%.xhtml: bookvol11.pamphlet
+	@ echo making $*.xhtml
+	@ ${TANGLE} -R"$*.xhtml" bookvol11.pamphlet > $*.xhtml
+
+PAGES=rootpage.xhtml \
+        commandline.xhtml \
+        basiccommand.xhtml \
+        tutorial.xhtml \
+        jenks.xhtml \
+          calculus.xhtml \
+            differentiate.xhtml \
+            indefiniteintegral.xhtml \
+            definiteintegral.xhtml \
+            basiclimit.xhtml \
+              reallimit.xhtml \
+              complexlimit.xhtml \
+              summation.xhtml \
+          bcmatrix.xhtml \
+          bcexpand.xhtml \
+          draw.xhtml \
+            draw2donevariable.xhtml \
+            draw2ddefinedcurve.xhtml \
+            draw2dpolynomialequation.xhtml \
+            draw3dtwovariable.xhtml \
+            draw3ddefinedtube.xhtml \
+            draw3ddefinedsurface.xhtml \
+          series.xhtml \
+            seriesexpand.xhtml \
+            taylorseries.xhtml \
+            laurentseries.xhtml \
+            puiseuxseries.xhtml \
+          solve.xhtml \
+            solvelinearequations.xhtml \
+            solvelinearmatrix.xhtml \
+            solvesystempolynomials.xhtml \
+            solvesinglepolynomial.xhtml \
+        topreferencepage.xhtml \
+          releasenotes.xhtml \
+          usersguidepage.xhtml \
+          aldorusersguidepage.xhtml \
+          foundationlibrarydocpage.xhtml \
+          topicspage.xhtml \
+            cats.xhtml \
+            dlmf.xhtml \
+            dlmfapproximations.xhtml \
+            dlmfasymptoticexpansions.xhtml \
+            dlmfbarnesgfunction.xhtml \
+            dlmfbetafunction.xhtml \
+            dlmfcontinuedfractions.xhtml \
+            dlmfdefinitions.xhtml \
+            dlmffunctionrelations.xhtml \
+            dlmfgraphics.xhtml \
+            dlmfinequalities.xhtml \
+            dlmfinfiniteproducts.xhtml \
+            dlmfintegrals.xhtml \
+            dlmfintegralrepresentations.xhtml \
+            dlmfmathematicalapplications.xhtml \
+            dlmfmethodsofcomputation.xhtml \
+            dlmfmultidimensionalintegral.xhtml \
+            dlmfnotation.xhtml \
+            dlmfphysicalapplications.xhtml \
+            dlmfpolygammafunctions.xhtml \
+            dlmfqgammaandbetafunctions.xhtml \
+            dlmfseriesexpansions.xhtml \
+            dlmfsums.xhtml \
+            dlmfsoftware.xhtml \
+            dlmfspecialvaluesandextrema.xhtml \
+            dlmftables.xhtml \
+          uglangpage.xhtml \
+          examplesexposedpage.xhtml \
+          ugsyscmdpage.xhtml \
+          operations.xhtml \
+          dblookup.xhtml \
+            dbcharacteristic.xhtml \
+              dbcomplexcomplex.xhtml \
+              dbcomplexconjugate.xhtml \
+              dbcomplexfactor.xhtml \
+              dbcompleximag.xhtml \
+              dbcomplexnorm.xhtml \
+              dbcomplexreal.xhtml \
+            dbcomplexdoublefloat.xhtml \
+            dbcomplexfloat.xhtml \
+            dbcomplexinteger.xhtml \
+            dbexpressioninteger.xhtml \
+            dbfractioninteger.xhtml \
+            dbfractionpolynomialinteger.xhtml \
+            dbopbinary.xhtml \
+            dbopacos.xhtml \
+            dbopacosh.xhtml \
+            dbopacot.xhtml \
+            dbopacoth.xhtml \
+            dbopacsc.xhtml \
+            dbopacsch.xhtml \
+            dbopaddmod.xhtml \
+            dbopairyai.xhtml \
+            dbopairybi.xhtml \
+            dbopapproximants.xhtml \
+            dbopasin.xhtml \
+            dbopasinh.xhtml \
+            dbopasec.xhtml \
+            dbopasech.xhtml \
+            dbopatan.xhtml \
+            dbopatanh.xhtml \
+            dbopbesseli.xhtml \
+            dbopbesselj.xhtml \
+            dbopbesselk.xhtml \
+            dbopbessely.xhtml \
+            dbopbeta.xhtml \
+            dbopcardinalnumber.xhtml \
+            dbopcoefficient.xhtml \
+            dbopcoefficients.xhtml \
+            dbopcoerce.xhtml \
+            dbopcolumn.xhtml \
+            dbopcompactfraction.xhtml \
+            dbopcomplexeigenvectors.xhtml \
+            dbopcomplexelementary.xhtml \
+            dbopcomplexintegrate.xhtml \
+            dbopcomplexlimit.xhtml \
+            dbopcomplexsolve.xhtml \
+            dbopcontent.xhtml \
+            dbopcontinuedfraction.xhtml \
+            dbopconvergents.xhtml \
+            dbopcopy.xhtml \
+            dbopcos.xhtml \
+            dbopcosh.xhtml \
+            dbopcot.xhtml \
+            dbopcoth.xhtml \
+            dbopcount.xhtml \
+            dbopcountableq.xhtml \
+            dbopcsc.xhtml \
+            dbopcsch.xhtml \
+            dbopcycleragits.xhtml \
+            dbopd.xhtml \
+            dbopdecimal.xhtml \
+            dbopdefiningpolynomial.xhtml \
+            dbopdegree.xhtml \
+            dbopdenom.xhtml \
+            dbopdeterminant.xhtml \
+            dbopdiagonalmatrix.xhtml \
+            dbopdigamma.xhtml \
+            dbopdigits.xhtml \
+            dbopdimension.xhtml \
+            dbopdivide.xhtml \
+            dbopeigenmatrix.xhtml \
+            dbopeigenvalues.xhtml \
+            dbopeigenvector.xhtml \
+            dbopeigenvectors.xhtml \
+            dbopelt.xhtml \
+            dbopeval.xhtml \
+            dbopevenq.xhtml \
+            dbopexp.xhtml \
+            dbopfactor.xhtml \
+            dbopfactorfraction.xhtml \
+            dbopfiniteq.xhtml \
+            dbopfirstdenom.xhtml \
+            dbopfirstnumer.xhtml \
+            dbopfractragits.xhtml \
+            dbopgamma.xhtml \
+            dbopgcd.xhtml \
+            dbophex.xhtml \
+            dbophorizconcat.xhtml \
+            dbophtrigs.xhtml \
+            dbophypergeometric0f1.xhtml \
+            dbopinteger.xhtml \
+            dbopintegrate.xhtml \
+            dbopinverse.xhtml \
+            dbopinvmod.xhtml \
+            dboplaurent.xhtml \
+            dboplcm.xhtml \
+            dbopleadingcoefficient.xhtml \
+            dbopleadingmonomial.xhtml \
+            dboplength.xhtml \
+            dboplimit.xhtml \
+            dboplog.xhtml \
+            dboploggamma.xhtml \
+            dbopmainvariable.xhtml \
+            dbopmap.xhtml \
+            dbopmapbang.xhtml \
+            dbopmatrix.xhtml \
+            dbopmax.xhtml \
+            dbopmemberq.xhtml \
+            dbopmin.xhtml \
+            dbopminimumdegree.xhtml \
+            dbopminus.xhtml \
+            dbopmonicdivide.xhtml \
+            dbopmulmod.xhtml \
+            dbopncols.xhtml \
+            dbopnew.xhtml \
+            dbopnorm.xhtml \
+            dbopnrows.xhtml \
+            dbopnthfractionalterm.xhtml \
+            dbopnthroot.xhtml \
+            dbopnullity.xhtml \
+            dbopnullspace.xhtml \
+            dbopnumberoffractionalterms.xhtml \
+            dbopnumer.xhtml \
+            dbopnumeric.xhtml \
+            dbopoperator.xhtml \
+            dboporthonormalbasis.xhtml \
+            dboppadicfraction.xhtml \
+            dboppartialfraction.xhtml \
+            dboppartialquotients.xhtml \
+            dboppattern.xhtml \
+            dboppermanent.xhtml \
+            dboppi.xhtml \
+            dbopplus.xhtml \
+            dboppolygamma.xhtml \
+            dboppositiveremainder.xhtml \
+            dbopprefixragits.xhtml \
+            dbopprimefactor.xhtml \
+            dboppuiseux.xhtml \
+            dbopqelt.xhtml \
+            dbopqseteltbang.xhtml \
+            dbopquatern.xhtml \
+            dbopquo.xhtml \
+            dbopradicaleigenvectors.xhtml \
+            dbopradicalsolve.xhtml \
+            dboprank.xhtml \
+            dbopratdenom.xhtml \
+            dboprealeigenvectors.xhtml \
+            dboprealelementary.xhtml \
+            dbopreduce.xhtml \
+            dbopreductum.xhtml \
+            dboprem.xhtml \
+            dbopresetvariableorder.xhtml \
+            dbopresultant.xhtml \
+            dboprootof.xhtml \
+            dboprootsimp.xhtml \
+            dboprootsof.xhtml \
+            dboprow.xhtml \
+            dboprowechelon.xhtml \
+            dbopsetcolumnbang.xhtml \
+            dbopsetelt.xhtml \
+            dbopseteltbang.xhtml \
+            dbopsetrowbang.xhtml \
+            dbopsetsubmatrixbang.xhtml \
+            dbopsimplify.xhtml\
+            dbopsec.xhtml \
+            dbopsech.xhtml \
+            dbopseries.xhtml \
+            dbopseriessolve.xhtml \
+            dbopsin.xhtml \
+            dbopsingleintegerand.xhtml \
+            dbopsingleintegernot.xhtml \
+            dbopsingleintegeror.xhtml \
+            dbopsingleintegerxor.xhtml \
+            dbopsinh.xhtml \
+            dbopsetvariableorder.xhtml \
+            dbopsolve.xhtml \
+            dbopsqrt.xhtml \
+            dbopstar.xhtml \
+            dbopstarstar.xhtml \
+            dbopsubmatrix.xhtml \
+            dbopsubmatrix.xhtml \
+            dbopsubmod.xhtml \
+            dboptan.xhtml \
+            dboptanh.xhtml \
+            dboptaylor.xhtml \
+            dboptimes.xhtml \
+            dboptotaldegree.xhtml \
+            dboptrace.xhtml \
+            dboptranspose.xhtml \
+            dboptrigs.xhtml \
+            dbopvariables.xhtml \
+            dbopvectorise.xhtml \
+            dbopvectorspace.xhtml \
+            dbopvertconcat.xhtml \
+            dbopwholepart.xhtml \
+            dbopwholeragits.xhtml \
+            dbopzeroof.xhtml \
+            dbopzerosof.xhtml \
+            dbpolynomialinteger.xhtml \
+            dbpolynomialfractioninteger.xhtml \
+          systemvariables.xhtml \
+          glossarypage.xhtml \
+          htxtoppage.xhtml \
+          refsearchpage.xhtml \
+        topicspage.xhtml \
+          numberspage.xhtml \
+            numintegers.xhtml \
+              numgeneralinfo.xhtml \
+              numfactorization.xhtml \
+              numfunctions.xhtml \
+              numexamples.xhtml \
+              numproblems.xhtml \
+            numfractions.xhtml \
+              numrationalnumbers.xhtml \
+              numquotientfields.xhtml \
+            nummachinefloats.xhtml \
+            numfloat.xhtml \
+            numcomplexnumbers.xhtml \
+            numfinitefields.xhtml \
+            numnumericfunctions.xhtml \
+            numcardinalnumbers.xhtml \
+            nummachinesizedintegers.xhtml \
+            numromannumerals.xhtml \
+            numcontinuedfractions.xhtml \
+            numpartialfractions.xhtml \
+            numquaternions.xhtml \
+            numoctonions.xhtml \
+            numrepeatingdecimals.xhtml \
+            numrepeatingbinaryexpansions.xhtml \
+            numrepeatinghexexpansions.xhtml \
+            numotherbases.xhtml \
+          polynomialpage.xhtml \
+            polybasicfunctions.xhtml \
+            polysubstitutions.xhtml \
+            polyfactorization.xhtml \
+              polyfactorization1.xhtml \
+              polyfactorization2.xhtml \
+              polyfactorization3.xhtml \
+              polyfactorization4.xhtml \
+            polygcdandfriends.xhtml \
+            polyroots.xhtml \
+              polyroots1.xhtml \
+              polyroots2.xhtml \
+              polyroots3.xhtml \
+              polyroots4.xhtml \
+            polyspecifictypes.xhtml \
+              polyspecifictypes1.xhtml \
+                factored.xhtml \
+              polyspecifictypes2.xhtml \
+              polyspecifictypes3.xhtml \
+              polyspecifictypes4.xhtml \
+          functionpage.xhtml \
+            funrationalfunctions.xhtml \
+            funalgebraicfunctions.xhtml \
+            funelementaryfunctions.xhtml \
+            funsimplification.xhtml \
+            funpatternmatching.xhtml \
+            funoperatoralgebra.xhtml \
+          equationpage.xhtml \
+            equsystemlinear.xhtml \
+            equdifferential.xhtml \
+              equdifferentiallinear.xhtml \
+              equdifferentialnonlinear.xhtml \
+              equdifferentialpowerseries.xhtml \
+          calculuspage.xhtml \
+            callimits.xhtml \
+            calderivatives.xhtml \
+            calintegrals.xhtml \
+            calmoreintegrals.xhtml \
+            callaplace.xhtml \
+            calseries.xhtml \
+              calseries1.xhtml \
+              calseries2.xhtml \
+              calseries3.xhtml \
+              calseries4.xhtml \
+              calseries5.xhtml \
+              calseries6.xhtml \
+              calseries7.xhtml \
+              calseries8.xhtml \
+          linalgpage.xhtml \
+            linintro.xhtml \
+            lincreate.xhtml \
+            linoperations.xhtml \
+            lineigen.xhtml \
+            linhilbert.xhtml \
+            linpermaent.xhtml \
+            linvectors.xhtml \
+            linsquarematrices.xhtml \
+            lin1darrays.xhtml \
+            lin2darrays.xhtml \
+            linconversion.xhtml \
+          graphicspage.xhtml \
+            graphexamples.xhtml \
+            graph2d.xhtml \
+            graph3d.xhtml \
+            graphviewports.xhtml \
+          algebrapage.xhtml \
+            algnumbertheory.xhtml \
+            alggrouptheory.xhtml \
+          cryptopage.xhtml \
+            cryptoclass1.xhtml \
+            cryptoclass2.xhtml \
+            cryptoclass3.xhtml \
+            cryptoclass4.xhtml \
+            cryptoclass5.xhtml \
+            cryptoclass6.xhtml \
+            cryptoclass7.xhtml \
+            cryptoclass8.xhtml \
+            cryptoclass9.xhtml \
+            cryptoclass10.xhtml \
+            cryptoclass11.xhtml \
+          ocwmit18085.xhtml \
+            ocwmit18085lecture1.xhtml \
+            ocwmit18085lecture2.xhtml \
+        man0page.xhtml \
+        topexamplepage.xhtml \
+        topsettingspage.xhtml \
+        axiomfonts.xhtml \
+        pagelist.xhtml \
+        pagematrix.xhtml \
+        pageonedimensionalarray.xhtml \
+        pagepermanent.xhtml \
+        pageset.xhtml \
+        pagesquarematrix.xhtml \
+        pagetable.xhtml \
+        pagetwodimensionalarray.xhtml \
+        pagevector.xhtml 
+
+
+all: ${PAGES}
+	@ mkdir -p bitmaps
+	@ ${TANGLE} -R"axiom1.bitmap" bookvol11.pamphlet >bitmaps/axiom1.bitmap
+	@ ${TANGLE} -R"rcm3720.input" bookvol11.pamphlet >rcm3720.input
+	@ ${TANGLE} -R"strang.input" bookvol11.pamphlet >strang.input
+	@ ${TANGLE} -R"signatures.txt" bookvol11.pamphlet >signatures.txt
+
+clean:
+	@ rm -rf bitmaps
+	@ rm -f *.xhtml
+	@ rm -f rcm3720.input
+	@ rm -f signatures.txt
diff --git a/src/axiom-website/hyperdoc/aldorusersguidepage.xhtml b/src/axiom-website/hyperdoc/aldorusersguidepage.xhtml
new file mode 100644
index 0000000..1cb3229
--- /dev/null
+++ b/src/axiom-website/hyperdoc/aldorusersguidepage.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+aldorusersguidepage not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/algebrapage.xhtml b/src/axiom-website/hyperdoc/algebrapage.xhtml
new file mode 100644
index 0000000..6f9bfdf
--- /dev/null
+++ b/src/axiom-website/hyperdoc/algebrapage.xhtml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+Axiom provides various facilities for treating topics in 
+abstract algebra
+  <table>
+   <tr>
+    <td>
+     <a href="algnumbertheory.xhtml">Number Theory</a>
+    </td>
+    <td>
+     Topics in algebraic number theory
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="alggrouptheory.xhtml">Group Theory</a>
+    </td>
+    <td>
+     Permuation groups; representation theory
+    </td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/alggrouptheory.xhtml b/src/axiom-website/hyperdoc/alggrouptheory.xhtml
new file mode 100644
index 0000000..e370056
--- /dev/null
+++ b/src/axiom-website/hyperdoc/alggrouptheory.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      alggrouptheory not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/algnumbertheory.xhtml b/src/axiom-website/hyperdoc/algnumbertheory.xhtml
new file mode 100644
index 0000000..77fe978
--- /dev/null
+++ b/src/axiom-website/hyperdoc/algnumbertheory.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      algnumbertheory not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/axbook.tgz b/src/axiom-website/hyperdoc/axbook.tgz
new file mode 100644
index 0000000..1f24460
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook.tgz differ
diff --git a/src/axiom-website/hyperdoc/axbook/book-contents.diff b/src/axiom-website/hyperdoc/axbook/book-contents.diff
new file mode 100644
index 0000000..670cdc1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/book-contents.diff
@@ -0,0 +1,158 @@
+--- /tmp/axbook/book-contents.xhtml	2007-10-08 16:32:41.000000000 -0400
++++ book-contents.xhtml	2007-10-03 16:07:31.000000000 -0400
+@@ -17,6 +17,7 @@
+ 
+   <body>
+ 
++<a name="chapter0"/>
+ <h3>Chapter 0: Introduction to Axiom</h3>
+ <a href="section-0.1.xhtml">0.1 Introduction to Axiom</a><br/>
+ <a href="section-0.1.xhtml#subsec-0.1.1" class="subseccontents">0.1.1 Symbolic Computation</a><br/>
+@@ -71,6 +72,7 @@
+ <a href="section-0.7.xhtml#subsubsec-0.7.5.2" class="subsubseccontents">0.7.5.2 The <span class="teletype">while</span> loop</a><br/>
+ <a href="section-0.7.xhtml#subsubsec-0.7.5.3" class="subsubseccontents">0.7.5.3 The <span class="teletype">for</span> loop</a><br/>
+ 
++<a name="chapter1"/>
+ <h3>Chapter 1: An Overview of Axiom</h3>
+ <a href="section-1.0.xhtml">1.0 An Overview of Axiom</a><br/>
+ <a href="section-1.1.xhtml">1.1 Starting Up and Winding Down</a><br/>
+@@ -101,6 +103,7 @@
+ <a href="section-1.15.xhtml#subsec-1.15.1" class="subseccontents">1.15.1 Undo</a><br/>
+ <a href="section-1.16.xhtml">1.16 Graphics</a><br/>
+ 
++<a name="chapter2"/>
+ <h3>Chapter 2: Using Types and Modes</h3>
+ <a href="section-2.0.xhtml">2.0 Using Types and Modes</a><br/>
+ <a href="section-2.1.xhtml">2.1 The Basic Idea</a><br/>
+@@ -124,6 +127,7 @@
+ <a href="section-2.11.xhtml">2.11 Exposing Domains and Packages</a><br/>
+ <a href="section-2.12.xhtml">2.12 Commands for Snooping</a><br/>
+ 
++<a name="chapter3"/>
+ <h3>Chapter 3: Using HyperDoc</h3>
+ <a href="section-3.0.xhtml">3.0 Using HyperDoc</a><br/>
+ <a href="section-3.1.xhtml">3.1 Headings</a><br/>
+@@ -136,6 +140,7 @@
+ <a href="section-3.7.xhtml">3.7 Example Pages</a><br/>
+ <a href="section-3.8.xhtml">3.8 X Window Resources for HyperDoc</a><br/>
+ 
++<a name="chapter4"/>
+ <h3>Chapter 4: Input Files and Output Styles</h3>
+ <a href="section-4.0.xhtml">4.0 Input Files and Output Styles</a><br/>
+ <a href="section-4.1.xhtml">4.1 Input Files</a><br/>
+@@ -146,6 +151,7 @@
+ <a href="section-4.6.xhtml">4.6 IBM Script Formula Format</a><br/>
+ <a href="section-4.7.xhtml">4.7 FORTRAN Format</a><br/>
+ 
++<a name="chapter5"/>
+ <h3>Chapter 5: Overview of Interactive Language</h3>
+ <a href="section-5.0.xhtml">5.0 Interactive Language</a><br/>
+ <a href="section-5.1.xhtml">5.1 Immediate and Delayed Assignments</a><br/>
+@@ -170,6 +176,7 @@
+ <a href="section-5.5.xhtml">5.5 Creating Lists and Streams with Iterators</a><br/>
+ <a href="section-5.6.xhtml">5.6 An Example: Streams of Primes</a><br/>
+ 
++<a name="chapter6"/>
+ <h3>Chapter 6: User-Defined Functions, Macros and Rules</h3>
+ <a href="section-6.0.xhtml">6.0 Functions, Macros and Rules</a><br/>
+ <a href="section-6.1.xhtml">6.1 Functions vs. Macros</a><br/>
+@@ -199,6 +206,7 @@
+ <a href="section-6.20.xhtml">6.20 Example: Testing for Palindromes</a><br/>
+ <a href="section-6.21.xhtml">6.21 Rules and Pattern Matching</a><br/>
+ 
++<a name="chapter7"/>
+ <h3>Chapter 7: Graphics</h3>
+ <a href="section-7.0.xhtml">7.0 Graphics</a><br/>
+ <a href="section-7.1.xhtml">7.1 Two-Dimensional Graphics</a><br/>
+@@ -238,6 +246,7 @@
+ <a href="section-7.2.xhtml#subsec-7.2.10" class="subseccontents">7.2.10 Operations for Three-Dimensional Graphics</a><br/>
+ <a href="section-7.2.xhtml#subsec-7.2.11" class="subseccontents">7.2.11 Customization using .Xdefaults</a><br/>
+ 
++<a name="chapter8"/>
+ <h3>Chapter 8: Advanced Problem Solving</h3>
+ <a href="section-8.0.xhtml">8.0 Advanced Problem Solving</a><br/>
+ <a href="section-8.1.xhtml">8.1 Numeric Functions</a><br/>
+@@ -282,6 +291,7 @@
+ <a href="section-8.13.xhtml">8.13 Computation of Galois Groups</a><br/>
+ <a href="section-8.14.xhtml">8.14 Non-Associative Algebras and Modelling Genetic Laws</a><br/>
+ 
++<a name="chapter9"/>
+ <h3>Chapter 9: Some Examples of Domains and Packages</h3>
+ <a href="section-9.1.xhtml">9.1 AssociationList</a><br/>
+ <a href="section-9.2.xhtml">9.2 BalancedBinaryTree</a><br/>
+@@ -418,6 +428,7 @@
+ <a href="section-9.90.xhtml">9.90 XPolynomialRing</a><br/>
+ <a href="section-9.91.xhtml">9.91 ZeroDimensionalSolvePackage</a><br/>
+ 
++<a name="chapter10"/>
+ <h3>Chapter 10: Interactive Programming</h3>
+ <a href="section-10.0.xhtml">10.0 Interactive Programming</a><br/>
+ <a href="section-10.1.xhtml">10.1 Drawing Ribbons Interactively</a><br/>
+@@ -431,6 +442,7 @@
+ <a href="section-10.9.xhtml">10.9 Functions Producing Functions</a><br/>
+ <a href="section-10.10.xhtml">10.10 Automatic Newton Iteration Formulas</a><br/>
+ 
++<a name="chapter11"/>
+ <h3>Chapter 11: Packages</h3>
+ <a href="section-11.0.xhtml">11.0 Packages</a><br/>
+ <a href="section-11.1.xhtml">11.1 Names, Abbreviations, and File Structure</a><br/>
+@@ -444,6 +456,7 @@
+ <a href="section-11.9.xhtml">11.9 Testing</a><br/>
+ <a href="section-11.10.xhtml">11.10 How Packages Work</a><br/>
+ 
++<a name="chapter12"/>
+ <h3>Chapter 12: Categories</h3>
+ <a href="section-12.0.xhtml">12.0 Categories</a><br/>
+ <a href="section-12.1.xhtml">12.1 Definitions</a><br/>
+@@ -459,6 +472,7 @@
+ <a href="section-12.11.xhtml">12.11 Conditionals</a><br/>
+ <a href="section-12.12.xhtml">12.12 Anonymous Categories</a><br/>
+ 
++<a name="chapter13"/>
+ <h3>Chapter 13: Domains</h3>
+ <a href="section-13.0.xhtml">13.0 Domains</a><br/>
+ <a href="section-13.1.xhtml">13.1 Domains vs. Packages</a><br/>
+@@ -483,6 +497,7 @@
+ <a href="section-13.13.xhtml#subsec-13.13.7" class="subseccontents">13.13.7 Putting It All Together</a><br/>
+ <a href="section-13.13.xhtml#subsec-13.13.8" class="subseccontents">13.13.8 Example Queries</a><br/>
+ 
++<a name="chapter14"/>
+ <h3>Chapter 14: Browse</h3>
+ <a href="section-14.0.xhtml">14.0 Browse</a><br/>
+ <a href="section-14.1.xhtml">14.1 The Front Page: Searching the Library</a><br/>
+@@ -540,6 +555,7 @@
+ <a href="section-14.3.xhtml#subsubsec-14.3.4.1" class="subsubseccontents">14.3.4.1 Exposure</a><br/>
+ <a href="section-14.3.xhtml#subsubsec-14.3.4.2" class="subsubseccontents">14.3.4.2 Threshold</a><br/>
+ 
++<a name="chapter15"/>
+ <h3>Chapter 15: What's New in Axiom Version 2.0</h3>
+ <a href="section-15.0.xhtml">15.0 Axiom Packages</a><br/>
+ <a href="section-15.1.xhtml">15.1 Important Things to Read First</a><br/>
+@@ -572,6 +588,7 @@
+ <a href="section-15.6.xhtml">15.6 HyperTex</a><br/>
+ <a href="section-15.7.xhtml">15.7 Documentation</a><br/>
+ 
++<a name="chapter16"/>
+ <h3>Chapter 16: Axiom System Commands</h3>
+ <a href="section-16.0.xhtml">16.0 Axiom System Commands</a><br/>
+ <a href="section-16.1.xhtml">16.1 Introduction</a><br/>
+@@ -603,15 +620,19 @@
+ <a href="section-16.27.xhtml">16.27 )undo</a><br/>
+ <a href="section-16.28.xhtml">16.28 )what</a><br/>
+ 
++<a name="chapter17"/>
+ <h3>Chapter 17: Categories</h3>
+ <a href="section-17.1.xhtml">17.1 Axiom Categories</a><br/>
+ 
++<a name="chapter18"/>
+ <h3>Chapter 18: Domains</h3>
+ <a href="section-18.1.xhtml">18.1 Axiom Domains</a><br/>
+ 
++<a name="chapter19"/>
+ <h3>Chapter 19: Packages</h3>
+ <a href="section-19.1.xhtml">19.1 Axiom Packages</a><br/>
+ 
++<a name="chapter21"/>
+ <h3>Chapter 21: Programs for AXIOM Images</h3>
+ <a href="section-21.0.xhtml">21.0 Programs for AXIOM Images</a><br/>
+ <a href="section-21.1.xhtml">21.1 images1.input</a><br/>
diff --git a/src/axiom-website/hyperdoc/axbook/book-contents.xhtml b/src/axiom-website/hyperdoc/axbook/book-contents.xhtml
new file mode 100644
index 0000000..a7935f6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/book-contents.xhtml
@@ -0,0 +1,653 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Axiom Book Contents</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+
+<a name="chapter0"/>
+<h3>Chapter 0: Introduction to Axiom</h3>
+<a href="section-0.1.xhtml">0.1 Introduction to Axiom</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.1" class="subseccontents">0.1.1 Symbolic Computation</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.2" class="subseccontents">0.1.2 Numeric Computation</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.3" class="subseccontents">0.1.3 Graphics</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.4" class="subseccontents">0.1.4 HyperDoc</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.5" class="subseccontents">0.1.5 Interactive Programming </a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.6" class="subseccontents">0.1.6 Data Structures</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.7" class="subseccontents">0.1.7 Mathematical Structures</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.8" class="subseccontents">0.1.8 Pattern Matching</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.9" class="subseccontents">0.1.9 Polymorphic Algorithms</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.10" class="subseccontents">0.1.10 Extensibility</a><br/>
+<a href="section-0.2.xhtml">0.2 A Technical Introduction</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.1" class="subseccontents">0.2.1 Types are Defined by Abstract Datatype Programs</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.2" class="subseccontents">0.2.2 The Type of Basic Objects is a Domain or Subdomain</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.3" class="subseccontents">0.2.3 Domains Have Types Called Categories</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.4" class="subseccontents">0.2.4 Operations Can Refer To Abstract Types</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.5" class="subseccontents">0.2.5 Categories Form Hierarchies</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.6" class="subseccontents">0.2.6 Domains Belong to Categories by Assertion</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.7" class="subseccontents">0.2.7 Packages Are Clusters of Polymorphic Operations</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.8" class="subseccontents">0.2.8 The Interpreter Builds Domains Dynamically</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.9" class="subseccontents">0.2.9 Axiom Code is Compiled</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.10" class="subseccontents">0.2.10 Axiom is Extensible</a><br/>
+<a href="section-0.3.xhtml">0.3 Using Axiom as a Pocket Calculator</a><br/>
+<a href="section-0.3.xhtml#subsec-0.3.1" class="subseccontents">0.3.1 Basic Arithmetic</a><br/>
+<a href="section-0.3.xhtml#subsec-0.3.2" class="subseccontents">0.3.2 Type Conversion</a><br/>
+<a href="section-0.3.xhtml#subsec-0.3.3" class="subseccontents">0.3.3 Useful Functions</a><br/>
+<a href="section-0.4.xhtml">0.4 Using Axiom as a Symbolic Calculator</a><br/>
+<a href="section-0.4.xhtml#subsec-0.4.1" class="subseccontents">0.4.1 Expressions Involving Symbols</a><br/>
+<a href="section-0.4.xhtml#subsec-0.4.2" class="subseccontents">0.4.2 Complex Numbers</a><br/>
+<a href="section-0.4.xhtml#subsec-0.4.3" class="subseccontents">0.4.3 Number Representations</a><br/>
+<a href="section-0.4.xhtml#subsec-0.4.4" class="subseccontents">0.4.4 Modular Arithmetic</a><br/>
+<a href="section-0.5.xhtml">0.5 General Points about Axiom</a><br/>
+<a href="section-0.5.xhtml#subsec-0.5.1" class="subseccontents">0.5.1 Computation Without Output</a><br/>
+<a href="section-0.5.xhtml#subsec-0.5.2" class="subseccontents">0.5.2 Accessing Earlier Results</a><br/>
+<a href="section-0.5.xhtml#subsec-0.5.3" class="subseccontents">0.5.3 Splitting Expressions Over Several Lines</a><br/>
+<a href="section-0.5.xhtml#subsec-0.5.4" class="subseccontents">0.5.4 Comments and Descriptions</a><br/>
+<a href="section-0.5.xhtml#subsec-0.5.5" class="subseccontents">0.5.5 Control of Result Types</a><br/>
+<a href="section-0.6.xhtml">0.6 Data Structures in Axiom</a><br/>
+<a href="section-0.6.xhtml#subsec-0.6.1" class="subseccontents">0.6.1 Lists</a><br/>
+<a href="section-0.6.xhtml#subsec-0.6.2" class="subseccontents">0.6.2 Segmented Lists</a><br/>
+<a href="section-0.6.xhtml#subsec-0.6.3" class="subseccontents">0.6.3 Streams</a><br/>
+<a href="section-0.6.xhtml#subsec-0.6.4" class="subseccontents">0.6.4 Arrays, Vectors, Strings, and Bits</a><br/>
+<a href="section-0.6.xhtml#subsec-0.6.5" class="subseccontents">0.6.5 Flexible Arrays</a><br/>
+<a href="section-0.7.xhtml">0.7 Functions, Choices, and Loops</a><br/>
+<a href="section-0.7.xhtml#subsec-0.7.1" class="subseccontents">0.7.1 Reading Code from a File</a><br/>
+<a href="section-0.7.xhtml#subsec-0.7.2" class="subseccontents">0.7.2 Blocks</a><br/>
+<a href="section-0.7.xhtml#subsec-0.7.3" class="subseccontents">0.7.3 Functions</a><br/>
+<a href="section-0.7.xhtml#subsec-0.7.4" class="subseccontents">0.7.4 Choices</a><br/>
+<a href="section-0.7.xhtml#subsec-0.7.5" class="subseccontents">0.7.5 Loops</a><br/>
+<a href="section-0.7.xhtml#subsubsec-0.7.5.1" class="subsubseccontents">0.7.5.1 The <span class="teletype">repeat</span> loop</a><br/>
+<a href="section-0.7.xhtml#subsubsec-0.7.5.2" class="subsubseccontents">0.7.5.2 The <span class="teletype">while</span> loop</a><br/>
+<a href="section-0.7.xhtml#subsubsec-0.7.5.3" class="subsubseccontents">0.7.5.3 The <span class="teletype">for</span> loop</a><br/>
+
+<a name="chapter1"/>
+<h3>Chapter 1: An Overview of Axiom</h3>
+<a href="section-1.0.xhtml">1.0 An Overview of Axiom</a><br/>
+<a href="section-1.1.xhtml">1.1 Starting Up and Winding Down</a><br/>
+<a href="section-1.1.xhtml#subsec-1.1.1" class="subseccontents">1.1.1 Clef</a><br/>
+<a href="section-1.2.xhtml">1.2 Typographic Conventions</a><br/>
+<a href="section-1.3.xhtml">1.3 The Axiom Language</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.1" class="subseccontents">1.3.1 Arithmetic Expressions</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.2" class="subseccontents">1.3.2 Previous Results</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.3" class="subseccontents">1.3.3 Some Types</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.4" class="subseccontents">1.3.4 Symbols, Variables, Assignments, and Declarations</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.5" class="subseccontents">1.3.5 Conversion</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.6" class="subseccontents">1.3.6 Calling Functions</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.7" class="subseccontents">1.3.7 Some Predefined Macros</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.8" class="subseccontents">1.3.8 Long Lines</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.9" class="subseccontents">1.3.9 Comments</a><br/>
+<a href="section-1.4.xhtml">1.4 Numbers</a><br/>
+<a href="section-1.5.xhtml">1.5 Data Structures</a><br/>
+<a href="section-1.6.xhtml">1.6 Expanding to Higher Dimensions</a><br/>
+<a href="section-1.7.xhtml">1.7 Writing Your Own Functions</a><br/>
+<a href="section-1.8.xhtml">1.8 Polynomials</a><br/>
+<a href="section-1.9.xhtml">1.9 Limits</a><br/>
+<a href="section-1.10.xhtml">1.10 Series</a><br/>
+<a href="section-1.11.xhtml">1.11 Derivatives</a><br/>
+<a href="section-1.12.xhtml">1.12 Integration</a><br/>
+<a href="section-1.13.xhtml">1.13 Differential Equations</a><br/>
+<a href="section-1.14.xhtml">1.14 Solution of Equations</a><br/>
+<a href="section-1.15.xhtml">1.15 System Commands</a><br/>
+<a href="section-1.15.xhtml#subsec-1.15.1" class="subseccontents">1.15.1 Undo</a><br/>
+<a href="section-1.16.xhtml">1.16 Graphics</a><br/>
+
+<a name="chapter2"/>
+<h3>Chapter 2: Using Types and Modes</h3>
+<a href="section-2.0.xhtml">2.0 Using Types and Modes</a><br/>
+<a href="section-2.1.xhtml">2.1 The Basic Idea</a><br/>
+<a href="section-2.1.xhtml#subsec-2.1.1" class="subseccontents">2.1.1 Domain Constructors</a><br/>
+<a href="section-2.2.xhtml">2.2 Writing Types and Modes</a><br/>
+<a href="section-2.2.xhtml#subsec-2.2.1" class="subseccontents">2.2.1 Types with No Arguments</a><br/>
+<a href="section-2.2.xhtml#subsec-2.2.2" class="subseccontents">2.2.2 Types with One Argument</a><br/>
+<a href="section-2.2.xhtml#subsec-2.2.3" class="subseccontents">2.2.3 Types with More Than One Argument</a><br/>
+<a href="section-2.2.xhtml#subsec-2.2.4" class="subseccontents">2.2.4 Modes</a><br/>
+<a href="section-2.2.xhtml#subsec-2.2.5" class="subseccontents">2.2.5 Abbreviations</a><br/>
+<a href="section-2.3.xhtml">2.3 Declarations</a><br/>
+<a href="section-2.4.xhtml">2.4 Records</a><br/>
+<a href="section-2.5.xhtml">2.5 Unions</a><br/>
+<a href="section-2.5.xhtml#subsec-2.5.1" class="subseccontents">2.5.1 Unions Without Selectors</a><br/>
+<a href="section-2.5.xhtml#subsec-2.5.2" class="subseccontents">2.5.2 Unions With Selectors</a><br/>
+<a href="section-2.6.xhtml">2.6 The ``Any'' Domain</a><br/>
+<a href="section-2.7.xhtml">2.7 Conversion</a><br/>
+<a href="section-2.8.xhtml">2.8 Subdomains Again</a><br/>
+<a href="section-2.9.xhtml">2.9 Package Calling and Target Types</a><br/>
+<a href="section-2.10.xhtml">2.10 Resolving Types</a><br/>
+<a href="section-2.11.xhtml">2.11 Exposing Domains and Packages</a><br/>
+<a href="section-2.12.xhtml">2.12 Commands for Snooping</a><br/>
+
+<a name="chapter3"/>
+<h3>Chapter 3: Using HyperDoc</h3>
+<a href="section-3.0.xhtml">3.0 Using HyperDoc</a><br/>
+<a href="section-3.1.xhtml">3.1 Headings</a><br/>
+<a href="section-3.2.xhtml">3.2 Key Definitions</a><br/>
+<a href="section-3.3.xhtml">3.3 Scroll Bars</a><br/>
+<a href="section-3.4.xhtml">3.4 Input Areas</a><br/>
+<a href="section-3.5.xhtml">3.5 Radio Buttons and Toggles</a><br/>
+<a href="section-3.6.xhtml">3.6 Search Strings</a><br/>
+<a href="section-3.6.xhtml#subsec-3.6.1" class="subseccontents">3.6.1 Logical Searches</a><br/>
+<a href="section-3.7.xhtml">3.7 Example Pages</a><br/>
+<a href="section-3.8.xhtml">3.8 X Window Resources for HyperDoc</a><br/>
+
+<a name="chapter4"/>
+<h3>Chapter 4: Input Files and Output Styles</h3>
+<a href="section-4.0.xhtml">4.0 Input Files and Output Styles</a><br/>
+<a href="section-4.1.xhtml">4.1 Input Files</a><br/>
+<a href="section-4.2.xhtml">4.2 The .axiom.input File</a><br/>
+<a href="section-4.3.xhtml">4.3 Common Features of Using Output Formats</a><br/>
+<a href="section-4.4.xhtml">4.4 Monospace Two-Dimensional Mathematical Format</a><br/>
+<a href="section-4.5.xhtml">4.5 TeX Format</a><br/>
+<a href="section-4.6.xhtml">4.6 IBM Script Formula Format</a><br/>
+<a href="section-4.7.xhtml">4.7 FORTRAN Format</a><br/>
+
+<a name="chapter5"/>
+<h3>Chapter 5: Overview of Interactive Language</h3>
+<a href="section-5.0.xhtml">5.0 Interactive Language</a><br/>
+<a href="section-5.1.xhtml">5.1 Immediate and Delayed Assignments</a><br/>
+<a href="section-5.2.xhtml">5.2 Blocks</a><br/>
+<a href="section-5.3.xhtml">5.3 if-then-else</a><br/>
+<a href="section-5.4.xhtml">5.4 Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.1" class="subseccontents">5.4.1 Compiling vs. Interpreting Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.2" class="subseccontents">5.4.2 return in Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.3" class="subseccontents">5.4.3 break in Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.4" class="subseccontents">5.4.4 break vs. <span class="teletype">=></span> in Loop Bodies</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.5" class="subseccontents">5.4.5 More Examples of break</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.6" class="subseccontents">5.4.6 iterate in Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.7" class="subseccontents">5.4.7 while Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.8" class="subseccontents">5.4.8 for Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.9" class="subseccontents">5.4.9 for i in n..m repeat</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.10" class="subseccontents">5.4.10 for i in n..m by s repeat</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.11" class="subseccontents">5.4.11 for i in n.. repeat</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.12" class="subseccontents">5.4.12 for x in l repeat</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.13" class="subseccontents">5.4.13 ``Such that'' Predicates</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.14" class="subseccontents">5.4.14 Parallel Iteration</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.15" class="subseccontents">5.4.15 Mixing Loop Modifiers</a><br/>
+<a href="section-5.5.xhtml">5.5 Creating Lists and Streams with Iterators</a><br/>
+<a href="section-5.6.xhtml">5.6 An Example: Streams of Primes</a><br/>
+
+<a name="chapter6"/>
+<h3>Chapter 6: User-Defined Functions, Macros and Rules</h3>
+<a href="section-6.0.xhtml">6.0 Functions, Macros and Rules</a><br/>
+<a href="section-6.1.xhtml">6.1 Functions vs. Macros</a><br/>
+<a href="section-6.2.xhtml">6.2 Macros</a><br/>
+<a href="section-6.3.xhtml">6.3 Introduction to Functions</a><br/>
+<a href="section-6.4.xhtml">6.4 Declaring the Type of Functions</a><br/>
+<a href="section-6.5.xhtml">6.5 One-Line Functions</a><br/>
+<a href="section-6.6.xhtml">6.6 Declared vs. Undeclared Functions</a><br/>
+<a href="section-6.7.xhtml">6.7 Functions vs. Operations</a><br/>
+<a href="section-6.8.xhtml">6.8 Delayed Assignments vs. Functions with No Arguments</a><br/>
+<a href="section-6.9.xhtml">6.9 How Axiom Determines What Function to Use</a><br/>
+<a href="section-6.10.xhtml">6.10 Compiling vs. Interpreting</a><br/>
+<a href="section-6.11.xhtml">6.11 Piece-Wise Function Definitions</a><br/>
+<a href="section-6.11.xhtml#subsec-6.11.1" class="subseccontents">6.11.1 A Basic Example</a><br/>
+<a href="section-6.11.xhtml#subsec-6.11.2" class="subseccontents">6.11.2 Picking Up the Pieces</a><br/>
+<a href="section-6.11.xhtml#subsec-6.11.3" class="subseccontents">6.11.3 Predicates</a><br/>
+<a href="section-6.12.xhtml">6.12 Caching Previously Computed Results</a><br/>
+<a href="section-6.13.xhtml">6.13 Recurrence Relations</a><br/>
+<a href="section-6.14.xhtml">6.14 Making Functions from Objects</a><br/>
+<a href="section-6.15.xhtml">6.15 Functions Defined with Blocks</a><br/>
+<a href="section-6.16.xhtml">6.16 Free and Local Variables</a><br/>
+<a href="section-6.17.xhtml">6.17 Anonymous Functions</a><br/>
+<a href="section-6.17.xhtml#subsec-6.17.1" class="subseccontents">6.17.1 Some Examples</a><br/>
+<a href="section-6.17.xhtml#subsec-6.17.2" class="subseccontents">6.17.2 Declaring Anonymous Functions</a><br/>
+<a href="section-6.18.xhtml">6.18 Example: A Database</a><br/>
+<a href="section-6.19.xhtml">6.19 Example: A Famous Triangle</a><br/>
+<a href="section-6.20.xhtml">6.20 Example: Testing for Palindromes</a><br/>
+<a href="section-6.21.xhtml">6.21 Rules and Pattern Matching</a><br/>
+
+<a name="chapter7"/>
+<h3>Chapter 7: Graphics</h3>
+<a href="section-7.0.xhtml">7.0 Graphics</a><br/>
+<a href="section-7.1.xhtml">7.1 Two-Dimensional Graphics</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.1" class="subseccontents">7.1.1 Plotting Two-Dimensional Functions of One Variable</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.2" class="subseccontents">7.1.2 Plotting Two-Dimensional Parametric Plane Curves</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.3" class="subseccontents">7.1.3 Plotting Plane Algebraic Curves</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.4" class="subseccontents">7.1.4 Two-Dimensional Options</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.5" class="subseccontents">7.1.5 Color</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.6" class="subseccontents">7.1.6 Palette</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.7" class="subseccontents">7.1.7 Two-Dimensional Control-Panel</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.7.1" class="subsubseccontents">7.1.7.1 Transformations</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.7.2" class="subsubseccontents">7.1.7.2 Messages</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.7.3" class="subsubseccontents">7.1.7.3 Multiple Graphs</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.7.4" class="subsubseccontents">7.1.7.4 Buttons</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.8" class="subseccontents">7.1.8 Operations for Two-Dimensional Graphics</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.9" class="subseccontents">7.1.9 Addendum: Building Two-Dimensional Graphs</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.9.1" class="subsubseccontents">7.1.9.1 Creating a Two-Dimensional Viewport from a List of Points</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.9.2" class="subsubseccontents">7.1.9.2 Creating a Two-Dimensional Viewport of a List of Points from a File</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.10" class="subseccontents">7.1.10 Addendum: Appending a Graph to a Viewport Window Containing a Graph</a><br/>
+<a href="section-7.2.xhtml">7.2 Three-Dimensional Graphics</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.1" class="subseccontents">7.2.1 Plotting Three-Dimensional Functions of Two Variables</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.2" class="subseccontents">7.2.2 Plotting Three-Dimensional Parametric Space Curves</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.3" class="subseccontents">7.2.3 Plotting Three-Dimensional Parametric Surfaces</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.4" class="subseccontents">7.2.4 Three-Dimensional Options</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.5" class="subseccontents">7.2.5 The makeObject Command</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.6" class="subseccontents">7.2.6 Building Three-Dimensional Objects From Primitives</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.6.1" class="subsubseccontents">7.2.6.1 Cube Example</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.7" class="subseccontents">7.2.7 Coordinate System Transformations</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.8" class="subseccontents">7.2.8 Three-Dimensional Clipping</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.9" class="subseccontents">7.2.9 Three-Dimensional Control-Panel</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.1" class="subsubseccontents">7.2.9.1 Transformations</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.2" class="subsubseccontents">7.2.9.2 Messages</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.3" class="subsubseccontents">7.2.9.3 Colormap</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.4" class="subsubseccontents">7.2.9.4 Buttons</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.5" class="subsubseccontents">7.2.9.5 Light</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.6" class="subsubseccontents">7.2.9.6 View Volume</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.10" class="subseccontents">7.2.10 Operations for Three-Dimensional Graphics</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.11" class="subseccontents">7.2.11 Customization using .Xdefaults</a><br/>
+
+<a name="chapter8"/>
+<h3>Chapter 8: Advanced Problem Solving</h3>
+<a href="section-8.0.xhtml">8.0 Advanced Problem Solving</a><br/>
+<a href="section-8.1.xhtml">8.1 Numeric Functions</a><br/>
+<a href="section-8.2.xhtml">8.2 Polynomial Factorization</a><br/>
+<a href="section-8.2.xhtml#subsec-8.2.1" class="subseccontents">8.2.1 Integer and Rational Number Coefficients</a><br/>
+<a href="section-8.2.xhtml#subsec-8.2.2" class="subseccontents">8.2.2 Finite Field Coefficients</a><br/>
+<a href="section-8.2.xhtml#subsec-8.2.3" class="subseccontents">8.2.3 Simple Algebraic Extension Field Coefficients</a><br/>
+<a href="section-8.2.xhtml#subsec-8.2.4" class="subseccontents">8.2.4 Factoring Rational Functions</a><br/>
+<a href="section-8.3.xhtml">8.3 Manipulating Symbolic Roots of a Polynomial</a><br/>
+<a href="section-8.3.xhtml#subsec-8.3.1" class="subseccontents">8.3.1 Using a Single Root of a Polynomial</a><br/>
+<a href="section-8.3.xhtml#subsec-8.3.2" class="subseccontents">8.3.2 Using All Roots of a Polynomial</a><br/>
+<a href="section-8.4.xhtml">8.4 Computation of Eigenvalues and Eigenvectors</a><br/>
+<a href="section-8.5.xhtml">8.5 Solution of Linear and Polynomial Equations</a><br/>
+<a href="section-8.5.xhtml#subsec-8.5.1" class="subseccontents">8.5.1 Solution of Systems of Linear Equations</a><br/>
+<a href="section-8.5.xhtml#subsec-8.5.2" class="subseccontents">8.5.2 Solution of a Single Polynomial Equation</a><br/>
+<a href="section-8.5.xhtml#subsec-8.5.3" class="subseccontents">8.5.3 Solution of Systems of Polynomial Equations</a><br/>
+<a href="section-8.6.xhtml">8.6 Limits</a><br/>
+<a href="section-8.7.xhtml">8.7 Laplace Transforms</a><br/>
+<a href="section-8.8.xhtml">8.8 Integration</a><br/>
+<a href="section-8.9.xhtml">8.9 Working with Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.1" class="subseccontents">8.9.1 Creation of Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.2" class="subseccontents">8.9.2 Coefficients of Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.3" class="subseccontents">8.9.3 Power Series Arithmetic</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.4" class="subseccontents">8.9.4 Functions on Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.5" class="subseccontents">8.9.5 Converting to Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.6" class="subseccontents">8.9.6 Power Series from Formulas</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.7" class="subseccontents">8.9.7 Substituting Numerical Values in Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.8" class="subseccontents">8.9.8 Example: Bernoulli Polynomials and Sums of Powers</a><br/>
+<a href="section-8.10.xhtml">8.10 Solution of Differential Equations</a><br/>
+<a href="section-8.10.xhtml#subsec-8.10.1" class="subseccontents">8.10.1 Closed-Form Solutions of Linear Differential Equations</a><br/>
+<a href="section-8.10.xhtml#subsec-8.10.2" class="subseccontents">8.10.2 Closed-Form Solutions of Non-Linear Differential Equations</a><br/>
+<a href="section-8.10.xhtml#subsec-8.10.3" class="subseccontents">8.10.3 Power Series Solutions of Differential Equations</a><br/>
+<a href="section-8.11.xhtml">8.11 Finite Fields</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.1" class="subseccontents">8.11.1 Modular Arithmetic and Prime Fields</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.2" class="subseccontents">8.11.2 Extensions of Finite Fields</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.3" class="subseccontents">8.11.3 Irreducible Modulus Polynomial Representations</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.4" class="subseccontents">8.11.4 Cyclic Group Representations</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.5" class="subseccontents">8.11.5 Normal Basis Representations</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.6" class="subseccontents">8.11.6 Conversion Operations for Finite Fields</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.7" class="subseccontents">8.11.7 Utility Operations for Finite Fields</a><br/>
+<a href="section-8.12.xhtml">8.12 Primary Decomposition of Ideals</a><br/>
+<a href="section-8.13.xhtml">8.13 Computation of Galois Groups</a><br/>
+<a href="section-8.14.xhtml">8.14 Non-Associative Algebras and Modelling Genetic Laws</a><br/>
+
+<a name="chapter9"/>
+<h3>Chapter 9: Some Examples of Domains and Packages</h3>
+<a href="section-9.1.xhtml">9.1 AssociationList</a><br/>
+<a href="section-9.2.xhtml">9.2 BalancedBinaryTree</a><br/>
+<a href="section-9.3.xhtml">9.3 BasicOperator</a><br/>
+<a href="section-9.4.xhtml">9.4 BinaryExpansion</a><br/>
+<a href="section-9.5.xhtml">9.5 BinarySearchTree</a><br/>
+<a href="section-9.6.xhtml">9.6 CardinalNumber</a><br/>
+<a href="section-9.7.xhtml">9.7 CartesianTensor</a><br/>
+<a href="section-9.7.xhtml#subsec-7.1" class="subseccontents">7.1 Forming tensors</a><br/>
+<a href="section-9.7.xhtml#subsec-7.2" class="subseccontents">7.2 Multiplication</a><br/>
+<a href="section-9.7.xhtml#subsec-7.3" class="subseccontents">7.3 Selecting Components</a><br/>
+<a href="section-9.7.xhtml#subsec-7.4" class="subseccontents">7.4 Contraction</a><br/>
+<a href="section-9.7.xhtml#subsec-7.5" class="subseccontents">7.5 Transpositions</a><br/>
+<a href="section-9.7.xhtml#subsec-7.6" class="subseccontents">7.6 Arithmetic</a><br/>
+<a href="section-9.7.xhtml#subsec-7.7" class="subseccontents">7.7 Specific Tensors</a><br/>
+<a href="section-9.7.xhtml#subsec-7.8" class="subseccontents">7.8 Properties of the CartesianTensor domain</a><br/>
+<a href="section-9.7.xhtml#subsec-7.9" class="subseccontents">7.9 Tensor Calculus</a><br/>
+<a href="section-9.8.xhtml">9.8 Character</a><br/>
+<a href="section-9.9.xhtml">9.9 CharacterClass</a><br/>
+<a href="section-9.10.xhtml">9.10 CliffordAlgebra</a><br/>
+<a href="section-9.10.xhtml#subsec-9.10.1" class="subseccontents">9.10.1 The Complex Numbers as a Clifford Algebra</a><br/>
+<a href="section-9.10.xhtml#subsec-9.10.2" class="subseccontents">9.10.2 The Quaternion Numbers as a Clifford Algebra</a><br/>
+<a href="section-9.10.xhtml#subsec-9.10.3" class="subseccontents">9.10.3 The Exterior Algebra on a Three Space</a><br/>
+<a href="section-9.10.xhtml#subsec-9.10.4" class="subseccontents">9.10.4 The Dirac Spin Algebra</a><br/>
+<a href="section-9.11.xhtml">9.11 Complex</a><br/>
+<a href="section-9.12.xhtml">9.12 ContinuedFraction</a><br/>
+
+<a href="section-9.13.xhtml">9.13 CycleIndicators</a><br/>
+<a href="section-9.14.xhtml">9.14 DeRhamComplex</a><br/>
+<a href="section-9.15.xhtml">9.15 DecimalExpansion</a><br/>
+<a href="section-9.16.xhtml">9.16 DistributedMultivariatePolynomial</a><br/>
+<a href="section-9.17.xhtml">9.17 DoubleFloat</a><br/>
+<a href="section-9.18.xhtml">9.18 EqTable</a><br/>
+<a href="section-9.19.xhtml">9.19 Equation</a><br/>
+<a href="section-9.20.xhtml">9.20 Exit</a><br/>
+<a href="section-9.21.xhtml">9.21 Expression</a><br/>
+<a href="section-9.22.xhtml">9.22 Factored</a><br/>
+<a href="section-9.22.xhtml#subsec-9.22.1" class="subseccontents">9.22.1 Decomposing Factored Objects</a><br/>
+<a href="section-9.22.xhtml#subsec-9.22.2" class="subseccontents">9.22.2 Expanding Factored Objects</a><br/>
+<a href="section-9.22.xhtml#subsec-9.22.3" class="subseccontents">9.22.3 Arithmetic with Factored Objects</a><br/>
+<a href="section-9.22.xhtml#subsec-9.22.4" class="subseccontents">9.22.4 Creating New Factored Objects</a><br/>
+<a href="section-9.22.xhtml#subsec-9.22.5" class="subseccontents">9.22.5 Factored Objects with Variables</a><br/>
+<a href="section-9.23.xhtml">9.23 FactoredFunctions2</a><br/>
+<a href="section-9.24.xhtml">9.24 File</a><br/>
+<a href="section-9.25.xhtml">9.25 FileName</a><br/>
+<a href="section-9.26.xhtml">9.26 FlexibleArray</a><br/>
+
+<a href="section-9.27.xhtml">9.27 Float</a><br/>
+<a href="section-9.27.xhtml#subsec-9.27.1" class="subseccontents">9.27.1 Introduction to Float</a><br/>
+<a href="section-9.27.xhtml#subsec-9.27.2" class="subseccontents">9.27.2 Conversion Functions</a><br/>
+<a href="section-9.27.xhtml#subsec-9.27.3" class="subseccontents">9.27.3 Output Functions</a><br/>
+<a href="section-9.27.xhtml#subsec-9.27.4" class="subseccontents">9.27.4 An Example: Determinant of a Hilbert Matrix</a><br/>
+<a href="section-9.28.xhtml">9.28 Fraction</a><br/>
+<a href="section-9.29.xhtml">9.29 FullPartialFractionExpansion</a><br/>
+<a href="section-9.30.xhtml">9.30 GeneralSparseTable</a><br/>
+<a href="section-9.31.xhtml">9.31 GroebnerFactorizationPackage</a><br/>
+<a href="section-9.32.xhtml">9.32 Heap</a><br/>
+<a href="section-9.33.xhtml">9.33 HexadecimalExpansion</a><br/>
+<a href="section-9.34.xhtml">9.34 Integer</a><br/>
+<a href="section-9.34.xhtml#subsec-9.34.1" class="subseccontents">9.34.1 Basic Functions</a><br/>
+<a href="section-9.34.xhtml#subsec-9.34.2" class="subseccontents">9.34.2 Primes and Factorization</a><br/>
+<a href="section-9.34.xhtml#subsec-9.34.3" class="subseccontents">9.34.3 Some Number Theoretic Functions</a><br/>
+<a href="section-9.35.xhtml">9.35 IntegerLinearDependence</a><br/>
+<a href="section-9.36.xhtml">9.36 IntegerNumberTheoryFunctions</a><br/>
+<a href="section-9.37.xhtml">9.37 Kernel</a><br/>
+
+<a href="section-9.38.xhtml">9.38 KeyedAccessFile</a><br/>
+<a href="section-9.39.xhtml">9.39 LexTriangularPackage</a><br/>
+<a href="section-9.40.xhtml">9.40 LazardSetSolvingPackage</a><br/>
+<a href="section-9.41.xhtml">9.41 Library</a><br/>
+<a href="section-9.42.xhtml">9.42 LieExponentials</a><br/>
+<a href="section-9.43.xhtml">9.43 LiePolynomial</a><br/>
+<a href="section-9.44.xhtml">9.44 LinearOrdinaryDifferentialOperator</a><br/>
+<a href="section-9.44.xhtml#subsec-9.44.1" class="subseccontents">9.44.1 Differential Operators with Series Coefficients</a><br/>
+
+<a href="section-9.45.xhtml">9.45 LinearOrdinaryDifferentialOperator1</a><br/>
+<a href="section-9.45.xhtml#subsec-9.45.1" class="subseccontents">9.45.1 Differential Operators with Rational Function Coefficients</a><br/>
+<a href="section-9.46.xhtml">9.46 LinearOrdinaryDifferentialOperator2</a><br/>
+<a href="section-9.46.xhtml#subsec-9.46.1" class="subseccontents">9.46.1 Differential Operators with Constant Coefficients</a><br/>
+<a href="section-9.46.xhtml#subsec-9.46.2" class="subseccontents">9.46.2 Differential Operators with Matrix Coefficients Operating on Vectors</a><br/>
+<a href="section-9.47.xhtml">9.47 List</a><br/>
+<a href="section-9.47.xhtml#subsec-9.47.1" class="subseccontents">9.47.1 Creating Lists</a><br/>
+<a href="section-9.47.xhtml#subsec-9.47.2" class="subseccontents">9.47.2 Accessing List Elements</a><br/>
+<a href="section-9.47.xhtml#subsec-9.47.3" class="subseccontents">9.47.3 Changing List Elements</a><br/>
+<a href="section-9.47.xhtml#subsec-9.47.4" class="subseccontents">9.47.4 Other Functions</a><br/>
+<a href="section-9.47.xhtml#subsec-9.47.5" class="subseccontents">9.47.5 Dot, Dot</a><br/>
+<a href="section-9.48.xhtml">9.48 LyndonWord</a><br/>
+<a href="section-9.49.xhtml">9.49 Magma</a><br/>
+<a href="section-9.50.xhtml">9.50 MakeFunction</a><br/>
+<a href="section-9.51.xhtml">9.51 MappingPackage1</a><br/>
+<a href="section-9.52.xhtml">9.52 Matrix</a><br/>
+<a href="section-9.52.xhtml#subsec-9.52.1" class="subseccontents">9.52.1 Creating Matrices</a><br/>
+<a href="section-9.52.xhtml#subsec-9.52.2" class="subseccontents">9.52.2 Operations on Matrices</a><br/>
+<a href="section-9.53.xhtml">9.53 MultiSet</a><br/>
+<a href="section-9.54.xhtml">9.54 MultivariatePolynomial</a><br/>
+<a href="section-9.55.xhtml">9.55 None</a><br/>
+<a href="section-9.56.xhtml">9.56 Octonion</a><br/>
+<a href="section-9.57.xhtml">9.57 OneDimensionalArray</a><br/>
+
+<a href="section-9.58.xhtml">9.58 Operator</a><br/>
+<a href="section-9.59.xhtml">9.59 OrderedVariableList</a><br/>
+<a href="section-9.60.xhtml">9.60 OrderlyDifferentialPolynomial</a><br/>
+<a href="section-9.61.xhtml">9.61 PartialFraction</a><br/>
+<a href="section-9.62.xhtml">9.62 Permanent</a><br/>
+<a href="section-9.63.xhtml">9.63 Polynomial</a><br/>
+<a href="section-9.64.xhtml">9.64 Quaternion</a><br/>
+<a href="section-9.65.xhtml">9.65 RadixExpansion</a><br/>
+<a href="section-9.66.xhtml">9.66 RealClosure</a><br/>
+<a href="section-9.67.xhtml">9.67 RegularTriangularSet</a><br/>
+<a href="section-9.68.xhtml">9.68 RomanNumeral</a><br/>
+
+<a href="section-9.69.xhtml">9.69 Segment</a><br/>
+<a href="section-9.70.xhtml">9.70 SegmentBinding</a><br/>
+<a href="section-9.71.xhtml">9.71 Set</a><br/>
+<a href="section-9.72.xhtml">9.72 SingleInteger</a><br/>
+<a href="section-9.73.xhtml">9.73 SparseTable</a><br/>
+<a href="section-9.74.xhtml">9.74 SquareMatrix</a><br/>
+<a href="section-9.75.xhtml">9.75 SquareFreeRegularTriangularSet</a><br/>
+<a href="section-9.76.xhtml">9.76 Stream</a><br/>
+<a href="section-9.77.xhtml">9.77 String</a><br/>
+<a href="section-9.78.xhtml">9.78 StringTable</a><br/>
+<a href="section-9.79.xhtml">9.79 Symbol</a><br/>
+<a href="section-9.80.xhtml">9.80 Table</a><br/>
+<a href="section-9.81.xhtml">9.81 TextFile</a><br/>
+<a href="section-9.82.xhtml">9.82 TwoDimensionalArray</a><br/>
+
+<a href="section-9.83.xhtml">9.83 UnivariatePolynomial</a><br/>
+<a href="section-9.84.xhtml">9.84 UniversalSegment</a><br/>
+<a href="section-9.85.xhtml">9.85 Vector</a><br/>
+<a href="section-9.86.xhtml">9.86 Void</a><br/>
+<a href="section-9.87.xhtml">9.87 WuWenTsunTriangularSet</a><br/>
+<a href="section-9.88.xhtml">9.88 XPBWPolynomial</a><br/>
+<a href="section-9.89.xhtml">9.89 XPolynomial</a><br/>
+<a href="section-9.90.xhtml">9.90 XPolynomialRing</a><br/>
+<a href="section-9.91.xhtml">9.91 ZeroDimensionalSolvePackage</a><br/>
+
+<a name="chapter10"/>
+<h3>Chapter 10: Interactive Programming</h3>
+<a href="section-10.0.xhtml">10.0 Interactive Programming</a><br/>
+<a href="section-10.1.xhtml">10.1 Drawing Ribbons Interactively</a><br/>
+<a href="section-10.2.xhtml">10.2 A Ribbon Program</a><br/>
+<a href="section-10.3.xhtml">10.3 Coloring and Positioning Ribbons</a><br/>
+<a href="section-10.4.xhtml">10.4 Points, Lines, and Curves</a><br/>
+<a href="section-10.5.xhtml">10.5 A Bouquet of Arrows</a><br/>
+<a href="section-10.6.xhtml">10.6 Diversion: When Things Go Wrong</a><br/>
+<a href="section-10.7.xhtml">10.7 Drawing Complex Vector Fields</a><br/>
+<a href="section-10.8.xhtml">10.8 Drawing Complex Functions</a><br/>
+<a href="section-10.9.xhtml">10.9 Functions Producing Functions</a><br/>
+<a href="section-10.10.xhtml">10.10 Automatic Newton Iteration Formulas</a><br/>
+
+<a name="chapter11"/>
+<h3>Chapter 11: Packages</h3>
+<a href="section-11.0.xhtml">11.0 Packages</a><br/>
+<a href="section-11.1.xhtml">11.1 Names, Abbreviations, and File Structure</a><br/>
+<a href="section-11.2.xhtml">11.2 Syntax</a><br/>
+<a href="section-11.3.xhtml">11.3 Abstract Datatypes</a><br/>
+<a href="section-11.4.xhtml">11.4 Capsules</a><br/>
+<a href="section-11.5.xhtml">11.5 Input Files vs. Packages</a><br/>
+<a href="section-11.6.xhtml">11.6 Compiling Packages</a><br/>
+<a href="section-11.7.xhtml">11.7 Parameters</a><br/>
+<a href="section-11.8.xhtml">11.8 Conditionals</a><br/>
+<a href="section-11.9.xhtml">11.9 Testing</a><br/>
+<a href="section-11.10.xhtml">11.10 How Packages Work</a><br/>
+
+<a name="chapter12"/>
+<h3>Chapter 12: Categories</h3>
+<a href="section-12.0.xhtml">12.0 Categories</a><br/>
+<a href="section-12.1.xhtml">12.1 Definitions</a><br/>
+<a href="section-12.2.xhtml">12.2 Exports</a><br/>
+<a href="section-12.3.xhtml">12.3 Documentation</a><br/>
+<a href="section-12.4.xhtml">12.4 Hierarchies</a><br/>
+<a href="section-12.5.xhtml">12.5 Membership</a><br/>
+<a href="section-12.6.xhtml">12.6 Defaults</a><br/>
+<a href="section-12.7.xhtml">12.7 Axioms</a><br/>
+<a href="section-12.8.xhtml">12.8 Correctness</a><br/>
+<a href="section-12.9.xhtml">12.9 Attributes</a><br/>
+<a href="section-12.10.xhtml">12.10 Parameters</a><br/>
+<a href="section-12.11.xhtml">12.11 Conditionals</a><br/>
+<a href="section-12.12.xhtml">12.12 Anonymous Categories</a><br/>
+
+<a name="chapter13"/>
+<h3>Chapter 13: Domains</h3>
+<a href="section-13.0.xhtml">13.0 Domains</a><br/>
+<a href="section-13.1.xhtml">13.1 Domains vs. Packages</a><br/>
+<a href="section-13.2.xhtml">13.2 Definitions</a><br/>
+<a href="section-13.3.xhtml">13.3 Category Assertions</a><br/>
+<a href="section-13.4.xhtml">13.4 A Demo</a><br/>
+<a href="section-13.5.xhtml">13.5 Browse</a><br/>
+<a href="section-13.6.xhtml">13.6 Representation</a><br/>
+<a href="section-13.7.xhtml">13.7 Multiple Representations</a><br/>
+<a href="section-13.8.xhtml">13.8 Add Domain</a><br/>
+<a href="section-13.9.xhtml">13.9 Defaults</a><br/>
+<a href="section-13.10.xhtml">13.10 Origins</a><br/>
+<a href="section-13.11.xhtml">13.11 Short Forms</a><br/>
+<a href="section-13.12.xhtml">13.12 Example 1: Clifford Algebra</a><br/>
+<a href="section-13.13.xhtml">13.13 Example 2: Building A Query Facility</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.1" class="subseccontents">13.13.1 A Little Query Language</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.2" class="subseccontents">13.13.2 The Database Constructor</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.3" class="subseccontents">13.13.3 Query Equations</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.4" class="subseccontents">13.13.4 DataLists</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.5" class="subseccontents">13.13.5 Index Cards</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.6" class="subseccontents">13.13.6 Creating a Database</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.7" class="subseccontents">13.13.7 Putting It All Together</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.8" class="subseccontents">13.13.8 Example Queries</a><br/>
+
+<a name="chapter14"/>
+<h3>Chapter 14: Browse</h3>
+<a href="section-14.0.xhtml">14.0 Browse</a><br/>
+<a href="section-14.1.xhtml">14.1 The Front Page: Searching the Library</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.1" class="subseccontents">14.1.1 Constructors</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.2" class="subseccontents">14.1.2 Operations</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.3" class="subseccontents">14.1.3 Attributes</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.4" class="subseccontents">14.1.4 General</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.5" class="subseccontents">14.1.5 Documentation</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.6" class="subseccontents">14.1.6 Complete</a><br/>
+<a href="section-14.2.xhtml">14.2 The Constructor Page</a><br/>
+<a href="section-14.2.xhtml#subsec-14.2.1" class="subseccontents">14.2.1 Constructor Page Buttons</a><br/>
+<a href="section-14.2.xhtml#subsec-14.2.2" class="subseccontents">14.2.2 Cross Reference</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.1" class="subsubseccontents">14.2.2.1 Parents</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.2" class="subsubseccontents">14.2.2.2 Ancestors</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.3" class="subsubseccontents">14.2.2.3 Relatives</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.4" class="subsubseccontents">14.2.2.4 Dependents</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.5" class="subsubseccontents">14.2.2.5 Lineage</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.6" class="subsubseccontents">14.2.2.6 Clients</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.7" class="subsubseccontents">14.2.2.7 Benefactors</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.8" class="subsubseccontents">14.2.2.8 Children</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.9" class="subsubseccontents">14.2.2.9 Descendants</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.10" class="subsubseccontents">14.2.2.10 Domains</a><br/>
+<a href="section-14.2.xhtml#subsec-14.2.3" class="subseccontents">14.2.3 Views Of Constructors</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.1" class="subsubseccontents">14.2.3.1 names</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.2" class="subsubseccontents">14.2.3.2 abbrs</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.3" class="subsubseccontents">14.2.3.3 kinds</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.4" class="subsubseccontents">14.2.3.4 files</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.5" class="subsubseccontents">14.2.3.5 parameters</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.6" class="subsubseccontents">14.2.3.6 filter</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.7" class="subsubseccontents">14.2.3.7 documentation</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.8" class="subsubseccontents">14.2.3.8 conditions</a><br/>
+<a href="section-14.2.xhtml#subsec-14.2.4" class="subseccontents">14.2.4 Giving Parameters to Constructors</a><br/>
+<a href="section-14.3.xhtml">14.3 Miscellaneous Features of Browse</a><br/>
+<a href="section-14.3.xhtml#subsec-14.3.1" class="subseccontents">14.3.1 The Description Page for Operations</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.1" class="subsubseccontents">14.3.1.1 Arguments</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.2" class="subsubseccontents">14.3.1.2 Returns</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.3" class="subsubseccontents">14.3.1.3 Origin</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.4" class="subsubseccontents">14.3.1.4 Conditions</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.5" class="subsubseccontents">14.3.1.5 Description</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.6" class="subsubseccontents">14.3.1.6 Where</a><br/>
+<a href="section-14.3.xhtml#subsec-14.3.2" class="subseccontents">14.3.2 Views of Operations</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.1" class="subsubseccontents">14.3.2.1 names</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.2" class="subsubseccontents">14.3.2.2 filter</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.3" class="subsubseccontents">14.3.2.3 documentation</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.4" class="subsubseccontents">14.3.2.4 signatures</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.5" class="subsubseccontents">14.3.2.5 parameters</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.6" class="subsubseccontents">14.3.2.6 origins</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.7" class="subsubseccontents">14.3.2.7 conditions</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.8" class="subsubseccontents">14.3.2.8 usage</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.9" class="subsubseccontents">14.3.2.9 implementation</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.10" class="subsubseccontents">14.3.2.10 generalize</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.11" class="subsubseccontents">14.3.2.11 all domains</a><br/>
+<a href="section-14.3.xhtml#subsec-14.3.3" class="subseccontents">14.3.3 Capitalization Convention</a><br/>
+<a href="section-14.3.xhtml#subsec-14.3.4" class="subseccontents">14.3.4 Browse Options</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.4.1" class="subsubseccontents">14.3.4.1 Exposure</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.4.2" class="subsubseccontents">14.3.4.2 Threshold</a><br/>
+
+<a name="chapter15"/>
+<h3>Chapter 15: What's New in Axiom Version 2.0</h3>
+<a href="section-15.0.xhtml">15.0 Axiom Packages</a><br/>
+<a href="section-15.1.xhtml">15.1 Important Things to Read First</a><br/>
+<a href="section-15.2.xhtml">15.2 The New Axiom Library Compiler</a><br/>
+<a href="section-15.3.xhtml">15.3 The NAG Library Link</a><br/>
+<a href="section-15.3.xhtml#subsec-15.3.1" class="subseccontents">15.3.1 Interpreting NAG Documentation</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.1.1" class="subsubseccontents">15.3.1.1 Correspondence Between Fortran and Axiom types</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.1.2" class="subsubseccontents">15.3.1.2 Classification of NAG parameters</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.1.3" class="subsubseccontents">15.3.1.3 IFAIL</a><br/>
+<a href="section-15.3.xhtml#subsec-15.3.2" class="subseccontents">15.3.2 Using the Link</a><br/>
+<a href="section-15.3.xhtml#subsec-15.3.3" class="subseccontents">15.3.3 Providing values for Argument Subprograms</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.3.1" class="subsubseccontents">15.3.3.1 Providing ASPs via <span class="teletype">FortranExpression</span></a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.3.2" class="subsubseccontents">15.3.3.2 Providing ASPs via <span class="teletype">FortranCode</span></a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.3.3" class="subsubseccontents">15.3.3.3 Providing ASPs via <span class="teletype">FileName</span></a><br/>
+<a href="section-15.3.xhtml#subsec-15.3.4" class="subseccontents">15.3.4 General Fortran-generation utilities in Axiom</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.1" class="subsubseccontents">15.3.4.1 Template Manipulation</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.2" class="subsubseccontents">15.3.4.2 Manipulating the Fortran Output Stream</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.3" class="subsubseccontents">15.3.4.3 Fortran Types</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.4" class="subsubseccontents">15.3.4.4 FortranScalarType</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.5" class="subsubseccontents">15.3.4.5 FortranType</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.6" class="subsubseccontents">15.3.4.6 SymbolTable</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.7" class="subsubseccontents">15.3.4.7 TheSymbolTable</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.8" class="subsubseccontents">15.3.4.8 Advanced Fortran Code Generation</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.9" class="subsubseccontents">15.3.4.9 Switch</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.10" class="subsubseccontents">15.3.4.10 FortranCode</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.11" class="subsubseccontents">15.3.4.11 FortranProgram</a><br/>
+<a href="section-15.3.xhtml#subsec-15.3.5" class="subseccontents">15.3.5 Some technical information</a><br/>
+<a href="section-15.4.xhtml">15.4 Interactive Front-end and Language</a><br/>
+<a href="section-15.5.xhtml">15.5 Library</a><br/>
+<a href="section-15.6.xhtml">15.6 HyperTex</a><br/>
+<a href="section-15.7.xhtml">15.7 Documentation</a><br/>
+
+<a name="chapter16"/>
+<h3>Chapter 16: Axiom System Commands</h3>
+<a href="section-16.0.xhtml">16.0 Axiom System Commands</a><br/>
+<a href="section-16.1.xhtml">16.1 Introduction</a><br/>
+<a href="section-16.2.xhtml">16.2 )abbreviation</a><br/>
+<a href="section-16.3.xhtml">16.3 )boot</a><br/>
+<a href="section-16.4.xhtml">16.4 )cd</a><br/>
+<a href="section-16.5.xhtml">16.5 )close</a><br/>
+<a href="section-16.6.xhtml">16.6 )clear</a><br/>
+<a href="section-16.7.xhtml">16.7 )compile</a><br/>
+<a href="section-16.8.xhtml">16.8 )display</a><br/>
+<a href="section-16.9.xhtml">16.9 )edit</a><br/>
+<a href="section-16.10.xhtml">16.10 )fin</a><br/>
+<a href="section-16.11.xhtml">16.11 )frame</a><br/>
+<a href="section-16.12.xhtml">16.12 )help</a><br/>
+<a href="section-16.13.xhtml">16.13 )history</a><br/>
+<a href="section-16.14.xhtml">16.14 )library</a><br/>
+<a href="section-16.15.xhtml">16.15 )lisp</a><br/>
+<a href="section-16.16.xhtml">16.16 )load</a><br/>
+<a href="section-16.17.xhtml">16.17 )trace</a><br/>
+<a href="section-16.18.xhtml">16.18 )pquit</a><br/>
+<a href="section-16.19.xhtml">16.19 )quit</a><br/>
+<a href="section-16.20.xhtml">16.20 )read</a><br/>
+<a href="section-16.21.xhtml">16.21 )set</a><br/>
+<a href="section-16.22.xhtml">16.22 )show</a><br/>
+<a href="section-16.23.xhtml">16.23 )spool</a><br/>
+<a href="section-16.24.xhtml">16.24 )synonym</a><br/>
+<a href="section-16.25.xhtml">16.25 )system</a><br/>
+<a href="section-16.26.xhtml">16.26 )trace</a><br/>
+<a href="section-16.27.xhtml">16.27 )undo</a><br/>
+<a href="section-16.28.xhtml">16.28 )what</a><br/>
+
+<a name="chapter17"/>
+<h3>Chapter 17: Categories</h3>
+<a href="section-17.1.xhtml">17.1 Axiom Categories</a><br/>
+
+<a name="chapter18"/>
+<h3>Chapter 18: Domains</h3>
+<a href="section-18.1.xhtml">18.1 Axiom Domains</a><br/>
+
+<a name="chapter19"/>
+<h3>Chapter 19: Packages</h3>
+<a href="section-19.1.xhtml">19.1 Axiom Packages</a><br/>
+
+<a name="chapter21"/>
+<h3>Chapter 21: Programs for AXIOM Images</h3>
+<a href="section-21.0.xhtml">21.0 Programs for AXIOM Images</a><br/>
+<a href="section-21.1.xhtml">21.1 images1.input</a><br/>
+<a href="section-21.2.xhtml">21.2 images2.input</a><br/>
+<a href="section-21.3.xhtml">21.3 images3.input</a><br/>
+<a href="section-21.4.xhtml">21.4 images5.input</a><br/>
+<a href="section-21.5.xhtml">21.5 images6.input</a><br/>
+<a href="section-21.6.xhtml">21.6 images7.input</a><br/>
+<a href="section-21.7.xhtml">21.7 images8.input</a><br/>
+<a href="section-21.8.xhtml">21.8 conformal.input</a><br/>
+<a href="section-21.9.xhtml">21.9 tknot.input</a><br/>
+<a href="section-21.10.xhtml">21.10 ntube.input</a><br/>
+<a href="section-21.11.xhtml">21.11 dhtri.input</a><br/>
+<a href="section-21.12.xhtml">21.12 tetra.input</a><br/>
+<a href="section-21.13.xhtml">21.13 antoine.input</a><br/>
+<a href="section-21.14.xhtml">21.14 scherk.input</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/book-index.xhtml b/src/axiom-website/hyperdoc/axbook/book-index.xhtml
new file mode 100644
index 0000000..c8942fa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/book-index.xhtml
@@ -0,0 +1,2099 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Axiom Book Index</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="section-9.80.xhtml#chapter-9-106">#</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.38.xhtml#chapter-9-4">#</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-1.3.xhtml#chapter-1-22">%e</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-1.3.xhtml#chapter-1-21">%i</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-1.3.xhtml#chapter-1-25">%infinity</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-1.3.xhtml#chapter-1-28">%minusInfinity</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-1.3.xhtml#chapter-1-23">%pi</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-1.3.xhtml#chapter-1-27">%plusInfinity</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-8.1.xhtml#chapter-8-7">**</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-9">**</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-6.17.xhtml#chapter-6-56">+-> @<span class="teletype">+-></span></a><span style="padding-left: 10px;">Section 6.17  Anonymous Functions</span><br/>
+<a href="section-12.8.xhtml#chapter-12-21">APL</a><span style="padding-left: 10px;">Section 12.8  Correctness</span><br/>
+<a href="section-2.1.xhtml#chapter-2-10">APL</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-0.2.xhtml#chapter-0-5">Ada</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-8.1.xhtml#chapter-8-30">Airy function</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-9.72.xhtml#chapter-9-38">And</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-21.13.xhtml#chapter-21-13">Antoine's Necklace</a><span style="padding-left: 10px;">Section 21.13  antoine.input</span><br/>
+<a href="section-2.6.xhtml#chapter-2-46">Any</a><span style="padding-left: 10px;">Section 2.6  The ``Any'' Domain</span><br/>
+<a href="section-2.10.xhtml#chapter-2-60">Any</a><span style="padding-left: 10px;">Section 2.10  Resolving Types</span><br/>
+<a href="section-9.1.xhtml#chapter-9-1">AssociationList</a><span style="padding-left: 10px;">Section 9.1  AssociationList</span><br/>
+<a href="section-9.1.xhtml#chapter-9-3">AssociationList</a><span style="padding-left: 10px;">Section 9.1  AssociationList</span><br/>
+<a href="section-9.1.xhtml#chapter-9-5">AssociationList</a><span style="padding-left: 10px;">Section 9.1  AssociationList</span><br/>
+<a href="section-9.3.xhtml#chapter-9-11">BasicOperator</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.3.xhtml#chapter-9-13">BasicOperator</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.37.xhtml#chapter-9-133">BasicOperator</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-135">BasicOperator</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.3.xhtml#chapter-9-15">BasicOperator</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.3.xhtml#chapter-9-17">BasicOperator</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.3.xhtml#chapter-9-19">BasicOperator</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.3.xhtml#chapter-9-7">BasicOperator</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.3.xhtml#chapter-9-9">BasicOperator</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-8.9.xhtml#chapter-8-131">Bernoulli:polynomial</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-147">Bernoulli:polynomial</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.1.xhtml#chapter-8-27">Bessel function</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-9.4.xhtml#chapter-9-21">BinaryExpansion</a><span style="padding-left: 10px;">Section 9.4  BinaryExpansion</span><br/>
+<a href="section-5.3.xhtml#chapter-5-18">Boolean</a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-5.3.xhtml#chapter-5-22">Boolean</a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-14.0.xhtml#chapter-14-0">Browse@Browse</a><span style="padding-left: 10px;">Section 14.0  Browse</span><br/>
+<a href="section-6.14.xhtml#chapter-6-41">Browse@Browse</a><span style="padding-left: 10px;">Section 6.14  Making Functions from Objects</span><br/>
+<a href="section-5.1.xhtml#chapter-5-2">C language:assignment</a><span style="padding-left: 10px;">Section 5.1  Immediate and Delayed Assignments</span><br/>
+<a href="section-9.6.xhtml#chapter-9-26">CardinalNumber</a><span style="padding-left: 10px;">Section 9.6  CardinalNumber</span><br/>
+<a href="section-9.6.xhtml#chapter-9-28">CardinalNumber</a><span style="padding-left: 10px;">Section 9.6  CardinalNumber</span><br/>
+<a href="section-7.2.xhtml#chapter-7-136">Cartesian:coordinate system</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-32">Cartesian:coordinate system</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-13">Cartesian:ovals</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.7.xhtml#chapter-9-30">CartesianTensor</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.7.xhtml#chapter-9-32">CartesianTensor</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.7.xhtml#chapter-9-34">CartesianTensor</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.7.xhtml#chapter-9-36">CartesianTensor</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.8.xhtml#chapter-9-48">Character</a><span style="padding-left: 10px;">Section 9.8  Character</span><br/>
+<a href="section-9.8.xhtml#chapter-9-50">Character</a><span style="padding-left: 10px;">Section 9.8  Character</span><br/>
+<a href="section-9.8.xhtml#chapter-9-52">Character</a><span style="padding-left: 10px;">Section 9.8  Character</span><br/>
+<a href="section-1.1.xhtml#chapter-1-9">Clef</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-7.1.xhtml#chapter-7-34">Color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-39">Color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-10.7.xhtml#chapter-10-6">Complex DoubleFloat</a><span style="padding-left: 10px;">Section 10.7  Drawing Complex Vector Fields</span><br/>
+<a href="section-9.11.xhtml#chapter-9-54">Complex</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-9.11.xhtml#chapter-9-56">Complex</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-9.11.xhtml#chapter-9-58">Complex</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-9.11.xhtml#chapter-9-60">Complex</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-9.11.xhtml#chapter-9-62">Complex</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-9.11.xhtml#chapter-9-64">Complex</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-16.8.xhtml#chapter-16-52">ComplexCategory</a><span style="padding-left: 10px;">Section 16.8  )display</span><br/>
+<a href="section-9.12.xhtml#chapter-9-66">ContinuedFraction</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.12.xhtml#chapter-9-68">ContinuedFraction</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.12.xhtml#chapter-9-70">ContinuedFraction</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.12.xhtml#chapter-9-72">ContinuedFraction</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.12.xhtml#chapter-9-74">ContinuedFraction</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.12.xhtml#chapter-9-76">ContinuedFraction</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-7.2.xhtml#chapter-7-161">CoordinateSystems</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-168">CoordinateSystems</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-172">CoordinateSystems</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-9.83.xhtml#chapter-9-14">D</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-2">D</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.21.xhtml#chapter-9-24">D</a><span style="padding-left: 10px;">Section 9.21  Expression</span><br/>
+<a href="section-9.46.xhtml#chapter-9-26">D</a><span style="padding-left: 10px;">Section 9.46  LinearOrdinaryDifferentialOperator2</span><br/>
+<a href="section-9.63.xhtml#chapter-9-83">D</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.14.xhtml#chapter-9-1">DeRhamComplex</a><span style="padding-left: 10px;">Section 9.14  DeRhamComplex</span><br/>
+<a href="section-9.14.xhtml#chapter-9-3">DeRhamComplex</a><span style="padding-left: 10px;">Section 9.14  DeRhamComplex</span><br/>
+<a href="section-9.15.xhtml#chapter-9-5">DecimalExpansion</a><span style="padding-left: 10px;">Section 9.15  DecimalExpansion</span><br/>
+<a href="section-13.6.xhtml#chapter-13-9">DirectProduct</a><span style="padding-left: 10px;">Section 13.6  Representation</span><br/>
+<a href="section-8.1.xhtml#chapter-8-14">DoubleFloatSpecialFunctions</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-7.2.xhtml#chapter-7-145">DrawOption</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-147">DrawOption</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-163">DrawOption</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-164">DrawOption</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-166">DrawOption</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-8.10.xhtml#chapter-8-155">ElementaryFunctionODESolver</a><span style="padding-left: 10px;">Section 8.10  Solution of Differential Equations</span><br/>
+<a href="section-9.18.xhtml#chapter-9-7">EqTable</a><span style="padding-left: 10px;">Section 9.18  EqTable</span><br/>
+<a href="section-9.18.xhtml#chapter-9-9">EqTable</a><span style="padding-left: 10px;">Section 9.18  EqTable</span><br/>
+<a href="section-5.3.xhtml#chapter-5-20">Equation</a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-9.19.xhtml#chapter-9-17">Equation</a><span style="padding-left: 10px;">Section 9.19  Equation</span><br/>
+<a href="section-9.19.xhtml#chapter-9-19">Equation</a><span style="padding-left: 10px;">Section 9.19  Equation</span><br/>
+<a href="section-21.4.xhtml#chapter-21-2">Etruscan Venus</a><span style="padding-left: 10px;">Section 21.4  images5.input</span><br/>
+<a href="section-21.5.xhtml#chapter-21-6">Euler:Beta function</a><span style="padding-left: 10px;">Section 21.5  images6.input</span><br/>
+<a href="section-8.1.xhtml#chapter-8-19">Euler:Beta function</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-17">Euler:gamma function</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-41">Euler:polynomial</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-43">Euler:totient function</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-10.10.xhtml#chapter-10-10">Expression</a><span style="padding-left: 10px;">Section 10.10  Automatic Newton Iteration Formulas</span><br/>
+<a href="section-6.21.xhtml#chapter-6-80">Expression</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-8.8.xhtml#chapter-8-109">Expression</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-9.37.xhtml#chapter-9-125">Expression</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.21.xhtml#chapter-9-21">Expression</a><span style="padding-left: 10px;">Section 9.21  Expression</span><br/>
+<a href="section-9.21.xhtml#chapter-9-23">Expression</a><span style="padding-left: 10px;">Section 9.21  Expression</span><br/>
+<a href="section-9.21.xhtml#chapter-9-25">Expression</a><span style="padding-left: 10px;">Section 9.21  Expression</span><br/>
+<a href="section-9.50.xhtml#chapter-9-57">Expression</a><span style="padding-left: 10px;">Section 9.50  MakeFunction</span><br/>
+<a href="section-8.9.xhtml#chapter-8-128">ExpressionToUnivariatePowerSeries</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-4.7.xhtml#chapter-4-52">FORTRAN output format:arrays</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-39">FORTRAN output format:breaking into multiple statements</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-46">FORTRAN output format:data types</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-44">FORTRAN output format:integers vs. floats</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-43">FORTRAN output format:line length</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-47">FORTRAN output format:optimization level</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-50">FORTRAN output format:precision</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-36">FORTRAN output format</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-5.1.xhtml#chapter-5-4">FORTRAN:assignment</a><span style="padding-left: 10px;">Section 5.1  Immediate and Delayed Assignments</span><br/>
+<a href="section-0.2.xhtml#chapter-0-4">FORTRAN</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-8.13.xhtml#chapter-8-215">Factored</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-8.13.xhtml#chapter-8-217">Factored</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-9.22.xhtml#chapter-9-27">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-29">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-31">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-33">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-35">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-37">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-39">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-41">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-43">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.61.xhtml#chapter-9-43">Factored</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.22.xhtml#chapter-9-45">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-47">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-49">Factored</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.23.xhtml#chapter-9-51">FactoredFunctions2</a><span style="padding-left: 10px;">Section 9.23  FactoredFunctions2</span><br/>
+<a href="section-9.23.xhtml#chapter-9-53">FactoredFunctions2</a><span style="padding-left: 10px;">Section 9.23  FactoredFunctions2</span><br/>
+<a href="section-9.23.xhtml#chapter-9-55">FactoredFunctions2</a><span style="padding-left: 10px;">Section 9.23  FactoredFunctions2</span><br/>
+<a href="section-9.23.xhtml#chapter-9-57">FactoredFunctions2</a><span style="padding-left: 10px;">Section 9.23  FactoredFunctions2</span><br/>
+<a href="section-9.23.xhtml#chapter-9-59">FactoredFunctions2</a><span style="padding-left: 10px;">Section 9.23  FactoredFunctions2</span><br/>
+<a href="section-6.2.xhtml#chapter-6-10">Fibonacci numbers</a><span style="padding-left: 10px;">Section 6.2  Macros</span><br/>
+<a href="section-6.13.xhtml#chapter-6-34">Fibonacci numbers</a><span style="padding-left: 10px;">Section 6.13  Recurrence Relations</span><br/>
+<a href="section-6.16.xhtml#chapter-6-53">Fibonacci numbers</a><span style="padding-left: 10px;">Section 6.16  Free and Local Variables</span><br/>
+<a href="section-8.9.xhtml#chapter-8-119">Fibonacci numbers</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-12.11.xhtml#chapter-12-29">Field</a><span style="padding-left: 10px;">Section 12.11  Conditionals</span><br/>
+<a href="section-9.24.xhtml#chapter-9-61">File</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.24.xhtml#chapter-9-63">File</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.24.xhtml#chapter-9-65">File</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.24.xhtml#chapter-9-67">File</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.24.xhtml#chapter-9-69">File</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.24.xhtml#chapter-9-71">File</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.25.xhtml#chapter-9-73">FileName</a><span style="padding-left: 10px;">Section 9.25  FileName</span><br/>
+<a href="section-9.25.xhtml#chapter-9-75">FileName</a><span style="padding-left: 10px;">Section 9.25  FileName</span><br/>
+<a href="section-9.25.xhtml#chapter-9-77">FileName</a><span style="padding-left: 10px;">Section 9.25  FileName</span><br/>
+<a href="section-9.25.xhtml#chapter-9-79">FileName</a><span style="padding-left: 10px;">Section 9.25  FileName</span><br/>
+<a href="section-9.25.xhtml#chapter-9-81">FileName</a><span style="padding-left: 10px;">Section 9.25  FileName</span><br/>
+<a href="section-8.11.xhtml#chapter-8-195">FiniteFieldPolynomialPackage</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-197">FiniteFieldPolynomialPackage</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-199">FiniteFieldPolynomialPackage</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-201">FiniteFieldPolynomialPackage</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-203">FiniteFieldPolynomialPackage</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-205">FiniteFieldPolynomialPackage</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-207">FiniteFieldPolynomialPackage</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-1.4.xhtml#chapter-1-33">Float</a><span style="padding-left: 10px;">Section 1.4  Numbers</span><br/>
+<a href="section-8.1.xhtml#chapter-8-10">Float</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-8">Float</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-9.27.xhtml#chapter-9-1">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-11">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-13">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-15">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-17">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-19">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-23">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-3">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-5">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-7">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.12.xhtml#chapter-9-78">Float</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.27.xhtml#chapter-9-9">Float</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-15.3.xhtml#chapter-15-17">FortranCode</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-19">FortranCode</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-21">FortranCode</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-23">FortranOutputStackPackage</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-31">FortranProgram</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-24">FortranScalarType</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-26">FortranScalarType</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-27">FortranType</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-8">FoundationLibraryDocPage</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-12.11.xhtml#chapter-12-27">Fraction</a><span style="padding-left: 10px;">Section 12.11  Conditionals</span><br/>
+<a href="section-2.1.xhtml#chapter-2-12">Fraction</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-2.5.xhtml#chapter-2-38">Fraction</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-2.9.xhtml#chapter-2-58">Fraction</a><span style="padding-left: 10px;">Section 2.9  Package Calling and Target Types</span><br/>
+<a href="section-9.28.xhtml#chapter-9-25">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-27">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-29">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-31">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-33">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-35">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-37">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-39">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-41">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-43">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-45">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-47">Fraction</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.29.xhtml#chapter-9-49">FullPartialFractionExpansion</a><span style="padding-left: 10px;">Section 9.29  FullPartialFractionExpansion</span><br/>
+<a href="section-8.8.xhtml#chapter-8-105">FunctionSpaceComplexIntegration</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-8.8.xhtml#chapter-8-107">FunctionSpaceComplexIntegration</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-8.8.xhtml#chapter-8-100">FunctionSpaceIntegration</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-8.8.xhtml#chapter-8-101">FunctionSpaceIntegration</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-8.11.xhtml#chapter-8-161">Galois:field</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.13.xhtml#chapter-8-212">Galois:group</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-8.9.xhtml#chapter-8-138">GenerateUnivariatePowerSeries</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-9.7.xhtml#chapter-9-40">GradedAlgebra</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.7.xhtml#chapter-9-42">GradedAlgebra</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.7.xhtml#chapter-9-44">GradedAlgebra</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.7.xhtml#chapter-9-46">GradedAlgebra</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.7.xhtml#chapter-9-38">GradedModule</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-7.1.xhtml#chapter-7-106">GraphImage</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-110">GraphImage</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-112">GraphImage</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-114">GraphImage</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-116">GraphImage</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-18">GraphicsDefaults</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-20">GraphicsDefaults</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.31.xhtml#chapter-9-51">GroebnerFactorizationPackage</a><span style="padding-left: 10px;">Section 9.31  GroebnerFactorizationPackage</span><br/>
+<a href="section-9.31.xhtml#chapter-9-53">GroebnerFactorizationPackage</a><span style="padding-left: 10px;">Section 9.31  GroebnerFactorizationPackage</span><br/>
+<a href="section-9.33.xhtml#chapter-9-55">HexadecimalExpansion</a><span style="padding-left: 10px;">Section 9.33  HexadecimalExpansion</span><br/>
+<a href="section-8.13.xhtml#chapter-8-221">Hilbert class field</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-1.1.xhtml#chapter-1-4">Hyper@{HyperDoc}</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-3.8.xhtml#chapter-3-3">HyperDoc X Window System defaults</a><span style="padding-left: 10px;">Section 3.8  X Window Resources for HyperDoc</span><br/>
+<a href="section-3.0.xhtml#chapter-3-0">HyperDoc</a><span style="padding-left: 10px;">Section 3.0 Using HyperDoc</span><br/>
+<a href="section-14.0.xhtml#chapter-14-1">HyperDoc@{HyperDoc}</a><span style="padding-left: 10px;">Section 14.0  Browse</span><br/>
+<a href="section-4.6.xhtml#chapter-4-33">IBM Script Formula Format</a><span style="padding-left: 10px;">Section 4.6  IBM Script Formula Format</span><br/>
+<a href="section-0.2.xhtml#chapter-0-10">Integer</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-0.2.xhtml#chapter-0-8">Integer</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-2.5.xhtml#chapter-2-36">Integer</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-6.1.xhtml#chapter-6-3">Integer</a><span style="padding-left: 10px;">Section 6.1  Functions vs. Macros</span><br/>
+<a href="section-9.34.xhtml#chapter-9-57">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-59">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-61">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-63">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-65">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-67">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-69">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-71">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-73">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-75">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-77">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-79">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-81">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-83">Integer</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.35.xhtml#chapter-9-103">IntegerLinearDependence</a><span style="padding-left: 10px;">Section 9.35  IntegerLinearDependence</span><br/>
+<a href="section-6.13.xhtml#chapter-6-36">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 6.13  Recurrence Relations</span><br/>
+<a href="section-9.34.xhtml#chapter-9-101">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.36.xhtml#chapter-9-105">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.36.xhtml#chapter-9-107">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.36.xhtml#chapter-9-109">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.36.xhtml#chapter-9-111">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.36.xhtml#chapter-9-113">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.36.xhtml#chapter-9-115">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.36.xhtml#chapter-9-117">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.36.xhtml#chapter-9-119">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.36.xhtml#chapter-9-121">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.34.xhtml#chapter-9-91">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-93">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-95">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-97">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-99">IntegerNumberTheoryFunctions</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-5.6.xhtml#chapter-5-62">IntegerPrimesPackage</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-5.6.xhtml#chapter-5-64">IntegerPrimesPackage</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-5.6.xhtml#chapter-5-74">IntegerPrimesPackage</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-9.34.xhtml#chapter-9-85">IntegerPrimesPackage</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-87">IntegerPrimesPackage</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-89">IntegerPrimesPackage</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-12.1.xhtml#chapter-12-7">Join</a><span style="padding-left: 10px;">Section 12.1  Definitions</span><br/>
+<a href="section-13.3.xhtml#chapter-13-1">Join</a><span style="padding-left: 10px;">Section 13.3  Category Assertions</span><br/>
+<a href="section-9.37.xhtml#chapter-9-123">Kernel</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-127">Kernel</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-129">Kernel</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-131">Kernel</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-137">Kernel</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-139">Kernel</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-141">Kernel</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.38.xhtml#chapter-9-1">KeyedAccessFile</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-9.38.xhtml#chapter-9-11">KeyedAccessFile</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-9.38.xhtml#chapter-9-3">KeyedAccessFile</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-9.38.xhtml#chapter-9-5">KeyedAccessFile</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-9.38.xhtml#chapter-9-7">KeyedAccessFile</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-9.38.xhtml#chapter-9-9">KeyedAccessFile</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-21.4.xhtml#chapter-21-3">Klein bottle</a><span style="padding-left: 10px;">Section 21.4  images5.input</span><br/>
+<a href="section-16.9.xhtml#chapter-16-62">Korn shell</a><span style="padding-left: 10px;">Section 16.9  )edit</span><br/>
+<a href="section-8.7.xhtml#chapter-8-95">Laplace transform</a><span style="padding-left: 10px;">Section 8.7  Laplace Transforms</span><br/>
+<a href="section-8.9.xhtml#chapter-8-134">Laurent series</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-0.1.xhtml#chapter-0-0">Legendre polynomials</a><span style="padding-left: 10px;">Section 0.1  Introduction to Axiom</span><br/>
+<a href="section-9.39.xhtml#chapter-9-13">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-15">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-17">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-19">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-21">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-23">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-25">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-27">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-29">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-31">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-67">LexTriangularPackage</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.41.xhtml#chapter-9-39">Library</a><span style="padding-left: 10px;">Section 9.41  Library</span><br/>
+<a href="section-8.14.xhtml#chapter-8-225">Lie algebra</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+<a href="section-9.45.xhtml#chapter-9-1">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-11">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-13">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-15">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-17">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-19">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-21">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-23">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-25">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-3">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-5">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-7">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-9">LinearOrdinaryDifferentialOperator1</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.46.xhtml#chapter-9-27">LinearOrdinaryDifferentialOperator2</a><span style="padding-left: 10px;">Section 9.46  LinearOrdinaryDifferentialOperator2</span><br/>
+<a href="section-14.2.xhtml#chapter-14-12">LinearSystemMatrixPackage</a><span style="padding-left: 10px;">Section 14.2  The Constructor Page</span><br/>
+<a href="section-14.2.xhtml#chapter-14-8">LinearSystemMatrixPackage</a><span style="padding-left: 10px;">Section 14.2  The Constructor Page</span><br/>
+<a href="section-16.7.xhtml#chapter-16-44">Lisp:code generation</a><span style="padding-left: 10px;">Section 16.7  )compile</span><br/>
+<a href="section-1.5.xhtml#chapter-1-39">List</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-1.5.xhtml#chapter-1-41">List</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-1.5.xhtml#chapter-1-43">List</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-1.5.xhtml#chapter-1-47">List</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-11.8.xhtml#chapter-11-18">List</a><span style="padding-left: 10px;">Section 11.8  Conditionals</span><br/>
+<a href="section-11.8.xhtml#chapter-11-20">List</a><span style="padding-left: 10px;">Section 11.8  Conditionals</span><br/>
+<a href="section-13.13.xhtml#chapter-13-18">List</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-13.13.xhtml#chapter-13-20">List</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-13.13.xhtml#chapter-13-22">List</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-13.13.xhtml#chapter-13-24">List</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-2.1.xhtml#chapter-2-2">List</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-2.1.xhtml#chapter-2-4">List</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-2.1.xhtml#chapter-2-6">List</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-9.18.xhtml#chapter-9-11">List</a><span style="padding-left: 10px;">Section 9.18  EqTable</span><br/>
+<a href="section-9.18.xhtml#chapter-9-13">List</a><span style="padding-left: 10px;">Section 9.18  EqTable</span><br/>
+<a href="section-9.83.xhtml#chapter-9-21">List</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.47.xhtml#chapter-9-30">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-32">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-34">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.39.xhtml#chapter-9-35">List</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.47.xhtml#chapter-9-36">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-38">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-40">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-42">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-44">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-47">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-49">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-51">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-53">List</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-10.9.xhtml#chapter-10-8">MakeBinaryCompiledFunction</a><span style="padding-left: 10px;">Section 10.9  Functions Producing Functions</span><br/>
+<a href="section-9.50.xhtml#chapter-9-59">MakeFunction</a><span style="padding-left: 10px;">Section 9.50  MakeFunction</span><br/>
+<a href="section-9.50.xhtml#chapter-9-61">MakeFunction</a><span style="padding-left: 10px;">Section 9.50  MakeFunction</span><br/>
+<a href="section-9.50.xhtml#chapter-9-63">MakeFunction</a><span style="padding-left: 10px;">Section 9.50  MakeFunction</span><br/>
+<a href="section-10.9.xhtml#chapter-10-7">MakeUnaryCompiledFunction</a><span style="padding-left: 10px;">Section 10.9  Functions Producing Functions</span><br/>
+<a href="section-9.51.xhtml#chapter-9-75">MappingPackage1</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-9.51.xhtml#chapter-9-73">MappingPackage2</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-9.51.xhtml#chapter-9-65">MappingPackage3</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-9.51.xhtml#chapter-9-67">MappingPackage3</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-9.51.xhtml#chapter-9-69">MappingPackage3</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-9.51.xhtml#chapter-9-71">MappingPackage3</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-14.2.xhtml#chapter-14-10">Matrix</a><span style="padding-left: 10px;">Section 14.2  The Constructor Page</span><br/>
+<a href="section-14.3.xhtml#chapter-14-14">Matrix</a><span style="padding-left: 10px;">Section 14.3  Miscellaneous Features of Browse</span><br/>
+<a href="section-14.1.xhtml#chapter-14-2">Matrix</a><span style="padding-left: 10px;">Section 14.1  The Front Page: Searching the Library</span><br/>
+<a href="section-14.2.xhtml#chapter-14-6">Matrix</a><span style="padding-left: 10px;">Section 14.2  The Constructor Page</span><br/>
+<a href="section-9.52.xhtml#chapter-9-101">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-103">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-105">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-107">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-109">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-111">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-113">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-117">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-119">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-121">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-123">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.27.xhtml#chapter-9-21">Matrix</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.62.xhtml#chapter-9-49">Matrix</a><span style="padding-left: 10px;">Section 9.62  Permanent</span><br/>
+<a href="section-9.52.xhtml#chapter-9-77">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-79">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-81">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-83">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-85">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-87">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-89">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-91">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-93">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-95">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-97">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-99">Matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-12.11.xhtml#chapter-12-25">MatrixCategory</a><span style="padding-left: 10px;">Section 12.11  Conditionals</span><br/>
+<a href="section-2.9.xhtml#chapter-2-56">MatrixCategoryFunctions2</a><span style="padding-left: 10px;">Section 2.9  Package Calling and Target Types</span><br/>
+<a href="section-8.14.xhtml#chapter-8-231">Mendel's genetic laws</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+<a href="section-6.5.xhtml#chapter-6-12">Mersenne number</a><span style="padding-left: 10px;">Section 6.5  One-Line Functions</span><br/>
+<a href="section-0.2.xhtml#chapter-0-2">Modula 2</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-9.53.xhtml#chapter-9-125">Multiset</a><span style="padding-left: 10px;">Section 9.53  MultiSet</span><br/>
+<a href="section-13.11.xhtml#chapter-13-15">MultivariatePolynomial</a><span style="padding-left: 10px;">Section 13.11  Short Forms</span><br/>
+<a href="section-15.3.xhtml#chapter-15-4">NagOrdinaryDifferentialEquationsPackage</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-10.10.xhtml#chapter-10-9">Newton iteration</a><span style="padding-left: 10px;">Section 10.10  Automatic Newton Iteration Formulas</span><br/>
+<a href="section-21.2.xhtml#chapter-21-1">Newton iteration</a><span style="padding-left: 10px;">Section 21.2  images2.input</span><br/>
+<a href="section-9.72.xhtml#chapter-9-44">Not</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-8.1.xhtml#chapter-8-39">NumberTheoreticPolynomialFunctions</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-9.56.xhtml#chapter-9-127">Octonion</a><span style="padding-left: 10px;">Section 9.56  Octonion</span><br/>
+<a href="section-9.72.xhtml#chapter-9-40">Or</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.60.xhtml#chapter-9-1">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-11">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-13">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-15">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-17">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-19">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-21">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-23">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-3">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-5">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-7">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-9">OrderlyDifferentialPolynomial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-8.1.xhtml#chapter-8-32">OrthogonalPolynomialFunctions</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-2.11.xhtml#chapter-2-73">OutputForm</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-5.4.xhtml#chapter-5-35">OutputForm</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-6.19.xhtml#chapter-6-61">OutputForm</a><span style="padding-left: 10px;">Section 6.19  Example: A Famous Triangle</span><br/>
+<a href="section-6.19.xhtml#chapter-6-63">OutputForm</a><span style="padding-left: 10px;">Section 6.19  Example: A Famous Triangle</span><br/>
+<a href="section-6.19.xhtml#chapter-6-65">OutputForm</a><span style="padding-left: 10px;">Section 6.19  Example: A Famous Triangle</span><br/>
+<a href="section-6.19.xhtml#chapter-6-67">OutputForm</a><span style="padding-left: 10px;">Section 6.19  Example: A Famous Triangle</span><br/>
+<a href="section-5.1.xhtml#chapter-5-3">PASCAL:assignment</a><span style="padding-left: 10px;">Section 5.1  Immediate and Delayed Assignments</span><br/>
+<a href="section-0.2.xhtml#chapter-0-3">PASCAL</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-7.1.xhtml#chapter-7-47">Palette</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.61.xhtml#chapter-9-25">PartialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.61.xhtml#chapter-9-27">PartialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.61.xhtml#chapter-9-29">PartialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.61.xhtml#chapter-9-31">PartialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.61.xhtml#chapter-9-33">PartialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.61.xhtml#chapter-9-35">PartialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.61.xhtml#chapter-9-37">PartialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.61.xhtml#chapter-9-39">PartialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.61.xhtml#chapter-9-41">PartialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-6.19.xhtml#chapter-6-60">Pascal's triangle</a><span style="padding-left: 10px;">Section 6.19  Example: A Famous Triangle</span><br/>
+<a href="section-9.62.xhtml#chapter-9-45">Permanent</a><span style="padding-left: 10px;">Section 9.62  Permanent</span><br/>
+<a href="section-9.62.xhtml#chapter-9-47">Permanent</a><span style="padding-left: 10px;">Section 9.62  Permanent</span><br/>
+<a href="section-9.62.xhtml#chapter-9-51">Permanent</a><span style="padding-left: 10px;">Section 9.62  Permanent</span><br/>
+<a href="section-7.2.xhtml#chapter-7-189">Phong:illumination model</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-191">Phong:illumination model</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-193">Phong:smooth shading model</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-9.63.xhtml#chapter-9-53">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-56">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-58">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-60">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-62">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-64">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-66">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-68">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-70">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-72">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-74">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-76">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-78">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-80">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-82">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-84">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-86">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-88">Polynomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-1.16.xhtml#chapter-1-81">PostScript</a><span style="padding-left: 10px;">Section 1.16  Graphics</span><br/>
+<a href="section-7.0.xhtml#chapter-7-2">PostScript</a><span style="padding-left: 10px;">Section 7.0 Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-205">PostScript</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-283">PostScript</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-285">PostScript</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-69">PostScript</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-1.10.xhtml#chapter-1-72">Puiseux series</a><span style="padding-left: 10px;">Section 1.10  Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-136">Puiseux series</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-13.10.xhtml#chapter-13-14">QuadraticForm</a><span style="padding-left: 10px;">Section 13.10  Origins</span><br/>
+<a href="section-13.6.xhtml#chapter-13-7">QuadraticForm</a><span style="padding-left: 10px;">Section 13.6  Representation</span><br/>
+<a href="section-9.64.xhtml#chapter-9-90">Quaternion</a><span style="padding-left: 10px;">Section 9.64  Quaternion</span><br/>
+<a href="section-12.11.xhtml#chapter-12-26">QuotientFieldCategory</a><span style="padding-left: 10px;">Section 12.11  Conditionals</span><br/>
+<a href="section-9.65.xhtml#chapter-9-92">RadixExpansion</a><span style="padding-left: 10px;">Section 9.65  RadixExpansion</span><br/>
+<a href="section-9.65.xhtml#chapter-9-94">RadixExpansion</a><span style="padding-left: 10px;">Section 9.65  RadixExpansion</span><br/>
+<a href="section-9.65.xhtml#chapter-9-96">RadixExpansion</a><span style="padding-left: 10px;">Section 9.65  RadixExpansion</span><br/>
+<a href="section-9.65.xhtml#chapter-9-98">RadixExpansion</a><span style="padding-left: 10px;">Section 9.65  RadixExpansion</span><br/>
+<a href="section-8.8.xhtml#chapter-8-112">RationalFunctionDefiniteIntegration</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-8.8.xhtml#chapter-8-114">RationalFunctionDefiniteIntegration</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-9.66.xhtml#chapter-9-104">RealClosure</a><span style="padding-left: 10px;">Section 9.66  RealClosure</span><br/>
+<a href="section-9.66.xhtml#chapter-9-106">RealClosure</a><span style="padding-left: 10px;">Section 9.66  RealClosure</span><br/>
+<a href="section-9.66.xhtml#chapter-9-100">RealPolynomialUtilitiesPackage</a><span style="padding-left: 10px;">Section 9.66  RealClosure</span><br/>
+<a href="section-9.66.xhtml#chapter-9-102">RealPolynomialUtilitiesPackage</a><span style="padding-left: 10px;">Section 9.66  RealClosure</span><br/>
+<a href="section-2.4.xhtml#chapter-2-26">Record</a><span style="padding-left: 10px;">Section 2.4  Records</span><br/>
+<a href="section-1.5.xhtml#chapter-1-55">Record@{\sf Record}</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-9.91.xhtml#chapter-9-65">RegularTriangularSet</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-15.3.xhtml#chapter-15-13">Result</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-15">Result</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-21.8.xhtml#chapter-21-11">Riemann:sphere</a><span style="padding-left: 10px;">Section 21.8  conformal.input</span><br/>
+<a href="section-21.6.xhtml#chapter-21-8">Riemann:sphere</a><span style="padding-left: 10px;">Section 21.6  images7.input</span><br/>
+<a href="section-12.9.xhtml#chapter-12-22">Ring</a><span style="padding-left: 10px;">Section 12.9  Attributes</span><br/>
+<a href="section-1.4.xhtml#chapter-1-30">Roman numerals</a><span style="padding-left: 10px;">Section 1.4  Numbers</span><br/>
+<a href="section-21.14.xhtml#chapter-21-14">Scherk's minimal surface</a><span style="padding-left: 10px;">Section 21.14  scherk.input</span><br/>
+<a href="section-21.7.xhtml#chapter-21-9">Scherk's minimal surface</a><span style="padding-left: 10px;">Section 21.7  images8.input</span><br/>
+<a href="section-9.69.xhtml#chapter-9-1">Segment</a><span style="padding-left: 10px;">Section 9.69  Segment</span><br/>
+<a href="section-9.69.xhtml#chapter-9-3">Segment</a><span style="padding-left: 10px;">Section 9.69  Segment</span><br/>
+<a href="section-9.69.xhtml#chapter-9-5">Segment</a><span style="padding-left: 10px;">Section 9.69  Segment</span><br/>
+<a href="section-9.47.xhtml#chapter-9-55">Segment</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.69.xhtml#chapter-9-7">Segment</a><span style="padding-left: 10px;">Section 9.69  Segment</span><br/>
+<a href="section-9.70.xhtml#chapter-9-11">SegmentBinding</a><span style="padding-left: 10px;">Section 9.70  SegmentBinding</span><br/>
+<a href="section-9.70.xhtml#chapter-9-9">SegmentBinding</a><span style="padding-left: 10px;">Section 9.70  SegmentBinding</span><br/>
+<a href="section-12.4.xhtml#chapter-12-11">SemiGroup</a><span style="padding-left: 10px;">Section 12.4  Hierarchies</span><br/>
+<a href="section-12.7.xhtml#chapter-12-19">SemiGroup</a><span style="padding-left: 10px;">Section 12.7  Axioms</span><br/>
+<a href="section-9.71.xhtml#chapter-9-13">Set</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-9.71.xhtml#chapter-9-15">Set</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-9.71.xhtml#chapter-9-17">Set</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-9.71.xhtml#chapter-9-19">Set</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-9.71.xhtml#chapter-9-21">Set</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-9.71.xhtml#chapter-9-23">Set</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-12.1.xhtml#chapter-12-4">SetCategory</a><span style="padding-left: 10px;">Section 12.1  Definitions</span><br/>
+<a href="section-21.12.xhtml#chapter-21-12">Sierpinsky's Tetrahedron</a><span style="padding-left: 10px;">Section 21.12  tetra.input</span><br/>
+<a href="section-9.72.xhtml#chapter-9-25">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.72.xhtml#chapter-9-27">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.72.xhtml#chapter-9-29">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.72.xhtml#chapter-9-31">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.72.xhtml#chapter-9-33">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.72.xhtml#chapter-9-35">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.72.xhtml#chapter-9-37">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.72.xhtml#chapter-9-39">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.72.xhtml#chapter-9-41">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.72.xhtml#chapter-9-43">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.72.xhtml#chapter-9-45">SingleInteger</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.73.xhtml#chapter-9-47">SparseTable</a><span style="padding-left: 10px;">Section 9.73  SparseTable</span><br/>
+<a href="section-9.73.xhtml#chapter-9-49">SparseTable</a><span style="padding-left: 10px;">Section 9.73  SparseTable</span><br/>
+<a href="section-2.7.xhtml#chapter-2-48">SquareMatrix</a><span style="padding-left: 10px;">Section 2.7  Conversion</span><br/>
+<a href="section-9.52.xhtml#chapter-9-115">SquareMatrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.74.xhtml#chapter-9-51">SquareMatrix</a><span style="padding-left: 10px;">Section 9.74  SquareMatrix</span><br/>
+<a href="section-5.6.xhtml#chapter-5-66">Stream</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-5.6.xhtml#chapter-5-68">Stream</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-5.6.xhtml#chapter-5-70">Stream</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-5.6.xhtml#chapter-5-72">Stream</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-6.2.xhtml#chapter-6-9">Stream</a><span style="padding-left: 10px;">Section 6.2  Macros</span><br/>
+<a href="section-9.76.xhtml#chapter-9-53">StreamFunctions2</a><span style="padding-left: 10px;">Section 9.76  Stream</span><br/>
+<a href="section-12.5.xhtml#chapter-12-14">String</a><span style="padding-left: 10px;">Section 12.5  Membership</span><br/>
+<a href="section-2.9.xhtml#chapter-2-53">String</a><span style="padding-left: 10px;">Section 2.9  Package Calling and Target Types</span><br/>
+<a href="section-2.9.xhtml#chapter-2-54">String</a><span style="padding-left: 10px;">Section 2.9  Package Calling and Target Types</span><br/>
+<a href="section-9.77.xhtml#chapter-9-55">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-57">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-59">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-61">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-63">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-65">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-67">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-69">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-71">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-73">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-75">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-77">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-79">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-81">String</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-15.3.xhtml#chapter-15-30">Switch</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-9.79.xhtml#chapter-9-83">Symbol</a><span style="padding-left: 10px;">Section 9.79  Symbol</span><br/>
+<a href="section-9.79.xhtml#chapter-9-85">Symbol</a><span style="padding-left: 10px;">Section 9.79  Symbol</span><br/>
+<a href="section-9.79.xhtml#chapter-9-87">Symbol</a><span style="padding-left: 10px;">Section 9.79  Symbol</span><br/>
+<a href="section-9.79.xhtml#chapter-9-89">Symbol</a><span style="padding-left: 10px;">Section 9.79  Symbol</span><br/>
+<a href="section-9.79.xhtml#chapter-9-91">Symbol</a><span style="padding-left: 10px;">Section 9.79  Symbol</span><br/>
+<a href="section-15.3.xhtml#chapter-15-28">SymbolTable</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-9.80.xhtml#chapter-9-101">Table</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-103">Table</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-105">Table</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-107">Table</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-109">Table</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-111">Table</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-93">Table</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-95">Table</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-97">Table</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-99">Table</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-4.5.xhtml#chapter-4-30">TeX output format @{<span class="texlogo">TeX</span>} output format</a><span style="padding-left: 10px;">Section 4.5  TeX Format</span><br/>
+<a href="section-9.81.xhtml#chapter-9-113">TextFile</a><span style="padding-left: 10px;">Section 9.81  TextFile</span><br/>
+<a href="section-9.81.xhtml#chapter-9-115">TextFile</a><span style="padding-left: 10px;">Section 9.81  TextFile</span><br/>
+<a href="section-9.81.xhtml#chapter-9-117">TextFile</a><span style="padding-left: 10px;">Section 9.81  TextFile</span><br/>
+<a href="section-9.81.xhtml#chapter-9-119">TextFile</a><span style="padding-left: 10px;">Section 9.81  TextFile</span><br/>
+<a href="section-15.3.xhtml#chapter-15-29">TheSymbolTable</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-10.1.xhtml#chapter-10-2">ThreeDimensionalViewport</a><span style="padding-left: 10px;">Section 10.1  Drawing Ribbons Interactively</span><br/>
+<a href="section-10.2.xhtml#chapter-10-4">ThreeDimensionalViewport</a><span style="padding-left: 10px;">Section 10.2  A Ribbon Program</span><br/>
+<a href="section-7.2.xhtml#chapter-7-151">ThreeDimensionalViewport</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-158">ThreeDimensionalViewport</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-204">ThreeDimensionalViewport</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-231">ThreeDimensionalViewport</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-266">ThreeDimensionalViewport</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-268">ThreeDimensionalViewport</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-149">ThreeSpace</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-153">ThreeSpace</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-156">ThreeSpace</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-159">ThreeSpace</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-9.19.xhtml#chapter-9-15">TransSolvePackage</a><span style="padding-left: 10px;">Section 9.19  Equation</span><br/>
+<a href="section-9.82.xhtml#chapter-9-121">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-123">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-125">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-127">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-129">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-131">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-133">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-135">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-137">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-139">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-141">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-143">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-145">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-147">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-149">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-151">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-153">TwoDimensionalArray</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-7.1.xhtml#chapter-7-108">TwoDimensionalViewport</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-118">TwoDimensionalViewport</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-120">TwoDimensionalViewport</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-91">TwoDimensionalViewport</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-2.1.xhtml#chapter-2-8">Type</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-2.5.xhtml#chapter-2-31">Union</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-1.5.xhtml#chapter-1-56">Union@{\sf Union}</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-9.83.xhtml#chapter-9-1">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-11">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-13">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-15">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-17">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-19">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-23">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-25">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-27">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-29">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-3">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-31">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-33">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-5">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-7">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-9">UnivariatePolynomial</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-8.9.xhtml#chapter-8-141">UnivariatePowerSeriesCategory</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-121">UnivariateTaylorSeries</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-9.84.xhtml#chapter-9-35">UniversalSegment</a><span style="padding-left: 10px;">Section 9.84  UniversalSegment</span><br/>
+<a href="section-9.85.xhtml#chapter-9-37">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-39">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-41">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-43">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-45">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-47">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-49">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-51">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-53">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-55">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-57">Vector</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.6.xhtml#chapter-9-24">VectorSpace</a><span style="padding-left: 10px;">Section 9.6  CardinalNumber</span><br/>
+<a href="section-1.1.xhtml#chapter-1-3">X Window System</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-3.8.xhtml#chapter-3-4">X Window System</a><span style="padding-left: 10px;">Section 3.8  X Window Resources for HyperDoc</span><br/>
+<a href="section-8.11.xhtml#chapter-8-174">Zech logarithm</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-9.39.xhtml#chapter-9-33">ZeroDimensionalSolvePackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-37">ZeroDimensionalSolvePackage</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-59">ZeroDimensionalSolvePackage</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-61">ZeroDimensionalSolvePackage</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-63">ZeroDimensionalSolvePackage</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-69">ZeroDimensionalSolvePackage</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-71">ZeroDimensionalSolvePackage</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-73">ZeroDimensionalSolvePackage</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-5.3.xhtml#chapter-5-24">_notequal@ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&#x223c;</mo><mo>=</mo></mrow></mstyle></math></a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-16.2.xhtml#chapter-16-9">abbreviation category</a><span style="padding-left: 10px;">Section 16.2  )abbreviation</span><br/>
+<a href="section-16.2.xhtml#chapter-16-8">abbreviation domain</a><span style="padding-left: 10px;">Section 16.2  )abbreviation</span><br/>
+<a href="section-16.2.xhtml#chapter-16-7">abbreviation package</a><span style="padding-left: 10px;">Section 16.2  )abbreviation</span><br/>
+<a href="section-16.2.xhtml#chapter-16-6">abbreviation query</a><span style="padding-left: 10px;">Section 16.2  )abbreviation</span><br/>
+<a href="section-16.2.xhtml#chapter-16-10">abbreviation remove</a><span style="padding-left: 10px;">Section 16.2  )abbreviation</span><br/>
+<a href="section-11.1.xhtml#chapter-11-3">abbreviation:constructor</a><span style="padding-left: 10px;">Section 11.1  Names, Abbreviations, and File Structure</span><br/>
+<a href="section-2.2.xhtml#chapter-2-21">abbreviation:constructor</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-16.7.xhtml#chapter-16-45">abbreviation</a><span style="padding-left: 10px;">Section 16.7  )compile</span><br/>
+<a href="section-16.2.xhtml#chapter-16-5">abbreviation</a><span style="padding-left: 10px;">Section 16.2  )abbreviation</span><br/>
+<a href="section-2.2.xhtml#chapter-2-23">abbreviation</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-6.1.xhtml#chapter-6-2">abs</a><span style="padding-left: 10px;">Section 6.1  Functions vs. Macros</span><br/>
+<a href="section-7.1.xhtml#chapter-7-14">adaptive plotting</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-222">adaptive plotting</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-242">adaptive plotting</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-246">adaptive plotting</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-73">adaptive plotting</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-84">adaptive plotting</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-11.4.xhtml#chapter-11-10">add</a><span style="padding-left: 10px;">Section 11.4  Capsules</span><br/>
+<a href="section-12.6.xhtml#chapter-12-17">add</a><span style="padding-left: 10px;">Section 12.6  Defaults</span><br/>
+<a href="section-13.8.xhtml#chapter-13-11">add</a><span style="padding-left: 10px;">Section 13.8  Add Domain</span><br/>
+<a href="section-9.72.xhtml#chapter-9-30">addmod</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-8.14.xhtml#chapter-8-230">algebra:non-associative</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+<a href="section-8.2.xhtml#chapter-8-58">algebraic number</a><span style="padding-left: 10px;">Section 8.2  Polynomial Factorization</span><br/>
+<a href="section-8.3.xhtml#chapter-8-62">algebraic number</a><span style="padding-left: 10px;">Section 8.3  Manipulating Symbolic Roots of a Polynomial</span><br/>
+<a href="section-6.17.xhtml#chapter-6-55">anonymous function</a><span style="padding-left: 10px;">Section 6.17  Anonymous Functions</span><br/>
+<a href="section-8.8.xhtml#chapter-8-102">antiderivative</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-9.47.xhtml#chapter-9-31">append</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-7.1.xhtml#chapter-7-111">appendPoint</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.12.xhtml#chapter-9-71">approximants</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.66.xhtml#chapter-9-103">approximate</a><span style="padding-left: 10px;">Section 9.66  RealClosure</span><br/>
+<a href="section-8.9.xhtml#chapter-8-142">approximation</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.4.xhtml#chapter-8-73">approximation</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-8.5.xhtml#chapter-8-86">approximation</a><span style="padding-left: 10px;">Section 8.5  Solution of Linear and Polynomial Equations</span><br/>
+<a href="section-16.28.xhtml#chapter-16-192">apropos</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-9.37.xhtml#chapter-9-140">argument</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-8.11.xhtml#chapter-8-167">arithmetic:modular</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-9.3.xhtml#chapter-9-10">arity</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-1.5.xhtml#chapter-1-49">array:flexible</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-1.5.xhtml#chapter-1-48">array:one-dimensional</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-1.6.xhtml#chapter-1-58">array:two-dimensional</a><span style="padding-left: 10px;">Section 1.6  Expanding to Higher Dimensions</span><br/>
+<a href="section-15.3.xhtml#chapter-15-16">aspSection</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-20">assign</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-5.1.xhtml#chapter-5-5">assignment:delayed</a><span style="padding-left: 10px;">Section 5.1  Immediate and Delayed Assignments</span><br/>
+<a href="section-5.1.xhtml#chapter-5-0">assignment:immediate</a><span style="padding-left: 10px;">Section 5.1  Immediate and Delayed Assignments</span><br/>
+<a href="section-5.1.xhtml#chapter-5-7">assignment:multiple immediate</a><span style="padding-left: 10px;">Section 5.1  Immediate and Delayed Assignments</span><br/>
+<a href="section-1.3.xhtml#chapter-1-16">assignment</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-8.14.xhtml#chapter-8-224">associativity law</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+<a href="section-14.2.xhtml#chapter-14-4">attribute</a><span style="padding-left: 10px;">Section 14.2  The Constructor Page</span><br/>
+<a href="section-12.7.xhtml#chapter-12-18">axiom</a><span style="padding-left: 10px;">Section 12.7  Axioms</span><br/>
+<a href="section-2.6.xhtml#chapter-2-47">badge</a><span style="padding-left: 10px;">Section 2.6  The ``Any'' Domain</span><br/>
+<a href="section-1.5.xhtml#chapter-1-53">balanced binary tree</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-8.11.xhtml#chapter-8-186">basis:normal</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.4.xhtml#chapter-8-76">basis:orthonormal</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-1.5.xhtml#chapter-1-52">binary search tree</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-9.4.xhtml#chapter-9-20">binary</a><span style="padding-left: 10px;">Section 9.4  BinaryExpansion</span><br/>
+<a href="section-0.2.xhtml#chapter-0-9">bit?</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-6.19.xhtml#chapter-6-66">blankSeparate</a><span style="padding-left: 10px;">Section 6.19  Example: A Famous Triangle</span><br/>
+<a href="section-16.3.xhtml#chapter-16-13">boot</a><span style="padding-left: 10px;">Section 16.3  )boot</span><br/>
+<a href="section-5.4.xhtml#chapter-5-31">break</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-42">break</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.2.xhtml#chapter-5-9">break</a><span style="padding-left: 10px;">Section 5.2  Blocks</span><br/>
+<a href="section-5.4.xhtml#chapter-5-47">by</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-2.5.xhtml#chapter-2-33">case</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-2.5.xhtml#chapter-2-45">case</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-12.12.xhtml#chapter-12-30">category:anonymous</a><span style="padding-left: 10px;">Section 12.12  Anonymous Categories</span><br/>
+<a href="section-12.0.xhtml#chapter-12-1">category:constructor</a><span style="padding-left: 10px;">Section 12.0 Categories</span><br/>
+<a href="section-12.6.xhtml#chapter-12-15">category:defaults</a><span style="padding-left: 10px;">Section 12.6  Defaults</span><br/>
+<a href="section-12.1.xhtml#chapter-12-3">category:definition</a><span style="padding-left: 10px;">Section 12.1  Definitions</span><br/>
+<a href="section-12.5.xhtml#chapter-12-12">category:membership</a><span style="padding-left: 10px;">Section 12.5  Membership</span><br/>
+<a href="section-0.2.xhtml#chapter-0-12">category</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-12.0.xhtml#chapter-12-0">category</a><span style="padding-left: 10px;">Section 12.0 Categories</span><br/>
+<a href="section-2.7.xhtml#chapter-2-49">category</a><span style="padding-left: 10px;">Section 2.7  Conversion</span><br/>
+<a href="section-2.1.xhtml#chapter-2-9">category</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-16.23.xhtml#chapter-16-160">cd</a><span style="padding-left: 10px;">Section 16.23  )spool</span><br/>
+<a href="section-16.4.xhtml#chapter-16-19">cd</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-4.3.xhtml#chapter-4-20">cd</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-4.1.xhtml#chapter-4-3">cd</a><span style="padding-left: 10px;">Section 4.1  Input Files</span><br/>
+<a href="section-4.1.xhtml#chapter-4-6">cd</a><span style="padding-left: 10px;">Section 4.1  Input Files</span><br/>
+<a href="section-12.11.xhtml#chapter-12-28">ceiling</a><span style="padding-left: 10px;">Section 12.11  Conditionals</span><br/>
+<a href="section-6.19.xhtml#chapter-6-64">center</a><span style="padding-left: 10px;">Section 6.19  Example: A Famous Triangle</span><br/>
+<a href="section-4.4.xhtml#chapter-4-27">character set</a><span style="padding-left: 10px;">Section 4.4  Monospace Two-Dimensional Mathematical Format</span><br/>
+<a href="section-8.4.xhtml#chapter-8-68">characteristic:value</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-8.4.xhtml#chapter-8-69">characteristic:vector</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-2.1.xhtml#chapter-2-11">characteristic</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-16.6.xhtml#chapter-16-38">clear</a><span style="padding-left: 10px;">Section 16.6  )clear</span><br/>
+<a href="section-7.1.xhtml#chapter-7-17">clipPointsDefault</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-176">clipping</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-23">clipping</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-16.5.xhtml#chapter-16-34">close</a><span style="padding-left: 10px;">Section 16.5  )close</span><br/>
+<a href="section-3.7.xhtml#chapter-3-2">close</a><span style="padding-left: 10px;">Section 3.7  Example Pages</span><br/>
+<a href="section-9.83.xhtml#chapter-9-16">coefficients</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-24">coefficients</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-7.1.xhtml#chapter-7-113">coerce</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-5.5.xhtml#chapter-5-55">collection</a><span style="padding-left: 10px;">Section 5.5  Creating Lists and Streams with Iterators</span><br/>
+<a href="section-7.1.xhtml#chapter-7-26">color:curve</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-45">color:multiplication</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-28">color:point</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-48">color:shade</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-3.8.xhtml#chapter-3-7">color</a><span style="padding-left: 10px;">Section 3.8  X Window Resources for HyperDoc</span><br/>
+<a href="section-7.1.xhtml#chapter-7-36">color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-184">colormap</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-9.52.xhtml#chapter-9-108">column</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.82.xhtml#chapter-9-136">column</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-1.1.xhtml#chapter-1-10">command line editor</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-9.61.xhtml#chapter-9-30">compactFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-13.13.xhtml#chapter-13-25">compile</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-16.4.xhtml#chapter-16-21">compile</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.7.xhtml#chapter-16-43">compile</a><span style="padding-left: 10px;">Section 16.7  )compile</span><br/>
+<a href="section-5.6.xhtml#chapter-5-71">complete</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-1.4.xhtml#chapter-1-34">complex numbers</a><span style="padding-left: 10px;">Section 1.4  Numbers</span><br/>
+<a href="section-8.1.xhtml#chapter-8-5">complex:floating-point number</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-16.8.xhtml#chapter-16-51">complex</a><span style="padding-left: 10px;">Section 16.8  )display</span><br/>
+<a href="section-9.11.xhtml#chapter-9-53">complex</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-8.8.xhtml#chapter-8-104">complexIntegrate</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-7.1.xhtml#chapter-7-109">component</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-115">component</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-16.21.xhtml#chapter-16-146">computation timings:displaying</a><span style="padding-left: 10px;">Section 16.21  )set</span><br/>
+<a href="section-1.5.xhtml#chapter-1-42">concat!</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-12.5.xhtml#chapter-12-13">concat</a><span style="padding-left: 10px;">Section 12.5  Membership</span><br/>
+<a href="section-13.13.xhtml#chapter-13-23">concat</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-2.1.xhtml#chapter-2-5">concat</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-2.9.xhtml#chapter-2-52">concat</a><span style="padding-left: 10px;">Section 2.9  Package Calling and Target Types</span><br/>
+<a href="section-6.2.xhtml#chapter-6-8">concat</a><span style="padding-left: 10px;">Section 6.2  Macros</span><br/>
+<a href="section-9.39.xhtml#chapter-9-34">concat</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.77.xhtml#chapter-9-56">concat</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.77.xhtml#chapter-9-58">concat</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-15.3.xhtml#chapter-15-18">cond</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-11.8.xhtml#chapter-11-14">conditional</a><span style="padding-left: 10px;">Section 11.8  Conditionals</span><br/>
+<a href="section-12.11.xhtml#chapter-12-23">conditional</a><span style="padding-left: 10px;">Section 12.11  Conditionals</span><br/>
+<a href="section-5.3.xhtml#chapter-5-17">conditional</a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-21.8.xhtml#chapter-21-10">conformal map</a><span style="padding-left: 10px;">Section 21.8  conformal.input</span><br/>
+<a href="section-21.6.xhtml#chapter-21-7">conformal map</a><span style="padding-left: 10px;">Section 21.6  images7.input</span><br/>
+<a href="section-9.11.xhtml#chapter-9-55">conjugate</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-9.47.xhtml#chapter-9-33">cons</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-6.11.xhtml#chapter-6-29">constant function argument</a><span style="padding-left: 10px;">Section 6.11  Piece-Wise Function Definitions</span><br/>
+<a href="section-9.51.xhtml#chapter-9-70">constantRight</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-11.1.xhtml#chapter-11-4">constructor:abbreviation</a><span style="padding-left: 10px;">Section 11.1  Names, Abbreviations, and File Structure</span><br/>
+<a href="section-2.2.xhtml#chapter-2-22">constructor:abbreviation</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-12.0.xhtml#chapter-12-2">constructor:category</a><span style="padding-left: 10px;">Section 12.0 Categories</span><br/>
+<a href="section-2.1.xhtml#chapter-2-0">constructor:domain</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-2.11.xhtml#chapter-2-61">constructor:exposed</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-2.11.xhtml#chapter-2-62">constructor:hidden</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-11.0.xhtml#chapter-11-1">constructor:package</a><span style="padding-left: 10px;">Section 11.0 Packages</span><br/>
+<a href="section-2.1.xhtml#chapter-2-14">constructor:package</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-9.83.xhtml#chapter-9-22">content</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-59">content</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.12.xhtml#chapter-9-65">continuedFraction</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.12.xhtml#chapter-9-73">continuedFraction</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.12.xhtml#chapter-9-75">continuedFraction</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.7.xhtml#chapter-9-31">contract</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.12.xhtml#chapter-9-69">convergents</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-13.6.xhtml#chapter-13-5">conversion</a><span style="padding-left: 10px;">Section 13.6  Representation</span><br/>
+<a href="section-7.2.xhtml#chapter-7-137">coordinate system:Cartesian</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-33">coordinate system:Cartesian</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-169">coordinate system:cylindrical</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-127">coordinate system:parabolic cylindrical</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-139">coordinate system:spherical</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-129">coordinate system:toroidal</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-173">coordinate system</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-162">coordinates</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-165">coordinates</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-9.82.xhtml#chapter-9-148">copy</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.52.xhtml#chapter-9-88">copy</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-12.8.xhtml#chapter-12-20">correctness</a><span style="padding-left: 10px;">Section 12.8  Correctness</span><br/>
+<a href="section-9.82.xhtml#chapter-9-152">count</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.6.xhtml#chapter-9-27">countable?</a><span style="padding-left: 10px;">Section 9.6  CardinalNumber</span><br/>
+<a href="section-7.2.xhtml#chapter-7-152">create3Space</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-155">create3Space</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-8.11.xhtml#chapter-8-194">createIrreduciblePoly</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-202">createIrreduciblePoly</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-198">createNormalPrimitivePoly</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-196">createPrimitiveNormalPoly</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-9.51.xhtml#chapter-9-72">curry</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-9.51.xhtml#chapter-9-68">curryLeft</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-9.51.xhtml#chapter-9-66">curryRight</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-7.1.xhtml#chapter-7-25">curve:color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-10">curve:non-singular</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-4">curve:one variable function</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-6">curve:parametric plane</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-123">curve:parametric space</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-7">curve:plane algebraic</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-9">curve:smooth</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.65.xhtml#chapter-9-95">cycleRagits</a><span style="padding-left: 10px;">Section 9.65  RadixExpansion</span><br/>
+<a href="section-1.5.xhtml#chapter-1-45">cyclic list</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-8.1.xhtml#chapter-8-48">cyclotomic polynomial</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-7.2.xhtml#chapter-7-170">cylindrical coordinate system</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-167">cylindrical</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-171">cylindrical</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-15.3.xhtml#chapter-15-3">d02cjf</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-9.15.xhtml#chapter-9-4">decimal</a><span style="padding-left: 10px;">Section 9.15  DecimalExpansion</span><br/>
+<a href="section-1.3.xhtml#chapter-1-17">declaration</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-12.6.xhtml#chapter-12-16">default definitions</a><span style="padding-left: 10px;">Section 12.6  Defaults</span><br/>
+<a href="section-9.60.xhtml#chapter-9-10">degree</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-2">degree</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.7.xhtml#chapter-9-37">degree</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.45.xhtml#chapter-9-4">degree</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.83.xhtml#chapter-9-4">degree</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.7.xhtml#chapter-9-41">degree</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.63.xhtml#chapter-9-69">degree</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-5.1.xhtml#chapter-5-6">delayed assignment</a><span style="padding-left: 10px;">Section 5.1  Immediate and Delayed Assignments</span><br/>
+<a href="section-2.1.xhtml#chapter-2-3">delete</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-9.1.xhtml#chapter-9-2">delete</a><span style="padding-left: 10px;">Section 9.1  AssociationList</span><br/>
+<a href="section-9.1.xhtml#chapter-9-4">delete</a><span style="padding-left: 10px;">Section 9.1  AssociationList</span><br/>
+<a href="section-9.3.xhtml#chapter-9-18">deleteProperty!</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.21.xhtml#chapter-9-22">denom</a><span style="padding-left: 10px;">Section 9.21  Expression</span><br/>
+<a href="section-9.28.xhtml#chapter-9-26">denom</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-1.11.xhtml#chapter-1-74">derivative</a><span style="padding-left: 10px;">Section 1.11  Derivatives</span><br/>
+<a href="section-12.11.xhtml#chapter-12-24">determinant</a><span style="padding-left: 10px;">Section 12.11  Conditionals</span><br/>
+<a href="section-9.52.xhtml#chapter-9-112">determinant</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.27.xhtml#chapter-9-20">determinant</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.62.xhtml#chapter-9-48">determinant</a><span style="padding-left: 10px;">Section 9.62  Permanent</span><br/>
+<a href="section-9.52.xhtml#chapter-9-82">diagonalMatrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.71.xhtml#chapter-9-16">difference</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-8.14.xhtml#chapter-8-227">differential equation:partial</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+<a href="section-8.10.xhtml#chapter-8-151">differential equation</a><span style="padding-left: 10px;">Section 8.10  Solution of Differential Equations</span><br/>
+<a href="section-8.10.xhtml#chapter-8-153">differential equation</a><span style="padding-left: 10px;">Section 8.10  Solution of Differential Equations</span><br/>
+<a href="section-9.60.xhtml#chapter-9-8">differentialVariables</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-1.11.xhtml#chapter-1-77">differentiation:formal</a><span style="padding-left: 10px;">Section 1.11  Derivatives</span><br/>
+<a href="section-1.11.xhtml#chapter-1-76">differentiation:partial</a><span style="padding-left: 10px;">Section 1.11  Derivatives</span><br/>
+<a href="section-1.11.xhtml#chapter-1-75">differentiation</a><span style="padding-left: 10px;">Section 1.11  Derivatives</span><br/>
+<a href="section-1.4.xhtml#chapter-1-32">digits</a><span style="padding-left: 10px;">Section 1.4  Numbers</span><br/>
+<a href="section-9.27.xhtml#chapter-9-10">digits</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-12">digits</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-22">digits</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.6.xhtml#chapter-9-23">dimension</a><span style="padding-left: 10px;">Section 9.6  CardinalNumber</span><br/>
+<a href="section-4.1.xhtml#chapter-4-2">directory:default for searching</a><span style="padding-left: 10px;">Section 4.1  Input Files</span><br/>
+<a href="section-16.23.xhtml#chapter-16-159">directory:for spool files</a><span style="padding-left: 10px;">Section 16.23  )spool</span><br/>
+<a href="section-8.11.xhtml#chapter-8-170">discrete logarithm</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-177">discrete logarithm</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-2.12.xhtml#chapter-2-81">display operation</a><span style="padding-left: 10px;">Section 2.12  Commands for Snooping</span><br/>
+<a href="section-16.8.xhtml#chapter-16-50">display</a><span style="padding-left: 10px;">Section 16.8  )display</span><br/>
+<a href="section-7.2.xhtml#chapter-7-192">dithering</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-9.83.xhtml#chapter-9-32">divide</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.34.xhtml#chapter-9-78">divide</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.36.xhtml#chapter-9-104">divisors</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-12.3.xhtml#chapter-12-10">documentation</a><span style="padding-left: 10px;">Section 12.3  Documentation</span><br/>
+<a href="section-13.8.xhtml#chapter-13-10">domain:add</a><span style="padding-left: 10px;">Section 13.8  Add Domain</span><br/>
+<a href="section-13.6.xhtml#chapter-13-4">domain:representation</a><span style="padding-left: 10px;">Section 13.6  Representation</span><br/>
+<a href="section-0.2.xhtml#chapter-0-6">domain</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-13.6.xhtml#chapter-13-8">dot</a><span style="padding-left: 10px;">Section 13.6  Representation</span><br/>
+<a href="section-7.1.xhtml#chapter-7-19">drawToScale</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-16.4.xhtml#chapter-16-23">edit</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.9.xhtml#chapter-16-59">edit</a><span style="padding-left: 10px;">Section 16.9  )edit</span><br/>
+<a href="section-16.9.xhtml#chapter-16-60">editing files</a><span style="padding-left: 10px;">Section 16.9  )edit</span><br/>
+<a href="section-8.4.xhtml#chapter-8-66">eigenvalue</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-8.4.xhtml#chapter-8-67">eigenvector</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-8.11.xhtml#chapter-8-169">element:primitive</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-182">element:primitive</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-5.3.xhtml#chapter-5-16">else</a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-9.82.xhtml#chapter-9-124">elt</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-126">elt</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.85.xhtml#chapter-9-38">elt</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.47.xhtml#chapter-9-41">elt</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.85.xhtml#chapter-9-46">elt</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-54">elt</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.80.xhtml#chapter-9-94">elt</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-96">elt</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-16.9.xhtml#chapter-16-63">emacs</a><span style="padding-left: 10px;">Section 16.9  )edit</span><br/>
+<a href="section-16.9.xhtml#chapter-16-64">emacs</a><span style="padding-left: 10px;">Section 16.9  )edit</span><br/>
+<a href="section-9.47.xhtml#chapter-9-35">empty?</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.81.xhtml#chapter-9-116">endOfFile?</a><span style="padding-left: 10px;">Section 9.81  TextFile</span><br/>
+<a href="section-9.73.xhtml#chapter-9-48">entries</a><span style="padding-left: 10px;">Section 9.73  SparseTable</span><br/>
+<a href="section-11.4.xhtml#chapter-11-11">environment</a><span style="padding-left: 10px;">Section 11.4  Capsules</span><br/>
+<a href="section-9.18.xhtml#chapter-9-10">eq?</a><span style="padding-left: 10px;">Section 9.18  EqTable</span><br/>
+<a href="section-9.18.xhtml#chapter-9-12">eq?</a><span style="padding-left: 10px;">Section 9.18  EqTable</span><br/>
+<a href="section-9.18.xhtml#chapter-9-6">eq?</a><span style="padding-left: 10px;">Section 9.18  EqTable</span><br/>
+<a href="section-5.3.xhtml#chapter-5-21">equality testing</a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-8.10.xhtml#chapter-8-152">equation:differential:solving in closed-form</a><span style="padding-left: 10px;">Section 8.10  Solution of Differential Equations</span><br/>
+<a href="section-8.10.xhtml#chapter-8-157">equation:differential:solving in power series</a><span style="padding-left: 10px;">Section 8.10  Solution of Differential Equations</span><br/>
+<a href="section-8.10.xhtml#chapter-8-150">equation:differential:solving</a><span style="padding-left: 10px;">Section 8.10  Solution of Differential Equations</span><br/>
+<a href="section-8.10.xhtml#chapter-8-154">equation:differential</a><span style="padding-left: 10px;">Section 8.10  Solution of Differential Equations</span><br/>
+<a href="section-8.5.xhtml#chapter-8-79">equation:linear:solving</a><span style="padding-left: 10px;">Section 8.5  Solution of Linear and Polynomial Equations</span><br/>
+<a href="section-8.5.xhtml#chapter-8-82">equation:polynomial:solving</a><span style="padding-left: 10px;">Section 8.5  Solution of Linear and Polynomial Equations</span><br/>
+<a href="section-8.5.xhtml#chapter-8-87">equation:polynomial:solving</a><span style="padding-left: 10px;">Section 8.5  Solution of Linear and Polynomial Equations</span><br/>
+<a href="section-5.3.xhtml#chapter-5-19">equation</a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-8.6.xhtml#chapter-8-93">essential singularity</a><span style="padding-left: 10px;">Section 8.6  Limits</span><br/>
+<a href="section-9.36.xhtml#chapter-9-112">eulerPhi</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.34.xhtml#chapter-9-98">eulerPhi</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-8.9.xhtml#chapter-8-140">eval</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-9.60.xhtml#chapter-9-16">eval</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.50.xhtml#chapter-9-56">eval</a><span style="padding-left: 10px;">Section 9.50  MakeFunction</span><br/>
+<a href="section-9.63.xhtml#chapter-9-81">eval</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.34.xhtml#chapter-9-62">even?</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.25.xhtml#chapter-9-72">exists?</a><span style="padding-left: 10px;">Section 9.25  FileName</span><br/>
+<a href="section-1.1.xhtml#chapter-1-8">exiting @{exiting Axiom}</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-9.12.xhtml#chapter-9-77">exp</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-9.22.xhtml#chapter-9-34">expand</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.47.xhtml#chapter-9-54">expand</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.69.xhtml#chapter-9-6">expand</a><span style="padding-left: 10px;">Section 9.69  Segment</span><br/>
+<a href="section-2.11.xhtml#chapter-2-63">exposed:constructor</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-2.11.xhtml#chapter-2-67">exposure:group</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-2.5.xhtml#chapter-2-35">exquo</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-9.34.xhtml#chapter-9-76">exquo</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.14.xhtml#chapter-9-0">exteriorDifferential</a><span style="padding-left: 10px;">Section 9.14  DeRhamComplex</span><br/>
+<a href="section-9.14.xhtml#chapter-9-2">exteriorDifferential</a><span style="padding-left: 10px;">Section 9.14  DeRhamComplex</span><br/>
+<a href="section-9.22.xhtml#chapter-9-28">factor</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.28.xhtml#chapter-9-38">factor</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.28.xhtml#chapter-9-46">factor</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.63.xhtml#chapter-9-52">factor</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.11.xhtml#chapter-9-63">factor</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-9.34.xhtml#chapter-9-80">factor</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.22.xhtml#chapter-9-30">factorList</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-44">factorList</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-48">factorList</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-8.2.xhtml#chapter-8-52">factorization</a><span style="padding-left: 10px;">Section 8.2  Polynomial Factorization</span><br/>
+<a href="section-9.22.xhtml#chapter-9-32">factors</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-6.13.xhtml#chapter-6-35">fibonacci</a><span style="padding-left: 10px;">Section 6.13  Recurrence Relations</span><br/>
+<a href="section-9.36.xhtml#chapter-9-116">fibonacci</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.34.xhtml#chapter-9-90">fibonacci</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-8.11.xhtml#chapter-8-164">field:Galois</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.13.xhtml#chapter-8-222">field:Hilbert class</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-8.11.xhtml#chapter-8-190">field:finite:conversions</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-173">field:finite:extension of</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-176">field:finite:extension of</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-180">field:finite:extension of</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-185">field:finite:extension of</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-162">field:finite:prime</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-163">field:prime</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.13.xhtml#chapter-8-213">field:splitting</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-2.1.xhtml#chapter-2-7">field</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-3.8.xhtml#chapter-3-5">file:.Xdefaults</a><span style="padding-left: 10px;">Section 3.8  X Window Resources for HyperDoc</span><br/>
+<a href="section-2.11.xhtml#chapter-2-65">file:exposed.lsp @<span style="font-weight: bold;"> exposed.lsp</span></a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-16.11.xhtml#chapter-16-79">file:history</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-11.5.xhtml#chapter-11-12">file:input:vs. package</a><span style="padding-left: 10px;">Section 11.5  Input Files vs. Packages</span><br/>
+<a href="section-4.1.xhtml#chapter-4-4">file:input:where found</a><span style="padding-left: 10px;">Section 4.1  Input Files</span><br/>
+<a href="section-1.7.xhtml#chapter-1-64">file:input</a><span style="padding-left: 10px;">Section 1.7  Writing Your Own Functions</span><br/>
+<a href="section-16.20.xhtml#chapter-16-140">file:input</a><span style="padding-left: 10px;">Section 16.20  )read</span><br/>
+<a href="section-16.1.xhtml#chapter-16-4">file:input</a><span style="padding-left: 10px;">Section 16.1  Introduction</span><br/>
+<a href="section-16.13.xhtml#chapter-16-90">file:input</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-4.1.xhtml#chapter-4-0">file:input</a><span style="padding-left: 10px;">Section 4.1  Input Files</span><br/>
+<a href="section-5.2.xhtml#chapter-5-13">file:input</a><span style="padding-left: 10px;">Section 5.2  Blocks</span><br/>
+<a href="section-4.3.xhtml#chapter-4-14">file:sending output to</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-16.23.xhtml#chapter-16-158">file:spool</a><span style="padding-left: 10px;">Section 16.23  )spool</span><br/>
+<a href="section-4.2.xhtml#chapter-4-8">file:start-up profile</a><span style="padding-left: 10px;">Section 4.2  The .axiom.input File</span><br/>
+<a href="section-9.25.xhtml#chapter-9-80">filename</a><span style="padding-left: 10px;">Section 9.25  FileName</span><br/>
+<a href="section-16.10.xhtml#chapter-16-69">fin</a><span style="padding-left: 10px;">Section 16.10  )fin</span><br/>
+<a href="section-8.2.xhtml#chapter-8-56">finite field:factoring polynomial with coefficients in</a><span style="padding-left: 10px;">Section 8.2  Polynomial Factorization</span><br/>
+<a href="section-8.11.xhtml#chapter-8-160">finite field</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-172">finite field</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-175">finite field</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-179">finite field</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-184">finite field</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-9.6.xhtml#chapter-9-25">finite?</a><span style="padding-left: 10px;">Section 9.6  CardinalNumber</span><br/>
+<a href="section-1.5.xhtml#chapter-1-38">first</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-11.8.xhtml#chapter-11-17">first</a><span style="padding-left: 10px;">Section 11.8  Conditionals</span><br/>
+<a href="section-13.13.xhtml#chapter-13-19">first</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-9.47.xhtml#chapter-9-39">first</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.61.xhtml#chapter-9-40">firstDenom</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.61.xhtml#chapter-9-38">firstNumer</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-1.4.xhtml#chapter-1-31">floating point</a><span style="padding-left: 10px;">Section 1.4  Numbers</span><br/>
+<a href="section-8.1.xhtml#chapter-8-4">floating-point number:complex</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-2">floating-point number</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-6.16.xhtml#chapter-6-52">fluid variable</a><span style="padding-left: 10px;">Section 6.16  Free and Local Variables</span><br/>
+<a href="section-3.8.xhtml#chapter-3-6">font</a><span style="padding-left: 10px;">Section 3.8  X Window Resources for HyperDoc</span><br/>
+<a href="section-5.4.xhtml#chapter-5-39">for</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-43">for</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-9.65.xhtml#chapter-9-97">fractRagits</a><span style="padding-left: 10px;">Section 9.65  RadixExpansion</span><br/>
+<a href="section-1.4.xhtml#chapter-1-36">fraction:partial</a><span style="padding-left: 10px;">Section 1.4  Numbers</span><br/>
+<a href="section-9.27.xhtml#chapter-9-8">fractionPart</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-16.11.xhtml#chapter-16-78">frame drop</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-16.11.xhtml#chapter-16-80">frame import</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-16.11.xhtml#chapter-16-77">frame last</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-16.11.xhtml#chapter-16-74">frame names</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-16.11.xhtml#chapter-16-75">frame new</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-16.11.xhtml#chapter-16-76">frame next</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-2.11.xhtml#chapter-2-74">frame:exposure and</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-16.11.xhtml#chapter-16-73">frame</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-2.11.xhtml#chapter-2-75">frame</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-6.16.xhtml#chapter-6-45">free variable</a><span style="padding-left: 10px;">Section 6.16  Free and Local Variables</span><br/>
+<a href="section-6.16.xhtml#chapter-6-44">free</a><span style="padding-left: 10px;">Section 6.16  Free and Local Variables</span><br/>
+<a href="section-9.29.xhtml#chapter-9-48">fullPartialFraction</a><span style="padding-left: 10px;">Section 9.29  FullPartialFractionExpansion</span><br/>
+<a href="section-8.1.xhtml#chapter-8-28">function:Airy Ai</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-29">function:Airy Bi</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-23">function:Bessel</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-24">function:Bessel</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-25">function:Bessel</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-26">function:Bessel</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-21.5.xhtml#chapter-21-5">function:Euler Beta</a><span style="padding-left: 10px;">Section 21.5  images6.input</span><br/>
+<a href="section-8.1.xhtml#chapter-8-18">function:Euler Beta</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-21.5.xhtml#chapter-21-4">function:Gamma</a><span style="padding-left: 10px;">Section 21.5  images6.input</span><br/>
+<a href="section-8.1.xhtml#chapter-8-16">function:Gamma</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-6.17.xhtml#chapter-6-58">function:anonymous:declaring</a><span style="padding-left: 10px;">Section 6.17  Anonymous Functions</span><br/>
+<a href="section-6.17.xhtml#chapter-6-59">function:anonymous:restrictions</a><span style="padding-left: 10px;">Section 6.17  Anonymous Functions</span><br/>
+<a href="section-6.17.xhtml#chapter-6-54">function:anonymous</a><span style="padding-left: 10px;">Section 6.17  Anonymous Functions</span><br/>
+<a href="section-6.1.xhtml#chapter-6-6">function:arguments</a><span style="padding-left: 10px;">Section 6.1  Functions vs. Macros</span><br/>
+<a href="section-6.12.xhtml#chapter-6-30">function:caching values</a><span style="padding-left: 10px;">Section 6.12  Caching Previously Computed Results</span><br/>
+<a href="section-1.3.xhtml#chapter-1-19">function:calling</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-7.2.xhtml#chapter-7-135">function:coloring</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-6.10.xhtml#chapter-6-15">function:compiler</a><span style="padding-left: 10px;">Section 6.10  Compiling vs. Interpreting</span><br/>
+<a href="section-8.1.xhtml#chapter-8-50">function:complex arctangent</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-49">function:complex exponential</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-6.11.xhtml#chapter-6-28">function:constant argument</a><span style="padding-left: 10px;">Section 6.11  Piece-Wise Function Definitions</span><br/>
+<a href="section-6.14.xhtml#chapter-6-40">function:declaring</a><span style="padding-left: 10px;">Section 6.14  Making Functions from Objects</span><br/>
+<a href="section-6.17.xhtml#chapter-6-57">function:declaring</a><span style="padding-left: 10px;">Section 6.17  Anonymous Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-21">function:digamma</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.7.xhtml#chapter-8-96">function:elementary</a><span style="padding-left: 10px;">Section 8.7  Laplace Transforms</span><br/>
+<a href="section-6.14.xhtml#chapter-6-38">function:from an object</a><span style="padding-left: 10px;">Section 6.14  Making Functions from Objects</span><br/>
+<a href="section-8.1.xhtml#chapter-8-31">function:hypergeometric</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-6.10.xhtml#chapter-6-16">function:interpretation</a><span style="padding-left: 10px;">Section 6.10  Compiling vs. Interpreting</span><br/>
+<a href="section-8.1.xhtml#chapter-8-0">function:numeric</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-6.5.xhtml#chapter-6-11">function:one-line definition</a><span style="padding-left: 10px;">Section 6.5  One-Line Functions</span><br/>
+<a href="section-6.1.xhtml#chapter-6-4">function:parameters</a><span style="padding-left: 10px;">Section 6.1  Functions vs. Macros</span><br/>
+<a href="section-1.7.xhtml#chapter-1-62">function:piece-wise definition</a><span style="padding-left: 10px;">Section 1.7  Writing Your Own Functions</span><br/>
+<a href="section-6.11.xhtml#chapter-6-23">function:piece-wise definition</a><span style="padding-left: 10px;">Section 6.11  Piece-Wise Function Definitions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-22">function:polygamma</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-6.11.xhtml#chapter-6-26">function:predicate</a><span style="padding-left: 10px;">Section 6.11  Piece-Wise Function Definitions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-15">function:special</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-44">function:totient</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-6.1.xhtml#chapter-6-0">function:vs. macro</a><span style="padding-left: 10px;">Section 6.1  Functions vs. Macros</span><br/>
+<a href="section-6.8.xhtml#chapter-6-13">function:with no arguments</a><span style="padding-left: 10px;">Section 6.8  Delayed Assignments vs. Functions with No Arguments</span><br/>
+<a href="section-1.7.xhtml#chapter-1-61">function</a><span style="padding-left: 10px;">Section 1.7  Writing Your Own Functions</span><br/>
+<a href="section-9.50.xhtml#chapter-9-58">function</a><span style="padding-left: 10px;">Section 9.50  MakeFunction</span><br/>
+<a href="section-9.50.xhtml#chapter-9-60">function</a><span style="padding-left: 10px;">Section 9.50  MakeFunction</span><br/>
+<a href="section-9.50.xhtml#chapter-9-62">function</a><span style="padding-left: 10px;">Section 9.50  MakeFunction</span><br/>
+<a href="section-8.14.xhtml#chapter-8-234">gamete</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+<a href="section-9.83.xhtml#chapter-9-18">gcd</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.22.xhtml#chapter-9-26">gcd</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.28.xhtml#chapter-9-40">gcd</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.63.xhtml#chapter-9-55">gcd</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.34.xhtml#chapter-9-64">gcd</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.83.xhtml#chapter-9-8">gcd</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-15.3.xhtml#chapter-15-22">generalFortran</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-5.6.xhtml#chapter-5-65">generate</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-5.6.xhtml#chapter-5-67">generate</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-5.6.xhtml#chapter-5-69">generate</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-8.14.xhtml#chapter-8-232">genetics</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+<a href="section-7.1.xhtml#chapter-7-117">getGraph</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-6.16.xhtml#chapter-6-48">global variable</a><span style="padding-left: 10px;">Section 6.16  Free and Local Variables</span><br/>
+<a href="section-7.2.xhtml#chapter-7-202">graphics:.Xdefaults:PostScript file name</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-282">graphics:.Xdefaults:PostScript file name</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-284">graphics:.Xdefaults:PostScript file name</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-67">graphics:.Xdefaults:PostScript file name</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-275">graphics:.Xdefaults:button font</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-277">graphics:.Xdefaults:graph label font</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-276">graphics:.Xdefaults:graph number font</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-278">graphics:.Xdefaults:inverting background</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-279">graphics:.Xdefaults:lighting font</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-280">graphics:.Xdefaults:message font</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-281">graphics:.Xdefaults:monochrome</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-286">graphics:.Xdefaults:title font</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-288">graphics:.Xdefaults:unit label font</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-289">graphics:.Xdefaults:volume label font</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-273">graphics:.Xdefaults</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-93">graphics:2D commands:axes</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-94">graphics:2D commands:close</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-95">graphics:2D commands:connect</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-96">graphics:2D commands:graphs</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-98">graphics:2D commands:key</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-99">graphics:2D commands:move</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-100">graphics:2D commands:options</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-101">graphics:2D commands:points</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-102">graphics:2D commands:resize</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-103">graphics:2D commands:scale</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-97">graphics:2D commands:state of graphs</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-104">graphics:2D commands:translate</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-61">graphics:2D control-panel:axes</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-63">graphics:2D control-panel:box</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-60">graphics:2D control-panel:buttons</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-56">graphics:2D control-panel:clear</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-59">graphics:2D control-panel:drop</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-71">graphics:2D control-panel:hide</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-65">graphics:2D control-panel:lines</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-54">graphics:2D control-panel:messages</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-55">graphics:2D control-panel:multiple graphs</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-58">graphics:2D control-panel:pick</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-64">graphics:2D control-panel:points</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-66">graphics:2D control-panel:ps</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-57">graphics:2D control-panel:query</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-72">graphics:2D control-panel:quit</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-70">graphics:2D control-panel:reset</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-52">graphics:2D control-panel:scale</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-51">graphics:2D control-panel:transformations</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-53">graphics:2D control-panel:translate</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-62">graphics:2D control-panel:units</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-50">graphics:2D control-panel</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-89">graphics:2D defaults:available viewport writes</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-15">graphics:2D options:adaptive</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-22">graphics:2D options:clip in a range</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-16">graphics:2D options:clipping</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-31">graphics:2D options:coordinates</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-24">graphics:2D options:curve color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-27">graphics:2D options:point color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-30">graphics:2D options:range</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-29">graphics:2D options:set units</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-21">graphics:2D options:to scale</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-223">graphics:3D commands:axes</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-224">graphics:3D commands:close</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-226">graphics:3D commands:control-panel</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-225">graphics:3D commands:define color</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-257">graphics:3D commands:deltaX default</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-258">graphics:3D commands:deltaY default</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-227">graphics:3D commands:diagonals</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-228">graphics:3D commands:drawing style</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-229">graphics:3D commands:eye distance</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-251">graphics:3D commands:intensity</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-232">graphics:3D commands:key</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-233">graphics:3D commands:lighting</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-234">graphics:3D commands:modify point data</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-235">graphics:3D commands:move</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-236">graphics:3D commands:outline</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-237">graphics:3D commands:perspective</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-259">graphics:3D commands:phi default</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-238">graphics:3D commands:reset</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-239">graphics:3D commands:resize</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-240">graphics:3D commands:rotate</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-270">graphics:3D commands:scale default</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-271">graphics:3D commands:scale</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-247">graphics:3D commands:showRegion</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-248">graphics:3D commands:subspace</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-263">graphics:3D commands:theta default</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-249">graphics:3D commands:title</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-250">graphics:3D commands:translate</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-260">graphics:3D commands:viewpoint</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-195">graphics:3D control-panel:axes</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-194">graphics:3D control-panel:bounds</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-185">graphics:3D control-panel:buttons</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-197">graphics:3D control-panel:bw</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-216">graphics:3D control-panel:clip volume</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-220">graphics:3D control-panel:clip volume</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-219">graphics:3D control-panel:clipping on</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-183">graphics:3D control-panel:color map</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-214">graphics:3D control-panel:eye reference</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-207">graphics:3D control-panel:hide</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-212">graphics:3D control-panel:intensity</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-209">graphics:3D control-panel:light</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-182">graphics:3D control-panel:messages</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-210">graphics:3D control-panel:move xy</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-211">graphics:3D control-panel:move z</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-196">graphics:3D control-panel:outline</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-217">graphics:3D control-panel:perspective</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-199">graphics:3D control-panel:pixmap</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-200">graphics:3D control-panel:ps</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-208">graphics:3D control-panel:quit</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-206">graphics:3D control-panel:reset</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-179">graphics:3D control-panel:rotate</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-198">graphics:3D control-panel:save</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-180">graphics:3D control-panel:scale</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-188">graphics:3D control-panel:shade</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-218">graphics:3D control-panel:show clip region</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-190">graphics:3D control-panel:smooth</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-187">graphics:3D control-panel:solid</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-178">graphics:3D control-panel:transformations</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-181">graphics:3D control-panel:translate</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-213">graphics:3D control-panel:view volume</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-186">graphics:3D control-panel:wire</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-177">graphics:3D control-panel</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-264">graphics:3D defaults:available viewport writes</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-256">graphics:3D defaults:reset viewport defaults</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-252">graphics:3D defaults:tube points</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-253">graphics:3D defaults:tube radius</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-254">graphics:3D defaults:var1 steps</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-255">graphics:3D defaults:var2 steps</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-261">graphics:3D defaults:viewport position</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-262">graphics:3D defaults:viewport size</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-269">graphics:3D defaults:viewport writes</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-134">graphics:3D options:color function</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-132">graphics:3D options:title</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-143">graphics:3D options:variable steps</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-131">graphics:3D options</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-287">graphics:Xdefaults:2d</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-154">graphics:advanced:build 3D objects</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-175">graphics:advanced:clip</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-160">graphics:advanced:coordinate systems</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-42">graphics:color:hue function</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-44">graphics:color:multiply function</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-40">graphics:color:number of hues</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-43">graphics:color:primary color functions</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-35">graphics:color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-46">graphics:palette</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-221">graphics:plot3d defaults:adaptive</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-241">graphics:plot3d defaults:set adaptive</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-243">graphics:plot3d defaults:set max points</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-244">graphics:plot3d defaults:set min points</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-245">graphics:plot3d defaults:set screen resolution</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-74">graphics:set 2D defaults:adaptive</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-75">graphics:set 2D defaults:axes color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-76">graphics:set 2D defaults:clip points</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-78">graphics:set 2D defaults:line color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-79">graphics:set 2D defaults:max points</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-80">graphics:set 2D defaults:min points</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-81">graphics:set 2D defaults:point color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-82">graphics:set 2D defaults:point size</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-86">graphics:set 2D defaults:reset viewport</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-83">graphics:set 2D defaults:screen resolution</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-77">graphics:set 2D defaults:to scale</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-85">graphics:set 2D defaults:units color</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-87">graphics:set 2D defaults:viewport position</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-88">graphics:set 2D defaults:viewport size</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-92">graphics:set 2D defaults:write viewport</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-121">graphics:three-dimensional</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-3">graphics:two-dimensional</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-1.16.xhtml#chapter-1-80">graphics</a><span style="padding-left: 10px;">Section 1.16  Graphics</span><br/>
+<a href="section-7.0.xhtml#chapter-7-0">graphics</a><span style="padding-left: 10px;">Section 7.0 Graphics</span><br/>
+<a href="section-9.39.xhtml#chapter-9-22">groebner</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.31.xhtml#chapter-9-50">groebnerFactorize</a><span style="padding-left: 10px;">Section 9.31  GroebnerFactorizationPackage</span><br/>
+<a href="section-9.31.xhtml#chapter-9-52">groebnerFactorize</a><span style="padding-left: 10px;">Section 9.31  GroebnerFactorizationPackage</span><br/>
+<a href="section-9.63.xhtml#chapter-9-65">ground?</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-8.13.xhtml#chapter-8-211">group:Galois</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-8.11.xhtml#chapter-8-181">group:cyclic</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.13.xhtml#chapter-8-218">group:dihedral</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-8.13.xhtml#chapter-8-220">group:dihedral</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-2.11.xhtml#chapter-2-66">group:exposure</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-8.13.xhtml#chapter-8-223">group:symmetric</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-9.84.xhtml#chapter-9-34">hasHi</a><span style="padding-left: 10px;">Section 9.84  UniversalSegment</span><br/>
+<a href="section-9.37.xhtml#chapter-9-126">height</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-16.12.xhtml#chapter-16-87">help</a><span style="padding-left: 10px;">Section 16.12  )help</span><br/>
+<a href="section-9.33.xhtml#chapter-9-54">hex</a><span style="padding-left: 10px;">Section 9.33  HexadecimalExpansion</span><br/>
+<a href="section-9.69.xhtml#chapter-9-2">hi</a><span style="padding-left: 10px;">Section 9.69  Segment</span><br/>
+<a href="section-16.13.xhtml#chapter-16-95">history )change</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-16.13.xhtml#chapter-16-94">history )off</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-16.13.xhtml#chapter-16-91">history )on</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-16.4.xhtml#chapter-16-22">history )restore</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.4.xhtml#chapter-16-26">history )save</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.4.xhtml#chapter-16-25">history )write</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-4.1.xhtml#chapter-4-5">history )write</a><span style="padding-left: 10px;">Section 4.1  Input Files</span><br/>
+<a href="section-16.13.xhtml#chapter-16-89">history</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-7.2.xhtml#chapter-7-215">hither clipping plane</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-9.52.xhtml#chapter-9-96">horizConcat</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-15.3.xhtml#chapter-15-10">htxl1</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-11">htxl1</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-7.1.xhtml#chapter-7-37">hue</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-8.12.xhtml#chapter-8-209">ideal:primary decomposition</a><span style="padding-left: 10px;">Section 8.12  Primary Decomposition of Ideals</span><br/>
+<a href="section-11.8.xhtml#chapter-11-21">if</a><span style="padding-left: 10px;">Section 11.8  Conditionals</span><br/>
+<a href="section-5.3.xhtml#chapter-5-14">if</a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-9.11.xhtml#chapter-9-61">imag</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-5.1.xhtml#chapter-5-1">immediate assignment</a><span style="padding-left: 10px;">Section 5.1  Immediate and Delayed Assignments</span><br/>
+<a href="section-5.4.xhtml#chapter-5-40">in</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-44">in</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-9.69.xhtml#chapter-9-4">incr</a><span style="padding-left: 10px;">Section 9.69  Segment</span><br/>
+<a href="section-12.1.xhtml#chapter-12-5">indentation</a><span style="padding-left: 10px;">Section 12.1  Definitions</span><br/>
+<a href="section-5.2.xhtml#chapter-5-12">indentation</a><span style="padding-left: 10px;">Section 5.2  Blocks</span><br/>
+<a href="section-5.3.xhtml#chapter-5-23">inequality testing</a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-1.3.xhtml#chapter-1-26">infinity@{<math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x221E;</mo></mstyle></math> (= %infinity)}</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-9.60.xhtml#chapter-9-22">initial</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-2.1.xhtml#chapter-2-1">insert</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-8.8.xhtml#chapter-8-111">integrate</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-8.8.xhtml#chapter-8-113">integrate</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-8.8.xhtml#chapter-8-99">integrate</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-9.63.xhtml#chapter-9-85">integrate</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-8.8.xhtml#chapter-8-110">integration:definite</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-8.8.xhtml#chapter-8-106">integration:result as a complex functions</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-8.8.xhtml#chapter-8-103">integration:result as list of real functions</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-1.12.xhtml#chapter-1-79">integration</a><span style="padding-left: 10px;">Section 1.12  Integration</span><br/>
+<a href="section-8.8.xhtml#chapter-8-98">integration</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-6.10.xhtml#chapter-6-17">interpret-code mode</a><span style="padding-left: 10px;">Section 6.10  Compiling vs. Interpreting</span><br/>
+<a href="section-1.1.xhtml#chapter-1-6">interrupt</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-9.71.xhtml#chapter-9-12">intersect</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-2.9.xhtml#chapter-2-57">inv</a><span style="padding-left: 10px;">Section 2.9  Package Calling and Target Types</span><br/>
+<a href="section-14.3.xhtml#chapter-14-13">inverse</a><span style="padding-left: 10px;">Section 14.3  Miscellaneous Features of Browse</span><br/>
+<a href="section-9.52.xhtml#chapter-9-110">inverse</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.72.xhtml#chapter-9-34">invmod</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.37.xhtml#chapter-9-136">is?</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-138">is?</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.3.xhtml#chapter-9-14">is?</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-5.2.xhtml#chapter-5-11">iterate</a><span style="padding-left: 10px;">Section 5.2  Blocks</span><br/>
+<a href="section-5.4.xhtml#chapter-5-37">iterate</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-46">iterate</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-48">iteration:nested</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-49">iteration:nested</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.5.xhtml#chapter-5-59">iteration:nested</a><span style="padding-left: 10px;">Section 5.5  Creating Lists and Streams with Iterators</span><br/>
+<a href="section-5.4.xhtml#chapter-5-50">iteration:parallel</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.5.xhtml#chapter-5-60">iteration:parallel</a><span style="padding-left: 10px;">Section 5.5  Creating Lists and Streams with Iterators</span><br/>
+<a href="section-5.4.xhtml#chapter-5-41">iteration</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.5.xhtml#chapter-5-52">iteration</a><span style="padding-left: 10px;">Section 5.5  Creating Lists and Streams with Iterators</span><br/>
+<a href="section-9.36.xhtml#chapter-9-120">jacobi</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.34.xhtml#chapter-9-94">jacobi</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.34.xhtml#chapter-9-96">jacobi</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.37.xhtml#chapter-9-122">kernel</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-124">kernels</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.38.xhtml#chapter-9-10">keys</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-9.80.xhtml#chapter-9-108">keys</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.38.xhtml#chapter-9-2">keys</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-9.41.xhtml#chapter-9-38">keys</a><span style="padding-left: 10px;">Section 9.41  Library</span><br/>
+<a href="section-9.73.xhtml#chapter-9-46">keys</a><span style="padding-left: 10px;">Section 9.73  SparseTable</span><br/>
+<a href="section-9.80.xhtml#chapter-9-98">keys</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-8.9.xhtml#chapter-8-123">lazy evaluation</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-9.83.xhtml#chapter-9-10">lcm</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.28.xhtml#chapter-9-42">lcm</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.63.xhtml#chapter-9-57">lcm</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.34.xhtml#chapter-9-66">lcm</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.60.xhtml#chapter-9-18">leader</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-0">leadingCoefficient</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-79">leadingCoefficient</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-77">leadingMonomial</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.45.xhtml#chapter-9-0">leftDivide</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-14">leftExactQuotient</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-18">leftGcd</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-24">leftLcm</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-10">leftQuotient</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-12">leftRemainder</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.77.xhtml#chapter-9-62">leftTrim</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.36.xhtml#chapter-9-118">legendre</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.34.xhtml#chapter-9-92">legendre</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.39.xhtml#chapter-9-12">lexTriangular</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-18">lexTriangular</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-24">lexTriangular</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.19.xhtml#chapter-9-16">lhs</a><span style="padding-left: 10px;">Section 9.19  Equation</span><br/>
+<a href="section-16.14.xhtml#chapter-16-101">library</a><span style="padding-left: 10px;">Section 16.14  )library</span><br/>
+<a href="section-8.6.xhtml#chapter-8-90">limit:at infinity</a><span style="padding-left: 10px;">Section 8.6  Limits</span><br/>
+<a href="section-1.9.xhtml#chapter-1-69">limit:of function with parameters</a><span style="padding-left: 10px;">Section 1.9  Limits</span><br/>
+<a href="section-8.6.xhtml#chapter-8-91">limit:of function with parameters</a><span style="padding-left: 10px;">Section 8.6  Limits</span><br/>
+<a href="section-8.6.xhtml#chapter-8-89">limit:one-sided vs. two-sided</a><span style="padding-left: 10px;">Section 8.6  Limits</span><br/>
+<a href="section-8.6.xhtml#chapter-8-92">limit:real vs. complex</a><span style="padding-left: 10px;">Section 8.6  Limits</span><br/>
+<a href="section-1.9.xhtml#chapter-1-68">limit</a><span style="padding-left: 10px;">Section 1.9  Limits</span><br/>
+<a href="section-8.6.xhtml#chapter-8-88">limit</a><span style="padding-left: 10px;">Section 8.6  Limits</span><br/>
+<a href="section-8.5.xhtml#chapter-8-78">linear equation</a><span style="padding-left: 10px;">Section 8.5  Solution of Linear and Polynomial Equations</span><br/>
+<a href="section-16.15.xhtml#chapter-16-107">lisp</a><span style="padding-left: 10px;">Section 16.15  )lisp</span><br/>
+<a href="section-5.5.xhtml#chapter-5-53">list:created by iterator</a><span style="padding-left: 10px;">Section 5.5  Creating Lists and Streams with Iterators</span><br/>
+<a href="section-1.5.xhtml#chapter-1-44">list:cyclic</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-9.47.xhtml#chapter-9-28">list</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.47.xhtml#chapter-9-29">list</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.69.xhtml#chapter-9-0">lo</a><span style="padding-left: 10px;">Section 9.69  Segment</span><br/>
+<a href="section-13.13.xhtml#chapter-13-26">load</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-16.16.xhtml#chapter-16-112">load</a><span style="padding-left: 10px;">Section 16.16  )load</span><br/>
+<a href="section-6.16.xhtml#chapter-6-50">local variable</a><span style="padding-left: 10px;">Section 6.16  Free and Local Variables</span><br/>
+<a href="section-8.11.xhtml#chapter-8-171">logarithm:discrete</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-178">logarithm:discrete</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-5.4.xhtml#chapter-5-26">loop:body</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-27">loop:compilation</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-32">loop:leaving via break</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-29">loop:leaving via return</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-51">loop:mixing modifiers</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-33">loop:nested</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-25">loop</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-9.77.xhtml#chapter-9-72">lowerCase!</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.8.xhtml#chapter-9-49">lowerCase</a><span style="padding-left: 10px;">Section 9.8  Character</span><br/>
+<a href="section-9.77.xhtml#chapter-9-70">lowerCase</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-16.17.xhtml#chapter-16-116">ltrace</a><span style="padding-left: 10px;">Section 16.17  )trace</span><br/>
+<a href="section-6.10.xhtml#chapter-6-20">machine code</a><span style="padding-left: 10px;">Section 6.10  Compiling vs. Interpreting</span><br/>
+<a href="section-1.3.xhtml#chapter-1-20">macro:predefined</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-6.1.xhtml#chapter-6-1">macro:vs. function</a><span style="padding-left: 10px;">Section 6.1  Functions vs. Macros</span><br/>
+<a href="section-11.1.xhtml#chapter-11-6">macro</a><span style="padding-left: 10px;">Section 11.1  Names, Abbreviations, and File Structure</span><br/>
+<a href="section-6.2.xhtml#chapter-6-7">macro</a><span style="padding-left: 10px;">Section 6.2  Macros</span><br/>
+<a href="section-9.63.xhtml#chapter-9-63">mainVariable</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.22.xhtml#chapter-9-46">makeFR</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-7.1.xhtml#chapter-7-105">makeGraphImage</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.60.xhtml#chapter-9-0">makeVariable</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-4">makeVariable</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-7.1.xhtml#chapter-7-107">makeViewport2D</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-150">makeViewport3D</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-157">makeViewport3D</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-15.3.xhtml#chapter-15-6">manpageXXintro</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-7">manpageXXonline</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-2.9.xhtml#chapter-2-55">map</a><span style="padding-left: 10px;">Section 2.9  Package Calling and Target Types</span><br/>
+<a href="section-9.82.xhtml#chapter-9-142">map</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-144">map</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-146">map</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.22.xhtml#chapter-9-40">map</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.22.xhtml#chapter-9-42">map</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.28.xhtml#chapter-9-44">map</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.23.xhtml#chapter-9-50">map</a><span style="padding-left: 10px;">Section 9.23  FactoredFunctions2</span><br/>
+<a href="section-9.23.xhtml#chapter-9-52">map</a><span style="padding-left: 10px;">Section 9.23  FactoredFunctions2</span><br/>
+<a href="section-9.23.xhtml#chapter-9-54">map</a><span style="padding-left: 10px;">Section 9.23  FactoredFunctions2</span><br/>
+<a href="section-9.23.xhtml#chapter-9-56">map</a><span style="padding-left: 10px;">Section 9.23  FactoredFunctions2</span><br/>
+<a href="section-9.23.xhtml#chapter-9-58">map</a><span style="padding-left: 10px;">Section 9.23  FactoredFunctions2</span><br/>
+<a href="section-1.6.xhtml#chapter-1-60">matrix:Hilbert</a><span style="padding-left: 10px;">Section 1.6  Expanding to Higher Dimensions</span><br/>
+<a href="section-1.6.xhtml#chapter-1-59">matrix:creating</a><span style="padding-left: 10px;">Section 1.6  Expanding to Higher Dimensions</span><br/>
+<a href="section-8.4.xhtml#chapter-8-75">matrix:symmetric</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-1.6.xhtml#chapter-1-57">matrix</a><span style="padding-left: 10px;">Section 1.6  Expanding to Higher Dimensions</span><br/>
+<a href="section-13.6.xhtml#chapter-13-6">matrix</a><span style="padding-left: 10px;">Section 13.6  Representation</span><br/>
+<a href="section-9.52.xhtml#chapter-9-80">matrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.72.xhtml#chapter-9-26">max</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.28.xhtml#chapter-9-28">max</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.34.xhtml#chapter-9-68">max</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.82.xhtml#chapter-9-150">member?</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.71.xhtml#chapter-9-20">member?</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-9.47.xhtml#chapter-9-52">member?</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.80.xhtml#chapter-9-110">members</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-13.13.xhtml#chapter-13-17">merge</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-9.72.xhtml#chapter-9-24">min</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.28.xhtml#chapter-9-30">min</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.34.xhtml#chapter-9-70">min</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-8.11.xhtml#chapter-8-189">minimal polynomial</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.4.xhtml#chapter-8-71">minimal polynomial</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-9.63.xhtml#chapter-9-71">minimumDegree</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-11.10.xhtml#chapter-11-23">modemap</a><span style="padding-left: 10px;">Section 11.10  How Packages Work</span><br/>
+<a href="section-8.11.xhtml#chapter-8-166">modular arithmetic</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-9.34.xhtml#chapter-9-100">moebiusMu</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.36.xhtml#chapter-9-114">moebiusMu</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.63.xhtml#chapter-9-87">monicDivide</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-4.4.xhtml#chapter-4-26">monospace 2D output format</a><span style="padding-left: 10px;">Section 4.4  Monospace Two-Dimensional Mathematical Format</span><br/>
+<a href="section-9.72.xhtml#chapter-9-28">mulmod</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-5.1.xhtml#chapter-5-8">multiple immediate assignment</a><span style="padding-left: 10px;">Section 5.1  Immediate and Delayed Assignments</span><br/>
+<a href="section-9.53.xhtml#chapter-9-124">multiset</a><span style="padding-left: 10px;">Section 9.53  MultiSet</span><br/>
+<a href="section-9.47.xhtml#chapter-9-45">mutable</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-15.3.xhtml#chapter-15-5">nagDocumentation</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-2">nagLinkIntro</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-9">nagLinkUsage</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-32">nagTechnical</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-9.3.xhtml#chapter-9-12">name</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.37.xhtml#chapter-9-130">name</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-132">name</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.79.xhtml#chapter-9-86">name</a><span style="padding-left: 10px;">Section 9.79  Symbol</span><br/>
+<a href="section-9.52.xhtml#chapter-9-104">ncols</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.82.xhtml#chapter-9-140">ncols</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.28.xhtml#chapter-9-32">negative?</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-14.2.xhtml#chapter-14-5">new</a><span style="padding-left: 10px;">Section 14.2  The Constructor Page</span><br/>
+<a href="section-9.82.xhtml#chapter-9-120">new</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.85.xhtml#chapter-9-36">new</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.77.xhtml#chapter-9-54">new</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.52.xhtml#chapter-9-76">new</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.25.xhtml#chapter-9-78">new</a><span style="padding-left: 10px;">Section 9.25  FileName</span><br/>
+<a href="section-9.79.xhtml#chapter-9-82">new</a><span style="padding-left: 10px;">Section 9.79  Symbol</span><br/>
+<a href="section-8.11.xhtml#chapter-8-200">nextIrreduciblePoly</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-206">nextNormalPoly</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-5.6.xhtml#chapter-5-63">nextPrime</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-9.34.xhtml#chapter-9-84">nextPrime</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-8.11.xhtml#chapter-8-204">nextPrimitivePoly</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-9.47.xhtml#chapter-9-37">nil</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-8.14.xhtml#chapter-8-229">non-associative algebra</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+<a href="section-7.1.xhtml#chapter-7-12">non-singular curve</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.56.xhtml#chapter-9-126">norm</a><span style="padding-left: 10px;">Section 9.56  Octonion</span><br/>
+<a href="section-9.11.xhtml#chapter-9-57">norm</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-8.11.xhtml#chapter-8-187">normal basis</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-9.52.xhtml#chapter-9-102">nrows</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.82.xhtml#chapter-9-138">nrows</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-8.13.xhtml#chapter-8-216">nthFactor</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-9.61.xhtml#chapter-9-36">nthFractionalTerm</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.52.xhtml#chapter-9-120">nullSpace</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-118">nullity</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-8.5.xhtml#chapter-8-80">nullspace</a><span style="padding-left: 10px;">Section 8.5  Solution of Linear and Polynomial Equations</span><br/>
+<a href="section-8.1.xhtml#chapter-8-38">number theory</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.2.xhtml#chapter-8-59">number:algebraic</a><span style="padding-left: 10px;">Section 8.2  Polynomial Factorization</span><br/>
+<a href="section-8.3.xhtml#chapter-8-63">number:algebraic</a><span style="padding-left: 10px;">Section 8.3  Manipulating Symbolic Roots of a Polynomial</span><br/>
+<a href="section-8.1.xhtml#chapter-8-6">number:complex floating-point</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-3">number:floating-point</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-9.36.xhtml#chapter-9-106">numberOfDivisors</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.61.xhtml#chapter-9-32">numberOfFractionalTerms</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-7.1.xhtml#chapter-7-38">numberOfHues()</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.21.xhtml#chapter-9-20">numer</a><span style="padding-left: 10px;">Section 9.21  Expression</span><br/>
+<a href="section-9.28.xhtml#chapter-9-24">numer</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-8.1.xhtml#chapter-8-1">numeric operations</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-0.2.xhtml#chapter-0-7">odd?</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-9.34.xhtml#chapter-9-60">odd?</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.22.xhtml#chapter-9-38">one?</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.24.xhtml#chapter-9-60">open</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.24.xhtml#chapter-9-62">open</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-1.1.xhtml#chapter-1-11">operation name completion</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-13.10.xhtml#chapter-13-12">operation:origin</a><span style="padding-left: 10px;">Section 13.10  Origins</span><br/>
+<a href="section-1.11.xhtml#chapter-1-78">operator</a><span style="padding-left: 10px;">Section 1.11  Derivatives</span><br/>
+<a href="section-6.21.xhtml#chapter-6-78">operator</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-8.10.xhtml#chapter-8-156">operator</a><span style="padding-left: 10px;">Section 8.10  Solution of Differential Equations</span><br/>
+<a href="section-9.37.xhtml#chapter-9-128">operator</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.37.xhtml#chapter-9-134">operator</a><span style="padding-left: 10px;">Section 9.37  Kernel</span><br/>
+<a href="section-9.3.xhtml#chapter-9-6">operator</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.3.xhtml#chapter-9-8">operator</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.8.xhtml#chapter-9-47">ord</a><span style="padding-left: 10px;">Section 9.8  Character</span><br/>
+<a href="section-9.60.xhtml#chapter-9-6">order</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-8.4.xhtml#chapter-8-77">orthonormal basis</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-4.7.xhtml#chapter-4-35">output formats:FORTRAN</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.6.xhtml#chapter-4-32">output formats:IBM Script Formula Format</a><span style="padding-left: 10px;">Section 4.6  IBM Script Formula Format</span><br/>
+<a href="section-4.5.xhtml#chapter-4-29">output formats:TeX @{<span class="texlogo">TeX</span>}</a><span style="padding-left: 10px;">Section 4.5  TeX Format</span><br/>
+<a href="section-4.3.xhtml#chapter-4-13">output formats:common features</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-4.3.xhtml#chapter-4-22">output formats:line length</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-4.4.xhtml#chapter-4-25">output formats:monospace 2D</a><span style="padding-left: 10px;">Section 4.4  Monospace Two-Dimensional Mathematical Format</span><br/>
+<a href="section-4.3.xhtml#chapter-4-19">output formats:sending to file</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-4.3.xhtml#chapter-4-21">output formats:sending to screen</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-4.3.xhtml#chapter-4-15">output formats:starting</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-4.3.xhtml#chapter-4-16">output formats:stopping</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-5.4.xhtml#chapter-5-34">output</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-6.19.xhtml#chapter-6-62">output</a><span style="padding-left: 10px;">Section 6.19  Example: A Famous Triangle</span><br/>
+<a href="section-9.27.xhtml#chapter-9-18">outputFixed</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-16">outputFloating</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-14">outputSpacing</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.63.xhtml#chapter-9-54">overloading</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-11.0.xhtml#chapter-11-2">package:constructor</a><span style="padding-left: 10px;">Section 11.0 Packages</span><br/>
+<a href="section-11.5.xhtml#chapter-11-13">package:vs. input file</a><span style="padding-left: 10px;">Section 11.5  Input Files vs. Packages</span><br/>
+<a href="section-0.2.xhtml#chapter-0-13">package</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-11.0.xhtml#chapter-11-0">package</a><span style="padding-left: 10px;">Section 11.0 Packages</span><br/>
+<a href="section-2.1.xhtml#chapter-2-13">package</a><span style="padding-left: 10px;">Section 2.1  The Basic Idea</span><br/>
+<a href="section-9.61.xhtml#chapter-9-28">padicFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-6.20.xhtml#chapter-6-68">palindrome</a><span style="padding-left: 10px;">Section 6.20  Example: Testing for Palindromes</span><br/>
+<a href="section-5.4.xhtml#chapter-5-28">panic:avoiding</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-6.10.xhtml#chapter-6-18">panic:avoiding</a><span style="padding-left: 10px;">Section 6.10  Compiling vs. Interpreting</span><br/>
+<a href="section-7.2.xhtml#chapter-7-128">parabolic cylindrical coordinate system</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-6.1.xhtml#chapter-6-5">parameters to a function</a><span style="padding-left: 10px;">Section 6.1  Functions vs. Macros</span><br/>
+<a href="section-7.1.xhtml#chapter-7-5">parametric plane curve</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-124">parametric space curve</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-126">parametric surface</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-2.2.xhtml#chapter-2-16">parentheses:using with types</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-2.2.xhtml#chapter-2-18">parentheses:using with types</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-2.2.xhtml#chapter-2-20">parentheses:using with types</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-8.14.xhtml#chapter-8-228">partial differential equation</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+<a href="section-1.4.xhtml#chapter-1-35">partial fraction</a><span style="padding-left: 10px;">Section 1.4  Numbers</span><br/>
+<a href="section-9.61.xhtml#chapter-9-24">partialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.61.xhtml#chapter-9-26">partialFraction</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.12.xhtml#chapter-9-67">partialQuotients</a><span style="padding-left: 10px;">Section 9.12  ContinuedFraction</span><br/>
+<a href="section-1.7.xhtml#chapter-1-66">pattern matching</a><span style="padding-left: 10px;">Section 1.7  Writing Your Own Functions</span><br/>
+<a href="section-6.21.xhtml#chapter-6-79">pattern:matching:caveats</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-6.21.xhtml#chapter-6-71">pattern:matching</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-6.21.xhtml#chapter-6-77">pattern:variable:matching several terms</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-6.21.xhtml#chapter-6-74">pattern:variable:predicate</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-6.21.xhtml#chapter-6-70">pattern:variables</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-1.3.xhtml#chapter-1-13">percentpercent@{%%}</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-6.10.xhtml#chapter-6-22">performance</a><span style="padding-left: 10px;">Section 6.10  Compiling vs. Interpreting</span><br/>
+<a href="section-2.8.xhtml#chapter-2-51">peril</a><span style="padding-left: 10px;">Section 2.8  Subdomains Again</span><br/>
+<a href="section-9.62.xhtml#chapter-9-44">permanent</a><span style="padding-left: 10px;">Section 9.62  Permanent</span><br/>
+<a href="section-9.62.xhtml#chapter-9-46">permanent</a><span style="padding-left: 10px;">Section 9.62  Permanent</span><br/>
+<a href="section-9.62.xhtml#chapter-9-50">permanent</a><span style="padding-left: 10px;">Section 9.62  Permanent</span><br/>
+<a href="section-7.2.xhtml#chapter-7-230">perspective</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-1.3.xhtml#chapter-1-24">pi@{<math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math> (= %pi)}</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-1.7.xhtml#chapter-1-63">piece-wise function definition</a><span style="padding-left: 10px;">Section 1.7  Writing Your Own Functions</span><br/>
+<a href="section-6.11.xhtml#chapter-6-24">piece-wise function definition</a><span style="padding-left: 10px;">Section 6.11  Piece-Wise Function Definitions</span><br/>
+<a href="section-7.1.xhtml#chapter-7-8">plane algebraic curve</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-8.1.xhtml#chapter-8-45">polynomial:Bernouilli</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.9.xhtml#chapter-8-132">polynomial:Bernoulli</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-148">polynomial:Bernoulli</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.1.xhtml#chapter-8-40">polynomial:Bernoulli</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-33">polynomial:Chebyshev:of the first kind</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-34">polynomial:Chebyshev:of the second kind</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-42">polynomial:Euler</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-46">polynomial:Euler</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-35">polynomial:Hermite</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-36">polynomial:Laguerre</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-37">polynomial:Legendre</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.1.xhtml#chapter-8-47">polynomial:cyclotomic</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.2.xhtml#chapter-8-57">polynomial:factorization:algebraic extension field coefficients</a><span style="padding-left: 10px;">Section 8.2  Polynomial Factorization</span><br/>
+<a href="section-8.2.xhtml#chapter-8-55">polynomial:factorization:finite field coefficients</a><span style="padding-left: 10px;">Section 8.2  Polynomial Factorization</span><br/>
+<a href="section-8.2.xhtml#chapter-8-53">polynomial:factorization:integer coefficients</a><span style="padding-left: 10px;">Section 8.2  Polynomial Factorization</span><br/>
+<a href="section-8.2.xhtml#chapter-8-54">polynomial:factorization:rational number coefficients</a><span style="padding-left: 10px;">Section 8.2  Polynomial Factorization</span><br/>
+<a href="section-8.2.xhtml#chapter-8-51">polynomial:factorization</a><span style="padding-left: 10px;">Section 8.2  Polynomial Factorization</span><br/>
+<a href="section-8.11.xhtml#chapter-8-193">polynomial:irreducible</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-188">polynomial:minimal</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.4.xhtml#chapter-8-70">polynomial:minimal</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-8.11.xhtml#chapter-8-192">polynomial:normal</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-191">polynomial:primitive</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.5.xhtml#chapter-8-81">polynomial:root finding</a><span style="padding-left: 10px;">Section 8.5  Solution of Linear and Polynomial Equations</span><br/>
+<a href="section-8.11.xhtml#chapter-8-208">polynomial:root of</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-1.8.xhtml#chapter-1-67">polynomial</a><span style="padding-left: 10px;">Section 1.8  Polynomials</span><br/>
+<a href="section-9.77.xhtml#chapter-9-80">position</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.28.xhtml#chapter-9-34">positive?</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.72.xhtml#chapter-9-36">positiveRemainder</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.91.xhtml#chapter-9-62">positiveSolve</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-72">positiveSolve</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-8.9.xhtml#chapter-8-116">power series</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.10.xhtml#chapter-8-158">power series</a><span style="padding-left: 10px;">Section 8.10  Solution of Differential Equations</span><br/>
+<a href="section-16.18.xhtml#chapter-16-121">pquit</a><span style="padding-left: 10px;">Section 16.18  )pquit</span><br/>
+<a href="section-16.19.xhtml#chapter-16-130">pquit</a><span style="padding-left: 10px;">Section 16.19  )quit</span><br/>
+<a href="section-8.4.xhtml#chapter-8-74">precision</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-8.5.xhtml#chapter-8-85">precision</a><span style="padding-left: 10px;">Section 8.5  Solution of Linear and Polynomial Equations</span><br/>
+<a href="section-6.11.xhtml#chapter-6-27">predicate:in function definition</a><span style="padding-left: 10px;">Section 6.11  Piece-Wise Function Definitions</span><br/>
+<a href="section-6.21.xhtml#chapter-6-76">predicate:on a pattern variable</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-13.13.xhtml#chapter-13-16">predicate</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-9.77.xhtml#chapter-9-74">prefix?</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.65.xhtml#chapter-9-93">prefixRagits</a><span style="padding-left: 10px;">Section 9.65  RadixExpansion</span><br/>
+<a href="section-2.8.xhtml#chapter-2-50">pretend</a><span style="padding-left: 10px;">Section 2.8  Subdomains Again</span><br/>
+<a href="section-6.10.xhtml#chapter-6-19">pretend</a><span style="padding-left: 10px;">Section 6.10  Compiling vs. Interpreting</span><br/>
+<a href="section-9.34.xhtml#chapter-9-86">prevPrime</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-8.12.xhtml#chapter-8-210">primary decomposition of ideal</a><span style="padding-left: 10px;">Section 8.12  Primary Decomposition of Ideals</span><br/>
+<a href="section-8.11.xhtml#chapter-8-165">prime field</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-5.6.xhtml#chapter-5-61">prime?</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-5.6.xhtml#chapter-5-73">prime?</a><span style="padding-left: 10px;">Section 5.6  An Example: Streams of Primes</span><br/>
+<a href="section-9.34.xhtml#chapter-9-82">prime?</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.61.xhtml#chapter-9-42">primeFactor</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.34.xhtml#chapter-9-88">primes</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-8.11.xhtml#chapter-8-168">primitive element</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.11.xhtml#chapter-8-183">primitive element</a><span style="padding-left: 10px;">Section 8.11  Finite Fields</span><br/>
+<a href="section-8.1.xhtml#chapter-8-12">principal value</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-9.7.xhtml#chapter-9-29">product</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.7.xhtml#chapter-9-39">product</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.7.xhtml#chapter-9-43">product</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.7.xhtml#chapter-9-45">product</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-16.11.xhtml#chapter-16-83">prompt:with frame name</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-1.1.xhtml#chapter-1-1">prompt</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-8.1.xhtml#chapter-8-20">psi @  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math></a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-7.1.xhtml#chapter-7-119">putGraph</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.82.xhtml#chapter-9-130">qelt</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.85.xhtml#chapter-9-40">qelt</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-50">qelt</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.82.xhtml#chapter-9-132">qsetelt</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.85.xhtml#chapter-9-44">qsetelt</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-52">qsetelt</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-13.10.xhtml#chapter-13-13">quadraticForm</a><span style="padding-left: 10px;">Section 13.10  Origins</span><br/>
+<a href="section-9.64.xhtml#chapter-9-89">quatern</a><span style="padding-left: 10px;">Section 9.64  Quaternion</span><br/>
+<a href="section-16.18.xhtml#chapter-16-122">quit</a><span style="padding-left: 10px;">Section 16.18  )pquit</span><br/>
+<a href="section-16.19.xhtml#chapter-16-129">quit</a><span style="padding-left: 10px;">Section 16.19  )quit</span><br/>
+<a href="section-4.2.xhtml#chapter-4-10">quit</a><span style="padding-left: 10px;">Section 4.2  The .axiom.input File</span><br/>
+<a href="section-9.83.xhtml#chapter-9-28">quo</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.34.xhtml#chapter-9-72">quo</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-1.3.xhtml#chapter-1-18">quote</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-2.4.xhtml#chapter-2-29">quote</a><span style="padding-left: 10px;">Section 2.4  Records</span><br/>
+<a href="section-2.5.xhtml#chapter-2-41">quote</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-1.4.xhtml#chapter-1-37">radical</a><span style="padding-left: 10px;">Section 1.4  Numbers</span><br/>
+<a href="section-8.3.xhtml#chapter-8-64">radical</a><span style="padding-left: 10px;">Section 8.3  Manipulating Symbolic Roots of a Polynomial</span><br/>
+<a href="section-8.4.xhtml#chapter-8-72">radical</a><span style="padding-left: 10px;">Section 8.4  Computation of Eigenvalues and Eigenvectors</span><br/>
+<a href="section-8.5.xhtml#chapter-8-83">radical</a><span style="padding-left: 10px;">Section 8.5  Solution of Linear and Polynomial Equations</span><br/>
+<a href="section-8.5.xhtml#chapter-8-84">radical</a><span style="padding-left: 10px;">Section 8.5  Solution of Linear and Polynomial Equations</span><br/>
+<a href="section-1.4.xhtml#chapter-1-29">radix</a><span style="padding-left: 10px;">Section 1.4  Numbers</span><br/>
+<a href="section-14.2.xhtml#chapter-14-7">rank</a><span style="padding-left: 10px;">Section 14.2  The Constructor Page</span><br/>
+<a href="section-14.2.xhtml#chapter-14-9">rank</a><span style="padding-left: 10px;">Section 14.2  The Constructor Page</span><br/>
+<a href="section-9.52.xhtml#chapter-9-116">rank</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-8.2.xhtml#chapter-8-60">rational function:factoring</a><span style="padding-left: 10px;">Section 8.2  Polynomial Factorization</span><br/>
+<a href="section-16.20.xhtml#chapter-16-139">read</a><span style="padding-left: 10px;">Section 16.20  )read</span><br/>
+<a href="section-16.4.xhtml#chapter-16-20">read</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-4.1.xhtml#chapter-4-1">read</a><span style="padding-left: 10px;">Section 4.1  Input Files</span><br/>
+<a href="section-9.24.xhtml#chapter-9-64">read</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.24.xhtml#chapter-9-68">read</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.38.xhtml#chapter-9-8">read</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-9.24.xhtml#chapter-9-70">readIfCan</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.81.xhtml#chapter-9-112">readLine</a><span style="padding-left: 10px;">Section 9.81  TextFile</span><br/>
+<a href="section-9.25.xhtml#chapter-9-74">readable?</a><span style="padding-left: 10px;">Section 9.25  FileName</span><br/>
+<a href="section-9.11.xhtml#chapter-9-59">real</a><span style="padding-left: 10px;">Section 9.11  Complex</span><br/>
+<a href="section-15.3.xhtml#chapter-15-25">real?</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-9.39.xhtml#chapter-9-36">realSolve</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-60">realSolve</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-70">realSolve</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-2.5.xhtml#chapter-2-44">record:difference from union</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-2.4.xhtml#chapter-2-28">record:selector</a><span style="padding-left: 10px;">Section 2.4  Records</span><br/>
+<a href="section-9.5.xhtml#chapter-9-22">record</a><span style="padding-left: 10px;">Section 9.5  BinarySearchTree</span><br/>
+<a href="section-9.51.xhtml#chapter-9-74">recur</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-6.13.xhtml#chapter-6-33">recurrence relation</a><span style="padding-left: 10px;">Section 6.13  Recurrence Relations</span><br/>
+<a href="section-9.83.xhtml#chapter-9-20">reduce</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-6">reductum</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-75">reductum</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.7.xhtml#chapter-9-35">reindex</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-9.66.xhtml#chapter-9-105">relativeApprox</a><span style="padding-left: 10px;">Section 9.66  RealClosure</span><br/>
+<a href="section-9.83.xhtml#chapter-9-30">rem</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.34.xhtml#chapter-9-74">rem</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-6.12.xhtml#chapter-6-31">remembering function values</a><span style="padding-left: 10px;">Section 6.12  Caching Previously Computed Results</span><br/>
+<a href="section-9.80.xhtml#chapter-9-102">remove</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.80.xhtml#chapter-9-104">remove</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-9.47.xhtml#chapter-9-48">removeDuplicates</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-7.2.xhtml#chapter-7-133">rendering</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-13.6.xhtml#chapter-13-3">representation:of a domain</a><span style="padding-left: 10px;">Section 13.6  Representation</span><br/>
+<a href="section-2.10.xhtml#chapter-2-59">resolve</a><span style="padding-left: 10px;">Section 2.10  Resolving Types</span><br/>
+<a href="section-6.9.xhtml#chapter-6-14">resolve</a><span style="padding-left: 10px;">Section 6.9  How Axiom Determines What Function to Use</span><br/>
+<a href="section-1.5.xhtml#chapter-1-40">rest</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-11.8.xhtml#chapter-11-19">rest</a><span style="padding-left: 10px;">Section 11.8  Conditionals</span><br/>
+<a href="section-13.13.xhtml#chapter-13-21">rest</a><span style="padding-left: 10px;">Section 13.13  Example 2: Building A Query Facility</span><br/>
+<a href="section-9.47.xhtml#chapter-9-46">rest</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-1.3.xhtml#chapter-1-12">result:previous</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-9.83.xhtml#chapter-9-12">resultant</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.63.xhtml#chapter-9-61">resultant</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-2.5.xhtml#chapter-2-37">retractIfCan</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-5.2.xhtml#chapter-5-10">return</a><span style="padding-left: 10px;">Section 5.2  Blocks</span><br/>
+<a href="section-5.4.xhtml#chapter-5-30">return</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-9.47.xhtml#chapter-9-50">reverse</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.19.xhtml#chapter-9-18">rhs</a><span style="padding-left: 10px;">Section 9.19  Equation</span><br/>
+<a href="section-10.1.xhtml#chapter-10-0">ribbon</a><span style="padding-left: 10px;">Section 10.1  Drawing Ribbons Interactively</span><br/>
+<a href="section-9.45.xhtml#chapter-9-2">rightDivide</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-16">rightExactQuotient</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-20">rightGcd</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-22">rightLcm</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-6">rightQuotient</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.45.xhtml#chapter-9-8">rightRemainder</a><span style="padding-left: 10px;">Section 9.45  LinearOrdinaryDifferentialOperator1</span><br/>
+<a href="section-9.77.xhtml#chapter-9-64">rightTrim</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-8.3.xhtml#chapter-8-65">root:multiple</a><span style="padding-left: 10px;">Section 8.3  Manipulating Symbolic Roots of a Polynomial</span><br/>
+<a href="section-8.1.xhtml#chapter-8-11">root:numeric approximation</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-8.3.xhtml#chapter-8-61">root:symbolic</a><span style="padding-left: 10px;">Section 8.3  Manipulating Symbolic Roots of a Polynomial</span><br/>
+<a href="section-8.13.xhtml#chapter-8-219">root</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-8.8.xhtml#chapter-8-108">rootOf</a><span style="padding-left: 10px;">Section 8.8  Integration</span><br/>
+<a href="section-9.27.xhtml#chapter-9-2">round</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-6">round</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.52.xhtml#chapter-9-106">row</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.82.xhtml#chapter-9-134">row</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.52.xhtml#chapter-9-122">rowEchelon</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-0.1.xhtml#chapter-0-1">rule</a><span style="padding-left: 10px;">Section 0.1  Introduction to Axiom</span><br/>
+<a href="section-6.21.xhtml#chapter-6-69">rule</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-6.21.xhtml#chapter-6-72">rule</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-6.21.xhtml#chapter-6-73">ruleset</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-7.2.xhtml#chapter-7-272">scaling graphs</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-9.76.xhtml#chapter-9-52">scan</a><span style="padding-left: 10px;">Section 9.76  Stream</span><br/>
+<a href="section-9.79.xhtml#chapter-9-90">script</a><span style="padding-left: 10px;">Section 9.79  Symbol</span><br/>
+<a href="section-9.79.xhtml#chapter-9-84">scripted?</a><span style="padding-left: 10px;">Section 9.79  Symbol</span><br/>
+<a href="section-9.79.xhtml#chapter-9-88">scripts</a><span style="padding-left: 10px;">Section 9.79  Symbol</span><br/>
+<a href="section-3.3.xhtml#chapter-3-1">scroll bar</a><span style="padding-left: 10px;">Section 3.3  Scroll Bars</span><br/>
+<a href="section-9.38.xhtml#chapter-9-0">search</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-9.80.xhtml#chapter-9-100">search</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-5.4.xhtml#chapter-5-45">segment</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-9.70.xhtml#chapter-9-10">segment</a><span style="padding-left: 10px;">Section 9.70  SegmentBinding</span><br/>
+<a href="section-2.4.xhtml#chapter-2-30">selector:quoting</a><span style="padding-left: 10px;">Section 2.4  Records</span><br/>
+<a href="section-2.5.xhtml#chapter-2-42">selector:quoting</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-2.4.xhtml#chapter-2-27">selector:record</a><span style="padding-left: 10px;">Section 2.4  Records</span><br/>
+<a href="section-2.5.xhtml#chapter-2-39">selector:union</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-9.60.xhtml#chapter-9-20">separant</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-8.9.xhtml#chapter-8-133">series:Laurent</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-1.10.xhtml#chapter-1-71">series:Puiseux</a><span style="padding-left: 10px;">Section 1.10  Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-135">series:Puiseux</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-1.10.xhtml#chapter-1-73">series:Taylor</a><span style="padding-left: 10px;">Section 1.10  Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-120">series:Taylor</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-126">series:Taylor</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-127">series:Taylor</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-129">series:Taylor</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-139">series:Taylor</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-125">series:arithmetic</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-118">series:creating</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-124">series:extracting coefficients</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-137">series:giving formula for coefficients</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-122">series:lazy evaluation</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-130">series:multiple variables</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-143">series:numerical approximation</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-1.10.xhtml#chapter-1-70">series:power</a><span style="padding-left: 10px;">Section 1.10  Series</span><br/>
+<a href="section-8.10.xhtml#chapter-8-159">series:power</a><span style="padding-left: 10px;">Section 8.10  Solution of Differential Equations</span><br/>
+<a href="section-8.9.xhtml#chapter-8-115">series</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-2.11.xhtml#chapter-2-72">set expose add constructor</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-2.11.xhtml#chapter-2-70">set expose add group</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-2.11.xhtml#chapter-2-71">set expose drop constructor</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-2.11.xhtml#chapter-2-69">set expose drop group</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-2.11.xhtml#chapter-2-68">set expose</a><span style="padding-left: 10px;">Section 2.11  Exposing Domains and Packages</span><br/>
+<a href="section-4.7.xhtml#chapter-4-38">set fortran explength</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-45">set fortran ints2floats</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-42">set fortran optlevel</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-48">set fortran optlevel</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-49">set fortran precision double</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-51">set fortran precision single</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-40">set fortran segment</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-53">set fortran startindex</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.7.xhtml#chapter-4-37">set fortran</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-6.10.xhtml#chapter-6-21">set function compile</a><span style="padding-left: 10px;">Section 6.10  Compiling vs. Interpreting</span><br/>
+<a href="section-6.13.xhtml#chapter-6-37">set function recurrence</a><span style="padding-left: 10px;">Section 6.13  Recurrence Relations</span><br/>
+<a href="section-6.12.xhtml#chapter-6-32">set functions cache</a><span style="padding-left: 10px;">Section 6.12  Caching Previously Computed Results</span><br/>
+<a href="section-16.13.xhtml#chapter-16-93">set history off</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-16.13.xhtml#chapter-16-92">set history on</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-14.3.xhtml#chapter-14-17">set hyperdoc browse exposure</a><span style="padding-left: 10px;">Section 14.3  Miscellaneous Features of Browse</span><br/>
+<a href="section-14.3.xhtml#chapter-14-18">set hyperdoc browse threshold</a><span style="padding-left: 10px;">Section 14.3  Miscellaneous Features of Browse</span><br/>
+<a href="section-16.11.xhtml#chapter-16-81">set message frame</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-16.11.xhtml#chapter-16-82">set message prompt frame</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-16.21.xhtml#chapter-16-148">set message time</a><span style="padding-left: 10px;">Section 16.21  )set</span><br/>
+<a href="section-4.4.xhtml#chapter-4-24">set output algebra</a><span style="padding-left: 10px;">Section 4.4  Monospace Two-Dimensional Mathematical Format</span><br/>
+<a href="section-4.4.xhtml#chapter-4-28">set output characters</a><span style="padding-left: 10px;">Section 4.4  Monospace Two-Dimensional Mathematical Format</span><br/>
+<a href="section-4.3.xhtml#chapter-4-18">set output fortran</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-4.7.xhtml#chapter-4-41">set output fortran</a><span style="padding-left: 10px;">Section 4.7  FORTRAN Format</span><br/>
+<a href="section-4.3.xhtml#chapter-4-23">set output length</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-4.6.xhtml#chapter-4-34">set output script</a><span style="padding-left: 10px;">Section 4.6  IBM Script Formula Format</span><br/>
+<a href="section-4.5.xhtml#chapter-4-31">set output tex</a><span style="padding-left: 10px;">Section 4.5  TeX Format</span><br/>
+<a href="section-4.3.xhtml#chapter-4-17">set output</a><span style="padding-left: 10px;">Section 4.3  Common Features of Using Output Formats</span><br/>
+<a href="section-16.19.xhtml#chapter-16-131">set quit protected</a><span style="padding-left: 10px;">Section 16.19  )quit</span><br/>
+<a href="section-4.2.xhtml#chapter-4-12">set quit protected</a><span style="padding-left: 10px;">Section 4.2  The .axiom.input File</span><br/>
+<a href="section-16.19.xhtml#chapter-16-132">set quit unprotected</a><span style="padding-left: 10px;">Section 16.19  )quit</span><br/>
+<a href="section-16.21.xhtml#chapter-16-149">set quit unprotected</a><span style="padding-left: 10px;">Section 16.21  )set</span><br/>
+<a href="section-4.2.xhtml#chapter-4-11">set quit unprotected</a><span style="padding-left: 10px;">Section 4.2  The .axiom.input File</span><br/>
+<a href="section-5.5.xhtml#chapter-5-58">set streams calculate</a><span style="padding-left: 10px;">Section 5.5  Creating Lists and Streams with Iterators</span><br/>
+<a href="section-8.9.xhtml#chapter-8-117">set streams calculate</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-149">set streams calculate</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-16.1.xhtml#chapter-16-1">set userlevel compiler</a><span style="padding-left: 10px;">Section 16.1  Introduction</span><br/>
+<a href="section-16.1.xhtml#chapter-16-2">set userlevel development</a><span style="padding-left: 10px;">Section 16.1  Introduction</span><br/>
+<a href="section-16.1.xhtml#chapter-16-0">set userlevel interpreter</a><span style="padding-left: 10px;">Section 16.1  Introduction</span><br/>
+<a href="section-16.28.xhtml#chapter-16-186">set userlevel</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-16.21.xhtml#chapter-16-145">set</a><span style="padding-left: 10px;">Section 16.21  )set</span><br/>
+<a href="section-9.52.xhtml#chapter-9-86">setColumn</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.3.xhtml#chapter-9-16">setProperty</a><span style="padding-left: 10px;">Section 9.3  BasicOperator</span><br/>
+<a href="section-9.52.xhtml#chapter-9-84">setRow</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.82.xhtml#chapter-9-122">setelt</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.82.xhtml#chapter-9-128">setelt</a><span style="padding-left: 10px;">Section 9.82  TwoDimensionalArray</span><br/>
+<a href="section-9.85.xhtml#chapter-9-42">setelt</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.47.xhtml#chapter-9-43">setelt</a><span style="padding-left: 10px;">Section 9.47  List</span><br/>
+<a href="section-9.85.xhtml#chapter-9-48">setelt</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.85.xhtml#chapter-9-56">setelt</a><span style="padding-left: 10px;">Section 9.85  Vector</span><br/>
+<a href="section-9.52.xhtml#chapter-9-78">setelt</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.80.xhtml#chapter-9-92">setelt</a><span style="padding-left: 10px;">Section 9.80  Table</span><br/>
+<a href="section-1.5.xhtml#chapter-1-46">setrest!</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-9.52.xhtml#chapter-9-92">setsubMatrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-7.1.xhtml#chapter-7-49">shade</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-11.1.xhtml#chapter-11-5">show</a><span style="padding-left: 10px;">Section 11.1  Names, Abbreviations, and File Structure</span><br/>
+<a href="section-16.22.xhtml#chapter-16-152">show</a><span style="padding-left: 10px;">Section 16.22  )show</span><br/>
+<a href="section-2.12.xhtml#chapter-2-80">show</a><span style="padding-left: 10px;">Section 2.12  Commands for Snooping</span><br/>
+<a href="section-7.2.xhtml#chapter-7-174">show</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-15.3.xhtml#chapter-15-14">showArrayValues</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-15.3.xhtml#chapter-15-12">showScalarValues</a><span style="padding-left: 10px;">Section 15.3  The NAG Library Link</span><br/>
+<a href="section-9.34.xhtml#chapter-9-56">sign</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-1.7.xhtml#chapter-1-65">simplification</a><span style="padding-left: 10px;">Section 1.7  Writing Your Own Functions</span><br/>
+<a href="section-10.7.xhtml#chapter-10-5">sin</a><span style="padding-left: 10px;">Section 10.7  Drawing Complex Vector Fields</span><br/>
+<a href="section-8.6.xhtml#chapter-8-94">singularity:essential</a><span style="padding-left: 10px;">Section 8.6  Limits</span><br/>
+<a href="section-7.1.xhtml#chapter-7-11">smooth curve</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-14.2.xhtml#chapter-14-11">solve</a><span style="padding-left: 10px;">Section 14.2  The Constructor Page</span><br/>
+<a href="section-9.19.xhtml#chapter-9-14">solve</a><span style="padding-left: 10px;">Section 9.19  Equation</span><br/>
+<a href="section-9.35.xhtml#chapter-9-102">solveLinearlyOverQ</a><span style="padding-left: 10px;">Section 9.35  IntegerLinearDependence</span><br/>
+<a href="section-11.8.xhtml#chapter-11-15">sort:bubble</a><span style="padding-left: 10px;">Section 11.8  Conditionals</span><br/>
+<a href="section-6.15.xhtml#chapter-6-42">sort:bubble</a><span style="padding-left: 10px;">Section 6.15  Functions Defined with Blocks</span><br/>
+<a href="section-11.8.xhtml#chapter-11-16">sort:insertion</a><span style="padding-left: 10px;">Section 11.8  Conditionals</span><br/>
+<a href="section-6.15.xhtml#chapter-6-43">sort:insertion</a><span style="padding-left: 10px;">Section 6.15  Functions Defined with Blocks</span><br/>
+<a href="section-14.2.xhtml#chapter-14-3">source code</a><span style="padding-left: 10px;">Section 14.2  The Constructor Page</span><br/>
+<a href="section-8.1.xhtml#chapter-8-13">special functions</a><span style="padding-left: 10px;">Section 8.1  Numeric Functions</span><br/>
+<a href="section-7.2.xhtml#chapter-7-138">spherical coordinate system</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-8.13.xhtml#chapter-8-214">splitting field</a><span style="padding-left: 10px;">Section 8.13  Computation of Galois Groups</span><br/>
+<a href="section-16.23.xhtml#chapter-16-157">spool</a><span style="padding-left: 10px;">Section 16.23  )spool</span><br/>
+<a href="section-16.4.xhtml#chapter-16-24">spool</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-9.39.xhtml#chapter-9-14">squareFreeLexTriangular</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-16">squareFreeLexTriangular</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-26">squareFreeLexTriangular</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-30">squareFreeLexTriangular</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.74.xhtml#chapter-9-50">squareMatrix</a><span style="padding-left: 10px;">Section 9.74  SquareMatrix</span><br/>
+<a href="section-4.2.xhtml#chapter-4-7">start-up profile file</a><span style="padding-left: 10px;">Section 4.2  The .axiom.input File</span><br/>
+<a href="section-1.1.xhtml#chapter-1-2">step number</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-1.1.xhtml#chapter-1-7">stopping @{stopping Axiom}</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-5.5.xhtml#chapter-5-54">stream:created by iterator</a><span style="padding-left: 10px;">Section 5.5  Creating Lists and Streams with Iterators</span><br/>
+<a href="section-5.5.xhtml#chapter-5-57">stream:number of elements computed</a><span style="padding-left: 10px;">Section 5.5  Creating Lists and Streams with Iterators</span><br/>
+<a href="section-9.66.xhtml#chapter-9-99">sturmSequence</a><span style="padding-left: 10px;">Section 9.66  RealClosure</span><br/>
+<a href="section-9.52.xhtml#chapter-9-90">subMatrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.52.xhtml#chapter-9-94">subMatrix</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-0.2.xhtml#chapter-0-11">subdomain</a><span style="padding-left: 10px;">Section 0.2  A Technical Introduction</span><br/>
+<a href="section-9.72.xhtml#chapter-9-32">submod</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.71.xhtml#chapter-9-22">subset?</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-10.1.xhtml#chapter-10-1">subspace</a><span style="padding-left: 10px;">Section 10.1  Drawing Ribbons Interactively</span><br/>
+<a href="section-7.2.xhtml#chapter-7-148">subspace</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-9.77.xhtml#chapter-9-78">substring?</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-6.11.xhtml#chapter-6-25">such that</a><span style="padding-left: 10px;">Section 6.11  Piece-Wise Function Definitions</span><br/>
+<a href="section-6.21.xhtml#chapter-6-75">such that</a><span style="padding-left: 10px;">Section 6.21  Rules and Pattern Matching</span><br/>
+<a href="section-9.77.xhtml#chapter-9-76">suffix?</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.36.xhtml#chapter-9-108">sumOfDivisors</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-9.36.xhtml#chapter-9-110">sumOfKthPowerDivisors</a><span style="padding-left: 10px;">Section 9.36  IntegerNumberTheoryFunctions</span><br/>
+<a href="section-8.9.xhtml#chapter-8-144">summation:definite</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-146">summation:definite</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-8.9.xhtml#chapter-8-145">summation:indefinite</a><span style="padding-left: 10px;">Section 8.9  Working with Power Series</span><br/>
+<a href="section-7.2.xhtml#chapter-7-125">surface:parametric</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-122">surface:two variable function</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-9.66.xhtml#chapter-9-101">sylvesterSequence</a><span style="padding-left: 10px;">Section 9.66  RealClosure</span><br/>
+<a href="section-1.3.xhtml#chapter-1-14">symbol:naming</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-9.71.xhtml#chapter-9-18">symmetricDifference</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-8.14.xhtml#chapter-8-226">symmetry</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+<a href="section-16.24.xhtml#chapter-16-163">synonym</a><span style="padding-left: 10px;">Section 16.24  )synonym</span><br/>
+<a href="section-11.2.xhtml#chapter-11-7">syntax</a><span style="padding-left: 10px;">Section 11.2  Syntax</span><br/>
+<a href="section-16.25.xhtml#chapter-16-167">system</a><span style="padding-left: 10px;">Section 16.25  )system</span><br/>
+<a href="section-9.1.xhtml#chapter-9-0">table</a><span style="padding-left: 10px;">Section 9.1  AssociationList</span><br/>
+<a href="section-9.18.xhtml#chapter-9-8">table</a><span style="padding-left: 10px;">Section 9.18  EqTable</span><br/>
+<a href="section-11.9.xhtml#chapter-11-22">testing</a><span style="padding-left: 10px;">Section 11.9  Testing</span><br/>
+<a href="section-5.3.xhtml#chapter-5-15">then</a><span style="padding-left: 10px;">Section 5.3  if-then-else</span><br/>
+<a href="section-16.21.xhtml#chapter-16-147">timings:displaying</a><span style="padding-left: 10px;">Section 16.21  )set</span><br/>
+<a href="section-7.2.xhtml#chapter-7-130">toroidal coordinate system</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-21.1.xhtml#chapter-21-0">torus knot</a><span style="padding-left: 10px;">Section 21.1  images1.input</span><br/>
+<a href="section-9.63.xhtml#chapter-9-73">totalDegree</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-16.26.xhtml#chapter-16-174">trace</a><span style="padding-left: 10px;">Section 16.26  )trace</span><br/>
+<a href="section-9.52.xhtml#chapter-9-114">trace</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-8.7.xhtml#chapter-8-97">transform:Laplace</a><span style="padding-left: 10px;">Section 8.7  Laplace Transforms</span><br/>
+<a href="section-9.52.xhtml#chapter-9-100">transpose</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-9.7.xhtml#chapter-9-33">transpose</a><span style="padding-left: 10px;">Section 9.7  CartesianTensor</span><br/>
+<a href="section-1.5.xhtml#chapter-1-54">tree:balanced binary</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-1.5.xhtml#chapter-1-51">tree:binary search</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-1.5.xhtml#chapter-1-50">tree</a><span style="padding-left: 10px;">Section 1.5  Data Structures</span><br/>
+<a href="section-9.77.xhtml#chapter-9-60">trim</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.27.xhtml#chapter-9-0">truncate</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-9.27.xhtml#chapter-9-4">truncate</a><span style="padding-left: 10px;">Section 9.27  Float</span><br/>
+<a href="section-7.2.xhtml#chapter-7-142">tube:points in polygon</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-141">tube:radius</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-140">tube</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-12.2.xhtml#chapter-12-9">tuple</a><span style="padding-left: 10px;">Section 12.2  Exports</span><br/>
+<a href="section-9.51.xhtml#chapter-9-64">twist</a><span style="padding-left: 10px;">Section 9.51  MappingPackage1</span><br/>
+<a href="section-2.2.xhtml#chapter-2-15">type:using parentheses</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-2.2.xhtml#chapter-2-17">type:using parentheses</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-2.2.xhtml#chapter-2-19">type:using parentheses</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-2.5.xhtml#chapter-2-34">typeOf</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-16.16.xhtml#chapter-16-113">ugSysCmdabbreviation</a><span style="padding-left: 10px;">Section 16.16  )load</span><br/>
+<a href="section-16.7.xhtml#chapter-16-46">ugSysCmdabbreviation</a><span style="padding-left: 10px;">Section 16.7  )compile</span><br/>
+<a href="section-16.15.xhtml#chapter-16-109">ugSysCmdboot</a><span style="padding-left: 10px;">Section 16.15  )lisp</span><br/>
+<a href="section-16.17.xhtml#chapter-16-117">ugSysCmdboot</a><span style="padding-left: 10px;">Section 16.17  )trace</span><br/>
+<a href="section-16.3.xhtml#chapter-16-12">ugSysCmdboot</a><span style="padding-left: 10px;">Section 16.3  )boot</span><br/>
+<a href="section-16.25.xhtml#chapter-16-168">ugSysCmdboot</a><span style="padding-left: 10px;">Section 16.25  )system</span><br/>
+<a href="section-16.26.xhtml#chapter-16-175">ugSysCmdboot</a><span style="padding-left: 10px;">Section 16.26  )trace</span><br/>
+<a href="section-16.14.xhtml#chapter-16-102">ugSysCmdcd</a><span style="padding-left: 10px;">Section 16.14  )library</span><br/>
+<a href="section-16.23.xhtml#chapter-16-161">ugSysCmdcd</a><span style="padding-left: 10px;">Section 16.23  )spool</span><br/>
+<a href="section-16.4.xhtml#chapter-16-18">ugSysCmdcd</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.6.xhtml#chapter-16-37">ugSysCmdclear</a><span style="padding-left: 10px;">Section 16.6  )clear</span><br/>
+<a href="section-16.8.xhtml#chapter-16-53">ugSysCmdclear</a><span style="padding-left: 10px;">Section 16.8  )display</span><br/>
+<a href="section-16.18.xhtml#chapter-16-125">ugSysCmdclose</a><span style="padding-left: 10px;">Section 16.18  )pquit</span><br/>
+<a href="section-16.19.xhtml#chapter-16-135">ugSysCmdclose</a><span style="padding-left: 10px;">Section 16.19  )quit</span><br/>
+<a href="section-16.5.xhtml#chapter-16-33">ugSysCmdclose</a><span style="padding-left: 10px;">Section 16.5  )close</span><br/>
+<a href="section-16.14.xhtml#chapter-16-103">ugSysCmdcompile</a><span style="padding-left: 10px;">Section 16.14  )library</span><br/>
+<a href="section-16.2.xhtml#chapter-16-11">ugSysCmdcompile</a><span style="padding-left: 10px;">Section 16.2  )abbreviation</span><br/>
+<a href="section-16.16.xhtml#chapter-16-114">ugSysCmdcompile</a><span style="padding-left: 10px;">Section 16.16  )load</span><br/>
+<a href="section-16.20.xhtml#chapter-16-141">ugSysCmdcompile</a><span style="padding-left: 10px;">Section 16.20  )read</span><br/>
+<a href="section-16.4.xhtml#chapter-16-27">ugSysCmdcompile</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.7.xhtml#chapter-16-42">ugSysCmdcompile</a><span style="padding-left: 10px;">Section 16.7  )compile</span><br/>
+<a href="section-16.9.xhtml#chapter-16-66">ugSysCmdcompile</a><span style="padding-left: 10px;">Section 16.9  )edit</span><br/>
+<a href="section-16.22.xhtml#chapter-16-153">ugSysCmddisplay</a><span style="padding-left: 10px;">Section 16.22  )show</span><br/>
+<a href="section-16.28.xhtml#chapter-16-193">ugSysCmddisplay</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-16.6.xhtml#chapter-16-39">ugSysCmddisplay</a><span style="padding-left: 10px;">Section 16.6  )clear</span><br/>
+<a href="section-16.8.xhtml#chapter-16-49">ugSysCmddisplay</a><span style="padding-left: 10px;">Section 16.8  )display</span><br/>
+<a href="section-16.20.xhtml#chapter-16-142">ugSysCmdedit</a><span style="padding-left: 10px;">Section 16.20  )read</span><br/>
+<a href="section-16.4.xhtml#chapter-16-28">ugSysCmdedit</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.7.xhtml#chapter-16-47">ugSysCmdedit</a><span style="padding-left: 10px;">Section 16.7  )compile</span><br/>
+<a href="section-16.9.xhtml#chapter-16-58">ugSysCmdedit</a><span style="padding-left: 10px;">Section 16.9  )edit</span><br/>
+<a href="section-16.15.xhtml#chapter-16-110">ugSysCmdfin</a><span style="padding-left: 10px;">Section 16.15  )lisp</span><br/>
+<a href="section-16.18.xhtml#chapter-16-123">ugSysCmdfin</a><span style="padding-left: 10px;">Section 16.18  )pquit</span><br/>
+<a href="section-16.19.xhtml#chapter-16-133">ugSysCmdfin</a><span style="padding-left: 10px;">Section 16.19  )quit</span><br/>
+<a href="section-16.3.xhtml#chapter-16-14">ugSysCmdfin</a><span style="padding-left: 10px;">Section 16.3  )boot</span><br/>
+<a href="section-16.25.xhtml#chapter-16-169">ugSysCmdfin</a><span style="padding-left: 10px;">Section 16.25  )system</span><br/>
+<a href="section-16.10.xhtml#chapter-16-68">ugSysCmdfin</a><span style="padding-left: 10px;">Section 16.10  )fin</span><br/>
+<a href="section-16.14.xhtml#chapter-16-104">ugSysCmdframe</a><span style="padding-left: 10px;">Section 16.14  )library</span><br/>
+<a href="section-16.11.xhtml#chapter-16-72">ugSysCmdframe</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-16.13.xhtml#chapter-16-96">ugSysCmdframe</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-16.12.xhtml#chapter-16-86">ugSysCmdhelp</a><span style="padding-left: 10px;">Section 16.12  )help</span><br/>
+<a href="section-16.18.xhtml#chapter-16-124">ugSysCmdhistory</a><span style="padding-left: 10px;">Section 16.18  )pquit</span><br/>
+<a href="section-16.19.xhtml#chapter-16-134">ugSysCmdhistory</a><span style="padding-left: 10px;">Section 16.19  )quit</span><br/>
+<a href="section-16.20.xhtml#chapter-16-143">ugSysCmdhistory</a><span style="padding-left: 10px;">Section 16.20  )read</span><br/>
+<a href="section-16.27.xhtml#chapter-16-180">ugSysCmdhistory</a><span style="padding-left: 10px;">Section 16.27  )undo</span><br/>
+<a href="section-16.4.xhtml#chapter-16-29">ugSysCmdhistory</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.6.xhtml#chapter-16-40">ugSysCmdhistory</a><span style="padding-left: 10px;">Section 16.6  )clear</span><br/>
+<a href="section-16.8.xhtml#chapter-16-54">ugSysCmdhistory</a><span style="padding-left: 10px;">Section 16.8  )display</span><br/>
+<a href="section-16.11.xhtml#chapter-16-84">ugSysCmdhistory</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-16.13.xhtml#chapter-16-88">ugSysCmdhistory</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-16.14.xhtml#chapter-16-100">ugSysCmdlibrary</a><span style="padding-left: 10px;">Section 16.14  )library</span><br/>
+<a href="section-16.4.xhtml#chapter-16-30">ugSysCmdlibrary</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.7.xhtml#chapter-16-48">ugSysCmdlibrary</a><span style="padding-left: 10px;">Section 16.7  )compile</span><br/>
+<a href="section-16.15.xhtml#chapter-16-106">ugSysCmdlisp</a><span style="padding-left: 10px;">Section 16.15  )lisp</span><br/>
+<a href="section-16.17.xhtml#chapter-16-118">ugSysCmdlisp</a><span style="padding-left: 10px;">Section 16.17  )trace</span><br/>
+<a href="section-16.3.xhtml#chapter-16-15">ugSysCmdlisp</a><span style="padding-left: 10px;">Section 16.3  )boot</span><br/>
+<a href="section-16.25.xhtml#chapter-16-170">ugSysCmdlisp</a><span style="padding-left: 10px;">Section 16.25  )system</span><br/>
+<a href="section-16.26.xhtml#chapter-16-176">ugSysCmdlisp</a><span style="padding-left: 10px;">Section 16.26  )trace</span><br/>
+<a href="section-16.16.xhtml#chapter-16-111">ugSysCmdload</a><span style="padding-left: 10px;">Section 16.16  )load</span><br/>
+<a href="section-16.17.xhtml#chapter-16-115">ugSysCmdltrace</a><span style="padding-left: 10px;">Section 16.17  )trace</span><br/>
+<a href="section-16.26.xhtml#chapter-16-177">ugSysCmdltrace</a><span style="padding-left: 10px;">Section 16.26  )trace</span><br/>
+<a href="section-16.18.xhtml#chapter-16-120">ugSysCmdpquit</a><span style="padding-left: 10px;">Section 16.18  )pquit</span><br/>
+<a href="section-16.19.xhtml#chapter-16-136">ugSysCmdpquit</a><span style="padding-left: 10px;">Section 16.19  )quit</span><br/>
+<a href="section-16.25.xhtml#chapter-16-171">ugSysCmdpquit</a><span style="padding-left: 10px;">Section 16.25  )system</span><br/>
+<a href="section-16.5.xhtml#chapter-16-36">ugSysCmdpquit</a><span style="padding-left: 10px;">Section 16.5  )close</span><br/>
+<a href="section-16.10.xhtml#chapter-16-70">ugSysCmdpquit</a><span style="padding-left: 10px;">Section 16.10  )fin</span><br/>
+<a href="section-16.18.xhtml#chapter-16-126">ugSysCmdquit</a><span style="padding-left: 10px;">Section 16.18  )pquit</span><br/>
+<a href="section-16.19.xhtml#chapter-16-128">ugSysCmdquit</a><span style="padding-left: 10px;">Section 16.19  )quit</span><br/>
+<a href="section-16.21.xhtml#chapter-16-150">ugSysCmdquit</a><span style="padding-left: 10px;">Section 16.21  )set</span><br/>
+<a href="section-16.25.xhtml#chapter-16-172">ugSysCmdquit</a><span style="padding-left: 10px;">Section 16.25  )system</span><br/>
+<a href="section-16.5.xhtml#chapter-16-35">ugSysCmdquit</a><span style="padding-left: 10px;">Section 16.5  )close</span><br/>
+<a href="section-16.10.xhtml#chapter-16-71">ugSysCmdquit</a><span style="padding-left: 10px;">Section 16.10  )fin</span><br/>
+<a href="section-16.20.xhtml#chapter-16-138">ugSysCmdread</a><span style="padding-left: 10px;">Section 16.20  )read</span><br/>
+<a href="section-16.4.xhtml#chapter-16-31">ugSysCmdread</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.9.xhtml#chapter-16-67">ugSysCmdread</a><span style="padding-left: 10px;">Section 16.9  )edit</span><br/>
+<a href="section-16.13.xhtml#chapter-16-97">ugSysCmdread</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-16.14.xhtml#chapter-16-105">ugSysCmdset</a><span style="padding-left: 10px;">Section 16.14  )library</span><br/>
+<a href="section-16.21.xhtml#chapter-16-144">ugSysCmdset</a><span style="padding-left: 10px;">Section 16.21  )set</span><br/>
+<a href="section-16.22.xhtml#chapter-16-154">ugSysCmdset</a><span style="padding-left: 10px;">Section 16.22  )show</span><br/>
+<a href="section-16.3.xhtml#chapter-16-16">ugSysCmdset</a><span style="padding-left: 10px;">Section 16.3  )boot</span><br/>
+<a href="section-16.24.xhtml#chapter-16-164">ugSysCmdset</a><span style="padding-left: 10px;">Section 16.24  )synonym</span><br/>
+<a href="section-16.28.xhtml#chapter-16-194">ugSysCmdset</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-16.8.xhtml#chapter-16-55">ugSysCmdset</a><span style="padding-left: 10px;">Section 16.8  )display</span><br/>
+<a href="section-16.11.xhtml#chapter-16-85">ugSysCmdset</a><span style="padding-left: 10px;">Section 16.11  )frame</span><br/>
+<a href="section-16.13.xhtml#chapter-16-98">ugSysCmdset</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-16.22.xhtml#chapter-16-151">ugSysCmdshow</a><span style="padding-left: 10px;">Section 16.22  )show</span><br/>
+<a href="section-16.28.xhtml#chapter-16-195">ugSysCmdshow</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-16.8.xhtml#chapter-16-56">ugSysCmdshow</a><span style="padding-left: 10px;">Section 16.8  )display</span><br/>
+<a href="section-16.23.xhtml#chapter-16-156">ugSysCmdspool</a><span style="padding-left: 10px;">Section 16.23  )spool</span><br/>
+<a href="section-16.4.xhtml#chapter-16-32">ugSysCmdspool</a><span style="padding-left: 10px;">Section 16.4  )cd</span><br/>
+<a href="section-16.24.xhtml#chapter-16-162">ugSysCmdsynonym</a><span style="padding-left: 10px;">Section 16.24  )synonym</span><br/>
+<a href="section-16.15.xhtml#chapter-16-108">ugSysCmdsystem</a><span style="padding-left: 10px;">Section 16.15  )lisp</span><br/>
+<a href="section-16.18.xhtml#chapter-16-127">ugSysCmdsystem</a><span style="padding-left: 10px;">Section 16.18  )pquit</span><br/>
+<a href="section-16.19.xhtml#chapter-16-137">ugSysCmdsystem</a><span style="padding-left: 10px;">Section 16.19  )quit</span><br/>
+<a href="section-16.25.xhtml#chapter-16-166">ugSysCmdsystem</a><span style="padding-left: 10px;">Section 16.25  )system</span><br/>
+<a href="section-16.3.xhtml#chapter-16-17">ugSysCmdsystem</a><span style="padding-left: 10px;">Section 16.3  )boot</span><br/>
+<a href="section-16.9.xhtml#chapter-16-65">ugSysCmdsystem</a><span style="padding-left: 10px;">Section 16.9  )edit</span><br/>
+<a href="section-16.17.xhtml#chapter-16-119">ugSysCmdtrace</a><span style="padding-left: 10px;">Section 16.17  )trace</span><br/>
+<a href="section-16.26.xhtml#chapter-16-173">ugSysCmdtrace</a><span style="padding-left: 10px;">Section 16.26  )trace</span><br/>
+<a href="section-16.27.xhtml#chapter-16-178">ugSysCmdundo</a><span style="padding-left: 10px;">Section 16.27  )undo</span><br/>
+<a href="section-16.6.xhtml#chapter-16-41">ugSysCmdundo</a><span style="padding-left: 10px;">Section 16.6  )clear</span><br/>
+<a href="section-16.13.xhtml#chapter-16-99">ugSysCmdundo</a><span style="padding-left: 10px;">Section 16.13  )history</span><br/>
+<a href="section-16.22.xhtml#chapter-16-155">ugSysCmdwhat</a><span style="padding-left: 10px;">Section 16.22  )show</span><br/>
+<a href="section-16.24.xhtml#chapter-16-165">ugSysCmdwhat</a><span style="padding-left: 10px;">Section 16.24  )synonym</span><br/>
+<a href="section-16.28.xhtml#chapter-16-181">ugSysCmdwhat</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-16.8.xhtml#chapter-16-57">ugSysCmdwhat</a><span style="padding-left: 10px;">Section 16.8  )display</span><br/>
+<a href="section-15.2.xhtml#chapter-15-1">ugWhatsNewAsharp</a><span style="padding-left: 10px;">Section 15.2  The New Axiom Library Compiler</span><br/>
+<a href="section-15.7.xhtml#chapter-15-36">ugWhatsNewDocumentation</a><span style="padding-left: 10px;">Section 15.7  Documentation</span><br/>
+<a href="section-15.6.xhtml#chapter-15-35">ugWhatsNewHyperDoc</a><span style="padding-left: 10px;">Section 15.6  HyperTex</span><br/>
+<a href="section-15.1.xhtml#chapter-15-0">ugWhatsNewImportant</a><span style="padding-left: 10px;">Section 15.1  Important Things to Read First</span><br/>
+<a href="section-15.4.xhtml#chapter-15-33">ugWhatsNewLanguage</a><span style="padding-left: 10px;">Section 15.4  Interactive Front-end and Language</span><br/>
+<a href="section-15.5.xhtml#chapter-15-34">ugWhatsNewLibrary</a><span style="padding-left: 10px;">Section 15.5  Library</span><br/>
+<a href="section-16.27.xhtml#chapter-16-179">undo</a><span style="padding-left: 10px;">Section 16.27  )undo</span><br/>
+<a href="section-2.5.xhtml#chapter-2-43">union:difference from record</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-2.5.xhtml#chapter-2-40">union:selector</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-2.5.xhtml#chapter-2-32">union</a><span style="padding-left: 10px;">Section 2.5  Unions</span><br/>
+<a href="section-9.71.xhtml#chapter-9-14">union</a><span style="padding-left: 10px;">Section 9.71  Set</span><br/>
+<a href="section-9.39.xhtml#chapter-9-32">univariateSolve</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-58">univariateSolve</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-68">univariateSolve</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.77.xhtml#chapter-9-68">upperCase!</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-9.8.xhtml#chapter-9-51">upperCase</a><span style="padding-left: 10px;">Section 9.8  Character</span><br/>
+<a href="section-9.77.xhtml#chapter-9-66">upperCase</a><span style="padding-left: 10px;">Section 9.77  String</span><br/>
+<a href="section-14.3.xhtml#chapter-14-15">user-level</a><span style="padding-left: 10px;">Section 14.3  Miscellaneous Features of Browse</span><br/>
+<a href="section-14.3.xhtml#chapter-14-16">user-level</a><span style="padding-left: 10px;">Section 14.3  Miscellaneous Features of Browse</span><br/>
+<a href="section-16.28.xhtml#chapter-16-185">user-level</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-16.1.xhtml#chapter-16-3">user-level</a><span style="padding-left: 10px;">Section 16.1  Introduction</span><br/>
+<a href="section-7.2.xhtml#chapter-7-144">var1Steps</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-146">var2Steps</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-6.16.xhtml#chapter-6-51">variable:fluid</a><span style="padding-left: 10px;">Section 6.16  Free and Local Variables</span><br/>
+<a href="section-6.16.xhtml#chapter-6-46">variable:free</a><span style="padding-left: 10px;">Section 6.16  Free and Local Variables</span><br/>
+<a href="section-6.16.xhtml#chapter-6-47">variable:global</a><span style="padding-left: 10px;">Section 6.16  Free and Local Variables</span><br/>
+<a href="section-6.16.xhtml#chapter-6-49">variable:local</a><span style="padding-left: 10px;">Section 6.16  Free and Local Variables</span><br/>
+<a href="section-1.3.xhtml#chapter-1-15">variable:naming</a><span style="padding-left: 10px;">Section 1.3  The Axiom Language</span><br/>
+<a href="section-9.70.xhtml#chapter-9-8">variable</a><span style="padding-left: 10px;">Section 9.70  SegmentBinding</span><br/>
+<a href="section-9.63.xhtml#chapter-9-67">variables</a><span style="padding-left: 10px;">Section 9.63  Polynomial</span><br/>
+<a href="section-9.83.xhtml#chapter-9-26">vectorise</a><span style="padding-left: 10px;">Section 9.83  UnivariatePolynomial</span><br/>
+<a href="section-9.52.xhtml#chapter-9-98">vertConcat</a><span style="padding-left: 10px;">Section 9.52  Matrix</span><br/>
+<a href="section-16.9.xhtml#chapter-16-61">vi</a><span style="padding-left: 10px;">Section 16.9  )edit</span><br/>
+<a href="section-7.0.xhtml#chapter-7-1">viewport</a><span style="padding-left: 10px;">Section 7.0 Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-41">weight</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.60.xhtml#chapter-9-14">weight</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-9.60.xhtml#chapter-9-12">weights</a><span style="padding-left: 10px;">Section 9.60  OrderlyDifferentialPolynomial</span><br/>
+<a href="section-16.28.xhtml#chapter-16-183">what categories</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-16.28.xhtml#chapter-16-184">what commands</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-2.12.xhtml#chapter-2-78">what domain</a><span style="padding-left: 10px;">Section 2.12  Commands for Snooping</span><br/>
+<a href="section-16.28.xhtml#chapter-16-187">what domains</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-2.12.xhtml#chapter-2-77">what operation</a><span style="padding-left: 10px;">Section 2.12  Commands for Snooping</span><br/>
+<a href="section-16.28.xhtml#chapter-16-188">what operations</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-16.28.xhtml#chapter-16-189">what packages</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-2.2.xhtml#chapter-2-25">what packages</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-2.12.xhtml#chapter-2-79">what packages</a><span style="padding-left: 10px;">Section 2.12  Commands for Snooping</span><br/>
+<a href="section-16.28.xhtml#chapter-16-190">what synonym</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-16.28.xhtml#chapter-16-191">what things</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-16.28.xhtml#chapter-16-182">what</a><span style="padding-left: 10px;">Section 16.28  )what</span><br/>
+<a href="section-2.2.xhtml#chapter-2-24">what</a><span style="padding-left: 10px;">Section 2.2  Writing Types and Modes</span><br/>
+<a href="section-2.12.xhtml#chapter-2-76">what</a><span style="padding-left: 10px;">Section 2.12  Commands for Snooping</span><br/>
+<a href="section-11.2.xhtml#chapter-11-9">where</a><span style="padding-left: 10px;">Section 11.2  Syntax</span><br/>
+<a href="section-13.2.xhtml#chapter-13-0">where</a><span style="padding-left: 10px;">Section 13.2  Definitions</span><br/>
+<a href="section-5.4.xhtml#chapter-5-36">while</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-5.4.xhtml#chapter-5-38">while</a><span style="padding-left: 10px;">Section 5.4  Loops</span><br/>
+<a href="section-9.61.xhtml#chapter-9-34">wholePart</a><span style="padding-left: 10px;">Section 9.61  PartialFraction</span><br/>
+<a href="section-9.65.xhtml#chapter-9-91">wholeRagits</a><span style="padding-left: 10px;">Section 9.65  RadixExpansion</span><br/>
+<a href="section-1.1.xhtml#chapter-1-5">window</a><span style="padding-left: 10px;">Section 1.1  Starting Up and Winding Down</span><br/>
+<a href="section-11.2.xhtml#chapter-11-8">with</a><span style="padding-left: 10px;">Section 11.2  Syntax</span><br/>
+<a href="section-12.12.xhtml#chapter-12-31">with</a><span style="padding-left: 10px;">Section 12.12  Anonymous Categories</span><br/>
+<a href="section-12.1.xhtml#chapter-12-6">with</a><span style="padding-left: 10px;">Section 12.1  Definitions</span><br/>
+<a href="section-12.2.xhtml#chapter-12-8">with</a><span style="padding-left: 10px;">Section 12.2  Exports</span><br/>
+<a href="section-9.25.xhtml#chapter-9-76">writable?</a><span style="padding-left: 10px;">Section 9.25  FileName</span><br/>
+<a href="section-7.2.xhtml#chapter-7-203">write</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-265">write</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.2.xhtml#chapter-7-267">write</a><span style="padding-left: 10px;">Section 7.2  Three-Dimensional Graphics</span><br/>
+<a href="section-7.1.xhtml#chapter-7-90">write</a><span style="padding-left: 10px;">Section 7.1  Two-Dimensional Graphics</span><br/>
+<a href="section-9.81.xhtml#chapter-9-118">write</a><span style="padding-left: 10px;">Section 9.81  TextFile</span><br/>
+<a href="section-9.38.xhtml#chapter-9-6">write</a><span style="padding-left: 10px;">Section 9.38  KeyedAccessFile</span><br/>
+<a href="section-9.24.xhtml#chapter-9-66">write</a><span style="padding-left: 10px;">Section 9.24  File</span><br/>
+<a href="section-9.81.xhtml#chapter-9-114">writeLine</a><span style="padding-left: 10px;">Section 9.81  TextFile</span><br/>
+<a href="section-9.72.xhtml#chapter-9-42">xor</a><span style="padding-left: 10px;">Section 9.72  SingleInteger</span><br/>
+<a href="section-9.22.xhtml#chapter-9-36">zero?</a><span style="padding-left: 10px;">Section 9.22  Factored</span><br/>
+<a href="section-9.28.xhtml#chapter-9-36">zero?</a><span style="padding-left: 10px;">Section 9.28  Fraction</span><br/>
+<a href="section-9.34.xhtml#chapter-9-58">zero?</a><span style="padding-left: 10px;">Section 9.34  Integer</span><br/>
+<a href="section-9.39.xhtml#chapter-9-20">zeroDimensional?</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.39.xhtml#chapter-9-28">zeroSetSplit</a><span style="padding-left: 10px;">Section 9.39  LexTriangularPackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-64">zeroSetSplit</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-9.91.xhtml#chapter-9-66">zeroSetSplit</a><span style="padding-left: 10px;">Section 9.91  ZeroDimensionalSolvePackage</span><br/>
+<a href="section-10.2.xhtml#chapter-10-3">zoom</a><span style="padding-left: 10px;">Section 10.2  A Ribbon Program</span><br/>
+<a href="section-8.14.xhtml#chapter-8-233">zygote</a><span style="padding-left: 10px;">Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</span><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/bookax1.js b/src/axiom-website/hyperdoc/axbook/bookax1.js
new file mode 100644
index 0000000..c7d676e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/bookax1.js
@@ -0,0 +1,90 @@
+/*
+ * 
+ * 
+ * 
+ * COPYRIGHT : (C) 2006 Arthur C. Ralfs
+ */
+
+var Num;
+
+function init() {
+}
+
+function makeRequest(stringNum) {
+    Num = stringNum;
+    http_request = new XMLHttpRequest();	 
+    var command = document.getElementById('comm'+stringNum).value;
+    http_request.open('POST', 'http://127.0.0.1:8085', true);
+    http_request.onreadystatechange = handleResponse;
+//    http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+//    http_request.send("command="+encodeURIComponent(command));
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+}
+
+function handleResponse() {
+    if (http_request.readyState == 4) {
+	if (http_request.status == 200) {
+            stringNum = Num;
+// get the appropriate boxes
+	    spadCommBox = document.getElementById('spadComm'+stringNum);
+	    mathAnsBox = document.getElementById('mathAns'+stringNum);
+// test to see if this is virgin, i.e. see if mathAns is empty and if so
+// make a restore button
+            if ( !mathAnsBox.hasChildNodes() ) {
+                restorForm = document.createElement('form');
+		restorForm.setAttribute("id","formRestor"+stringNum);
+		restorForm.setAttribute("action","javascript:restorComm('"+stringNum+"')");
+	        restorBut = document.createElement('input');
+		restorBut.setAttribute('type','submit');
+		restorBut.setAttribute('value','restore');
+		restorBut.setAttribute('class','restore');
+		restorForm.appendChild(restorBut);
+		spadCommBox.insertBefore(restorForm,document.getElementById('commSav'+stringNum));
+	    }
+// remove previous mathAns box
+	    spadCommBox.removeChild(document.getElementById('mathAns'+stringNum));
+
+// add new mathAns elememt
+            mathAnsBox =
+            document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
+	    mathAnsBox.setAttribute('id', 'mathAns'+stringNum);
+	    spadCommBox.appendChild(mathAnsBox);
+
+// stick response in div=mathBox
+	    var mathString = http_request.responseText;
+            var mathRange = document.createRange();
+	    var mathBox = document.createElementNS('http://www.w3.org/1999/xhtml','div');
+            mathRange.selectNodeContents(mathBox);
+            var mathFragment = mathRange.createContextualFragment(mathString);
+            mathBox.appendChild(mathFragment);
+// set id on mathBox
+	    var stepNum = mathBox.firstChild.firstChild.data;
+	    mathBox.setAttribute('id', 'step'+stepNum);
+	    mathBox.setAttribute('class', 'mathbox');
+
+// insert everything into the document
+
+	    mathAnsBox.appendChild(mathBox);
+
+// delete linenum box
+//            mathBox.removeChild(mathBox.firstChild);
+            mathBox.firstChild.removeChild(mathBox.firstChild.firstChild);
+
+	} else
+	{
+	    alert('There was a problem with the request.'+ http_request.statusText);
+	}
+    }
+}
+
+function restorComm(stringNum) {
+//restore original command
+    document.getElementById('comm'+stringNum).value =
+    document.getElementById('commSav'+stringNum).firstChild.data;
+//remove added mathBox
+    mathAnsBox = document.getElementById('mathAns'+stringNum);
+    mathAnsBox.removeChild(mathAnsBox.firstChild);
+//remove restore button
+    document.getElementById('spadComm'+stringNum).removeChild(document.getElementById('formRestor'+stringNum));
+}
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-0.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-0.xhtml
new file mode 100644
index 0000000..87f2919
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-0.xhtml
@@ -0,0 +1,73 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 0: Introduction to Axiom</h3>
+<a href="section-0.1.xhtml">0.1 Introduction to Axiom</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.1" class="subseccontents">0.1.1 Symbolic Computation</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.2" class="subseccontents">0.1.2 Numeric Computation</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.3" class="subseccontents">0.1.3 Graphics</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.4" class="subseccontents">0.1.4 HyperDoc</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.5" class="subseccontents">0.1.5 Interactive Programming </a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.6" class="subseccontents">0.1.6 Data Structures</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.7" class="subseccontents">0.1.7 Mathematical Structures</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.8" class="subseccontents">0.1.8 Pattern Matching</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.9" class="subseccontents">0.1.9 Polymorphic Algorithms</a><br/>
+<a href="section-0.1.xhtml#subsec-0.1.10" class="subseccontents">0.1.10 Extensibility</a><br/>
+<a href="section-0.2.xhtml">0.2 A Technical Introduction</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.1" class="subseccontents">0.2.1 Types are Defined by Abstract Datatype Programs</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.2" class="subseccontents">0.2.2 The Type of Basic Objects is a Domain or Subdomain</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.3" class="subseccontents">0.2.3 Domains Have Types Called Categories</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.4" class="subseccontents">0.2.4 Operations Can Refer To Abstract Types</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.5" class="subseccontents">0.2.5 Categories Form Hierarchies</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.6" class="subseccontents">0.2.6 Domains Belong to Categories by Assertion</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.7" class="subseccontents">0.2.7 Packages Are Clusters of Polymorphic Operations</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.8" class="subseccontents">0.2.8 The Interpreter Builds Domains Dynamically</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.9" class="subseccontents">0.2.9 Axiom Code is Compiled</a><br/>
+<a href="section-0.2.xhtml#subsec-0.2.10" class="subseccontents">0.2.10 Axiom is Extensible</a><br/>
+<a href="section-0.3.xhtml">0.3 Using Axiom as a Pocket Calculator</a><br/>
+<a href="section-0.3.xhtml#subsec-0.3.1" class="subseccontents">0.3.1 Basic Arithmetic</a><br/>
+<a href="section-0.3.xhtml#subsec-0.3.2" class="subseccontents">0.3.2 Type Conversion</a><br/>
+<a href="section-0.3.xhtml#subsec-0.3.3" class="subseccontents">0.3.3 Useful Functions</a><br/>
+<a href="section-0.4.xhtml">0.4 Using Axiom as a Symbolic Calculator</a><br/>
+<a href="section-0.4.xhtml#subsec-0.4.1" class="subseccontents">0.4.1 Expressions Involving Symbols</a><br/>
+<a href="section-0.4.xhtml#subsec-0.4.2" class="subseccontents">0.4.2 Complex Numbers</a><br/>
+<a href="section-0.4.xhtml#subsec-0.4.3" class="subseccontents">0.4.3 Number Representations</a><br/>
+<a href="section-0.4.xhtml#subsec-0.4.4" class="subseccontents">0.4.4 Modular Arithmetic</a><br/>
+<a href="section-0.5.xhtml">0.5 General Points about Axiom</a><br/>
+<a href="section-0.5.xhtml#subsec-0.5.1" class="subseccontents">0.5.1 Computation Without Output</a><br/>
+<a href="section-0.5.xhtml#subsec-0.5.2" class="subseccontents">0.5.2 Accessing Earlier Results</a><br/>
+<a href="section-0.5.xhtml#subsec-0.5.3" class="subseccontents">0.5.3 Splitting Expressions Over Several Lines</a><br/>
+<a href="section-0.5.xhtml#subsec-0.5.4" class="subseccontents">0.5.4 Comments and Descriptions</a><br/>
+<a href="section-0.5.xhtml#subsec-0.5.5" class="subseccontents">0.5.5 Control of Result Types</a><br/>
+<a href="section-0.6.xhtml">0.6 Data Structures in Axiom</a><br/>
+<a href="section-0.6.xhtml#subsec-0.6.1" class="subseccontents">0.6.1 Lists</a><br/>
+<a href="section-0.6.xhtml#subsec-0.6.2" class="subseccontents">0.6.2 Segmented Lists</a><br/>
+<a href="section-0.6.xhtml#subsec-0.6.3" class="subseccontents">0.6.3 Streams</a><br/>
+<a href="section-0.6.xhtml#subsec-0.6.4" class="subseccontents">0.6.4 Arrays, Vectors, Strings, and Bits</a><br/>
+<a href="section-0.6.xhtml#subsec-0.6.5" class="subseccontents">0.6.5 Flexible Arrays</a><br/>
+<a href="section-0.7.xhtml">0.7 Functions, Choices, and Loops</a><br/>
+<a href="section-0.7.xhtml#subsec-0.7.1" class="subseccontents">0.7.1 Reading Code from a File</a><br/>
+<a href="section-0.7.xhtml#subsec-0.7.2" class="subseccontents">0.7.2 Blocks</a><br/>
+<a href="section-0.7.xhtml#subsec-0.7.3" class="subseccontents">0.7.3 Functions</a><br/>
+<a href="section-0.7.xhtml#subsec-0.7.4" class="subseccontents">0.7.4 Choices</a><br/>
+<a href="section-0.7.xhtml#subsec-0.7.5" class="subseccontents">0.7.5 Loops</a><br/>
+<a href="section-0.7.xhtml#subsubsec-0.7.5.1" class="subsubseccontents">0.7.5.1 The <span class="teletype">repeat</span> loop</a><br/>
+<a href="section-0.7.xhtml#subsubsec-0.7.5.2" class="subsubseccontents">0.7.5.2 The <span class="teletype">while</span> loop</a><br/>
+<a href="section-0.7.xhtml#subsubsec-0.7.5.3" class="subsubseccontents">0.7.5.3 The <span class="teletype">for</span> loop</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-1.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-1.xhtml
new file mode 100644
index 0000000..dd4bd60
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-1.xhtml
@@ -0,0 +1,49 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 1: An Overview of Axiom</h3>
+<a href="section-1.0.xhtml">1.0 An Overview of Axiom</a><br/>
+<a href="section-1.1.xhtml">1.1 Starting Up and Winding Down</a><br/>
+<a href="section-1.1.xhtml#subsec-1.1.1" class="subseccontents">1.1.1 Clef</a><br/>
+<a href="section-1.2.xhtml">1.2 Typographic Conventions</a><br/>
+<a href="section-1.3.xhtml">1.3 The Axiom Language</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.1" class="subseccontents">1.3.1 Arithmetic Expressions</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.2" class="subseccontents">1.3.2 Previous Results</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.3" class="subseccontents">1.3.3 Some Types</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.4" class="subseccontents">1.3.4 Symbols, Variables, Assignments, and Declarations</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.5" class="subseccontents">1.3.5 Conversion</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.6" class="subseccontents">1.3.6 Calling Functions</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.7" class="subseccontents">1.3.7 Some Predefined Macros</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.8" class="subseccontents">1.3.8 Long Lines</a><br/>
+<a href="section-1.3.xhtml#subsec-1.3.9" class="subseccontents">1.3.9 Comments</a><br/>
+<a href="section-1.4.xhtml">1.4 Numbers</a><br/>
+<a href="section-1.5.xhtml">1.5 Data Structures</a><br/>
+<a href="section-1.6.xhtml">1.6 Expanding to Higher Dimensions</a><br/>
+<a href="section-1.7.xhtml">1.7 Writing Your Own Functions</a><br/>
+<a href="section-1.8.xhtml">1.8 Polynomials</a><br/>
+<a href="section-1.9.xhtml">1.9 Limits</a><br/>
+<a href="section-1.10.xhtml">1.10 Series</a><br/>
+<a href="section-1.11.xhtml">1.11 Derivatives</a><br/>
+<a href="section-1.12.xhtml">1.12 Integration</a><br/>
+<a href="section-1.13.xhtml">1.13 Differential Equations</a><br/>
+<a href="section-1.14.xhtml">1.14 Solution of Equations</a><br/>
+<a href="section-1.15.xhtml">1.15 System Commands</a><br/>
+<a href="section-1.15.xhtml#subsec-1.15.1" class="subseccontents">1.15.1 Undo</a><br/>
+<a href="section-1.16.xhtml">1.16 Graphics</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-10.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-10.xhtml
new file mode 100644
index 0000000..a516778
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-10.xhtml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 10: Interactive Programming</h3>
+<a href="section-10.0.xhtml">10.0 Interactive Programming</a><br/>
+<a href="section-10.1.xhtml">10.1 Drawing Ribbons Interactively</a><br/>
+<a href="section-10.2.xhtml">10.2 A Ribbon Program</a><br/>
+<a href="section-10.3.xhtml">10.3 Coloring and Positioning Ribbons</a><br/>
+<a href="section-10.4.xhtml">10.4 Points, Lines, and Curves</a><br/>
+<a href="section-10.5.xhtml">10.5 A Bouquet of Arrows</a><br/>
+<a href="section-10.6.xhtml">10.6 Diversion: When Things Go Wrong</a><br/>
+<a href="section-10.7.xhtml">10.7 Drawing Complex Vector Fields</a><br/>
+<a href="section-10.8.xhtml">10.8 Drawing Complex Functions</a><br/>
+<a href="section-10.9.xhtml">10.9 Functions Producing Functions</a><br/>
+<a href="section-10.10.xhtml">10.10 Automatic Newton Iteration Formulas</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-11.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-11.xhtml
new file mode 100644
index 0000000..ab659c3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-11.xhtml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter11</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 11: Packages</h3>
+<a href="section-11.0.xhtml">11.0 Packages</a><br/>
+<a href="section-11.1.xhtml">11.1 Names, Abbreviations, and File Structure</a><br/>
+<a href="section-11.2.xhtml">11.2 Syntax</a><br/>
+<a href="section-11.3.xhtml">11.3 Abstract Datatypes</a><br/>
+<a href="section-11.4.xhtml">11.4 Capsules</a><br/>
+<a href="section-11.5.xhtml">11.5 Input Files vs. Packages</a><br/>
+<a href="section-11.6.xhtml">11.6 Compiling Packages</a><br/>
+<a href="section-11.7.xhtml">11.7 Parameters</a><br/>
+<a href="section-11.8.xhtml">11.8 Conditionals</a><br/>
+<a href="section-11.9.xhtml">11.9 Testing</a><br/>
+<a href="section-11.10.xhtml">11.10 How Packages Work</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-12.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-12.xhtml
new file mode 100644
index 0000000..d4bb06e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-12.xhtml
@@ -0,0 +1,34 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 12: Categories</h3>
+<a href="section-12.0.xhtml">12.0 Categories</a><br/>
+<a href="section-12.1.xhtml">12.1 Definitions</a><br/>
+<a href="section-12.2.xhtml">12.2 Exports</a><br/>
+<a href="section-12.3.xhtml">12.3 Documentation</a><br/>
+<a href="section-12.4.xhtml">12.4 Hierarchies</a><br/>
+<a href="section-12.5.xhtml">12.5 Membership</a><br/>
+<a href="section-12.6.xhtml">12.6 Defaults</a><br/>
+<a href="section-12.7.xhtml">12.7 Axioms</a><br/>
+<a href="section-12.8.xhtml">12.8 Correctness</a><br/>
+<a href="section-12.9.xhtml">12.9 Attributes</a><br/>
+<a href="section-12.10.xhtml">12.10 Parameters</a><br/>
+<a href="section-12.11.xhtml">12.11 Conditionals</a><br/>
+<a href="section-12.12.xhtml">12.12 Anonymous Categories</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-13.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-13.xhtml
new file mode 100644
index 0000000..5634e56
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-13.xhtml
@@ -0,0 +1,43 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter13</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 13: Domains</h3>
+<a href="section-13.0.xhtml">13.0 Domains</a><br/>
+<a href="section-13.1.xhtml">13.1 Domains vs. Packages</a><br/>
+<a href="section-13.2.xhtml">13.2 Definitions</a><br/>
+<a href="section-13.3.xhtml">13.3 Category Assertions</a><br/>
+<a href="section-13.4.xhtml">13.4 A Demo</a><br/>
+<a href="section-13.5.xhtml">13.5 Browse</a><br/>
+<a href="section-13.6.xhtml">13.6 Representation</a><br/>
+<a href="section-13.7.xhtml">13.7 Multiple Representations</a><br/>
+<a href="section-13.8.xhtml">13.8 Add Domain</a><br/>
+<a href="section-13.9.xhtml">13.9 Defaults</a><br/>
+<a href="section-13.10.xhtml">13.10 Origins</a><br/>
+<a href="section-13.11.xhtml">13.11 Short Forms</a><br/>
+<a href="section-13.12.xhtml">13.12 Example 1: Clifford Algebra</a><br/>
+<a href="section-13.13.xhtml">13.13 Example 2: Building A Query Facility</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.1" class="subseccontents">13.13.1 A Little Query Language</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.2" class="subseccontents">13.13.2 The Database Constructor</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.3" class="subseccontents">13.13.3 Query Equations</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.4" class="subseccontents">13.13.4 DataLists</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.5" class="subseccontents">13.13.5 Index Cards</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.6" class="subseccontents">13.13.6 Creating a Database</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.7" class="subseccontents">13.13.7 Putting It All Together</a><br/>
+<a href="section-13.13.xhtml#subsec-13.13.8" class="subseccontents">13.13.8 Example Queries</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-14.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-14.xhtml
new file mode 100644
index 0000000..adfd237
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-14.xhtml
@@ -0,0 +1,76 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter14</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 14: Browse</h3>
+<a href="section-14.0.xhtml">14.0 Browse</a><br/>
+<a href="section-14.1.xhtml">14.1 The Front Page: Searching the Library</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.1" class="subseccontents">14.1.1 Constructors</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.2" class="subseccontents">14.1.2 Operations</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.3" class="subseccontents">14.1.3 Attributes</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.4" class="subseccontents">14.1.4 General</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.5" class="subseccontents">14.1.5 Documentation</a><br/>
+<a href="section-14.1.xhtml#subsec-14.1.6" class="subseccontents">14.1.6 Complete</a><br/>
+<a href="section-14.2.xhtml">14.2 The Constructor Page</a><br/>
+<a href="section-14.2.xhtml#subsec-14.2.1" class="subseccontents">14.2.1 Constructor Page Buttons</a><br/>
+<a href="section-14.2.xhtml#subsec-14.2.2" class="subseccontents">14.2.2 Cross Reference</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.1" class="subsubseccontents">14.2.2.1 Parents</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.2" class="subsubseccontents">14.2.2.2 Ancestors</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.3" class="subsubseccontents">14.2.2.3 Relatives</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.4" class="subsubseccontents">14.2.2.4 Dependents</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.5" class="subsubseccontents">14.2.2.5 Lineage</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.6" class="subsubseccontents">14.2.2.6 Clients</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.7" class="subsubseccontents">14.2.2.7 Benefactors</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.8" class="subsubseccontents">14.2.2.8 Children</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.9" class="subsubseccontents">14.2.2.9 Descendants</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.2.10" class="subsubseccontents">14.2.2.10 Domains</a><br/>
+<a href="section-14.2.xhtml#subsec-14.2.3" class="subseccontents">14.2.3 Views Of Constructors</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.1" class="subsubseccontents">14.2.3.1 names</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.2" class="subsubseccontents">14.2.3.2 abbrs</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.3" class="subsubseccontents">14.2.3.3 kinds</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.4" class="subsubseccontents">14.2.3.4 files</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.5" class="subsubseccontents">14.2.3.5 parameters</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.6" class="subsubseccontents">14.2.3.6 filter</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.7" class="subsubseccontents">14.2.3.7 documentation</a><br/>
+<a href="section-14.2.xhtml#subsubsec-14.2.3.8" class="subsubseccontents">14.2.3.8 conditions</a><br/>
+<a href="section-14.2.xhtml#subsec-14.2.4" class="subseccontents">14.2.4 Giving Parameters to Constructors</a><br/>
+<a href="section-14.3.xhtml">14.3 Miscellaneous Features of Browse</a><br/>
+<a href="section-14.3.xhtml#subsec-14.3.1" class="subseccontents">14.3.1 The Description Page for Operations</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.1" class="subsubseccontents">14.3.1.1 Arguments</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.2" class="subsubseccontents">14.3.1.2 Returns</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.3" class="subsubseccontents">14.3.1.3 Origin</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.4" class="subsubseccontents">14.3.1.4 Conditions</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.5" class="subsubseccontents">14.3.1.5 Description</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.1.6" class="subsubseccontents">14.3.1.6 Where</a><br/>
+<a href="section-14.3.xhtml#subsec-14.3.2" class="subseccontents">14.3.2 Views of Operations</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.1" class="subsubseccontents">14.3.2.1 names</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.2" class="subsubseccontents">14.3.2.2 filter</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.3" class="subsubseccontents">14.3.2.3 documentation</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.4" class="subsubseccontents">14.3.2.4 signatures</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.5" class="subsubseccontents">14.3.2.5 parameters</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.6" class="subsubseccontents">14.3.2.6 origins</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.7" class="subsubseccontents">14.3.2.7 conditions</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.8" class="subsubseccontents">14.3.2.8 usage</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.9" class="subsubseccontents">14.3.2.9 implementation</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.10" class="subsubseccontents">14.3.2.10 generalize</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.2.11" class="subsubseccontents">14.3.2.11 all domains</a><br/>
+<a href="section-14.3.xhtml#subsec-14.3.3" class="subseccontents">14.3.3 Capitalization Convention</a><br/>
+<a href="section-14.3.xhtml#subsec-14.3.4" class="subseccontents">14.3.4 Browse Options</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.4.1" class="subsubseccontents">14.3.4.1 Exposure</a><br/>
+<a href="section-14.3.xhtml#subsubsec-14.3.4.2" class="subsubseccontents">14.3.4.2 Threshold</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-15.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-15.xhtml
new file mode 100644
index 0000000..dd9a704
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-15.xhtml
@@ -0,0 +1,51 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter15</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 15: What's New in Axiom Version 2.0</h3>
+<a href="section-15.0.xhtml">15.0 Axiom Packages</a><br/>
+<a href="section-15.1.xhtml">15.1 Important Things to Read First</a><br/>
+<a href="section-15.2.xhtml">15.2 The New Axiom Library Compiler</a><br/>
+<a href="section-15.3.xhtml">15.3 The NAG Library Link</a><br/>
+<a href="section-15.3.xhtml#subsec-15.3.1" class="subseccontents">15.3.1 Interpreting NAG Documentation</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.1.1" class="subsubseccontents">15.3.1.1 Correspondence Between Fortran and Axiom types</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.1.2" class="subsubseccontents">15.3.1.2 Classification of NAG parameters</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.1.3" class="subsubseccontents">15.3.1.3 IFAIL</a><br/>
+<a href="section-15.3.xhtml#subsec-15.3.2" class="subseccontents">15.3.2 Using the Link</a><br/>
+<a href="section-15.3.xhtml#subsec-15.3.3" class="subseccontents">15.3.3 Providing values for Argument Subprograms</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.3.1" class="subsubseccontents">15.3.3.1 Providing ASPs via <span class="teletype">FortranExpression</span></a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.3.2" class="subsubseccontents">15.3.3.2 Providing ASPs via <span class="teletype">FortranCode</span></a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.3.3" class="subsubseccontents">15.3.3.3 Providing ASPs via <span class="teletype">FileName</span></a><br/>
+<a href="section-15.3.xhtml#subsec-15.3.4" class="subseccontents">15.3.4 General Fortran-generation utilities in Axiom</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.1" class="subsubseccontents">15.3.4.1 Template Manipulation</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.2" class="subsubseccontents">15.3.4.2 Manipulating the Fortran Output Stream</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.3" class="subsubseccontents">15.3.4.3 Fortran Types</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.4" class="subsubseccontents">15.3.4.4 FortranScalarType</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.5" class="subsubseccontents">15.3.4.5 FortranType</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.6" class="subsubseccontents">15.3.4.6 SymbolTable</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.7" class="subsubseccontents">15.3.4.7 TheSymbolTable</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.8" class="subsubseccontents">15.3.4.8 Advanced Fortran Code Generation</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.9" class="subsubseccontents">15.3.4.9 Switch</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.10" class="subsubseccontents">15.3.4.10 FortranCode</a><br/>
+<a href="section-15.3.xhtml#subsubsec-15.3.4.11" class="subsubseccontents">15.3.4.11 FortranProgram</a><br/>
+<a href="section-15.3.xhtml#subsec-15.3.5" class="subseccontents">15.3.5 Some technical information</a><br/>
+<a href="section-15.4.xhtml">15.4 Interactive Front-end and Language</a><br/>
+<a href="section-15.5.xhtml">15.5 Library</a><br/>
+<a href="section-15.6.xhtml">15.6 HyperTex</a><br/>
+<a href="section-15.7.xhtml">15.7 Documentation</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-16.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-16.xhtml
new file mode 100644
index 0000000..57c023c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-16.xhtml
@@ -0,0 +1,50 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter16</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 16: Axiom System Commands</h3>
+<a href="section-16.0.xhtml">16.0 Axiom System Commands</a><br/>
+<a href="section-16.1.xhtml">16.1 Introduction</a><br/>
+<a href="section-16.2.xhtml">16.2 )abbreviation</a><br/>
+<a href="section-16.3.xhtml">16.3 )boot</a><br/>
+<a href="section-16.4.xhtml">16.4 )cd</a><br/>
+<a href="section-16.5.xhtml">16.5 )close</a><br/>
+<a href="section-16.6.xhtml">16.6 )clear</a><br/>
+<a href="section-16.7.xhtml">16.7 )compile</a><br/>
+<a href="section-16.8.xhtml">16.8 )display</a><br/>
+<a href="section-16.9.xhtml">16.9 )edit</a><br/>
+<a href="section-16.10.xhtml">16.10 )fin</a><br/>
+<a href="section-16.11.xhtml">16.11 )frame</a><br/>
+<a href="section-16.12.xhtml">16.12 )help</a><br/>
+<a href="section-16.13.xhtml">16.13 )history</a><br/>
+<a href="section-16.14.xhtml">16.14 )library</a><br/>
+<a href="section-16.15.xhtml">16.15 )lisp</a><br/>
+<a href="section-16.16.xhtml">16.16 )load</a><br/>
+<a href="section-16.17.xhtml">16.17 )trace</a><br/>
+<a href="section-16.18.xhtml">16.18 )pquit</a><br/>
+<a href="section-16.19.xhtml">16.19 )quit</a><br/>
+<a href="section-16.20.xhtml">16.20 )read</a><br/>
+<a href="section-16.21.xhtml">16.21 )set</a><br/>
+<a href="section-16.22.xhtml">16.22 )show</a><br/>
+<a href="section-16.23.xhtml">16.23 )spool</a><br/>
+<a href="section-16.24.xhtml">16.24 )synonym</a><br/>
+<a href="section-16.25.xhtml">16.25 )system</a><br/>
+<a href="section-16.26.xhtml">16.26 )trace</a><br/>
+<a href="section-16.27.xhtml">16.27 )undo</a><br/>
+<a href="section-16.28.xhtml">16.28 )what</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-17.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-17.xhtml
new file mode 100644
index 0000000..ffc5a81
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-17.xhtml
@@ -0,0 +1,22 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter17</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 17: Categories</h3>
+<a href="section-17.1.xhtml">17.1 Axiom Categories</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-18.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-18.xhtml
new file mode 100644
index 0000000..7c20d05
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-18.xhtml
@@ -0,0 +1,22 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter18</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 18: Domains</h3>
+<a href="section-18.1.xhtml">18.1 Axiom Domains</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-19.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-19.xhtml
new file mode 100644
index 0000000..cea3f61
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-19.xhtml
@@ -0,0 +1,22 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter19</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 19: Packages</h3>
+<a href="section-19.1.xhtml">19.1 Axiom Packages</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-2.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-2.xhtml
new file mode 100644
index 0000000..9d42665
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-2.xhtml
@@ -0,0 +1,42 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 2: Using Types and Modes</h3>
+<a href="section-2.0.xhtml">2.0 Using Types and Modes</a><br/>
+<a href="section-2.1.xhtml">2.1 The Basic Idea</a><br/>
+<a href="section-2.1.xhtml#subsec-2.1.1" class="subseccontents">2.1.1 Domain Constructors</a><br/>
+<a href="section-2.2.xhtml">2.2 Writing Types and Modes</a><br/>
+<a href="section-2.2.xhtml#subsec-2.2.1" class="subseccontents">2.2.1 Types with No Arguments</a><br/>
+<a href="section-2.2.xhtml#subsec-2.2.2" class="subseccontents">2.2.2 Types with One Argument</a><br/>
+<a href="section-2.2.xhtml#subsec-2.2.3" class="subseccontents">2.2.3 Types with More Than One Argument</a><br/>
+<a href="section-2.2.xhtml#subsec-2.2.4" class="subseccontents">2.2.4 Modes</a><br/>
+<a href="section-2.2.xhtml#subsec-2.2.5" class="subseccontents">2.2.5 Abbreviations</a><br/>
+<a href="section-2.3.xhtml">2.3 Declarations</a><br/>
+<a href="section-2.4.xhtml">2.4 Records</a><br/>
+<a href="section-2.5.xhtml">2.5 Unions</a><br/>
+<a href="section-2.5.xhtml#subsec-2.5.1" class="subseccontents">2.5.1 Unions Without Selectors</a><br/>
+<a href="section-2.5.xhtml#subsec-2.5.2" class="subseccontents">2.5.2 Unions With Selectors</a><br/>
+<a href="section-2.6.xhtml">2.6 The ``Any'' Domain</a><br/>
+<a href="section-2.7.xhtml">2.7 Conversion</a><br/>
+<a href="section-2.8.xhtml">2.8 Subdomains Again</a><br/>
+<a href="section-2.9.xhtml">2.9 Package Calling and Target Types</a><br/>
+<a href="section-2.10.xhtml">2.10 Resolving Types</a><br/>
+<a href="section-2.11.xhtml">2.11 Exposing Domains and Packages</a><br/>
+<a href="section-2.12.xhtml">2.12 Commands for Snooping</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-21.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-21.xhtml
new file mode 100644
index 0000000..f031bb3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-21.xhtml
@@ -0,0 +1,36 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter21</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 21: Programs for AXIOM Images</h3>
+<a href="section-21.0.xhtml">21.0 Programs for AXIOM Images</a><br/>
+<a href="section-21.1.xhtml">21.1 images1.input</a><br/>
+<a href="section-21.2.xhtml">21.2 images2.input</a><br/>
+<a href="section-21.3.xhtml">21.3 images3.input</a><br/>
+<a href="section-21.4.xhtml">21.4 images5.input</a><br/>
+<a href="section-21.5.xhtml">21.5 images6.input</a><br/>
+<a href="section-21.6.xhtml">21.6 images7.input</a><br/>
+<a href="section-21.7.xhtml">21.7 images8.input</a><br/>
+<a href="section-21.8.xhtml">21.8 conformal.input</a><br/>
+<a href="section-21.9.xhtml">21.9 tknot.input</a><br/>
+<a href="section-21.10.xhtml">21.10 ntube.input</a><br/>
+<a href="section-21.11.xhtml">21.11 dhtri.input</a><br/>
+<a href="section-21.12.xhtml">21.12 tetra.input</a><br/>
+<a href="section-21.13.xhtml">21.13 antoine.input</a><br/>
+<a href="section-21.14.xhtml">21.14 scherk.input</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-3.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-3.xhtml
new file mode 100644
index 0000000..69cec58
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-3.xhtml
@@ -0,0 +1,31 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 3: Using HyperDoc</h3>
+<a href="section-3.0.xhtml">3.0 Using HyperDoc</a><br/>
+<a href="section-3.1.xhtml">3.1 Headings</a><br/>
+<a href="section-3.2.xhtml">3.2 Key Definitions</a><br/>
+<a href="section-3.3.xhtml">3.3 Scroll Bars</a><br/>
+<a href="section-3.4.xhtml">3.4 Input Areas</a><br/>
+<a href="section-3.5.xhtml">3.5 Radio Buttons and Toggles</a><br/>
+<a href="section-3.6.xhtml">3.6 Search Strings</a><br/>
+<a href="section-3.6.xhtml#subsec-3.6.1" class="subseccontents">3.6.1 Logical Searches</a><br/>
+<a href="section-3.7.xhtml">3.7 Example Pages</a><br/>
+<a href="section-3.8.xhtml">3.8 X Window Resources for HyperDoc</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-4.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-4.xhtml
new file mode 100644
index 0000000..1c458fc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-4.xhtml
@@ -0,0 +1,29 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 4: Input Files and Output Styles</h3>
+<a href="section-4.0.xhtml">4.0 Input Files and Output Styles</a><br/>
+<a href="section-4.1.xhtml">4.1 Input Files</a><br/>
+<a href="section-4.2.xhtml">4.2 The .axiom.input File</a><br/>
+<a href="section-4.3.xhtml">4.3 Common Features of Using Output Formats</a><br/>
+<a href="section-4.4.xhtml">4.4 Monospace Two-Dimensional Mathematical Format</a><br/>
+<a href="section-4.5.xhtml">4.5 TeX Format</a><br/>
+<a href="section-4.6.xhtml">4.6 IBM Script Formula Format</a><br/>
+<a href="section-4.7.xhtml">4.7 FORTRAN Format</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-5.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-5.xhtml
new file mode 100644
index 0000000..1ba5e56
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-5.xhtml
@@ -0,0 +1,43 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 5: Overview of Interactive Language</h3>
+<a href="section-5.0.xhtml">5.0 Interactive Language</a><br/>
+<a href="section-5.1.xhtml">5.1 Immediate and Delayed Assignments</a><br/>
+<a href="section-5.2.xhtml">5.2 Blocks</a><br/>
+<a href="section-5.3.xhtml">5.3 if-then-else</a><br/>
+<a href="section-5.4.xhtml">5.4 Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.1" class="subseccontents">5.4.1 Compiling vs. Interpreting Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.2" class="subseccontents">5.4.2 return in Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.3" class="subseccontents">5.4.3 break in Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.4" class="subseccontents">5.4.4 break vs. <span class="teletype">=></span> in Loop Bodies</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.5" class="subseccontents">5.4.5 More Examples of break</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.6" class="subseccontents">5.4.6 iterate in Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.7" class="subseccontents">5.4.7 while Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.8" class="subseccontents">5.4.8 for Loops</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.9" class="subseccontents">5.4.9 for i in n..m repeat</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.10" class="subseccontents">5.4.10 for i in n..m by s repeat</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.11" class="subseccontents">5.4.11 for i in n.. repeat</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.12" class="subseccontents">5.4.12 for x in l repeat</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.13" class="subseccontents">5.4.13 ``Such that'' Predicates</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.14" class="subseccontents">5.4.14 Parallel Iteration</a><br/>
+<a href="section-5.4.xhtml#subsec-5.4.15" class="subseccontents">5.4.15 Mixing Loop Modifiers</a><br/>
+<a href="section-5.5.xhtml">5.5 Creating Lists and Streams with Iterators</a><br/>
+<a href="section-5.6.xhtml">5.6 An Example: Streams of Primes</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-6.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-6.xhtml
new file mode 100644
index 0000000..7b15b1f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-6.xhtml
@@ -0,0 +1,48 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 6: User-Defined Functions, Macros and Rules</h3>
+<a href="section-6.0.xhtml">6.0 Functions, Macros and Rules</a><br/>
+<a href="section-6.1.xhtml">6.1 Functions vs. Macros</a><br/>
+<a href="section-6.2.xhtml">6.2 Macros</a><br/>
+<a href="section-6.3.xhtml">6.3 Introduction to Functions</a><br/>
+<a href="section-6.4.xhtml">6.4 Declaring the Type of Functions</a><br/>
+<a href="section-6.5.xhtml">6.5 One-Line Functions</a><br/>
+<a href="section-6.6.xhtml">6.6 Declared vs. Undeclared Functions</a><br/>
+<a href="section-6.7.xhtml">6.7 Functions vs. Operations</a><br/>
+<a href="section-6.8.xhtml">6.8 Delayed Assignments vs. Functions with No Arguments</a><br/>
+<a href="section-6.9.xhtml">6.9 How Axiom Determines What Function to Use</a><br/>
+<a href="section-6.10.xhtml">6.10 Compiling vs. Interpreting</a><br/>
+<a href="section-6.11.xhtml">6.11 Piece-Wise Function Definitions</a><br/>
+<a href="section-6.11.xhtml#subsec-6.11.1" class="subseccontents">6.11.1 A Basic Example</a><br/>
+<a href="section-6.11.xhtml#subsec-6.11.2" class="subseccontents">6.11.2 Picking Up the Pieces</a><br/>
+<a href="section-6.11.xhtml#subsec-6.11.3" class="subseccontents">6.11.3 Predicates</a><br/>
+<a href="section-6.12.xhtml">6.12 Caching Previously Computed Results</a><br/>
+<a href="section-6.13.xhtml">6.13 Recurrence Relations</a><br/>
+<a href="section-6.14.xhtml">6.14 Making Functions from Objects</a><br/>
+<a href="section-6.15.xhtml">6.15 Functions Defined with Blocks</a><br/>
+<a href="section-6.16.xhtml">6.16 Free and Local Variables</a><br/>
+<a href="section-6.17.xhtml">6.17 Anonymous Functions</a><br/>
+<a href="section-6.17.xhtml#subsec-6.17.1" class="subseccontents">6.17.1 Some Examples</a><br/>
+<a href="section-6.17.xhtml#subsec-6.17.2" class="subseccontents">6.17.2 Declaring Anonymous Functions</a><br/>
+<a href="section-6.18.xhtml">6.18 Example: A Database</a><br/>
+<a href="section-6.19.xhtml">6.19 Example: A Famous Triangle</a><br/>
+<a href="section-6.20.xhtml">6.20 Example: Testing for Palindromes</a><br/>
+<a href="section-6.21.xhtml">6.21 Rules and Pattern Matching</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-7.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-7.xhtml
new file mode 100644
index 0000000..2e4cce6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-7.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 7: Graphics</h3>
+<a href="section-7.0.xhtml">7.0 Graphics</a><br/>
+<a href="section-7.1.xhtml">7.1 Two-Dimensional Graphics</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.1" class="subseccontents">7.1.1 Plotting Two-Dimensional Functions of One Variable</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.2" class="subseccontents">7.1.2 Plotting Two-Dimensional Parametric Plane Curves</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.3" class="subseccontents">7.1.3 Plotting Plane Algebraic Curves</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.4" class="subseccontents">7.1.4 Two-Dimensional Options</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.5" class="subseccontents">7.1.5 Color</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.6" class="subseccontents">7.1.6 Palette</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.7" class="subseccontents">7.1.7 Two-Dimensional Control-Panel</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.7.1" class="subsubseccontents">7.1.7.1 Transformations</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.7.2" class="subsubseccontents">7.1.7.2 Messages</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.7.3" class="subsubseccontents">7.1.7.3 Multiple Graphs</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.7.4" class="subsubseccontents">7.1.7.4 Buttons</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.8" class="subseccontents">7.1.8 Operations for Two-Dimensional Graphics</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.9" class="subseccontents">7.1.9 Addendum: Building Two-Dimensional Graphs</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.9.1" class="subsubseccontents">7.1.9.1 Creating a Two-Dimensional Viewport from a List of Points</a><br/>
+<a href="section-7.1.xhtml#subsubsec-7.1.9.2" class="subsubseccontents">7.1.9.2 Creating a Two-Dimensional Viewport of a List of Points from a File</a><br/>
+<a href="section-7.1.xhtml#subsec-7.1.10" class="subseccontents">7.1.10 Addendum: Appending a Graph to a Viewport Window Containing a Graph</a><br/>
+<a href="section-7.2.xhtml">7.2 Three-Dimensional Graphics</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.1" class="subseccontents">7.2.1 Plotting Three-Dimensional Functions of Two Variables</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.2" class="subseccontents">7.2.2 Plotting Three-Dimensional Parametric Space Curves</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.3" class="subseccontents">7.2.3 Plotting Three-Dimensional Parametric Surfaces</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.4" class="subseccontents">7.2.4 Three-Dimensional Options</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.5" class="subseccontents">7.2.5 The makeObject Command</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.6" class="subseccontents">7.2.6 Building Three-Dimensional Objects From Primitives</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.6.1" class="subsubseccontents">7.2.6.1 Cube Example</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.7" class="subseccontents">7.2.7 Coordinate System Transformations</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.8" class="subseccontents">7.2.8 Three-Dimensional Clipping</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.9" class="subseccontents">7.2.9 Three-Dimensional Control-Panel</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.1" class="subsubseccontents">7.2.9.1 Transformations</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.2" class="subsubseccontents">7.2.9.2 Messages</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.3" class="subsubseccontents">7.2.9.3 Colormap</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.4" class="subsubseccontents">7.2.9.4 Buttons</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.5" class="subsubseccontents">7.2.9.5 Light</a><br/>
+<a href="section-7.2.xhtml#subsubsec-7.2.9.6" class="subsubseccontents">7.2.9.6 View Volume</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.10" class="subseccontents">7.2.10 Operations for Three-Dimensional Graphics</a><br/>
+<a href="section-7.2.xhtml#subsec-7.2.11" class="subseccontents">7.2.11 Customization using .Xdefaults</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-8.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-8.xhtml
new file mode 100644
index 0000000..3a29a5a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-8.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 8: Advanced Problem Solving</h3>
+<a href="section-8.0.xhtml">8.0 Advanced Problem Solving</a><br/>
+<a href="section-8.1.xhtml">8.1 Numeric Functions</a><br/>
+<a href="section-8.2.xhtml">8.2 Polynomial Factorization</a><br/>
+<a href="section-8.2.xhtml#subsec-8.2.1" class="subseccontents">8.2.1 Integer and Rational Number Coefficients</a><br/>
+<a href="section-8.2.xhtml#subsec-8.2.2" class="subseccontents">8.2.2 Finite Field Coefficients</a><br/>
+<a href="section-8.2.xhtml#subsec-8.2.3" class="subseccontents">8.2.3 Simple Algebraic Extension Field Coefficients</a><br/>
+<a href="section-8.2.xhtml#subsec-8.2.4" class="subseccontents">8.2.4 Factoring Rational Functions</a><br/>
+<a href="section-8.3.xhtml">8.3 Manipulating Symbolic Roots of a Polynomial</a><br/>
+<a href="section-8.3.xhtml#subsec-8.3.1" class="subseccontents">8.3.1 Using a Single Root of a Polynomial</a><br/>
+<a href="section-8.3.xhtml#subsec-8.3.2" class="subseccontents">8.3.2 Using All Roots of a Polynomial</a><br/>
+<a href="section-8.4.xhtml">8.4 Computation of Eigenvalues and Eigenvectors</a><br/>
+<a href="section-8.5.xhtml">8.5 Solution of Linear and Polynomial Equations</a><br/>
+<a href="section-8.5.xhtml#subsec-8.5.1" class="subseccontents">8.5.1 Solution of Systems of Linear Equations</a><br/>
+<a href="section-8.5.xhtml#subsec-8.5.2" class="subseccontents">8.5.2 Solution of a Single Polynomial Equation</a><br/>
+<a href="section-8.5.xhtml#subsec-8.5.3" class="subseccontents">8.5.3 Solution of Systems of Polynomial Equations</a><br/>
+<a href="section-8.6.xhtml">8.6 Limits</a><br/>
+<a href="section-8.7.xhtml">8.7 Laplace Transforms</a><br/>
+<a href="section-8.8.xhtml">8.8 Integration</a><br/>
+<a href="section-8.9.xhtml">8.9 Working with Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.1" class="subseccontents">8.9.1 Creation of Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.2" class="subseccontents">8.9.2 Coefficients of Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.3" class="subseccontents">8.9.3 Power Series Arithmetic</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.4" class="subseccontents">8.9.4 Functions on Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.5" class="subseccontents">8.9.5 Converting to Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.6" class="subseccontents">8.9.6 Power Series from Formulas</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.7" class="subseccontents">8.9.7 Substituting Numerical Values in Power Series</a><br/>
+<a href="section-8.9.xhtml#subsec-8.9.8" class="subseccontents">8.9.8 Example: Bernoulli Polynomials and Sums of Powers</a><br/>
+<a href="section-8.10.xhtml">8.10 Solution of Differential Equations</a><br/>
+<a href="section-8.10.xhtml#subsec-8.10.1" class="subseccontents">8.10.1 Closed-Form Solutions of Linear Differential Equations</a><br/>
+<a href="section-8.10.xhtml#subsec-8.10.2" class="subseccontents">8.10.2 Closed-Form Solutions of Non-Linear Differential Equations</a><br/>
+<a href="section-8.10.xhtml#subsec-8.10.3" class="subseccontents">8.10.3 Power Series Solutions of Differential Equations</a><br/>
+<a href="section-8.11.xhtml">8.11 Finite Fields</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.1" class="subseccontents">8.11.1 Modular Arithmetic and Prime Fields</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.2" class="subseccontents">8.11.2 Extensions of Finite Fields</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.3" class="subseccontents">8.11.3 Irreducible Modulus Polynomial Representations</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.4" class="subseccontents">8.11.4 Cyclic Group Representations</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.5" class="subseccontents">8.11.5 Normal Basis Representations</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.6" class="subseccontents">8.11.6 Conversion Operations for Finite Fields</a><br/>
+<a href="section-8.11.xhtml#subsec-8.11.7" class="subseccontents">8.11.7 Utility Operations for Finite Fields</a><br/>
+<a href="section-8.12.xhtml">8.12 Primary Decomposition of Ideals</a><br/>
+<a href="section-8.13.xhtml">8.13 Computation of Galois Groups</a><br/>
+<a href="section-8.14.xhtml">8.14 Non-Associative Algebras and Modelling Genetic Laws</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-9.1-12.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.1-12.xhtml
new file mode 100644
index 0000000..d1644a8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.1-12.xhtml
@@ -0,0 +1,46 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter9.1-12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 9.1-12: Some Examples of Domains and Packages</h3>
+<a href="section-9.1.xhtml">9.1 AssociationList</a><br/>
+<a href="section-9.2.xhtml">9.2 BalancedBinaryTree</a><br/>
+<a href="section-9.3.xhtml">9.3 BasicOperator</a><br/>
+<a href="section-9.4.xhtml">9.4 BinaryExpansion</a><br/>
+<a href="section-9.5.xhtml">9.5 BinarySearchTree</a><br/>
+<a href="section-9.6.xhtml">9.6 CardinalNumber</a><br/>
+<a href="section-9.7.xhtml">9.7 CartesianTensor</a><br/>
+<a href="section-9.7.xhtml#subsec-7.1" class="subseccontents">7.1 Forming tensors</a><br/>
+<a href="section-9.7.xhtml#subsec-7.2" class="subseccontents">7.2 Multiplication</a><br/>
+<a href="section-9.7.xhtml#subsec-7.3" class="subseccontents">7.3 Selecting Components</a><br/>
+<a href="section-9.7.xhtml#subsec-7.4" class="subseccontents">7.4 Contraction</a><br/>
+<a href="section-9.7.xhtml#subsec-7.5" class="subseccontents">7.5 Transpositions</a><br/>
+<a href="section-9.7.xhtml#subsec-7.6" class="subseccontents">7.6 Arithmetic</a><br/>
+<a href="section-9.7.xhtml#subsec-7.7" class="subseccontents">7.7 Specific Tensors</a><br/>
+<a href="section-9.7.xhtml#subsec-7.8" class="subseccontents">7.8 Properties of the CartesianTensor domain</a><br/>
+<a href="section-9.7.xhtml#subsec-7.9" class="subseccontents">7.9 Tensor Calculus</a><br/>
+<a href="section-9.8.xhtml">9.8 Character</a><br/>
+<a href="section-9.9.xhtml">9.9 CharacterClass</a><br/>
+<a href="section-9.10.xhtml">9.10 CliffordAlgebra</a><br/>
+<a href="section-9.10.xhtml#subsec-9.10.1" class="subseccontents">9.10.1 The Complex Numbers as a Clifford Algebra</a><br/>
+<a href="section-9.10.xhtml#subsec-9.10.2" class="subseccontents">9.10.2 The Quaternion Numbers as a Clifford Algebra</a><br/>
+<a href="section-9.10.xhtml#subsec-9.10.3" class="subseccontents">9.10.3 The Exterior Algebra on a Three Space</a><br/>
+<a href="section-9.10.xhtml#subsec-9.10.4" class="subseccontents">9.10.4 The Dirac Spin Algebra</a><br/>
+<a href="section-9.11.xhtml">9.11 Complex</a><br/>
+<a href="section-9.12.xhtml">9.12 ContinuedFraction</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-9.13-26.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.13-26.xhtml
new file mode 100644
index 0000000..0c4bf55
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.13-26.xhtml
@@ -0,0 +1,40 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter9.13-26</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 9.13-26: Some Examples of Domains and Packages</h3>
+<a href="section-9.13.xhtml">9.13 CycleIndicators</a><br/>
+<a href="section-9.14.xhtml">9.14 DeRhamComplex</a><br/>
+<a href="section-9.15.xhtml">9.15 DecimalExpansion</a><br/>
+<a href="section-9.16.xhtml">9.16 DistributedMultivariatePolynomial</a><br/>
+<a href="section-9.17.xhtml">9.17 DoubleFloat</a><br/>
+<a href="section-9.18.xhtml">9.18 EqTable</a><br/>
+<a href="section-9.19.xhtml">9.19 Equation</a><br/>
+<a href="section-9.20.xhtml">9.20 Exit</a><br/>
+<a href="section-9.21.xhtml">9.21 Expression</a><br/>
+<a href="section-9.22.xhtml">9.22 Factored</a><br/>
+<a href="section-9.22.xhtml#subsec-9.22.1" class="subseccontents">9.22.1 Decomposing Factored Objects</a><br/>
+<a href="section-9.22.xhtml#subsec-9.22.2" class="subseccontents">9.22.2 Expanding Factored Objects</a><br/>
+<a href="section-9.22.xhtml#subsec-9.22.3" class="subseccontents">9.22.3 Arithmetic with Factored Objects</a><br/>
+<a href="section-9.22.xhtml#subsec-9.22.4" class="subseccontents">9.22.4 Creating New Factored Objects</a><br/>
+<a href="section-9.22.xhtml#subsec-9.22.5" class="subseccontents">9.22.5 Factored Objects with Variables</a><br/>
+<a href="section-9.23.xhtml">9.23 FactoredFunctions2</a><br/>
+<a href="section-9.24.xhtml">9.24 File</a><br/>
+<a href="section-9.25.xhtml">9.25 FileName</a><br/>
+<a href="section-9.26.xhtml">9.26 FlexibleArray</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-9.27-37.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.27-37.xhtml
new file mode 100644
index 0000000..02f9932
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.27-37.xhtml
@@ -0,0 +1,39 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter9.27-37</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 9.27-37: Some Examples of Domains and Packages</h3>
+<a href="section-9.27.xhtml">9.27 Float</a><br/>
+<a href="section-9.27.xhtml#subsec-9.27.1" class="subseccontents">9.27.1 Introduction to Float</a><br/>
+<a href="section-9.27.xhtml#subsec-9.27.2" class="subseccontents">9.27.2 Conversion Functions</a><br/>
+<a href="section-9.27.xhtml#subsec-9.27.3" class="subseccontents">9.27.3 Output Functions</a><br/>
+<a href="section-9.27.xhtml#subsec-9.27.4" class="subseccontents">9.27.4 An Example: Determinant of a Hilbert Matrix</a><br/>
+<a href="section-9.28.xhtml">9.28 Fraction</a><br/>
+<a href="section-9.29.xhtml">9.29 FullPartialFractionExpansion</a><br/>
+<a href="section-9.30.xhtml">9.30 GeneralSparseTable</a><br/>
+<a href="section-9.31.xhtml">9.31 GroebnerFactorizationPackage</a><br/>
+<a href="section-9.32.xhtml">9.32 Heap</a><br/>
+<a href="section-9.33.xhtml">9.33 HexadecimalExpansion</a><br/>
+<a href="section-9.34.xhtml">9.34 Integer</a><br/>
+<a href="section-9.34.xhtml#subsec-9.34.1" class="subseccontents">9.34.1 Basic Functions</a><br/>
+<a href="section-9.34.xhtml#subsec-9.34.2" class="subseccontents">9.34.2 Primes and Factorization</a><br/>
+<a href="section-9.34.xhtml#subsec-9.34.3" class="subseccontents">9.34.3 Some Number Theoretic Functions</a><br/>
+<a href="section-9.35.xhtml">9.35 IntegerLinearDependence</a><br/>
+<a href="section-9.36.xhtml">9.36 IntegerNumberTheoryFunctions</a><br/>
+<a href="section-9.37.xhtml">9.37 Kernel</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-9.38-44.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.38-44.xhtml
new file mode 100644
index 0000000..529ec21
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.38-44.xhtml
@@ -0,0 +1,29 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter9.38-44</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 9.38-44: Some Examples of Domains and Packages</h3>
+<a href="section-9.38.xhtml">9.38 KeyedAccessFile</a><br/>
+<a href="section-9.39.xhtml">9.39 LexTriangularPackage</a><br/>
+<a href="section-9.40.xhtml">9.40 LazardSetSolvingPackage</a><br/>
+<a href="section-9.41.xhtml">9.41 Library</a><br/>
+<a href="section-9.42.xhtml">9.42 LieExponentials</a><br/>
+<a href="section-9.43.xhtml">9.43 LiePolynomial</a><br/>
+<a href="section-9.44.xhtml">9.44 LinearOrdinaryDifferentialOperator</a><br/>
+<a href="section-9.44.xhtml#subsec-9.44.1" class="subseccontents">9.44.1 Differential Operators with Series Coefficients</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-9.45-57.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.45-57.xhtml
new file mode 100644
index 0000000..26ff60c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.45-57.xhtml
@@ -0,0 +1,44 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter9.45-57</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 9.45-57: Some Examples of Domains and Packages</h3>
+<a href="section-9.45.xhtml">9.45 LinearOrdinaryDifferentialOperator1</a><br/>
+<a href="section-9.45.xhtml#subsec-9.45.1" class="subseccontents">9.45.1 Differential Operators with Rational Function Coefficients</a><br/>
+<a href="section-9.46.xhtml">9.46 LinearOrdinaryDifferentialOperator2</a><br/>
+<a href="section-9.46.xhtml#subsec-9.46.1" class="subseccontents">9.46.1 Differential Operators with Constant Coefficients</a><br/>
+<a href="section-9.46.xhtml#subsec-9.46.2" class="subseccontents">9.46.2 Differential Operators with Matrix Coefficients Operating on Vectors</a><br/>
+<a href="section-9.47.xhtml">9.47 List</a><br/>
+<a href="section-9.47.xhtml#subsec-9.47.1" class="subseccontents">9.47.1 Creating Lists</a><br/>
+<a href="section-9.47.xhtml#subsec-9.47.2" class="subseccontents">9.47.2 Accessing List Elements</a><br/>
+<a href="section-9.47.xhtml#subsec-9.47.3" class="subseccontents">9.47.3 Changing List Elements</a><br/>
+<a href="section-9.47.xhtml#subsec-9.47.4" class="subseccontents">9.47.4 Other Functions</a><br/>
+<a href="section-9.47.xhtml#subsec-9.47.5" class="subseccontents">9.47.5 Dot, Dot</a><br/>
+<a href="section-9.48.xhtml">9.48 LyndonWord</a><br/>
+<a href="section-9.49.xhtml">9.49 Magma</a><br/>
+<a href="section-9.50.xhtml">9.50 MakeFunction</a><br/>
+<a href="section-9.51.xhtml">9.51 MappingPackage1</a><br/>
+<a href="section-9.52.xhtml">9.52 Matrix</a><br/>
+<a href="section-9.52.xhtml#subsec-9.52.1" class="subseccontents">9.52.1 Creating Matrices</a><br/>
+<a href="section-9.52.xhtml#subsec-9.52.2" class="subseccontents">9.52.2 Operations on Matrices</a><br/>
+<a href="section-9.53.xhtml">9.53 MultiSet</a><br/>
+<a href="section-9.54.xhtml">9.54 MultivariatePolynomial</a><br/>
+<a href="section-9.55.xhtml">9.55 None</a><br/>
+<a href="section-9.56.xhtml">9.56 Octonion</a><br/>
+<a href="section-9.57.xhtml">9.57 OneDimensionalArray</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-9.58-68.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.58-68.xhtml
new file mode 100644
index 0000000..3f1432e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.58-68.xhtml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter9.58-68</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 9.58-68: Some Examples of Domains and Packages</h3>
+<a href="section-9.58.xhtml">9.58 Operator</a><br/>
+<a href="section-9.59.xhtml">9.59 OrderedVariableList</a><br/>
+<a href="section-9.60.xhtml">9.60 OrderlyDifferentialPolynomial</a><br/>
+<a href="section-9.61.xhtml">9.61 PartialFraction</a><br/>
+<a href="section-9.62.xhtml">9.62 Permanent</a><br/>
+<a href="section-9.63.xhtml">9.63 Polynomial</a><br/>
+<a href="section-9.64.xhtml">9.64 Quaternion</a><br/>
+<a href="section-9.65.xhtml">9.65 RadixExpansion</a><br/>
+<a href="section-9.66.xhtml">9.66 RealClosure</a><br/>
+<a href="section-9.67.xhtml">9.67 RegularTriangularSet</a><br/>
+<a href="section-9.68.xhtml">9.68 RomanNumeral</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-9.69-82.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.69-82.xhtml
new file mode 100644
index 0000000..98915bc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.69-82.xhtml
@@ -0,0 +1,35 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter9.69-82</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 9.69-82: Some Examples of Domains and Packages</h3>
+<a href="section-9.69.xhtml">9.69 Segment</a><br/>
+<a href="section-9.70.xhtml">9.70 SegmentBinding</a><br/>
+<a href="section-9.71.xhtml">9.71 Set</a><br/>
+<a href="section-9.72.xhtml">9.72 SingleInteger</a><br/>
+<a href="section-9.73.xhtml">9.73 SparseTable</a><br/>
+<a href="section-9.74.xhtml">9.74 SquareMatrix</a><br/>
+<a href="section-9.75.xhtml">9.75 SquareFreeRegularTriangularSet</a><br/>
+<a href="section-9.76.xhtml">9.76 Stream</a><br/>
+<a href="section-9.77.xhtml">9.77 String</a><br/>
+<a href="section-9.78.xhtml">9.78 StringTable</a><br/>
+<a href="section-9.79.xhtml">9.79 Symbol</a><br/>
+<a href="section-9.80.xhtml">9.80 Table</a><br/>
+<a href="section-9.81.xhtml">9.81 TextFile</a><br/>
+<a href="section-9.82.xhtml">9.82 TwoDimensionalArray</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/chapter-contents-9.83-91.xhtml b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.83-91.xhtml
new file mode 100644
index 0000000..f1cfca8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/chapter-contents-9.83-91.xhtml
@@ -0,0 +1,30 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Chapter9.83-91</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<h3>Chapter 9.83-91: Some Examples of Domains and Packages</h3>
+<a href="section-9.83.xhtml">9.83 UnivariatePolynomial</a><br/>
+<a href="section-9.84.xhtml">9.84 UniversalSegment</a><br/>
+<a href="section-9.85.xhtml">9.85 Vector</a><br/>
+<a href="section-9.86.xhtml">9.86 Void</a><br/>
+<a href="section-9.87.xhtml">9.87 WuWenTsunTriangularSet</a><br/>
+<a href="section-9.88.xhtml">9.88 XPBWPolynomial</a><br/>
+<a href="section-9.89.xhtml">9.89 XPolynomial</a><br/>
+<a href="section-9.90.xhtml">9.90 XPolynomialRing</a><br/>
+<a href="section-9.91.xhtml">9.91 ZeroDimensionalSolvePackage</a><br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/graphicstyle.css b/src/axiom-website/hyperdoc/axbook/graphicstyle.css
new file mode 100644
index 0000000..c682243
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/graphicstyle.css
@@ -0,0 +1,114 @@
+body { background-color: #FFFF66 }
+html {
+       background-color: #FFFF66;
+     }
+div.spadcommand, div.spadgraph 
+      {
+                              display: block;
+                              font-size: large;
+			      color: black;
+			      padding: 5pt 10pt;
+			      border: inset 1pt;
+			      border-color: silver;
+                              margin-top: 1em;
+			      margin-bottom: 1em;
+}
+form { display: inline;}
+input.command {
+                              display: inline;
+                              font-size: 12pt;
+			      padding: 5pt 10pt;
+			      border: inset 1pt;
+			      border-color: silver;
+                              margin-top: 1em;
+			      margin-bottom: 1em;
+}
+input.restore {
+                              display: inline;
+			      margin-bottom: 1em;
+}
+div.axerror {text-align: center; font-family: monospace; font-size: 12pt;}
+div.mathbox {border: solid; border: outset 1pt; border-color: silver; 
+	     padding: 2pt;}
+div.boxed {
+	       text-align: left;
+}
+div.boxed2 {
+               display: block;
+               padding: 2em;
+               border: solid 2pt;
+	       width: 60%;
+	       text-align: center;
+	       margin-top: 1em;
+	       margin-left: auto; margin-right: auto;
+}
+div.center  {
+              padding-top: 10px; padding-bottom: 10px;
+            }
+div.returnType {
+                      margin-top: 1em;
+		      margin-bottom: 1em;
+		      text-align: center;
+}
+div.quote { border: solid 1pt; margin-left: 10%; margin-right: 10%; 
+            padding: 1em;
+}
+div.quotation {text-align: left; margin-left: 15%; margin-right: 15%;}
+div.person {margin-top: 1em;}
+div.item {margin-top: 1em;}
+div.centerline {text-align: center; margin-top: 1em; margin-bottom: 1em;}
+div.image {text-align: center;}
+div.figcaption  {text-align: center;}
+span.index {
+                 visibility: hidden;
+}
+span.commSav {visibility: hidden;}
+dt {
+          font-weight: bold;
+          padding: 1em;
+         }
+span.index {
+                  display: none;
+}
+span.funArgs {font-style: italic; font-weight: normal;}
+span.argDef {font-weight: bold;}
+span.hspace75pc {margin-left: 1em;}
+span.hspace200pc {margin-left: 2em;}
+span.hspace300pc {margin-left: 3em;}
+span.hspace600pc {margin-left: 6em;}
+span.teletype {font-family: monospace; font-size: 12pt;}
+span.aliascon {font-family: monospace; font-size: 12pt;}
+span.italic {font-style: italic;}
+span.slant {font-style: italic;}
+span.bold {font-weight: bold;}
+span.em {font-weight: bold;}
+span.spadfunFrom {font-weight: bold;}
+span.spadopFrom {font-weight: bold;}
+table.begintabular {
+                margin-top: 1em; 
+		text-align: left;         
+}
+table.begintabular td {padding-left: 1em; vertical-align: top;}
+table.image  {padding-left: 100px;}
+span.verbatim {
+                     padding: 0em 0em 0em 2em;
+}
+div.verbatim {
+                padding: 0em 0em 0em 2em; margin-bottom: 1em;
+		font-family: monospace; font-size: 10pt;
+}
+div.math { text-align: center; padding: 20pt;}
+div.math math {
+                   border: none;
+		   padding: 0em 0em;
+		   margin-top: 0pt;
+}
+div.math table tr td { }
+div.math table {margin-left: auto; margin-right: auto; }
+div#verbatimtable2 td {padding-left: 1em; padding-right: 1em;}
+div#verbatimtable1 td {padding-left: 1em; padding-right: 1em;}
+div#verbatimtable3 td {padding-left: 1em; padding-right: 1em;}
+table.category-domain-package tr td:first-child {color: blue;
+               vertical-align: top;}
+a.subseccontents {padding-left: 2em;}
+a.subsubseccontents {padding-left: 4em;}
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/graphicstyle.diff b/src/axiom-website/hyperdoc/axbook/graphicstyle.diff
new file mode 100644
index 0000000..256dc8e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/graphicstyle.diff
@@ -0,0 +1,7 @@
+--- /tmp/axbook/graphicstyle.css	2007-10-08 16:32:42.000000000 -0400
++++ graphicstyle.css	2007-10-03 17:09:41.000000000 -0400
+@@ -1,3 +1,4 @@
++body { background-color: #FFFF66 }
+ div.spadcommand, div.spadgraph 
+       {
+                               display: block;
diff --git a/src/axiom-website/hyperdoc/axbook/hrefs.txt b/src/axiom-website/hyperdoc/axbook/hrefs.txt
new file mode 100644
index 0000000..37be753
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/hrefs.txt
@@ -0,0 +1,499 @@
+This is a list of all hrefs, i.e. <a href="..., in all sections
+excluding the navigation ones at the start and end of each section.
+So these correspond to the links in the PDF version of the book.
+Some of the links in the book don't work.  These ones appear as
+? in the PDF version.  Following the full list is the list of
+undefined ones. 
+
+<a href="fig-intro-br" class="ref" >fig-intro-br</a> section-0.1.xhtml
+<a href="section-3.0.xhtml#ugHyper" class="ref" >ugHyper</a> section-1.1.xhtml
+<a href="section-2.0.xhtml#ugTypes" class="ref" >ugTypes</a> section-1.3.xhtml
+<a href="section-5.1.xhtml#ugLangAssign" class="ref" >ugLangAssign</a> section-1.3.xhtml
+<a href="section-2.7.xhtml#ugTypesConvert" class="ref" >ugTypesConvert</a> section-1.3.xhtml
+<a href="section-6.2.xhtml#ugUserMacros" class="ref" >ugUserMacros</a> section-1.3.xhtml
+<a href="section-4.1.xhtml#ugInOutIn" class="ref" >ugInOutIn</a> section-1.3.xhtml
+<a href="section-5.2.xhtml#ugLangBlocks" class="ref" >ugLangBlocks</a> section-1.3.xhtml
+<a href="section-8.11.xhtml#ugxProblemFinitePrime" class="ref" >ugxProblemFinitePrime</a> section-1.4.xhtml
+<a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> section-1.5.xhtml
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a> section-1.5.xhtml
+<a href="section-9.26.xhtml#FlexibleArrayXmpPage" class="ref" >FlexibleArrayXmpPage</a> section-1.5.xhtml
+<a href="section-9.32.xhtml#HeapXmpPage" class="ref" >HeapXmpPage</a> section-1.5.xhtml
+<a href="section-9.5.xhtml#BinarySearchTreeXmpPage" class="ref" >BinarySearchTreeXmpPage</a> section-1.5.xhtml
+<a href="section-9.53.xhtml#MultiSetXmpPage" class="ref" >SetXmpPage</a> section-1.5.xhtml
+<a href="section-9.53.xhtml#MultiSetXmpPage" class="ref" >MultiSetXmpPage</a> section-1.5.xhtml
+<a href="section-2.4.xhtml#ugTypesRecords" class="ref" >ugTypesRecords</a> section-1.5.xhtml
+<a href="section-2.5.xhtml#ugTypesUnions" class="ref" >ugTypesUnions</a> section-1.5.xhtml
+<a href="section-13.0.xhtml#ugDomains" class="ref" >ugDomains</a> section-1.5.xhtml
+<a href="section-8.4.xhtml#ugProblemEigen" class="ref" >ugProblemEigen</a> section-1.6.xhtml
+<a href="section-8.5.xhtml#ugProblemLinPolEqn" class="ref" >ugProblemLinPolEqn</a> section-1.6.xhtml
+<a href="section-5.5.xhtml#ugLangIts" class="ref" >ugLangIts</a> section-1.6.xhtml
+<a href="section-6.0.xhtml#ugUser" class="ref" >ugUser</a> section-1.7.xhtml
+<a href="section-4.1.xhtml#ugInOutIn" class="ref" >ugInOutIn</a> section-1.7.xhtml
+<a href="section-8.6.xhtml#ugProblemLimits" class="ref" >ugProblemLimits</a> section-1.9.xhtml
+<a href="section-8.9.xhtml#ugProblemSeries" class="ref" >ugProblemSeries</a> section-1.10.xhtml
+<a href="section-8.8.xhtml#ugProblemIntegration" class="ref" >ugProblemIntegration</a> section-1.12.xhtml
+<a href="section-8.1.xhtml#ugProblemNumeric" class="ref" >ugProblemNumeric</a> section-1.16.xhtml
+<a href="section-21.0.xhtml#ugAppGraphics" class="ref" >ugAppGraphics</a> section-1.16.xhtml
+<a href="section-7.0.xhtml#ugGraph" class="ref" >ugGraph</a> section-1.16.xhtml
+<a href="section-12.0.xhtml#ugCategories" class="ref" >ugCategories</a> section-2.1.xhtml
+<a href="section-2.7.xhtml#ugTypesConvert" class="ref" >ugTypesConvert</a> section-2.1.xhtml
+<a href="section-2.1.xhtml#ugTypesBasic" class="ref" >ugTypesBasic</a> section-2.2.xhtml
+<a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a> section-2.2.xhtml
+<a href="section-2.7.xhtml#ugTypesConvert" class="ref" >ugTypesConvert</a> section-2.2.xhtml
+<a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> section-2.2.xhtml
+<a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> section-2.2.xhtml
+<a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a> section-2.2.xhtml
+<a href="section-2.7.xhtml#ugTypesConvert" class="ref" >ugTypesConvert</a> section-2.2.xhtml
+<a href="ugSysCmdwhat" class="ref" >ugSysCmdwhat</a> section-2.2.xhtml
+<a href="section-1.3.xhtml#ugIntroAssign" class="ref" >ugIntroAssign</a> section-2.3.xhtml
+<a href="section-5.1.xhtml#ugLangAssign" class="ref" >ugLangAssign</a> section-2.3.xhtml
+<a href="section-6.4.xhtml#ugUserDeclare" class="ref" >ugUserDeclare</a> section-2.3.xhtml
+<a href="section-2.7.xhtml#ugTypesConvert" class="ref" >ugTypesConvert</a> section-2.3.xhtml
+<a href="section-2.4.xhtml#ugTypesRecords" class="ref" >ugTypesRecords</a> section-2.5.xhtml
+<a href="section-2.5.xhtml#ugTypesUnionsWOSel" class="ref" >ugTypesUnionsWOSel</a> section-2.5.xhtml
+<a href="section-2.1.xhtml#ugTypesBasic" class="ref" >ugTypesBasic</a> section-2.7.xhtml
+<a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a> section-2.9.xhtml
+<a href="section-6.9.xhtml#ugUserUse" class="ref" >ugUserUse</a> section-2.9.xhtml
+<a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> section-2.11.xhtml
+<a href="section-6.19.xhtml#ugUserTriangle" class="ref" >ugUserTriangle</a> section-2.11.xhtml
+<a href="section-16.11.xhtml#ugSysCmdframe" class="ref" >ugSysCmdframe</a> section-2.11.xhtml
+<a href="section-14.0.xhtml#ugBrowse" class="ref" >ugBrowse</a> section-2.12.xhtml
+<a href="chapter-9.1-12.xhtml#Complex" class="ref" >Complex</a> section-2.12.xhtml
+<a href="section-6.4.xhtml#ugUserDeclare" class="ref" >ugUserDeclare</a> section-2.12.xhtml
+<a href="section-3.3.xhtml#ugHyperScroll" class="ref" >ugHyperScroll</a> section-3.2.xhtml
+<a href="section-3.4.xhtml#ugHyperInput" class="ref" >ugHyperInput</a> section-3.2.xhtml
+<a href="section-3.4.xhtml#ugHyperInput" class="ref" >ugHyperInput</a> section-3.3.xhtml
+<a href="section-5.2.xhtml#ugLangBlocks" class="ref" >ugLangBlocks</a> section-4.1.xhtml
+<a href="section-6.8.xhtml#ugUserDelay" class="ref" >ugUserDelay</a> section-5.1.xhtml
+<a href="section-5.3.xhtml#ugLangIf" class="ref" >ugLangIf</a> section-5.2.xhtml
+<a href="section-2.10.xhtml#ugTypesResolve" class="ref" >ugTypesResolve</a> section-5.3.xhtml
+<a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> section-5.3.xhtml
+<a href="section-6.10.xhtml#ugUserCompInt" class="ref" >ugUserCompInt</a> section-5.4.xhtml
+<a href="section-6.15.xhtml#ugUserBlocks" class="ref" >ugUserBlocks</a> section-5.4.xhtml
+<a href="section-5.4.xhtml#ugLangLoopsReturn" class="ref" >ugLangLoopsReturn</a> section-5.4.xhtml
+<a href="section-5.4.xhtml#ugLangLoopsForIn" class="ref" >ugLangLoopsForIn</a> section-5.4.xhtml
+<a href="section-9.69.xhtml#SegmentXmpPage" class="ref" >SegmentXmpPage</a> section-5.4.xhtml
+<a href="section-5.4.xhtml#ugLangLoopsForInPred" class="ref" >ugLangLoopsForInPred</a> section-5.4.xhtml
+<a href="section-5.4.xhtml#ugLangLoops" class="ref" >ugLangLoops</a> section-5.5.xhtml
+<a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> section-5.5.xhtml
+<a href="section-9.76.xhtml#StreamXmpPage" class="ref" >StreamXmpPage</a> section-5.5.xhtml
+<a href="section-6.17.xhtml#ugUserAnon" class="ref" >ugUserAnon</a> section-6.1.xhtml
+<a href="chapter-9.13-26.xhtml#ExitXmpPage" class="ref" >ExitXmpPage</a> section-6.1.xhtml
+<a href="section-9.86.xhtml#VoidXmpPage" class="ref" >VoidXmpPage</a> section-6.1.xhtml
+<a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> section-6.3.xhtml
+<a href="section-6.17.xhtml#ugUserAnon" class="ref" >ugUserAnon</a> section-6.3.xhtml
+<a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a> section-6.4.xhtml
+<a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a> section-6.4.xhtml
+<a href="section-12.0.xhtml#ugCategories" class="ref" >ugCategories</a> section-6.6.xhtml
+<a href="MappingPackage1XmpPage" class="ref" >MappingPackage1XmpPage</a> section-6.7.xhtml
+<a href="section-11.3.xhtml#ugPackagesAbstract" class="ref" >ugPackagesAbstract</a> section-6.7.xhtml
+<a href="section-11.0.xhtml#ugPackages" class="ref" >ugPackages</a> section-6.7.xhtml
+<a href="section-12.0.xhtml#ugCategories" class="ref" >ugCategories</a> section-6.7.xhtml
+<a href="section-5.1.xhtml#ugLangAssign" class="ref" >ugLangAssign</a> section-6.8.xhtml
+<a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> section-6.9.xhtml
+<a href="section-2.10.xhtml#ugTypesResolve" class="ref" >ugTypesResolve</a> section-6.9.xhtml
+<a href="section-2.8.xhtml#ugTypesSubdomains" class="ref" >ugTypesSubdomains</a> section-6.10.xhtml
+<a href="section-6.11.xhtml#ugUserPieceBasic" class="ref" >ugUserPieceBasic</a> section-6.11.xhtml
+<a href="section-5.5.xhtml#ugLangIts" class="ref" >ugLangIts</a> section-6.11.xhtml
+<a href="section-6.16.xhtml#ugUserFreeLocal" class="ref" >ugUserFreeLocal</a> section-6.12.xhtml
+<a href="section-6.16.xhtml#ugUserFreeLocal" class="ref" >ugUserFreeLocal</a> section-6.13.xhtml
+<a href="section-6.12.xhtml#ugUserCache" class="ref" >ugUserCache</a> section-6.13.xhtml
+<a href="section-9.50.xhtml#MakeFunctionXmpPage" class="ref" >MakeFunctionXmpPage</a> section-6.14.xhtml
+<a href="section-5.2.xhtml#ugLangBlocks" class="ref" >ugLangBlocks</a> section-6.15.xhtml
+<a href="section-6.12.xhtml#ugUserCache" class="ref" >ugUserCache</a> section-6.16.xhtml
+<a href="section-6.13.xhtml#ugUserRecur" class="ref" >ugUserRecur</a> section-6.16.xhtml
+<a href="section-2.11.xhtml#ugTypesExpose" class="ref" >ugTypesExpose</a> section-6.19.xhtml
+<a href="section-7.1.xhtml#ugGraphTwoDOptions" class="ref" >ugGraphTwoDOptions</a> section-7.1.xhtml
+<a href="section-7.2.xhtml#ugGraphThreeDOptions" class="ref" >ugGraphThreeDOptions</a> section-7.1.xhtml
+<a href="section-7.1.xhtml#ugGraphTwoDOptions" class="ref" >ugGraphTwoDOptions</a> section-7.1.xhtml
+<a href="section-7.1.xhtml#ugGraphColor" class="ref" >ugGraphColor</a> section-7.1.xhtml
+<a href="section-7.1.xhtml#ugGraphColorPalette" class="ref" >ugGraphColorPalette</a> section-7.1.xhtml
+<a href="section-7.1.xhtml#ugGraphColor" class="ref" >ugGraphColor</a> section-7.1.xhtml
+<a href="section-7.1.xhtml#ugGraphColorPalette" class="ref" >ugGraphColorPalette</a> section-7.1.xhtml
+<a href="section-7.2.xhtml#ugGraphCoord" class="ref" >ugGraphCoord</a> section-7.1.xhtml
+<a href="section-7.2.xhtml#ugGraphThreeDOptions" class="ref" >ugGraphThreeDOptions</a> section-7.2.xhtml
+<a href="section-7.2.xhtml#ugGraphThreeDOptions" class="ref" >ugGraphThreeDOptions</a> section-7.2.xhtml
+<a href="section-7.2.xhtml#ugGraphThreeDOptions" class="ref" >ugGraphThreeDOptions</a> section-7.2.xhtml
+<a href="section-7.2.xhtml#ugGraphCoord" class="ref" >ugGraphCoord</a> section-7.2.xhtml
+<a href="section-7.2.xhtml#ugGraphCoord" class="ref" >ugGraphCoord</a> section-7.2.xhtml
+<a href="section-1.0.xhtml#ugIntro" class="ref" >ugIntro</a> section-8.1.xhtml
+<a href="section-9.17.xhtml#DoubleFloatXmpPage" class="ref" >FloatXmpPage</a> section-8.1.xhtml
+<a href="section-9.17.xhtml#DoubleFloatXmpPage" class="ref" >DoubleFloatXmpPage</a> section-8.1.xhtml
+<a href="section-8.11.xhtml#ugProblemFinite" class="ref" >ugProblemFinite</a> section-8.2.xhtml
+<a href="section-8.5.xhtml#ugxProblemOnePol" class="ref" >ugxProblemOnePol</a> section-8.3.xhtml
+<a href="section-8.5.xhtml#ugxProblemPolSys" class="ref" >ugxProblemPolSys</a> section-8.3.xhtml
+<a href="section-8.5.xhtml#ugxProblemOnePol" class="ref" >ugxProblemOnePol</a> section-8.3.xhtml
+<a href="section-8.10.xhtml#ugProblemDEQ" class="ref" >ugProblemDEQ</a> section-8.5.xhtml
+<a href="section-8.5.xhtml#ugxProblemOnePol" class="ref" >ugxProblemOnePol</a> section-8.5.xhtml
+<a href="section-8.3.xhtml#ugxProblemSymRootAll" class="ref" >ugxProblemSymRootAll</a> section-8.8.xhtml
+<a href="section-8.10.xhtml#ugxProblemDEQSeries" class="ref" >ugxProblemDEQSeries</a> section-8.9.xhtml
+<a href="section-8.9.xhtml#ugxProblemSeriesConversions" class="ref" >ugxProblemSeriesConversions</a> section-8.9.xhtml
+<a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a> section-8.9.xhtml
+<a href="section-8.9.xhtml#ugxProblemSeriesFunctions" class="ref" >ugxProblemSeriesFunctions</a> section-8.9.xhtml
+<a href="section-8.9.xhtml#ugxProblemSeriesFormula" class="ref" >ugxProblemSeriesFormula</a> section-8.9.xhtml
+<a href="section-8.9.xhtml#ugxProblemSeriesConversions" class="ref" >ugxProblemSeriesConversions</a> section-8.9.xhtml
+<a href="section-6.17.xhtml#ugUserAnon" class="ref" >ugUserAnon</a> section-8.9.xhtml
+<a href="section-8.9.xhtml#ugxProblemSeriesConversions" class="ref" >ugxProblemSeriesConversions</a> section-8.9.xhtml
+<a href="section-8.5.xhtml#ugProblemLinPolEqn" class="ref" >ugProblemLinPolEqn</a> section-8.10.xhtml
+<a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> section-8.11.xhtml
+<a href="section-8.11.xhtml#ugxProblemFiniteExtensionFinite" class="ref" >ugxProblemFiniteExtensionFinite</a> section-8.11.xhtml
+<a href="section-8.11.xhtml#ugxProblemFiniteUtility" class="ref" >ugxProblemFiniteUtility</a> section-8.11.xhtml
+<a href="section-8.11.xhtml#ugxProblemFiniteUtility" class="ref" >ugxProblemFiniteUtility</a> section-8.11.xhtml
+<a href="section-8.11.xhtml#ugxProblemFiniteUtility" class="ref" >ugxProblemFiniteUtility</a> section-8.11.xhtml
+<a href="section-8.11.xhtml#ugxProblemFiniteExtensionFinite" class="ref" >ugxProblemFiniteExtensionFinite</a> section-8.11.xhtml
+<a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a> section-9.1.xhtml
+<a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> section-9.1.xhtml
+<a href="section-9.21.xhtml#ExpressionXmpPage" class="ref" >ExpressionXmpPage</a> section-9.3.xhtml
+<a href="section-9.37.xhtml#KernelXmpPage" class="ref" >KernelXmpPage</a> section-9.3.xhtml
+<a href="ugProblemDEQPage" class="ref" >ugProblemDEQPage</a> section-9.3.xhtml
+<a href="ugProblemDEQNumber" class="ref" >ugProblemDEQNumber</a> section-9.3.xhtml
+<a href="section-9.15.xhtml#DecimalExpansionXmpPage" class="ref" >DecimalExpansionXmpPage</a> section-9.4.xhtml
+<a href="section-9.33.xhtml#HexadecimalExpansionXmpPage" class="ref" >HexadecimalExpansionXmpPage</a> section-9.4.xhtml
+<a href="section-9.65.xhtml#RadixExpansionXmpPage" class="ref" >RadixExpansionXmpPage</a> section-9.4.xhtml
+<a href="section-9.9.xhtml#CharacterClassXmpPage" class="ref" >CharacterClassXmpPage</a> section-9.8.xhtml
+<a href="section-9.77.xhtml#StringXmpPage" class="ref" >StringXmpPage</a> section-9.8.xhtml
+<a href="section-9.8.xhtml#CharacterXmpPage" class="ref" >CharacterXmpPage</a> section-9.9.xhtml
+<a href="section-9.77.xhtml#StringXmpPage" class="ref" >StringXmpPage</a> section-9.9.xhtml
+<a href="section-9.11.xhtml#ComplexXmpPage" class="ref" >ComplexXmpPage</a> section-9.10.xhtml
+<a href="section-9.64.xhtml#QuaternionXmpPage" class="ref" >QuaternionXmpPage</a> section-9.10.xhtml
+<a href="section-8.1.xhtml#ugProblemNumeric" class="ref" >ugProblemNumeric</a> section-9.11.xhtml
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> section-9.11.xhtml
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> section-9.11.xhtml
+<a href="section-9.76.xhtml#StreamXmpPage" class="ref" >StreamXmpPage</a> section-9.12.xhtml
+<a href="section-9.3.xhtml#BasicOperatorXmpPage" class="ref" >OperatorXmpPage</a> section-9.14.xhtml
+<a href="section-9.4.xhtml#BinaryExpansionXmpPage" class="ref" >BinaryExpansionXmpPage</a> section-9.15.xhtml
+<a href="section-9.33.xhtml#HexadecimalExpansionXmpPage" class="ref" >HexadecimalExpansionXmpPage</a> section-9.15.xhtml
+<a href="section-9.65.xhtml#RadixExpansionXmpPage" class="ref" >RadixExpansionXmpPage</a> section-9.15.xhtml
+<a href="ugIntroVariablesPage" class="ref" >ugIntroVariablesPage</a> section-9.16.xhtml
+<a href="ugIntroVariablesNumber" class="ref" >ugIntroVariablesNumber</a> section-9.16.xhtml
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> section-9.16.xhtml
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> section-9.16.xhtml
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >PolynomialXmpPage</a> section-9.16.xhtml
+<a href="section-9.83.xhtml#UnivariatePolynomialXmpPage" class="ref" >UnivariatePolynomialXmpPage</a> section-9.16.xhtml
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >MultivariatePolynomialXmpPage</a> section-9.16.xhtml
+<a href="section-7.0.xhtml#ugGraph" class="ref" >ugGraph</a> section-9.17.xhtml
+<a href="section-8.1.xhtml#ugProblemNumeric" class="ref" >ugProblemNumeric</a> section-9.17.xhtml
+<a href="section-9.17.xhtml#DoubleFloatXmpPage" class="ref" >FloatXmpPage</a> section-9.17.xhtml
+<a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a> section-9.18.xhtml
+<a href="ugUserPage" class="ref" >ugUserPage</a> section-9.20.xhtml
+<a href="ugUserNumber" class="ref" >ugUserNumber</a> section-9.20.xhtml
+<a href="section-9.86.xhtml#VoidXmpPage" class="ref" >VoidXmpPage</a> section-9.20.xhtml
+<a href="section-9.37.xhtml#KernelXmpPage" class="ref" >KernelXmpPage</a> section-9.21.xhtml
+<a href="section-9.37.xhtml#KernelXmpPage" class="ref" >KernelXmpPage</a> section-9.21.xhtml
+<a href="ugIntroCalcDerivPage" class="ref" >ugIntroCalcDerivPage</a> section-9.21.xhtml
+<a href="ugIntroCalcDerivNumber" class="ref" >ugIntroCalcDerivNumber</a> section-9.21.xhtml
+<a href="ugIntroCalcLimitsPage" class="ref" >ugIntroCalcLimitsPage</a> section-9.21.xhtml
+<a href="ugIntroCalcLimitsNumber" class="ref" >ugIntroCalcLimitsNumber</a> section-9.21.xhtml
+<a href="ugIntroSeriesPage" class="ref" >ugIntroSeriesPage</a> section-9.21.xhtml
+<a href="ugIntroSeriesNumber" class="ref" >ugIntroSeriesNumber</a> section-9.21.xhtml
+<a href="ugProblemDEQPage" class="ref" >ugProblemDEQPage</a> section-9.21.xhtml
+<a href="ugProblemDEQNumber" class="ref" >ugProblemDEQNumber</a> section-9.21.xhtml
+<a href="ugProblemIntegrationPage" class="ref" >ugProblemIntegrationPage</a> section-9.21.xhtml
+<a href="ugProblemIntegrationNumber" class="ref" >ugProblemIntegrationNumber</a> section-9.21.xhtml
+<a href="ugUserRulesPage" class="ref" >ugUserRulesPage</a> section-9.21.xhtml
+<a href="ugUserRulesNumber" class="ref" >ugUserRulesNumber</a> section-9.21.xhtml
+<a href="ugTypesPkgCallPage" class="ref" >ugTypesPkgCallPage</a> section-9.22.xhtml
+<a href="ugTypesPkgCallNumber" class="ref" >ugTypesPkgCallNumber</a> section-9.22.xhtml
+<a href="FactoredFunctionsTwoXmpPage" class="ref" >FactoredFunctionsTwoXmpPage</a> section-9.22.xhtml
+<a href="section-9.22.xhtml#FactoredXmpPage" class="ref" >FactoredXmpPage</a> section-9.23.xhtml
+<a href="ugProblemGaloisPage" class="ref" >ugProblemGaloisPage</a> section-9.23.xhtml
+<a href="ugProblemGaloisNumber" class="ref" >ugProblemGaloisNumber</a> section-9.23.xhtml
+<a href="section-9.81.xhtml#TextFileXmpPage" class="ref" >TextFileXmpPage</a> section-9.24.xhtml
+<a href="section-9.38.xhtml#KeyedAccessFileXmpPage" class="ref" >KeyedAccessFileXmpPage</a> section-9.24.xhtml
+<a href="section-9.41.xhtml#LibraryXmpPage" class="ref" >LibraryXmpPage</a> section-9.24.xhtml
+<a href="section-9.25.xhtml#FileNameXmpPage" class="ref" >FileNameXmpPage</a> section-9.24.xhtml
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a> section-9.26.xhtml
+<a href="section-9.85.xhtml#VectorXmpPage" class="ref" >VectorXmpPage</a> section-9.26.xhtml
+<a href="ugGraphPage" class="ref" >ugGraphPage</a> section-9.27.xhtml
+<a href="ugGraphNumber" class="ref" >ugGraphNumber</a> section-9.27.xhtml
+<a href="section-8.1.xhtml#ugProblemNumeric" class="ref" >ugProblemNumeric</a> section-9.27.xhtml
+<a href="section-9.17.xhtml#DoubleFloatXmpPage" class="ref" >DoubleFloatXmpPage</a> section-9.27.xhtml
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> section-9.27.xhtml
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> section-9.27.xhtml
+<a href="section-9.34.xhtml#IntegerXmpPage" class="ref" >IntegerXmpPage</a> section-9.28.xhtml
+<a href="section-9.12.xhtml#ContinuedFractionXmpPage" class="ref" >ContinuedFractionXmpPage</a> section-9.28.xhtml
+<a href="section-9.61.xhtml#PartialFractionXmpPage" class="ref" >PartialFractionXmpPage</a> section-9.28.xhtml
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> section-9.28.xhtml
+<a href="section-9.61.xhtml#PartialFractionXmpPage" class="ref" >PartialFractionXmpPage</a> section-9.29.xhtml
+<a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a> section-9.30.xhtml
+<a href="section-9.26.xhtml#FlexibleArrayXmpPage" class="ref" >FlexibleArrayXmpPage</a> section-9.32.xhtml
+<a href="section-9.15.xhtml#DecimalExpansionXmpPage" class="ref" >DecimalExpansionXmpPage</a> section-9.33.xhtml
+<a href="section-9.4.xhtml#BinaryExpansionXmpPage" class="ref" >BinaryExpansionXmpPage</a> section-9.33.xhtml
+<a href="section-9.65.xhtml#RadixExpansionXmpPage" class="ref" >RadixExpansionXmpPage</a> section-9.33.xhtml
+<a href="ugIntroNumbersPage" class="ref" >ugIntroNumbersPage</a> section-9.34.xhtml
+<a href="ugIntroNumbersNumber" class="ref" >ugIntroNumbersNumber</a> section-9.34.xhtml
+<a href="section-9.36.xhtml#IntegerNumberTheoryFunctionsXmpPage" class="ref" >IntegerNumberTheoryFunctionsXmpPage</a> section-9.34.xhtml
+<a href="section-9.15.xhtml#DecimalExpansionXmpPage" class="ref" >DecimalExpansionXmpPage</a> section-9.34.xhtml
+<a href="section-9.4.xhtml#BinaryExpansionXmpPage" class="ref" >BinaryExpansionXmpPage</a> section-9.34.xhtml
+<a href="section-9.33.xhtml#HexadecimalExpansionXmpPage" class="ref" >HexadecimalExpansionXmpPage</a> section-9.34.xhtml
+<a href="section-9.65.xhtml#RadixExpansionXmpPage" class="ref" >RadixExpansionXmpPage</a> section-9.34.xhtml
+<a href="section-9.12.xhtml#ContinuedFractionXmpPage" class="ref" >FractionXmpPage</a> section-9.34.xhtml
+<a href="ugTypesUnionsPage" class="ref" >ugTypesUnionsPage</a> section-9.34.xhtml
+<a href="ugTypesUnionsNumber" class="ref" >ugTypesUnionsNumber</a> section-9.34.xhtml
+<a href="section-2.4.xhtml#ugTypesRecords" class="ref" >ugTypesRecords</a> section-9.34.xhtml
+<a href="section-9.22.xhtml#FactoredXmpPage" class="ref" >FactoredXmpPage</a> section-9.34.xhtml
+<a href="section-9.11.xhtml#ComplexXmpPage" class="ref" >ComplexXmpPage</a> section-9.34.xhtml
+<a href="section-9.36.xhtml#IntegerNumberTheoryFunctionsXmpPage" class="ref" >IntegerNumberTheoryFunctionsXmpPage</a> section-9.34.xhtml
+<a href="section-9.3.xhtml#BasicOperatorXmpPage" class="ref" >BasicOperatorXmpPage</a> section-9.37.xhtml
+<a href="section-9.21.xhtml#ExpressionXmpPage" class="ref" >ExpressionXmpPage</a> section-9.37.xhtml
+<a href="section-9.21.xhtml#ExpressionXmpPage" class="ref" >ExpressionXmpPage</a> section-9.37.xhtml
+<a href="section-9.24.xhtml#FileXmpPage" class="ref" >FileXmpPage</a> section-9.38.xhtml
+<a href="section-9.81.xhtml#TextFileXmpPage" class="ref" >TextFileXmpPage</a> section-9.38.xhtml
+<a href="section-9.41.xhtml#LibraryXmpPage" class="ref" >LibraryXmpPage</a> section-9.38.xhtml
+<a href="section-9.24.xhtml#FileXmpPage" class="ref" >FileXmpPage</a> section-9.41.xhtml
+<a href="section-9.81.xhtml#TextFileXmpPage" class="ref" >TextFileXmpPage</a> section-9.41.xhtml
+<a href="section-9.38.xhtml#KeyedAccessFileXmpPage" class="ref" >KeyedAccessFileXmpPage</a> section-9.41.xhtml
+<a href="section-9.76.xhtml#StreamXmpPage" class="ref" >StreamXmpPage</a> section-9.47.xhtml
+<a href="ugUserMakePage" class="ref" >ugUserMakePage</a> section-9.50.xhtml
+<a href="ugUserMakeNumber" class="ref" >ugUserMakeNumber</a> section-9.50.xhtml
+<a href="ugIntroTwoDimPage" class="ref" >ugIntroTwoDimPage</a> section-9.52.xhtml
+<a href="ugIntroTwoDimNumber" class="ref" >ugIntroTwoDimNumber</a> section-9.52.xhtml
+<a href="ugProblemEigenPage" class="ref" >ugProblemEigenPage</a> section-9.52.xhtml
+<a href="ugProblemEigenNumber" class="ref" >ugProblemEigenNumber</a> section-9.52.xhtml
+<a href="ugxFloatHilbertPage" class="ref" >ugxFloatHilbertPage</a> section-9.52.xhtml
+<a href="ugxFloatHilbertNumber" class="ref" >ugxFloatHilbertNumber</a> section-9.52.xhtml
+<a href="section-9.62.xhtml#PermanentXmpPage" class="ref" >PermanentXmpPage</a> section-9.52.xhtml
+<a href="section-9.85.xhtml#VectorXmpPage" class="ref" >VectorXmpPage</a> section-9.52.xhtml
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a> section-9.52.xhtml
+<a href="section-9.82.xhtml#TwoDimensionalArrayXmpPage" class="ref" >TwoDimensionalArrayXmpPage</a> section-9.52.xhtml
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >PolynomialXmpPage</a> section-9.54.xhtml
+<a href="section-9.83.xhtml#UnivariatePolynomialXmpPage" class="ref" >UnivariatePolynomialXmpPage</a> section-9.54.xhtml
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >DistributedMultivariatePolynomialXmpPage</a> section-9.54.xhtml
+<a href="section-9.64.xhtml#QuaternionXmpPage" class="ref" >QuaternionXmpPage</a> section-9.56.xhtml
+<a href="section-9.85.xhtml#VectorXmpPage" class="ref" >VectorXmpPage</a> section-9.57.xhtml
+<a href="section-9.26.xhtml#FlexibleArrayXmpPage" class="ref" >FlexibleArrayXmpPage</a> section-9.57.xhtml
+<a href="section-9.11.xhtml#ComplexXmpPage" class="ref" >ComplexXmpPage</a> section-9.61.xhtml
+<a href="section-9.22.xhtml#FactoredXmpPage" class="ref" >FactoredXmpPage</a> section-9.61.xhtml
+<a href="section-9.29.xhtml#FullPartialFractionExpansionXmpPage" class="ref" >FullPartialFractionExpansionXmpPage</a> section-9.61.xhtml
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >DistributedMultivariatePolynomialXmpPage</a> section-9.63.xhtml
+<a href="section-9.22.xhtml#FactoredXmpPage" class="ref" >FactoredXmpPage</a> section-9.63.xhtml
+<a href="ugProblemFactorPage" class="ref" >ugProblemFactorPage</a> section-9.63.xhtml
+<a href="ugProblemFactorNumber" class="ref" >ugProblemFactorNumber</a> section-9.63.xhtml
+<a href="section-9.83.xhtml#UnivariatePolynomialXmpPage" class="ref" >UnivariatePolynomialXmpPage</a> section-9.63.xhtml
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >MultivariatePolynomialXmpPage</a> section-9.63.xhtml
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >DistributedMultivariatePolynomialXmpPage</a> section-9.63.xhtml
+<a href="section-9.11.xhtml#ComplexXmpPage" class="ref" >ComplexXmpPage</a> section-9.64.xhtml
+<a href="section-9.56.xhtml#OctonionXmpPage" class="ref" >OctonionXmpPage</a> section-9.64.xhtml
+<a href="section-9.15.xhtml#DecimalExpansionXmpPage" class="ref" >DecimalExpansionXmpPage</a> section-9.65.xhtml
+<a href="section-9.4.xhtml#BinaryExpansionXmpPage" class="ref" >BinaryExpansionXmpPage</a> section-9.65.xhtml
+<a href="section-9.33.xhtml#HexadecimalExpansionXmpPage" class="ref" >HexadecimalExpansionXmpPage</a> section-9.65.xhtml
+<a href="section-9.70.xhtml#SegmentBindingXmpPage" class="ref" >SegmentBindingXmpPage</a> section-9.69.xhtml
+<a href="section-9.84.xhtml#UniversalSegmentXmpPage" class="ref" >UniversalSegmentXmpPage</a> section-9.69.xhtml
+<a href="section-9.69.xhtml#SegmentXmpPage" class="ref" >SegmentXmpPage</a> section-9.70.xhtml
+<a href="section-9.84.xhtml#UniversalSegmentXmpPage" class="ref" >UniversalSegmentXmpPage</a> section-9.70.xhtml
+<a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> section-9.71.xhtml
+<a href="ugTypesDeclarePage" class="ref" >ugTypesDeclarePage</a> section-9.72.xhtml
+<a href="ugTypesDeclareNumber" class="ref" >ugTypesDeclareNumber</a> section-9.72.xhtml
+<a href="ugTypesPkgCallPage" class="ref" >ugTypesPkgCallPage</a> section-9.72.xhtml
+<a href="ugTypesPkgCallNumber" class="ref" >ugTypesPkgCallNumber</a> section-9.72.xhtml
+<a href="ugBrowsePage" class="ref" >ugBrowsePage</a> section-9.72.xhtml
+<a href="ugBrowseNumber" class="ref" >ugBrowseNumber</a> section-9.72.xhtml
+<a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a> section-9.73.xhtml
+<a href="section-9.30.xhtml#GeneralSparseTableXmpPage" class="ref" >GeneralSparseTableXmpPage</a> section-9.73.xhtml
+<a href="section-9.52.xhtml#MatrixXmpPage" class="ref" >MatrixXmpPage</a> section-9.74.xhtml
+<a href="ugTypesWritingModesPage" class="ref" >ugTypesWritingModesPage</a> section-9.74.xhtml
+<a href="ugTypesWritingModesNumber" class="ref" >ugTypesWritingModesNumber</a> section-9.74.xhtml
+<a href="ugTypesExposePage" class="ref" >ugTypesExposePage</a> section-9.74.xhtml
+<a href="ugTypesExposeNumber" class="ref" >ugTypesExposeNumber</a> section-9.74.xhtml
+<a href="section-9.52.xhtml#MatrixXmpPage" class="ref" >MatrixXmpPage</a> section-9.74.xhtml
+<a href="ugLangItsPage" class="ref" >ugLangItsPage</a> section-9.76.xhtml
+<a href="ugLangItsNumber" class="ref" >ugLangItsNumber</a> section-9.76.xhtml
+<a href="ugProblemSeriesPage" class="ref" >ugProblemSeriesPage</a> section-9.76.xhtml
+<a href="ugProblemSeriesNumber" class="ref" >ugProblemSeriesNumber</a> section-9.76.xhtml
+<a href="chapter-9.1-12.xhtml#ContinuedFractionXmpPage" class="ref" >ContinuedFractionXmpPage</a> section-9.76.xhtml
+<a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> section-9.76.xhtml
+<a href="section-9.8.xhtml#CharacterXmpPage" class="ref" >CharacterXmpPage</a> section-9.77.xhtml
+<a href="section-9.9.xhtml#CharacterClassXmpPage" class="ref" >CharacterClassXmpPage</a> section-9.77.xhtml
+<a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a> section-9.78.xhtml
+<a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >AssociationListXmpPage</a> section-9.80.xhtml
+<a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >EqTableXmpPage</a> section-9.80.xhtml
+<a href="section-9.78.xhtml#StringTableXmpPage" class="ref" >StringTableXmpPage</a> section-9.80.xhtml
+<a href="section-9.30.xhtml#GeneralSparseTableXmpPage" class="ref" >SparseTableXmpPage</a> section-9.80.xhtml
+<a href="section-9.38.xhtml#KeyedAccessFileXmpPage" class="ref" >KeyedAccessFileXmpPage</a> section-9.80.xhtml
+<a href="section-9.24.xhtml#FileXmpPage" class="ref" >FileXmpPage</a> section-9.81.xhtml
+<a href="section-9.38.xhtml#KeyedAccessFileXmpPage" class="ref" >KeyedAccessFileXmpPage</a> section-9.81.xhtml
+<a href="section-9.41.xhtml#LibraryXmpPage" class="ref" >LibraryXmpPage</a> section-9.81.xhtml
+<a href="ugTypesAnyNonePage" class="ref" >ugTypesAnyNonePage</a> section-9.82.xhtml
+<a href="ugTypesAnyNoneNumber" class="ref" >ugTypesAnyNoneNumber</a> section-9.82.xhtml
+<a href="section-9.52.xhtml#MatrixXmpPage" class="ref" >MatrixXmpPage</a> section-9.82.xhtml
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a> section-9.82.xhtml
+<a href="ugProblemFactorPage" class="ref" >ugProblemFactorPage</a> section-9.83.xhtml
+<a href="ugProblemFactorNumber" class="ref" >ugProblemFactorNumber</a> section-9.83.xhtml
+<a href="ugIntroVariablesPage" class="ref" >ugIntroVariablesPage</a> section-9.83.xhtml
+<a href="ugIntroVariablesNumber" class="ref" >ugIntroVariablesNumber</a> section-9.83.xhtml
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> section-9.83.xhtml
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> section-9.83.xhtml
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >PolynomialXmpPage</a> section-9.83.xhtml
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >MultivariatePolynomialXmpPage</a> section-9.83.xhtml
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >DistributedMultivariatePolynomialXmpPage</a> section-9.83.xhtml
+<a href="section-9.69.xhtml#SegmentXmpPage" class="ref" >SegmentXmpPage</a> section-9.84.xhtml
+<a href="section-9.70.xhtml#SegmentBindingXmpPage" class="ref" >SegmentBindingXmpPage</a> section-9.84.xhtml
+<a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> section-9.84.xhtml
+<a href="section-9.76.xhtml#StreamXmpPage" class="ref" >StreamXmpPage</a> section-9.84.xhtml
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a> section-9.85.xhtml
+<a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> section-9.85.xhtml
+<a href="section-9.52.xhtml#MatrixXmpPage" class="ref" >MatrixXmpPage</a> section-9.85.xhtml
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a> section-9.85.xhtml
+<a href="section-9.53.xhtml#MultiSetXmpPage" class="ref" >SetXmpPage</a> section-9.85.xhtml
+<a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a> section-9.85.xhtml
+<a href="section-9.82.xhtml#TwoDimensionalArrayXmpPage" class="ref" >TwoDimensionalArrayXmpPage</a> section-9.85.xhtml
+<a href="section-7.0.xhtml#ugGraph" class="ref" >ugGraph</a> section-10.1.xhtml
+<a href="section-6.0.xhtml#ugUser" class="ref" >ugUser</a> section-10.2.xhtml
+<a href="section-5.2.xhtml#ugLangBlocks" class="ref" >ugLangBlocks</a> section-10.2.xhtml
+<a href="section-7.0.xhtml#ugGraph" class="ref" >ugGraph</a> section-10.8.xhtml
+<a href="section-6.14.xhtml#ugUserMake" class="ref" >ugUserMake</a> section-10.9.xhtml
+<a href="section-10.0.xhtml#ugIntProg" class="ref" >ugIntProg</a> section-11.0.xhtml
+<a href="section-10.0.xhtml#ugIntProg" class="ref" >ugIntProg</a> section-11.0.xhtml
+<a href="section-10.0.xhtml#ugIntProg" class="ref" >ugIntProg</a> section-11.1.xhtml
+<a href="section-2.2.xhtml#ugTypesWritingAbbr" class="ref" >ugTypesWritingAbbr</a> section-11.1.xhtml
+<a href="fig-pak-cdraw" class="ref" >fig-pak-cdraw</a> section-11.1.xhtml
+<a href="section-10.8.xhtml#ugIntProgCompFuns" class="ref" >ugIntProgCompFuns</a> section-11.3.xhtml
+<a href="section-2.0.xhtml#ugTypes" class="ref" >ugTypes</a> section-11.7.xhtml
+<a href="section-6.15.xhtml#ugUserBlocks" class="ref" >ugUserBlocks</a> section-11.7.xhtml
+<a href="section-12.9.xhtml#ugCategoriesAttributes" class="ref" >ugCategoriesAttributes</a> section-11.7.xhtml
+<a href="section-6.15.xhtml#ugUserBlocks" class="ref" >ugUserBlocks</a> section-11.8.xhtml
+<a href="section-12.4.xhtml#ugCategoriesHier" class="ref" >ugCategoriesHier</a> section-11.10.xhtml
+<a href="section-2.1.xhtml#ugTypesBasicDomainCons" class="ref" >ugTypesBasicDomainCons</a> section-12.0.xhtml
+<a href="section-2.0.xhtml#ugTypes" class="ref" >ugTypes</a> section-12.1.xhtml
+<a href="section-12.4.xhtml#ugCategoriesHier" class="ref" >ugCategoriesHier</a> section-12.6.xhtml
+<a href="section-13.3.xhtml#ugDomainsAssertions" class="ref" >ugDomainsAssertions</a> section-12.9.xhtml
+<a href="section-11.8.xhtml#ugPackagesConds" class="ref" >ugPackagesConds</a> section-12.11.xhtml
+<a href="section-11.0.xhtml#ugPackages" class="ref" >ugPackages</a> section-12.12.xhtml
+<a href="section-11.3.xhtml#ugPackagesAbstract" class="ref" >ugPackagesAbstract</a> section-12.12.xhtml
+<a href="section-11.0.xhtml#ugPackages" class="ref" >ugPackages</a> section-13.1.xhtml
+<a href="section-12.8.xhtml#ugCategoriesCorrectness" class="ref" >ugCategoriesCorrectness</a> section-13.3.xhtml
+<a href="section-12.11.xhtml#ugCategoriesConditionals" class="ref" >ugCategoriesConditionals</a> section-13.3.xhtml
+<a href="section-13.2.xhtml#figquadform" class="ref" >figquadform</a> section-13.6.xhtml
+<a href="section-13.4.xhtml#ugDomainsDemo" class="ref" >ugDomainsDemo</a> section-13.6.xhtml
+<a href="section-13.4.xhtml#ugDomainsDemo" class="ref" >ugDomainsDemo</a> section-13.6.xhtml
+<a href="section-2.5.xhtml#ugTypesUnions" class="ref" >ugTypesUnions</a> section-13.7.xhtml
+<a href="section-13.4.xhtml#ugDomainsDemo" class="ref" >ugDomainsDemo</a> section-13.8.xhtml
+<a href="section-11.0.xhtml#ugPackages" class="ref" >ugPackages</a> section-13.9.xhtml
+<a href="section-12.6.xhtml#ugCategoriesDefaults" class="ref" >ugCategoriesDefaults</a> section-13.9.xhtml
+<a href="section-14.2.xhtml#ugBrowseDomain" class="ref" >ugBrowseDomain</a> section-14.1.xhtml
+<a href="section-14.3.xhtml#ugBrowseCapitalizationConvention" class="ref" >ugBrowseCapitalizationConvention</a> section-14.1.xhtml
+<a href="section-14.3.xhtml#ugBrowseOptions" class="ref" >ugBrowseOptions</a> section-14.1.xhtml
+<a href="section-14.2.xhtml#ugBrowseViewsOfConstructors" class="ref" >ugBrowseViewsOfConstructors</a> section-14.1.xhtml
+<a href="section-14.3.xhtml#ugBrowseViewsOfOperations" class="ref" >ugBrowseViewsOfOperations</a> section-14.1.xhtml
+<a href="section-14.3.xhtml#ugBrowseOptions" class="ref" >ugBrowseOptions</a> section-14.1.xhtml
+<a href="section-14.3.xhtml#ugBrowseViewsOfOperations" class="ref" >ugBrowseViewsOfOperations</a> section-14.2.xhtml
+<a href="section-14.3.xhtml#ugBrowseOptions" class="ref" >ugBrowseOptions</a> section-14.3.xhtml
+<a href="section-2.11.xhtml#ugTypesExpose" class="ref" >ugTypesExpose</a> section-14.3.xhtml
+<a href="aspSection" class="ref" >aspSection</a> section-15.3.xhtml
+<a href="aspSection" class="ref" >aspSection</a> section-15.3.xhtml
+<a href="generalFortran" class="ref" >generalFortran</a> section-15.3.xhtml
+<a href="nugNagd" class="ref" >nugNagd</a> section-15.3.xhtml
+<a href="section-5.4.xhtml#ugLangLoopsBreak" class="ref" >ugLangLoopsBreak</a> section-15.4.xhtml
+<a href="section-5.2.xhtml#ugLangBlocks" class="ref" >ugLangBlocks</a> section-15.4.xhtml
+<a href="section-7.1.xhtml#ugGraphTwoDbuild" class="ref" >ugGraphTwoDbuild</a> section-15.7.xhtml
+<a href="section-7.1.xhtml#ugGraphTwoDappend" class="ref" >ugGraphTwoDappend</a> section-15.7.xhtml
+<a href="section-1.3.xhtml#ugIntroCallFun" class="ref" >ugIntroCallFun</a> section-15.7.xhtml
+<a href="section-6.21.xhtml#ugUserRules" class="ref" >ugUserRules</a> section-15.7.xhtml
+<a href="ugSysCmdset" class="ref" >ugSysCmdset</a> section-16.1.xhtml
+<a href="ugSysCmdcd" class="ref" >ugSysCmdcd</a> section-16.7.xhtml
+<a href="ugSysCmdtrace" class="ref" >ugSysCmdtrace</a> section-16.7.xhtml
+<a href="section-16.11.xhtml#ugSysCmdframe" class="ref" >ugSysCmdframe</a> section-16.13.xhtml
+<a href="ugSysCmdcd" class="ref" >ugSysCmdcd</a> section-16.13.xhtml
+<a href="ugSysCmdcd" class="ref" >ugSysCmdcd</a> section-16.13.xhtml
+<a href="ugSysCmdabbreviation" class="ref" >ugSysCmdabbreviation</a> section-16.16.xhtml
+<a href="section-2.11.xhtml#ugTypesExpose" class="ref" >ugTypesExpose</a> section-16.16.xhtml
+<a href="section-4.1.xhtml#ugInOutIn" class="ref" >ugInOutIn</a> section-16.20.xhtml
+<a href="ugSysCmdcompile" class="ref" >ugSysCmdcompile</a> section-16.26.xhtml
+<a href="ugSysCmdcompile" class="ref" >ugSysCmdcompile</a> section-16.26.xhtml
+<a href="section-14.0.xhtml#ugBrowse" class="ref" >ugBrowse</a> section-17.1.xhtml
+<a href="section-14.0.xhtml#ugBrowse" class="ref" >ugBrowse</a> section-18.1.xhtml
+<a href="section-14.0.xhtml#ugBrowse" class="ref" >ugBrowse</a> section-19.1.xhtml
+<a href="section-21.4.xhtml#ugFimagesFive" class="ref" >ugFimagesFive</a> section-21.10.xhtml
+
+
+Following are the undefined hrefs.  These appear in the above list
+in the href attribute without a section prefix.  It would be nice to
+figure out where these are supposed to link to.
+
+<a href="fig-intro-br" class="ref" >fig-intro-br</a> section-0.1.xhtml
+<a href="ugSysCmdwhat" class="ref" >ugSysCmdwhat</a> section-2.2.xhtml
+<a href="chapter-9.1-12.xhtml#Complex" class="ref" >Complex</a> section-2.12.xhtml
+<a href="chapter-9.13-26.xhtml#ExitXmpPage" class="ref" >ExitXmpPage</a> section-6.1.xhtml
+<a href="MappingPackage1XmpPage" class="ref" >MappingPackage1XmpPage</a> section-6.7.xhtml
+<a href="ugProblemDEQPage" class="ref" >ugProblemDEQPage</a> section-9.3.xhtml
+<a href="ugProblemDEQNumber" class="ref" >ugProblemDEQNumber</a> section-9.3.xhtml
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> section-9.11.xhtml
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> section-9.11.xhtml
+<a href="ugIntroVariablesPage" class="ref" >ugIntroVariablesPage</a> section-9.16.xhtml
+<a href="ugIntroVariablesNumber" class="ref" >ugIntroVariablesNumber</a> section-9.16.xhtml
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> section-9.16.xhtml
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> section-9.16.xhtml
+<a href="ugUserPage" class="ref" >ugUserPage</a> section-9.20.xhtml
+<a href="ugUserNumber" class="ref" >ugUserNumber</a> section-9.20.xhtml
+<a href="ugIntroCalcDerivPage" class="ref" >ugIntroCalcDerivPage</a> section-9.21.xhtml
+<a href="ugIntroCalcDerivNumber" class="ref" >ugIntroCalcDerivNumber</a> section-9.21.xhtml
+<a href="ugIntroCalcLimitsPage" class="ref" >ugIntroCalcLimitsPage</a> section-9.21.xhtml
+<a href="ugIntroCalcLimitsNumber" class="ref" >ugIntroCalcLimitsNumber</a> section-9.21.xhtml
+<a href="ugIntroSeriesPage" class="ref" >ugIntroSeriesPage</a> section-9.21.xhtml
+<a href="ugIntroSeriesNumber" class="ref" >ugIntroSeriesNumber</a> section-9.21.xhtml
+<a href="ugProblemDEQPage" class="ref" >ugProblemDEQPage</a> section-9.21.xhtml
+<a href="ugProblemDEQNumber" class="ref" >ugProblemDEQNumber</a> section-9.21.xhtml
+<a href="ugProblemIntegrationPage" class="ref" >ugProblemIntegrationPage</a> section-9.21.xhtml
+<a href="ugProblemIntegrationNumber" class="ref" >ugProblemIntegrationNumber</a> section-9.21.xhtml
+<a href="ugUserRulesPage" class="ref" >ugUserRulesPage</a> section-9.21.xhtml
+<a href="ugUserRulesNumber" class="ref" >ugUserRulesNumber</a> section-9.21.xhtml
+<a href="ugTypesPkgCallPage" class="ref" >ugTypesPkgCallPage</a> section-9.22.xhtml
+<a href="ugTypesPkgCallNumber" class="ref" >ugTypesPkgCallNumber</a> section-9.22.xhtml
+<a href="FactoredFunctionsTwoXmpPage" class="ref" >FactoredFunctionsTwoXmpPage</a> section-9.22.xhtml
+<a href="ugProblemGaloisPage" class="ref" >ugProblemGaloisPage</a> section-9.23.xhtml
+<a href="ugProblemGaloisNumber" class="ref" >ugProblemGaloisNumber</a> section-9.23.xhtml
+<a href="ugGraphPage" class="ref" >ugGraphPage</a> section-9.27.xhtml
+<a href="ugGraphNumber" class="ref" >ugGraphNumber</a> section-9.27.xhtml
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> section-9.27.xhtml
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> section-9.27.xhtml
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> section-9.28.xhtml
+<a href="ugIntroNumbersPage" class="ref" >ugIntroNumbersPage</a> section-9.34.xhtml
+<a href="ugIntroNumbersNumber" class="ref" >ugIntroNumbersNumber</a> section-9.34.xhtml
+<a href="ugTypesUnionsPage" class="ref" >ugTypesUnionsPage</a> section-9.34.xhtml
+<a href="ugTypesUnionsNumber" class="ref" >ugTypesUnionsNumber</a> section-9.34.xhtml
+<a href="ugUserMakePage" class="ref" >ugUserMakePage</a> section-9.50.xhtml
+<a href="ugUserMakeNumber" class="ref" >ugUserMakeNumber</a> section-9.50.xhtml
+<a href="ugIntroTwoDimPage" class="ref" >ugIntroTwoDimPage</a> section-9.52.xhtml
+<a href="ugIntroTwoDimNumber" class="ref" >ugIntroTwoDimNumber</a> section-9.52.xhtml
+<a href="ugProblemEigenPage" class="ref" >ugProblemEigenPage</a> section-9.52.xhtml
+<a href="ugProblemEigenNumber" class="ref" >ugProblemEigenNumber</a> section-9.52.xhtml
+<a href="ugxFloatHilbertPage" class="ref" >ugxFloatHilbertPage</a> section-9.52.xhtml
+<a href="ugxFloatHilbertNumber" class="ref" >ugxFloatHilbertNumber</a> section-9.52.xhtml
+<a href="ugProblemFactorPage" class="ref" >ugProblemFactorPage</a> section-9.63.xhtml
+<a href="ugProblemFactorNumber" class="ref" >ugProblemFactorNumber</a> section-9.63.xhtml
+<a href="ugTypesDeclarePage" class="ref" >ugTypesDeclarePage</a> section-9.72.xhtml
+<a href="ugTypesDeclareNumber" class="ref" >ugTypesDeclareNumber</a> section-9.72.xhtml
+<a href="ugTypesPkgCallPage" class="ref" >ugTypesPkgCallPage</a> section-9.72.xhtml
+<a href="ugTypesPkgCallNumber" class="ref" >ugTypesPkgCallNumber</a> section-9.72.xhtml
+<a href="ugBrowsePage" class="ref" >ugBrowsePage</a> section-9.72.xhtml
+<a href="ugBrowseNumber" class="ref" >ugBrowseNumber</a> section-9.72.xhtml
+<a href="ugTypesWritingModesPage" class="ref" >ugTypesWritingModesPage</a> section-9.74.xhtml
+<a href="ugTypesWritingModesNumber" class="ref" >ugTypesWritingModesNumber</a> section-9.74.xhtml
+<a href="ugTypesExposePage" class="ref" >ugTypesExposePage</a> section-9.74.xhtml
+<a href="ugTypesExposeNumber" class="ref" >ugTypesExposeNumber</a> section-9.74.xhtml
+<a href="ugLangItsPage" class="ref" >ugLangItsPage</a> section-9.76.xhtml
+<a href="ugLangItsNumber" class="ref" >ugLangItsNumber</a> section-9.76.xhtml
+<a href="ugProblemSeriesPage" class="ref" >ugProblemSeriesPage</a> section-9.76.xhtml
+<a href="ugProblemSeriesNumber" class="ref" >ugProblemSeriesNumber</a> section-9.76.xhtml
+<a href="chapter-9.1-12.xhtml#ContinuedFractionXmpPage" class="ref" >ContinuedFractionXmpPage</a> section-9.76.xhtml
+<a href="ugTypesAnyNonePage" class="ref" >ugTypesAnyNonePage</a> section-9.82.xhtml
+<a href="ugTypesAnyNoneNumber" class="ref" >ugTypesAnyNoneNumber</a> section-9.82.xhtml
+<a href="ugProblemFactorPage" class="ref" >ugProblemFactorPage</a> section-9.83.xhtml
+<a href="ugProblemFactorNumber" class="ref" >ugProblemFactorNumber</a> section-9.83.xhtml
+<a href="ugIntroVariablesPage" class="ref" >ugIntroVariablesPage</a> section-9.83.xhtml
+<a href="ugIntroVariablesNumber" class="ref" >ugIntroVariablesNumber</a> section-9.83.xhtml
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> section-9.83.xhtml
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> section-9.83.xhtml
+<a href="fig-pak-cdraw" class="ref" >fig-pak-cdraw</a> section-11.1.xhtml
+<a href="aspSection" class="ref" >aspSection</a> section-15.3.xhtml
+<a href="aspSection" class="ref" >aspSection</a> section-15.3.xhtml
+<a href="generalFortran" class="ref" >generalFortran</a> section-15.3.xhtml
+<a href="nugNagd" class="ref" >nugNagd</a> section-15.3.xhtml
+<a href="ugSysCmdset" class="ref" >ugSysCmdset</a> section-16.1.xhtml
+<a href="ugSysCmdcd" class="ref" >ugSysCmdcd</a> section-16.7.xhtml
+<a href="ugSysCmdtrace" class="ref" >ugSysCmdtrace</a> section-16.7.xhtml
+<a href="ugSysCmdcd" class="ref" >ugSysCmdcd</a> section-16.13.xhtml
+<a href="ugSysCmdcd" class="ref" >ugSysCmdcd</a> section-16.13.xhtml
+<a href="ugSysCmdabbreviation" class="ref" >ugSysCmdabbreviation</a> section-16.16.xhtml
+<a href="ugSysCmdcompile" class="ref" >ugSysCmdcompile</a> section-16.26.xhtml
+<a href="ugSysCmdcompile" class="ref" >ugSysCmdcompile</a> section-16.26.xhtml
diff --git a/src/axiom-website/hyperdoc/axbook/ps/23DColA.png b/src/axiom-website/hyperdoc/axbook/ps/23DColA.png
new file mode 100644
index 0000000..6f1528a
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/23DColA.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/23DColB.png b/src/axiom-website/hyperdoc/axbook/ps/23DColB.png
new file mode 100644
index 0000000..6f1528a
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/23DColB.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/23DPal.png b/src/axiom-website/hyperdoc/axbook/ps/23DPal.png
new file mode 100644
index 0000000..6f1528a
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/23DPal.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2D1VarA.png b/src/axiom-website/hyperdoc/axbook/ps/2D1VarA.png
new file mode 100644
index 0000000..ae8de0c
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2D1VarA.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2D1VarB.png b/src/axiom-website/hyperdoc/axbook/ps/2D1VarB.png
new file mode 100644
index 0000000..e3e8f0b
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2D1VarB.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2DOptAd.png b/src/axiom-website/hyperdoc/axbook/ps/2DOptAd.png
new file mode 100644
index 0000000..d313bab
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2DOptAd.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2DOptCp.png b/src/axiom-website/hyperdoc/axbook/ps/2DOptCp.png
new file mode 100644
index 0000000..9b108b8
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2DOptCp.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2DOptCvC.png b/src/axiom-website/hyperdoc/axbook/ps/2DOptCvC.png
new file mode 100644
index 0000000..21ec048
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2DOptCvC.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2DOptPlr.png b/src/axiom-website/hyperdoc/axbook/ps/2DOptPlr.png
new file mode 100644
index 0000000..1b0d264
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2DOptPlr.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2DOptPtC.png b/src/axiom-website/hyperdoc/axbook/ps/2DOptPtC.png
new file mode 100644
index 0000000..21ec048
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2DOptPtC.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2Dcos.png b/src/axiom-website/hyperdoc/axbook/ps/2Dcos.png
new file mode 100644
index 0000000..cc4ae62
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2Dcos.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2Dctrl.png b/src/axiom-website/hyperdoc/axbook/ps/2Dctrl.png
new file mode 100644
index 0000000..598e93e
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2Dctrl.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2DppcA.png b/src/axiom-website/hyperdoc/axbook/ps/2DppcA.png
new file mode 100644
index 0000000..4f68832
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2DppcA.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2DppcE.png b/src/axiom-website/hyperdoc/axbook/ps/2DppcE.png
new file mode 100644
index 0000000..47ab958
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2DppcE.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2Dsin.png b/src/axiom-website/hyperdoc/axbook/ps/2Dsin.png
new file mode 100644
index 0000000..1abfedb
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2Dsin.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/2Dsincos.png b/src/axiom-website/hyperdoc/axbook/ps/2Dsincos.png
new file mode 100644
index 0000000..d2732cf
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/2Dsincos.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3D2VarA.png b/src/axiom-website/hyperdoc/axbook/ps/3D2VarA.png
new file mode 100644
index 0000000..0faf8e9
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3D2VarA.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3D2VarB.png b/src/axiom-website/hyperdoc/axbook/ps/3D2VarB.png
new file mode 100644
index 0000000..6d2e8ae
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3D2VarB.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DBuildA.png b/src/axiom-website/hyperdoc/axbook/ps/3DBuildA.png
new file mode 100644
index 0000000..bc9a82f
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DBuildA.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DBuildB.png b/src/axiom-website/hyperdoc/axbook/ps/3DBuildB.png
new file mode 100644
index 0000000..2fa6774
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DBuildB.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DOptCf1.png b/src/axiom-website/hyperdoc/axbook/ps/3DOptCf1.png
new file mode 100644
index 0000000..fe97001
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DOptCf1.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DOptCf2.png b/src/axiom-website/hyperdoc/axbook/ps/3DOptCf2.png
new file mode 100644
index 0000000..5410ee5
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DOptCf2.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DOptCf3.png b/src/axiom-website/hyperdoc/axbook/ps/3DOptCf3.png
new file mode 100644
index 0000000..0985233
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DOptCf3.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DOptCrd.png b/src/axiom-website/hyperdoc/axbook/ps/3DOptCrd.png
new file mode 100644
index 0000000..d75662f
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DOptCrd.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DOptPts.png b/src/axiom-website/hyperdoc/axbook/ps/3DOptPts.png
new file mode 100644
index 0000000..4a0776a
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DOptPts.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DOptRad.png b/src/axiom-website/hyperdoc/axbook/ps/3DOptRad.png
new file mode 100644
index 0000000..4a254b9
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DOptRad.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DOptSty.png b/src/axiom-website/hyperdoc/axbook/ps/3DOptSty.png
new file mode 100644
index 0000000..6aa99b1
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DOptSty.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DOptTtl.png b/src/axiom-website/hyperdoc/axbook/ps/3DOptTtl.png
new file mode 100644
index 0000000..1dc3ccd
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DOptTtl.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DOptvB.png b/src/axiom-website/hyperdoc/axbook/ps/3DOptvB.png
new file mode 100644
index 0000000..97eb310
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DOptvB.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3Dctrl.png b/src/axiom-website/hyperdoc/axbook/ps/3Dctrl.png
new file mode 100644
index 0000000..463c6ec
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3Dctrl.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3Dgamma11.png b/src/axiom-website/hyperdoc/axbook/ps/3Dgamma11.png
new file mode 100644
index 0000000..5104953
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3Dgamma11.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3Dlight.png b/src/axiom-website/hyperdoc/axbook/ps/3Dlight.png
new file mode 100644
index 0000000..737ca19
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3Dlight.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3Dmult1A.png b/src/axiom-website/hyperdoc/axbook/ps/3Dmult1A.png
new file mode 100644
index 0000000..a2253f6
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3Dmult1A.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3Dmult1B.png b/src/axiom-website/hyperdoc/axbook/ps/3Dmult1B.png
new file mode 100644
index 0000000..c0922c5
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3Dmult1B.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DpsA.png b/src/axiom-website/hyperdoc/axbook/ps/3DpsA.png
new file mode 100644
index 0000000..70bafe7
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DpsA.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DpsB.png b/src/axiom-website/hyperdoc/axbook/ps/3DpsB.png
new file mode 100644
index 0000000..ec5a662
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DpsB.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DpscA.png b/src/axiom-website/hyperdoc/axbook/ps/3DpscA.png
new file mode 100644
index 0000000..41b186a
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DpscA.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3DpscB.png b/src/axiom-website/hyperdoc/axbook/ps/3DpscB.png
new file mode 100644
index 0000000..52aedfb
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3DpscB.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/3Dvolume.png b/src/axiom-website/hyperdoc/axbook/ps/3Dvolume.png
new file mode 100644
index 0000000..9bdc0ad
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/3Dvolume.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/P28a.png b/src/axiom-website/hyperdoc/axbook/ps/P28a.png
new file mode 100644
index 0000000..ec61f58
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/P28a.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/P28b.png b/src/axiom-website/hyperdoc/axbook/ps/P28b.png
new file mode 100644
index 0000000..f45eb57
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/P28b.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/arrow.png b/src/axiom-website/hyperdoc/axbook/ps/arrow.png
new file mode 100644
index 0000000..a864d8d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/arrow.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/arrowr.png b/src/axiom-website/hyperdoc/axbook/ps/arrowr.png
new file mode 100644
index 0000000..a0dbb07
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/arrowr.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/atan-1.png b/src/axiom-website/hyperdoc/axbook/ps/atan-1.png
new file mode 100644
index 0000000..fea6589
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/atan-1.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/axiomFront.png b/src/axiom-website/hyperdoc/axbook/ps/axiomFront.png
new file mode 100644
index 0000000..17dba30
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/axiomFront.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/basic2d.png b/src/axiom-website/hyperdoc/axbook/ps/basic2d.png
new file mode 100644
index 0000000..d9f6b6b
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/basic2d.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/bessel.png b/src/axiom-website/hyperdoc/axbook/ps/bessel.png
new file mode 100644
index 0000000..d0164a6
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/bessel.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/bessintr.png b/src/axiom-website/hyperdoc/axbook/ps/bessintr.png
new file mode 100644
index 0000000..2a9b6c1
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/bessintr.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/bluebayou.png b/src/axiom-website/hyperdoc/axbook/ps/bluebayou.png
new file mode 100644
index 0000000..0827019
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/bluebayou.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/bouquet.png b/src/axiom-website/hyperdoc/axbook/ps/bouquet.png
new file mode 100644
index 0000000..d6acd55
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/bouquet.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/cartcoord.png b/src/axiom-website/hyperdoc/axbook/ps/cartcoord.png
new file mode 100644
index 0000000..09adca2
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/cartcoord.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/clipGamma.png b/src/axiom-website/hyperdoc/axbook/ps/clipGamma.png
new file mode 100644
index 0000000..c086f4c
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/clipGamma.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/compatan.png b/src/axiom-website/hyperdoc/axbook/ps/compatan.png
new file mode 100644
index 0000000..98303a0
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/compatan.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/compexp.png b/src/axiom-website/hyperdoc/axbook/ps/compexp.png
new file mode 100644
index 0000000..7a4216a
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/compexp.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/compgamm.png b/src/axiom-website/hyperdoc/axbook/ps/compgamm.png
new file mode 100644
index 0000000..7167baf
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/compgamm.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/complexExp.png b/src/axiom-website/hyperdoc/axbook/ps/complexExp.png
new file mode 100644
index 0000000..190672d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/complexExp.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/complexRoot.png b/src/axiom-website/hyperdoc/axbook/ps/complexRoot.png
new file mode 100644
index 0000000..079cc86
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/complexRoot.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/cylCoord.png b/src/axiom-website/hyperdoc/axbook/ps/cylCoord.png
new file mode 100644
index 0000000..4131426
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/cylCoord.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/defcoord.png b/src/axiom-website/hyperdoc/axbook/ps/defcoord.png
new file mode 100644
index 0000000..d1d9ac7
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/defcoord.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/exit.png b/src/axiom-website/hyperdoc/axbook/ps/exit.png
new file mode 100644
index 0000000..3307b8c
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/exit.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-alldoms.png b/src/axiom-website/hyperdoc/axbook/ps/h-alldoms.png
new file mode 100644
index 0000000..29a2d5d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-alldoms.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-allrank.png b/src/axiom-website/hyperdoc/axbook/ps/h-allrank.png
new file mode 100644
index 0000000..2dd9896
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-allrank.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-atsearch.png b/src/axiom-website/hyperdoc/axbook/ps/h-atsearch.png
new file mode 100644
index 0000000..3e11f4d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-atsearch.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-brfront.png b/src/axiom-website/hyperdoc/axbook/ps/h-brfront.png
new file mode 100644
index 0000000..b6a8c38
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-brfront.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-browse.png b/src/axiom-website/hyperdoc/axbook/ps/h-browse.png
new file mode 100644
index 0000000..11ff5de
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-browse.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-comsearch.png b/src/axiom-website/hyperdoc/axbook/ps/h-comsearch.png
new file mode 100644
index 0000000..39fe30b
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-comsearch.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-condition.png b/src/axiom-website/hyperdoc/axbook/ps/h-condition.png
new file mode 100644
index 0000000..353c6a3
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-condition.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-consearch.png b/src/axiom-website/hyperdoc/axbook/ps/h-consearch.png
new file mode 100644
index 0000000..8619782
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-consearch.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-consearch2.png b/src/axiom-website/hyperdoc/axbook/ps/h-consearch2.png
new file mode 100644
index 0000000..7fcda52
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-consearch2.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-crossref.png b/src/axiom-website/hyperdoc/axbook/ps/h-crossref.png
new file mode 100644
index 0000000..aab04f1
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-crossref.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-docsearch.png b/src/axiom-website/hyperdoc/axbook/ps/h-docsearch.png
new file mode 100644
index 0000000..8c1e07d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-docsearch.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-gensearch.png b/src/axiom-website/hyperdoc/axbook/ps/h-gensearch.png
new file mode 100644
index 0000000..4a38e65
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-gensearch.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-inverse.png b/src/axiom-website/hyperdoc/axbook/ps/h-inverse.png
new file mode 100644
index 0000000..a1a109b
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-inverse.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matargs.png b/src/axiom-website/hyperdoc/axbook/ps/h-matargs.png
new file mode 100644
index 0000000..fac6516
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matargs.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matats.png b/src/axiom-website/hyperdoc/axbook/ps/h-matats.png
new file mode 100644
index 0000000..430665d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matats.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matdesc.png b/src/axiom-website/hyperdoc/axbook/ps/h-matdesc.png
new file mode 100644
index 0000000..5a225b7
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matdesc.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matexamp.png b/src/axiom-website/hyperdoc/axbook/ps/h-matexamp.png
new file mode 100644
index 0000000..47e9cf2
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matexamp.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matexports.png b/src/axiom-website/hyperdoc/axbook/ps/h-matexports.png
new file mode 100644
index 0000000..344a7d1
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matexports.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matimp.png b/src/axiom-website/hyperdoc/axbook/ps/h-matimp.png
new file mode 100644
index 0000000..fa03dd0
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matimp.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matinv.png b/src/axiom-website/hyperdoc/axbook/ps/h-matinv.png
new file mode 100644
index 0000000..2d01cef
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matinv.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matmap.png b/src/axiom-website/hyperdoc/axbook/ps/h-matmap.png
new file mode 100644
index 0000000..cb870d9
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matmap.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matops.png b/src/axiom-website/hyperdoc/axbook/ps/h-matops.png
new file mode 100644
index 0000000..04dafe4
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matops.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matpage.png b/src/axiom-website/hyperdoc/axbook/ps/h-matpage.png
new file mode 100644
index 0000000..f053b42
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matpage.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matrelops.png b/src/axiom-website/hyperdoc/axbook/ps/h-matrelops.png
new file mode 100644
index 0000000..a6c0de8
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matrelops.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matrix.png b/src/axiom-website/hyperdoc/axbook/ps/h-matrix.png
new file mode 100644
index 0000000..2860da7
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matrix.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matrixops.png b/src/axiom-website/hyperdoc/axbook/ps/h-matrixops.png
new file mode 100644
index 0000000..09deb1c
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matrixops.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matrixops1.png b/src/axiom-website/hyperdoc/axbook/ps/h-matrixops1.png
new file mode 100644
index 0000000..8ed2e7e
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matrixops1.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matrixops2.png b/src/axiom-website/hyperdoc/axbook/ps/h-matrixops2.png
new file mode 100644
index 0000000..62f524d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matrixops2.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matsource.png b/src/axiom-website/hyperdoc/axbook/ps/h-matsource.png
new file mode 100644
index 0000000..62c9ace
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matsource.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matusers.png b/src/axiom-website/hyperdoc/axbook/ps/h-matusers.png
new file mode 100644
index 0000000..08eca11
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matusers.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-matxref.png b/src/axiom-website/hyperdoc/axbook/ps/h-matxref.png
new file mode 100644
index 0000000..9c2d2cf
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-matxref.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-opsearch.png b/src/axiom-website/hyperdoc/axbook/ps/h-opsearch.png
new file mode 100644
index 0000000..8f3a895
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-opsearch.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-origins.png b/src/axiom-website/hyperdoc/axbook/ps/h-origins.png
new file mode 100644
index 0000000..c92160d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-origins.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-parameter.png b/src/axiom-website/hyperdoc/axbook/ps/h-parameter.png
new file mode 100644
index 0000000..c92160d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-parameter.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-root.png b/src/axiom-website/hyperdoc/axbook/ps/h-root.png
new file mode 100644
index 0000000..489aa4d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-root.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/h-signature.png b/src/axiom-website/hyperdoc/axbook/ps/h-signature.png
new file mode 100644
index 0000000..422836e
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/h-signature.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/help.png b/src/axiom-website/hyperdoc/axbook/ps/help.png
new file mode 100644
index 0000000..f5c12d5
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/help.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/home.png b/src/axiom-website/hyperdoc/axbook/ps/home.png
new file mode 100644
index 0000000..b5991d5
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/home.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/knot3.png b/src/axiom-website/hyperdoc/axbook/ps/knot3.png
new file mode 100644
index 0000000..301f31f
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/knot3.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/modbessc.png b/src/axiom-website/hyperdoc/axbook/ps/modbessc.png
new file mode 100644
index 0000000..31a0f46
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/modbessc.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/newmap.png b/src/axiom-website/hyperdoc/axbook/ps/newmap.png
new file mode 100644
index 0000000..e6d0485
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/newmap.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/realbeta.png b/src/axiom-website/hyperdoc/axbook/ps/realbeta.png
new file mode 100644
index 0000000..effc667
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/realbeta.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/ribbon1.png b/src/axiom-website/hyperdoc/axbook/ps/ribbon1.png
new file mode 100644
index 0000000..32f1771
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/ribbon1.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/ribbon2.png b/src/axiom-website/hyperdoc/axbook/ps/ribbon2.png
new file mode 100644
index 0000000..9608596
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/ribbon2.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/ribbon2r.png b/src/axiom-website/hyperdoc/axbook/ps/ribbon2r.png
new file mode 100644
index 0000000..b9bc13e
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/ribbon2r.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/ribbons.png b/src/axiom-website/hyperdoc/axbook/ps/ribbons.png
new file mode 100644
index 0000000..a768bf3
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/ribbons.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/ribbons2.png b/src/axiom-website/hyperdoc/axbook/ps/ribbons2.png
new file mode 100644
index 0000000..359dffc
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/ribbons2.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/ribbons2b.png b/src/axiom-website/hyperdoc/axbook/ps/ribbons2b.png
new file mode 100644
index 0000000..ea1437d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/ribbons2b.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/ribbons5.png b/src/axiom-website/hyperdoc/axbook/ps/ribbons5.png
new file mode 100644
index 0000000..a21aac5
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/ribbons5.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/segbind.png b/src/axiom-website/hyperdoc/axbook/ps/segbind.png
new file mode 100644
index 0000000..b0470f1
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/segbind.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/torusKnot.png b/src/axiom-website/hyperdoc/axbook/ps/torusKnot.png
new file mode 100644
index 0000000..a1957c4
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/torusKnot.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/up.png b/src/axiom-website/hyperdoc/axbook/ps/up.png
new file mode 100644
index 0000000..41f35c6
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/up.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/vectorRoot.png b/src/axiom-website/hyperdoc/axbook/ps/vectorRoot.png
new file mode 100644
index 0000000..682f6dc
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/vectorRoot.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/vectorSin.png b/src/axiom-website/hyperdoc/axbook/ps/vectorSin.png
new file mode 100644
index 0000000..eeeecec
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/vectorSin.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/wd-atanz.png b/src/axiom-website/hyperdoc/axbook/ps/wd-atanz.png
new file mode 100644
index 0000000..89b4c49
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/wd-atanz.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/wd-bessi.png b/src/axiom-website/hyperdoc/axbook/ps/wd-bessi.png
new file mode 100644
index 0000000..ed6f45c
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/wd-bessi.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/wd-bessi3.png b/src/axiom-website/hyperdoc/axbook/ps/wd-bessi3.png
new file mode 100644
index 0000000..f699545
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/wd-bessi3.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/wd-bessi3s.png b/src/axiom-website/hyperdoc/axbook/ps/wd-bessi3s.png
new file mode 100644
index 0000000..b981075
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/wd-bessi3s.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/wd-bessj.png b/src/axiom-website/hyperdoc/axbook/ps/wd-bessj.png
new file mode 100644
index 0000000..7c1722d
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/wd-bessj.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/wd-beta.png b/src/axiom-website/hyperdoc/axbook/ps/wd-beta.png
new file mode 100644
index 0000000..2603abd
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/wd-beta.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/wd-expz.png b/src/axiom-website/hyperdoc/axbook/ps/wd-expz.png
new file mode 100644
index 0000000..ef511cc
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/wd-expz.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/ps/wd-gammaz.png b/src/axiom-website/hyperdoc/axbook/ps/wd-gammaz.png
new file mode 100644
index 0000000..3a6a846
Binary files /dev/null and b/src/axiom-website/hyperdoc/axbook/ps/wd-gammaz.png differ
diff --git a/src/axiom-website/hyperdoc/axbook/section-0.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-0.1.xhtml
new file mode 100644
index 0000000..6fa32fc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-0.1.xhtml
@@ -0,0 +1,977 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section0.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-0.2.xhtml" style="margin-right: 10px;">Next Section 0.2 A Technical Introduction</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-0.1">
+<h2 class="sectiontitle">0.1  Introduction to Axiom</h2>
+
+
+<p>Welcome to the world of Axiom.
+We call Axiom a scientific computation system:
+a self-contained toolbox designed to meet
+your scientific programming needs,
+from symbolics, to numerics, to graphics.
+</p>
+
+
+<p>This introduction is a quick overview of what Axiom offers.
+</p>
+
+
+
+<a name="subsec-0.1.1"/>
+<div class="subsection"  id="subsec-0.1.1">
+<h3 class="subsectitle">0.1.1  Symbolic Computation</h3>
+
+
+<p>Axiom provides a wide range of simple commands for symbolic
+mathematical problem solving.  Do you need to solve an equation, to
+expand a series, or to obtain an integral?  If so, just ask Axiom
+to do it.
+</p>
+
+
+<p>Given <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>&#x222B;</mo><mo>(</mo><mfrac><mn>1</mn><mrow><mo>(</mo><msup><mi>x</mi><mn>3</mn></msup><mspace width="0.5 em" /><msup><mrow><mo>(</mo><mi>a</mi><mo>+</mo><mi>b</mi><mi>x</mi><mo>)</mo></mrow><mrow><mn>1</mn><mo>/</mo><mn>3</mn></mrow></msup><mo>)</mo></mrow></mfrac><mo>)</mo><mi>dx</mi></mrow></mstyle></math> 
+we would enter this into Axiom as:
+</p>
+
+
+
+
+<div id="spadComm0-1" class="spadComm" >
+<form id="formComm0-1" action="javascript:makeRequest('0-1');" >
+<input id="comm0-1" type="text" class="command" style="width: 26em;" value="integrate(1/(x**3 * (a+b*x)**(1/3)),x)" />
+</form>
+<span id="commSav0-1" class="commSav" >integrate(1/(x**3 * (a+b*x)**(1/3)),x)</span>
+<div id="mathAns0-1" ></div>
+</div>
+
+
+<p>which would give the result:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><mo>log</mo><mo>(</mo><mrow><mrow><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mroot><mrow><mrow><mi>b</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mroot><mrow><mrow><mi>b</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow></mrow><mo>+</mo><mi>a</mi></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><mo>log</mo><mo>(</mo><mrow><mrow><mrow><msup><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mroot><mrow><mrow><mi>b</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow></mrow><mo>-</mo><mi>a</mi></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>arctan</mo><mo>(</mo><mfrac><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mroot><mrow><mrow><mi>b</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow></mrow><mo>+</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow></mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a</mi></mrow></mfrac><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mroot><mrow><mrow><mi>b</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow></mrow></mfrac></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+<p>Axiom provides state-of-the-art algebraic machinery to handle your
+most advanced symbolic problems.  For example, Axiom's integrator
+gives you the answer when an answer exists.  If one does not, it
+provides a proof that there is no answer.  Integration is just one of
+a multitude of symbolic operations that Axiom provides.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.1.2"/>
+<div class="subsection"  id="subsec-0.1.2">
+<h3 class="subsectitle">0.1.2  Numeric Computation</h3>
+
+
+<p>Axiom has a numerical library that includes operations for linear
+algebra, solution of equations, and special functions.  For many of
+these operations, you can select any number of floating point digits
+to be carried out in the computation.
+</p>
+
+
+<p>Solve  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mn>49</mn></msup><mo>-</mo><mn>49</mn><msup><mi>x</mi><mn>4</mn></msup><mo>+</mo><mn>9</mn></mrow></mstyle></math> to 49 digits of accuracy.
+First we need to change the default output length of numbers:
+</p>
+
+
+
+
+<div id="spadComm0-2" class="spadComm" >
+<form id="formComm0-2" action="javascript:makeRequest('0-2');" >
+<input id="comm0-2" type="text" class="command" style="width: 7em;" value="digits(49)" />
+</form>
+<span id="commSav0-2" class="commSav" >digits(49)</span>
+<div id="mathAns0-2" ></div>
+</div>
+
+
+<p>and then we execute the command:
+</p>
+
+
+
+
+<div id="spadComm0-3" class="spadComm" >
+<form id="formComm0-3" action="javascript:makeRequest('0-3');" >
+<input id="comm0-3" type="text" class="command" style="width: 22em;" value="solve(x**49-49*x**4+9 = 0,1.e-49)" />
+</form>
+<span id="commSav0-3" class="commSav" >solve(x**49-49*x**4+9 = 0,1.e-49)</span>
+<div id="mathAns0-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>6546536706904271136718122105095984761851224331</mn><mn>556</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>x</mi><mo>=</mo><mrow><mn>1</mn><mo>.</mo><mn>086921395653859508493939035954893289009213388763</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>x</mi><mo>=</mo><mrow><mn>0</mn><mo>.</mo><mn>654653670725527173969468606613676483536148760766</mn><mn>1</mn></mrow></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+
+<div class="returnType">
+Type: List Equation Polynomial Float
+</div>
+
+
+<p>The output of a computation can be converted to FORTRAN to be used
+in a later numerical computation.
+Besides floating point numbers, Axiom provides literally
+dozens of kinds of numbers to compute with.
+These range from various kinds of integers, to fractions, complex
+numbers, quaternions, continued fractions, and to numbers represented
+with an arbitrary base.
+</p>
+
+
+<p>What is  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math> to the  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>90</mn></mstyle></math>-th power in base  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>32</mn></mstyle></math>?
+</p>
+
+
+
+
+<div id="spadComm0-4" class="spadComm" >
+<form id="formComm0-4" action="javascript:makeRequest('0-4');" >
+<input id="comm0-4" type="text" class="command" style="width: 11em;" value="radix(10**90,32)" />
+</form>
+<span id="commSav0-4" class="commSav" >radix(10**90,32)</span>
+<div id="mathAns0-4" ></div>
+</div>
+
+
+<p>returns:
+</p>
+
+
+
+<p><span class="teletype">FMM3O955CSEIV0ILKH820CN3I7PICQU0OQMDOFV6TP000000000000000000 </span>
+</p>
+
+
+
+<div class="returnType">
+Type: RadixExpansion 32
+</div>
+
+
+
+<p>The AXIOM numerical library can be enhanced with a
+substantial number of functions from the NAG library of numerical and
+statistical algorithms. These functions will provide coverage of a wide
+range of areas including roots of functions, Fourier transforms, quadrature,
+differential equations, data approximation, non-linear optimization, linear
+algebra, basic statistics, step-wise regression, analysis of variance,
+time series analysis, mathematical programming, and special functions.
+Contact the Numerical Algorithms Group Limited, Oxford, England.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.1.3"/>
+<div class="subsection"  id="subsec-0.1.3">
+<h3 class="subsectitle">0.1.3  Graphics</h3>
+
+
+<p>You may often want to visualize a symbolic formula or draw
+a graph from a set of numerical values.
+To do this, you can call upon the Axiom
+graphics capability.
+</p>
+
+
+<p>Draw  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>J</mi><mn>0</mn></msub><mo>(</mo><msqrt><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup></mrow></msqrt><mo>)</mo></mrow></mstyle></math> for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>20</mn><mo>&#x2264;</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>&#x2264;</mo><mn>20</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm0-5" class="spadComm" >
+<form id="formComm0-5" action="javascript:makeRequest('0-5');" >
+<input id="comm0-5" type="text" class="command" style="width: 38em;" value="draw(5*besselJ(0,sqrt(x**2+y**2)), x=-20..20, y=-20..20)" />
+</form>
+<span id="commSav0-5" class="commSav" >draw(5*besselJ(0,sqrt(x**2+y**2)), x=-20..20, y=-20..20)</span>
+<div id="mathAns0-5" ></div>
+</div>
+
+
+
+<div class="image">
+<img src="ps/bessintr.png" alt="picture"/>
+<div class="figcaption"> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>J</mi><mn>0</mn></msub><mo>(</mo><msqrt><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup></mrow></msqrt><mo>)</mo></mrow></mstyle></math> for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>20</mn><mo>&#x2264;</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>&#x2264;</mo><mn>20</mn></mrow></mstyle></math></div>
+</div>
+
+<p>Graphs in Axiom are interactive objects you can manipulate with
+your mouse.  Just click on the graph, and a control panel pops up.
+Using this mouse and the control panel, you can translate, rotate,
+zoom, change the coloring, lighting, shading, and perspective on the
+picture.  You can also generate a PostScript copy of your graph to
+produce hard-copy output.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.1.4"/>
+<div class="subsection"  id="subsec-0.1.4">
+<h3 class="subsectitle">0.1.4  HyperDoc</h3>
+
+
+
+
+<div class="image">
+<img src="ps/h-root.png" alt="picture"/>
+<div class="figcaption">Hyperdoc opening menu</div>
+</div>
+
+<p>HyperDoc presents you windows on the world of Axiom,
+offering on-line help, examples, tutorials, a browser, and reference
+material.  HyperDoc gives you on-line access to this document in a
+``hypertext'' format.  Words that appear in a different font (for
+example, <span class="teletype">Matrix</span>, <span style="font-weight: bold;"> factor</span>, and
+<span class="italic">category</span>) are generally mouse-active; if you click on one
+with your mouse, HyperDoc shows you a new window for that word.
+</p>
+
+
+<p>As another example of a HyperDoc facility, suppose that you want to
+compute the roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mn>49</mn></msup><mo>-</mo><mn>49</mn><msup><mi>x</mi><mn>4</mn></msup><mo>+</mo><mn>9</mn></mrow></mstyle></math> to 49 digits (as in our
+previous example) and you don't know how to tell Axiom to do this.
+The ``basic command'' facility of HyperDoc leads the way.  Through the
+series of HyperDoc windows shown in Figure <a href="fig-intro-br" class="ref" >fig-intro-br</a>  and the specified mouse clicks, you and
+HyperDoc generate the correct command to issue to compute the answer.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.1.5"/>
+<div class="subsection"  id="subsec-0.1.5">
+<h3 class="subsectitle">0.1.5  Interactive Programming </h3>
+
+
+<p>Axiom's interactive programming language lets you define your
+own functions.  A simple example of a user-defined function is one
+that computes the successive Legendre polynomials.  Axiom lets
+you define these polynomials in a piece-wise way.
+</p>
+
+
+<p>The first Legendre polynomial.
+</p>
+
+
+
+
+<div id="spadComm0-6" class="spadComm" >
+<form id="formComm0-6" action="javascript:makeRequest('0-6');" >
+<input id="comm0-6" type="text" class="command" style="width: 6em;" value="p(0) == 1" />
+</form>
+<span id="commSav0-6" class="commSav" >p(0) == 1</span>
+<div id="mathAns0-6" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+<p>The second Legendre polynomial.
+</p>
+
+
+
+
+<div id="spadComm0-7" class="spadComm" >
+<form id="formComm0-7" action="javascript:makeRequest('0-7');" >
+<input id="comm0-7" type="text" class="command" style="width: 6em;" value="p(1) == x" />
+</form>
+<span id="commSav0-7" class="commSav" >p(1) == x</span>
+<div id="mathAns0-7" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+<p>The  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Legendre polynomial for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>n</mi><mo>&gt;</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm0-8" class="spadComm" >
+<form id="formComm0-8" action="javascript:makeRequest('0-8');" >
+<input id="comm0-8" type="text" class="command" style="width: 30em;" value="p(n) == ((2*n-1)*x*p(n-1) - (n-1) * p(n-2))/n" />
+</form>
+<span id="commSav0-8" class="commSav" >p(n) == ((2*n-1)*x*p(n-1) - (n-1) * p(n-2))/n</span>
+<div id="mathAns0-8" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>In addition to letting you define simple functions like this, the
+interactive language can be used to create entire application
+packages.  All the graphs in the Axiom images section were created by
+programs written in the interactive language.
+</p>
+
+
+<p>The above definitions for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> do no computation---they simply
+tell Axiom how to compute  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mstyle></math> for some positive integer
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math>.
+</p>
+
+
+<p>To actually get a value of a Legendre polynomial, you ask for it.
+<span class="index">Legendre polynomials</span><a name="chapter-0-0"/>
+</p>
+
+
+<p>What is the tenth Legendre polynomial?
+</p>
+
+
+
+
+<div id="spadComm0-9" class="spadComm" >
+<form id="formComm0-9" action="javascript:makeRequest('0-9');" >
+<input id="comm0-9" type="text" class="command" style="width: 4em;" value="p(10)" />
+</form>
+<span id="commSav0-9" class="commSav" >p(10)</span>
+<div id="mathAns0-9" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;p&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Polynomial&nbsp;Fraction&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;p&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>46189</mn><mn>256</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>109395</mn><mn>256</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>45045</mn><mn>128</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15015</mn><mn>128</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3465</mn><mn>256</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mfrac><mn>63</mn><mn>256</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+<p>Axiom applies the above pieces for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> to obtain the value
+of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mstyle></math>.  But it does more: it creates an optimized, compiled
+function for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>.  The function is formed by putting the pieces
+together into a single piece of code.  By <span class="italic">compiled</span>, we mean that
+the function is translated into basic machine-code.  By <span class="italic">optimized</span>, we mean that certain transformations are performed on that
+code to make it run faster.  For  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>, Axiom actually
+translates the original definition that is recursive (one that calls
+itself) to one that is iterative (one that consists of a simple loop).
+</p>
+
+
+<p>What is the coefficient of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mn>90</mn></msup></mrow></mstyle></math> in  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mn>90</mn><mo>)</mo></mrow></mstyle></math>?
+</p>
+
+
+
+
+<div id="spadComm0-10" class="spadComm" >
+<form id="formComm0-10" action="javascript:makeRequest('0-10');" >
+<input id="comm0-10" type="text" class="command" style="width: 16em;" value="coefficient(p(90),x,90)" />
+</form>
+<span id="commSav0-10" class="commSav" >coefficient(p(90),x,90)</span>
+<div id="mathAns0-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>5688265542052017822223458237426581853561497449095175</mn><mn>77371252455336267181195264</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+<p>In general, a user function is type-analyzed and compiled on first use.
+Later, if you use it with a different kind of object, the function
+is recompiled if necessary.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.1.6"/>
+<div class="subsection"  id="subsec-0.1.6">
+<h3 class="subsectitle">0.1.6  Data Structures</h3>
+
+
+
+<p>A variety of data structures are available for interactive use.  These
+include strings, lists, vectors, sets, multisets, and hash tables.  A
+particularly useful structure for interactive use is the infinite
+stream:
+</p>
+
+
+<p>Create the infinite stream of derivatives of Legendre polynomials.
+</p>
+
+
+
+
+<div id="spadComm0-11" class="spadComm" >
+<form id="formComm0-11" action="javascript:makeRequest('0-11');" >
+<input id="comm0-11" type="text" class="command" style="width: 16em;" value="[D(p(i),x) for i in 1..]" />
+</form>
+<span id="commSav0-11" class="commSav" >[D(p(i),x) for i in 1..]</span>
+<div id="mathAns0-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>,</mo><mrow><mrow><mfrac><mn>15</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mfrac><mn>3</mn><mn>2</mn></mfrac></mrow><mo>,</mo><mrow><mrow><mfrac><mn>35</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>,</mo><mrow><mrow><mfrac><mn>315</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>105</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>15</mn><mn>8</mn></mfrac></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mfrac><mn>693</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>315</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>105</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>,</mo><mrow><mrow><mfrac><mn>3003</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>3465</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>945</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mfrac><mn>35</mn><mn>16</mn></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mfrac><mn>6435</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>9009</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3465</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>315</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mfrac><mn>109395</mn><mn>128</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>45045</mn><mn>32</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>45045</mn><mn>64</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>3465</mn><mn>32</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mfrac><mrow><mn>3</mn><mn>15</mn></mrow><mn>128</mn></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mfrac><mn>230945</mn><mn>128</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>109395</mn><mn>32</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>135135</mn><mn>64</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15015</mn><mn>32</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3465</mn><mn>128</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Polynomial Fraction Integer
+</div>
+
+
+
+
+<p>Streams display only a few of their initial elements.  Otherwise, they
+are ``lazy'': they only compute elements when you ask for them.
+</p>
+
+
+<p>Data structures are an important component for building application
+software. Advanced users can represent data for applications in
+optimal fashion.  In all, Axiom offers over forty kinds of
+aggregate data structures, ranging from mutable structures (such as
+cyclic lists and flexible arrays) to storage efficient structures
+(such as bit vectors).  As an example, streams are used as the
+internal data structure for power series.
+</p>
+
+
+<p>What is the series expansion
+of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>log</mo><mo>(</mo><mo>cot</mo><mo>(</mo><mi>x</mi><mo>)</mo><mo>)</mo></mrow></mstyle></math>
+about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>&#x03C0;</mi><mo>/</mo><mn>2</mn></mrow></mstyle></math>?
+</p>
+
+
+<p><!-- NOTE: The book has a different answer (see p6) -->
+</p>
+
+
+
+
+<div id="spadComm0-12" class="spadComm" >
+<form id="formComm0-12" action="javascript:makeRequest('0-12');" >
+<input id="comm0-12" type="text" class="command" style="width: 20em;" value="series(log(cot(x)),x = %pi/2)" />
+</form>
+<span id="commSav0-12" class="commSav" >series(log(cot(x)),x = %pi/2)</span>
+<div id="mathAns0-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mi>&#x03C0;</mi></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>7</mn><mn>90</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>62</mn><mn>2835</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>127</mn><mn>18900</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>146</mn><mn>66825</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: GeneralUnivariatePowerSeries(Expression Integer,x,pi/2)
+</div>
+
+
+
+<p>Series and streams make no attempt to compute <span class="italic">all</span> their
+elements!  Rather, they stand ready to deliver elements on demand.
+</p>
+
+
+<p>What is the coefficient of the  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>50</mn></mstyle></math>-th
+term of this series?
+</p>
+
+
+
+
+<div id="spadComm0-13" class="spadComm" >
+<form id="formComm0-13" action="javascript:makeRequest('0-13');" >
+<input id="comm0-13" type="text" class="command" style="width: 12em;" value="coefficient(%,50)" />
+</form>
+<span id="commSav0-13" class="commSav" >coefficient(%,50)</span>
+<div id="mathAns0-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>44590788901016030052447242300856550965644</mn><mn>7131469286438669111584090881309360354581359130859375</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.1.7"/>
+<div class="subsection"  id="subsec-0.1.7">
+<h3 class="subsectitle">0.1.7  Mathematical Structures</h3>
+
+
+<p>Axiom also has many kinds of mathematical structures.  These
+range from simple ones (like polynomials and matrices) to more
+esoteric ones (like ideals and Clifford algebras).  Most structures
+allow the construction of arbitrarily complicated ``types.''
+</p>
+
+
+<p>Even a simple input expression can
+result in a type with several levels.
+</p>
+
+
+
+
+<div id="spadComm0-14" class="spadComm" >
+<form id="formComm0-14" action="javascript:makeRequest('0-14');" >
+<input id="comm0-14" type="text" class="command" style="width: 20em;" value="matrix [ [x + %i,0], [1,-2] ]" />
+</form>
+<span id="commSav0-14" class="commSav" >matrix [ [x + %i,0], [1,-2] ]</span>
+<div id="mathAns0-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mi>x</mi><mo>+</mo><mi>i</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>2</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Complex Integer
+</div>
+
+
+
+<p>The Axiom interpreter builds types in response to user input.
+Often, the type of the result is changed in order to be applicable to
+an operation.
+</p>
+
+
+<p>The inverse operation requires that elements of the above matrices
+are fractions.
+</p>
+
+
+
+
+<div id="spadComm0-15" class="spadComm" >
+<form id="formComm0-15" action="javascript:makeRequest('0-15');" >
+<input id="comm0-15" type="text" class="command" style="width: 8em;" value="inverse(%)" />
+</form>
+<span id="commSav0-15" class="commSav" >inverse(%)</span>
+<div id="mathAns0-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>1</mn><mrow><mi>x</mi><mo>+</mo><mi>i</mi></mrow></mfrac></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Matrix Fraction Polynomial Complex Integer,...)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.1.8"/>
+<div class="subsection"  id="subsec-0.1.8">
+<h3 class="subsectitle">0.1.8  Pattern Matching</h3>
+
+
+
+<p>A convenient facility for symbolic computation is ``pattern
+matching.''  Suppose you have a trigonometric expression and you want
+to transform it to some equivalent form.  Use a  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>rule</mi></mstyle></math> command to
+describe the transformation rules you <span class="index">rule</span><a name="chapter-0-1"/> need.  Then give
+the rules a name and apply that name as a function to your
+trigonometric expression.
+</p>
+
+
+<p>Introduce two rewrite rules.
+</p>
+
+
+
+
+<div id="spadComm0-16" class="spadComm" >
+<form id="formComm0-16" action="javascript:makeRequest('0-16');" >
+<input id="comm0-16" type="text" class="command" style="width: 80em;" value="sinCosExpandRules := rule;
+&nbsp;&nbsp;sin(x+y) == sin(x)*cos(y) + sin(y)*cos(x);
+&nbsp;&nbsp; cos(x+y) == cos(x)*cos(y) - sin(x)*sin(y);
+&nbsp;&nbsp; sin(2*x) == 2*sin(x)*cos(x);
+&nbsp;&nbsp; cos(2*x) == cos(x)**2 - sin(x)**2
+" />
+</form>
+<span id="commSav0-16" class="commSav" >sinCosExpandRules := rule<br/>
+&nbsp;&nbsp;sin(x+y) == sin(x)*cos(y) + sin(y)*cos(x)<br/>
+&nbsp;&nbsp; cos(x+y) == cos(x)*cos(y) - sin(x)*sin(y)<br/>
+&nbsp;&nbsp; sin(2*x) == 2*sin(x)*cos(x)<br/>
+&nbsp;&nbsp; cos(2*x) == cos(x)**2 - sin(x)**2
+</span>
+<div id="mathAns0-16" ></div>
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;{sin(y&nbsp;+&nbsp;x)&nbsp;==&nbsp;cos(x)sin(y)&nbsp;+&nbsp;cos(y)sin(x),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;cos(y&nbsp;+&nbsp;x)&nbsp;==&nbsp;-&nbsp;sin(x)sin(y)&nbsp;+&nbsp;cos(x)cos(y),&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;sin(2x)&nbsp;==&nbsp;2cos(x)sin(x),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;&nbsp;cos(2x)&nbsp;==&nbsp;-&nbsp;sin(x)&nbsp;&nbsp;+&nbsp;cos(x)&nbsp;}<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Ruleset(Integer,Integer,Expression Integer)
+</div>
+
+
+
+<p>Apply the rules to a simple trigonometric expression.
+</p>
+
+
+
+
+<div id="spadComm0-17" class="spadComm" >
+<form id="formComm0-17" action="javascript:makeRequest('0-17');" >
+<input id="comm0-17" type="text" class="command" style="width: 21em;" value="sinCosExpandRules(sin(a+2*b+c))" />
+</form>
+<span id="commSav0-17" class="commSav" >sinCosExpandRules(sin(a+2*b+c))</span>
+<div id="mathAns0-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mrow><mo>cos</mo><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mi>b</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>b</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>b</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><mo>cos</mo><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mo>cos</mo><mo>(</mo><mi>b</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>c</mi><mo>)</mo></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>cos</mo><mo>(</mo><mi>c</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mi>b</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>b</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>c</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>b</mi><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msup><mrow><mo>cos</mo><mo>(</mo><mi>b</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>c</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>a</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+<p>Using input files, you can create your own library of transformation
+rules relevant to your applications, then selectively apply the rules
+you need.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.1.9"/>
+<div class="subsection"  id="subsec-0.1.9">
+<h3 class="subsectitle">0.1.9  Polymorphic Algorithms</h3>
+
+
+<p>All components of the Axiom algebra library are written in the
+Axiom library language.  This language is similar to the
+interactive language except for protocols that authors are obliged to
+follow.  The library language permits you to write ``polymorphic
+algorithms,'' algorithms defined to work in their most natural
+settings and over a variety of types.
+</p>
+
+
+<p>Define a system of polynomial equations  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm0-18" class="spadComm" >
+<form id="formComm0-18" action="javascript:makeRequest('0-18');" >
+<input id="comm0-18" type="text" class="command" style="width: 23em;" value="S := [3*x**3 + y + 1 = 0,y**2 = 4]" />
+</form>
+<span id="commSav0-18" class="commSav" >S := [3*x**3 + y + 1 = 0,y**2 = 4]</span>
+<div id="mathAns0-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><mi>y</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>=</mo><mn>4</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Equation Polynomial Integer
+</div>
+
+
+
+<p>Solve the system  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math> using rational number arithmetic and
+30 digits of accuracy.
+</p>
+
+
+
+
+<div id="spadComm0-19" class="spadComm" >
+<form id="formComm0-19" action="javascript:makeRequest('0-19');" >
+<input id="comm0-19" type="text" class="command" style="width: 12em;" value="solve(S,1/10**30)" />
+</form>
+<span id="commSav0-19" class="commSav" >solve(S,1/10**30)</span>
+<div id="mathAns0-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mo>-</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mn>1757879671211184245283070414507</mn><mn>2535301200456458802993406410752</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Polynomial Fraction Integer
+</div>
+
+
+
+<p>Solve  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math> with the solutions expressed in radicals.
+</p>
+
+
+
+
+<div id="spadComm0-20" class="spadComm" >
+<form id="formComm0-20" action="javascript:makeRequest('0-20');" >
+<input id="comm0-20" type="text" class="command" style="width: 10em;" value="radicalSolve(S)" />
+</form>
+<span id="commSav0-20" class="commSav" >radicalSolve(S)</span>
+<div id="mathAns0-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mrow><msqrt><mrow><mo>-</mo><mn>3</mn></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mrow><mo>]</mo></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mrow><msqrt><mrow><mo>-</mo><mn>3</mn></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mo>-</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mroot><mn>3</mn><mn>3</mn></mroot></mrow></mfrac></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mo>-</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mrow><mrow><msqrt><mrow><mo>-</mo><mn>1</mn></mrow></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mroot><mn>3</mn><mn>3</mn></mroot></mrow></mrow></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mo>-</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mrow><mrow><msqrt><mrow><mo>-</mo><mn>1</mn></mrow></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mroot><mn>3</mn><mn>3</mn></mroot></mrow></mrow></mfrac></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Expression Integer
+</div>
+
+
+
+<p>While these solutions look very different, the results were produced
+by the same internal algorithm!  The internal algorithm actually works
+with equations over any ``field.''  Examples of fields are the
+rational numbers, floating point numbers, rational functions, power
+series, and general expressions involving radicals.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.1.10"/>
+<div class="subsection"  id="subsec-0.1.10">
+<h3 class="subsectitle">0.1.10  Extensibility</h3>
+
+
+
+<p>Users and system developers alike can augment the Axiom library,
+all using one common language.  Library code, like interpreter code,
+is compiled into machine binary code for run-time efficiency.
+</p>
+
+
+<p>Using this language, you can create new computational types and new
+algorithmic packages.  All library code is polymorphic, described in
+terms of a database of algebraic properties.  By following the
+language protocols, there is an automatic, guaranteed interaction
+between your code and that of colleagues and system implementers.
+</p>
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-0.2.xhtml" style="margin-right: 10px;">Next Section 0.2 A Technical Introduction</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-0.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-0.2.xhtml
new file mode 100644
index 0000000..2d05129
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-0.2.xhtml
@@ -0,0 +1,654 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section0.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-0.1.xhtml" style="margin-right: 10px;">Previous Section 0.1 Introduction to Axiom</a><a href="section-0.3.xhtml" style="margin-right: 10px;">Next Section 0.3 Using Axiom as a Pocket Calculator</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-0.2">
+<h2 class="sectiontitle">0.2  A Technical Introduction</h2>
+
+
+<a name="ugTechIntro" class="label"/>
+
+<p>Axiom has both an <span class="italic">interactive language</span> for user
+interactions and a <span class="italic">programming language</span> for building library
+modules.  Like Modula 2, <span class="index">Modula 2</span><a name="chapter-0-2"/> PASCAL, <span class="index">PASCAL</span><a name="chapter-0-3"/>
+FORTRAN, <span class="index">FORTRAN</span><a name="chapter-0-4"/> and Ada, <span class="index">Ada</span><a name="chapter-0-5"/> the programming language
+emphasizes strict type-checking.  Unlike these languages, types in
+Axiom are dynamic objects: they are created at run-time in
+response to user commands.
+</p>
+
+
+<p>Here is the idea of the Axiom programming language in a
+nutshell.  Axiom types range from algebraic ones (like
+polynomials, matrices, and power series) to data structures (like
+lists, dictionaries, and input files).  Types combine in any
+meaningful way.  You can build polynomials of matrices, matrices of
+polynomials of power series, hash tables with symbolic keys and
+rational function entries, and so on.
+</p>
+
+
+<p><span class="italic">Categories</span> define algebraic properties to ensure mathematical
+correctness. They ensure, for example, that matrices of polynomials
+are OK, but matrices of input files are not.  Through categories,
+programs can discover that polynomials of continued fractions have a
+commutative multiplication whereas polynomials of matrices do not.
+</p>
+
+
+<p>Categories allow algorithms to be defined in their most natural
+setting. For example, an algorithm can be defined to solve polynomial
+equations over <span class="italic">any</span> field.  Likewise a greatest common divisor
+can compute the ``gcd'' of two elements from <span class="italic">any</span> Euclidean
+domain.  Categories foil attempts to compute meaningless ``gcds'', for
+example, of two hashtables.  Categories also enable algorithms to be
+compiled into machine code that can be run with arbitrary types.
+</p>
+
+
+<p>The Axiom interactive language is oriented towards ease-of-use.
+The Axiom interpreter uses type-inferencing to deduce the type
+of an object from user input.  Type declarations can generally be
+omitted for common types in the interactive language.
+</p>
+
+
+<p>So much for the nutshell.
+Here are these basic ideas described by ten design principles:
+</p>
+
+
+
+<a name="subsec-0.2.1"/>
+<div class="subsection"  id="subsec-0.2.1">
+<h3 class="subsectitle">0.2.1  Types are Defined by Abstract Datatype Programs</h3>
+
+
+
+<p>Basic types are called <span class="italic">domains of computation</span>, or,
+simply, <span class="italic">domains.</span>
+<span class="index">domain</span><a name="chapter-0-6"/>
+Domains are defined by Axiom programs of the form:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+Name(...):&nbsp;Exports&nbsp;==&nbsp;Implementation<br />
+</div>
+
+
+
+<p>Each domain has a capitalized <span class="teletype">Name</span> that is used to refer to the
+class of its members.  For example, <span class="teletype">Integer</span> denotes ``the
+class of integers,'' <span class="teletype">Float</span>, ``the class of floating point
+numbers,'' and <span class="teletype">String</span>, ``the class of strings.''
+</p>
+
+
+<p>The ``<span class="teletype">...</span>'' part following <span class="teletype">Name</span> lists zero or more
+parameters to the constructor. Some basic ones like <span class="teletype">Integer</span> take
+no parameters.  Others, like <span class="teletype">Matrix</span>, <span class="teletype">Polynomial</span> and 
+<span class="teletype">List</span>, take a single parameter that again must be a domain.  For
+example, <span class="teletype">Matrix(Integer)</span> denotes ``matrices over the integers,''
+<span class="teletype">Polynomial (Float)</span> denotes ``polynomial with floating point
+coefficients,'' and <span class="teletype">List (Matrix (Polynomial (Integer)))</span> denotes
+``lists of matrices of polynomials over the integers.''  There is no
+restriction on the number or type of parameters of a domain
+constructor.
+</p>
+
+
+<p>SquareMatrix(2,Integer) is an example of a domain constructor that accepts
+both a particular data value as well as an integer. In this case the
+number 2 specifies the number of rows and columns the square matrix
+will contain. Elements of the matricies are integers.
+</p>
+
+
+<p>The <span class="teletype">Exports</span> part specifies operations for creating and
+manipulating objects of the domain.  For example, type
+<span class="teletype">Integer</span> exports constants  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>, and
+operations <span class="spadopFrom" title="Integer">+</span>, <span class="spadopFrom" title="Integer">-</span>, and
+<span class="spadopFrom" title="Integer">*</span>.  While these operations are common, others
+such as <span class="spadfunFrom" >odd?</span><span class="index">odd?</span><a name="chapter-0-7"/><span class="index">Integer</span><a name="chapter-0-8"/> and <span class="spadfunFrom" >bit?</span><span class="index">bit?</span><a name="chapter-0-9"/><span class="index">Integer</span><a name="chapter-0-10"/>
+are not. In addition the Exports section can contain symbols that
+represent properties that can be tested. For example, the Category
+<span class="teletype">EntireRing</span> has the symbol <span class="teletype">noZeroDivisors</span> which asserts
+that if a product is zero then one of the factors must be zero.
+</p>
+
+
+<p>The <span class="teletype">Implementation</span> part defines functions that implement the
+exported operations of the domain.  These functions are frequently
+described in terms of another lower-level domain used to represent the
+objects of the domain. Thus the operation of adding two vectors of
+real numbers can be described and implemented using the addition
+operation from <span class="teletype">Float</span>. 
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.2.2"/>
+<div class="subsection"  id="subsec-0.2.2">
+<h3 class="subsectitle">0.2.2  The Type of Basic Objects is a Domain or Subdomain</h3>
+
+
+
+<p>Every Axiom object belongs to a <span class="italic">unique</span> domain.  The domain
+of an object is also called its <span class="italic">type.</span>  Thus the integer  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math>
+has type <span class="teletype">Integer</span> and the string <span class="teletype">"daniel"</span> has type
+<span class="teletype">String</span>.
+</p>
+
+
+<p>The type of an object, however, is not unique.  The type of integer
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math> is not only <span class="teletype">Integer</span> but <span class="teletype">NonNegativeInteger</span>,
+<span class="teletype">PositiveInteger</span>, and possibly, in general, any other
+``subdomain'' of the domain <span class="teletype">Integer</span>.  A <span class="italic">subdomain</span>
+<span class="index">subdomain</span><a name="chapter-0-11"/> is a domain with a ``membership predicate''.
+<span class="teletype">PositiveInteger</span> is a subdomain of <span class="teletype">Integer</span> with the
+predicate ``is the integer  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&gt;</mo><mn>0</mn></mrow></mstyle></math>?''.
+</p>
+
+
+<p>Subdomains with names are defined by abstract datatype programs
+similar to those for domains.  The <span class="italic">Export</span> part of a subdomain,
+however, must list a subset of the exports of the domain.  The <span class="teletype">Implementation</span> part optionally gives special definitions for
+subdomain objects.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.2.3"/>
+<div class="subsection"  id="subsec-0.2.3">
+<h3 class="subsectitle">0.2.3  Domains Have Types Called Categories</h3>
+
+
+
+<p>Domain and subdomains in Axiom are themselves objects that have
+types.  The type of a domain or subdomain is called a <span class="italic">category</span>.
+<span class="index">category</span><a name="chapter-0-12"/> Categories are described by programs of the form:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+Name(...):&nbsp;Category&nbsp;==&nbsp;Exports<br />
+</div>
+
+
+<p>The type of every category is the distinguished symbol <span class="teletype">Category.</span>
+The category <span class="teletype">Name</span> is used to designate the class of domains of
+that type.  For example, category <span class="teletype">Ring</span> designates the class
+of all rings.  Like domains, categories can take zero or more
+parameters as indicated by the ``<span class="teletype">...</span>'' part following <span class="teletype">Name.</span>  Two examples are <span class="teletype">Module(R)</span> and
+<span class="teletype">MatrixCategory(R,Row,Col)</span>.
+</p>
+
+
+<p>The <span class="teletype">Exports</span> part defines a set of operations.  For example,
+<span class="teletype">Ring</span> exports the operations <span class="spadopFrom" title="Ring">0</span>,
+<span class="spadopFrom" title="Ring">1</span>, <span class="spadopFrom" title="Ring">+</span>, <span class="spadopFrom" title="Ring">-</span>, and
+<span class="spadopFrom" title="Ring">*</span>.  Many algebraic domains such as
+<span class="teletype">Integer</span> and <span class="teletype">Polynomial (Float)</span> are rings.
+<span class="teletype">String</span> and <span class="teletype">List (R)</span> (for any domain  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>)
+are not.
+</p>
+
+
+<p>Categories serve to ensure the type-correctness.  The definition of
+matrices states <span class="teletype">Matrix(R: Ring)</span> requiring its single parameter
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math> to be a ring.  Thus a ``matrix of polynomials'' is allowed,
+but ``matrix of lists'' is not.
+</p>
+
+
+<p>Categories say nothing about representation. Domains, which are
+instances of category types, specify representations.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.2.4"/>
+<div class="subsection"  id="subsec-0.2.4">
+<h3 class="subsectitle">0.2.4  Operations Can Refer To Abstract Types</h3>
+
+
+
+<p>All operations have prescribed source and target types.  Types can be
+denoted by symbols that stand for domains, called ``symbolic
+domains.''  The following lines of Axiom code use a symbolic
+domain  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+R:&nbsp;Ring<br />
+power:&nbsp;(R,&nbsp;NonNegativeInteger):&nbsp;R&nbsp;-&gt;&nbsp;R<br />
+power(x,&nbsp;n)&nbsp;==&nbsp;x&nbsp;**&nbsp;n<br />
+</div>
+
+
+
+<p>Line 1 declares the symbol  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math> to be a ring.  Line 2 declares the
+type of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>power</mi></mstyle></math> in terms of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>.  From the definition on
+line 3,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>power</mi><mo>(</mo><mn>3</mn><mo>,</mo><mn>2</mn><mo>)</mo></mrow></mstyle></math> produces 9 for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>3</mn></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>R</mi><mo>=</mo></mrow></mstyle></math>
+<span class="teletype">Integer</span>.  Also,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>power</mi><mo>(</mo><mn>3</mn><mo>.</mo><mn>0</mn><mo>,</mo><mn>2</mn><mo>)</mo></mrow></mstyle></math> produces  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>9</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math> for
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>3</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>R</mi><mo>=</mo></mrow></mstyle></math> <span class="teletype">Float</span>.
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>power</mi><mo>(</mo><mo>"</mo><mi>oxford</mi><mo>"</mo><mo>,</mo><mn>2</mn><mo>)</mo></mrow></mstyle></math> however fails since  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>"</mo><mi>oxford</mi><mo>"</mo></mrow></mstyle></math> has type
+<span class="teletype">String</span> which is not a ring.
+</p>
+
+
+<p>Using symbolic domains, algorithms can be defined in their most
+natural or general setting.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.2.5"/>
+<div class="subsection"  id="subsec-0.2.5">
+<h3 class="subsectitle">0.2.5  Categories Form Hierarchies</h3>
+
+
+
+<p>Categories form hierarchies (technically, directed-acyclic graphs).  A
+simplified hierarchical world of algebraic categories is shown below.
+At the top of this world is <span class="teletype">SetCategory</span>, the class of
+algebraic sets.  The notions of parents, ancestors, and descendants is
+clear.  Thus ordered sets (domains of category <span class="teletype">OrderedSet</span>)
+and rings are also algebraic sets.  Likewise, fields and integral
+domains are rings and algebraic sets.  However fields and integral
+domains are not ordered sets.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+SetCategory&nbsp;+----&nbsp;Ring&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----&nbsp;IntegralDomain&nbsp;----&nbsp;Field<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+----&nbsp;Finite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;---+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+----&nbsp;OrderedSet&nbsp;-----+&nbsp;OrderedFinite<br />
+</div>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>Figure 1.  A  simplified category hierarchy.
+</p>
+
+
+
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.2.6"/>
+<div class="subsection"  id="subsec-0.2.6">
+<h3 class="subsectitle">0.2.6  Domains Belong to Categories by Assertion</h3>
+
+
+
+<p>A category designates a class of domains.  Which domains?  You might
+think that <span class="teletype">Ring</span> designates the class of all domains that
+export  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>, <span class="spadopFrom" title="Integer">+</span>,
+<span class="spadopFrom" title="Integer">-</span>, and <span class="spadopFrom" title="Integer">*</span>.  But this is not
+so.  Each domain must <span class="italic">assert</span> which categories it belongs to.
+</p>
+
+
+<p>The <span class="teletype">Export</span> part of the definition for <span class="teletype">Integer</span> reads,
+for example:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+Join(OrderedSet,&nbsp;IntegralDomain,&nbsp;&nbsp;...)&nbsp;with&nbsp;...<br />
+</div>
+
+
+
+<p>This definition asserts that <span class="teletype">Integer</span> is both an ordered set
+and an integral domain.  In fact, <span class="teletype">Integer</span> does not
+explicitly export constants  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and operations
+<span class="spadopFrom" title="Ring">+</span>, <span class="spadopFrom" title="Ring">-</span> and <span class="spadopFrom" title="Ring">*</span> at
+all: it inherits them all from  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Ring</mi></mstyle></math>!  Since
+<span class="teletype">IntegralDomain</span> is a descendant of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Ring</mi></mstyle></math>,
+<span class="teletype">Integer</span> is therefore also a ring.
+</p>
+
+
+<p>Assertions can be conditional.  For example, <span class="teletype">Complex(R)</span>
+defines its exports by:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+Ring&nbsp;with&nbsp;...&nbsp;if&nbsp;R&nbsp;has&nbsp;Field&nbsp;then&nbsp;Field&nbsp;...<br />
+</div>
+
+
+<p>Thus <span class="teletype">Complex(Float)</span> is a field but <span class="teletype">Complex(Integer)</span>
+is not since <span class="teletype">Integer</span> is not a field.
+</p>
+
+
+<p>You may wonder: ``Why not simply let the set of operations determine
+whether a domain belongs to a given category?''.  Axiom allows
+operation names (for example, <span style="font-weight: bold;"> norm</span>) to have very different
+meanings in different contexts.  The meaning of an operation in
+Axiom is determined by context.  By associating operations with
+categories, operation names can be reused whenever appropriate or
+convenient to do so.  As a simple example, the operation <span class="teletype">&lt;</span>
+might be used to denote lexicographic-comparison in an algorithm.
+However, it is wrong to use the same <span class="teletype">&lt;</span> with this definition
+of absolute-value: <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>abs</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>=</mo><mo>=</mo><mi>if</mi><mspace width="0.5 em" /><mi>x</mi><mo>&lt;</mo><mn>0</mn><mspace width="0.5 em" /><mi>then</mi><mo>-</mo><mi>x</mi><mspace width="0.5 em" /><mi>else</mi><mspace width="0.5 em" /><mi>x</mi></mrow></mstyle></math> Such a
+definition for <span class="teletype">abs</span> in Axiom is protected by context:
+argument  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is required to be a member of a domain of category
+<span class="teletype">OrderedSet</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.2.7"/>
+<div class="subsection"  id="subsec-0.2.7">
+<h3 class="subsectitle">0.2.7  Packages Are Clusters of Polymorphic Operations</h3>
+
+
+
+<p>In Axiom, facilities for symbolic integration, solution of
+equations, and the like are placed in ``packages''.  A <span class="italic">package</span>
+<span class="index">package</span><a name="chapter-0-13"/> is a special kind of domain: one whose exported
+operations depend solely on the parameters of the constructor and/or
+explicit domains. Packages, unlike Domains, do not specify the
+representation.
+</p>
+
+
+<p>If you want to use Axiom, for example, to define some algorithms
+for solving equations of polynomials over an arbitrary field  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>F</mi></mstyle></math>,
+you can do so with a package of the form:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+MySolve(F:&nbsp;Field):&nbsp;Exports&nbsp;==&nbsp;Implementation<br />
+</div>
+
+
+<p>where <span class="teletype">Exports</span> specifies the <span style="font-weight: bold;"> solve</span> operations
+you wish to export from the domain and the <span class="teletype">Implementation</span>
+defines functions for implementing your algorithms.  Once Axiom has
+compiled your package, your algorithms can then be used for any <span class="teletype">F</span>:
+floating-point numbers, rational numbers, complex rational functions,
+and power series, to name a few.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.2.8"/>
+<div class="subsection"  id="subsec-0.2.8">
+<h3 class="subsectitle">0.2.8  The Interpreter Builds Domains Dynamically</h3>
+
+
+
+<p>The Axiom interpreter reads user input then builds whatever types
+it needs to perform the indicated computations.
+For example, to create the matrix
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+using the command:
+</p>
+
+
+
+
+<div id="spadComm0-21" class="spadComm" >
+<form id="formComm0-21" action="javascript:makeRequest('0-21');" >
+<input id="comm0-21" type="text" class="command" style="width: 36em;" value="M = [ [x**2+1,0],[0,x / 2] ]::Matrix(POLY(FRAC(INT)))" />
+</form>
+<span id="commSav0-21" class="commSav" >M = [ [x**2+1,0],[0,x / 2] ]::Matrix(POLY(FRAC(INT)))</span>
+<div id="mathAns0-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>M</mi><mo>=</mo><mrow><mo>[</mo><mtable><mtr><mtd><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>x</mi><mo>/</mo><mn>2</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Fraction Integer
+</div>
+
+
+<p>the interpreter first loads the modules <span class="teletype">Matrix</span>,
+<span class="teletype">Polynomial</span>, <span class="teletype">Fraction</span>, and <span class="teletype">Integer</span>
+from the library, then builds the <span class="italic">domain tower</span> ``matrices of
+polynomials of rational numbers (i.e. fractions of integers)''.
+</p>
+
+
+<p>You can watch the loading process by first typing 
+</p>
+
+
+
+
+<div id="spadComm0-22" class="spadComm" >
+<form id="formComm0-22" action="javascript:makeRequest('0-22');" >
+<input id="comm0-22" type="text" class="command" style="width: 16em;" value=")set message autoload on" />
+</form>
+<span id="commSav0-22" class="commSav" >)set message autoload on</span>
+<div id="mathAns0-22" ></div>
+</div>
+
+
+<p>In addition to the named
+domains above many additional domains and categories are loaded.
+Most systems are preloaded with such common types. For efficiency
+reasons the most common domains are preloaded but most (there are
+more than 1100 domains, categories, and packages) are not. Once these
+domains are loaded they are immediately available to the interpreter.
+</p>
+
+
+<p>Once a domain tower is built, it contains all the operations specific
+to the type. Computation proceeds by calling operations that exist in
+the tower.  For example, suppose that the user asks to square the
+above matrix.  To do this, the function <span class="spadopFrom" title="Matrix">*</span> from
+<span class="teletype">Matrix</span> is passed the matrix  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>M</mi></mstyle></math> to compute  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>M</mi><mo>*</mo><mi>M</mi></mrow></mstyle></math>.  
+The function is also passed an environment containing  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>
+that, in this case, is <span class="teletype">Polynomial (Fraction (Integer))</span>.
+This results in the successive calling of the <span class="spadopFrom" title="Fraction">*</span>
+operations from <span class="teletype">Polynomial</span>, then from <span class="teletype">Fraction</span>,
+and then finally from <span class="teletype">Integer</span>.
+</p>
+
+
+<p>Categories play a policing role in the building of domains.  Because
+the argument of <span class="teletype">Matrix</span> is required to be a <span class="teletype">Ring</span>,
+Axiom will not build nonsensical types such as ``matrices of
+input files''.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.2.9"/>
+<div class="subsection"  id="subsec-0.2.9">
+<h3 class="subsectitle">0.2.9  Axiom Code is Compiled</h3>
+
+
+
+<p>Axiom programs are statically compiled to machine code, then
+placed into library modules.  Categories provide an important role in
+obtaining efficient object code by enabling:
+</p>
+
+
+
+<ul>
+<li>
+ static type-checking at compile time;
+</li>
+<li> fast linkage to operations in domain-valued parameters;
+</li>
+<li> optimization techniques to be used for partially specified types
+(operations for ``vectors of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>'', for instance, can be open-coded even
+though <span class="teletype">R</span> is unknown).
+</li>
+</ul>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.2.10"/>
+<div class="subsection"  id="subsec-0.2.10">
+<h3 class="subsectitle">0.2.10  Axiom is Extensible</h3>
+
+
+
+<p>Users and system implementers alike use the Axiom language to
+add facilities to the Axiom library.  The entire Axiom
+library is in fact written in the Axiom source code and
+available for user modification and/or extension.
+</p>
+
+
+<p>Axiom's use of abstract datatypes clearly separates the exports
+of a domain (what operations are defined) from its implementation (how
+the objects are represented and operations are defined).  Users of a
+domain can thus only create and manipulate objects through these
+exported operations.  This allows implementers to ``remove and
+replace'' parts of the library safely by newly upgraded (and, we hope,
+correct) implementations without consequence to its users.
+</p>
+
+
+<p>Categories protect names by context, making the same names available
+for use in other contexts.  Categories also provide for code-economy.
+Algorithms can be parameterized categorically to characterize their
+correct and most general context.  Once compiled, the same machine
+code is applicable in all such contexts.
+</p>
+
+
+<p>Finally, Axiom provides an automatic, guaranteed interaction
+between new and old code.  For example:
+</p>
+
+
+
+<ul>
+<li>
+ if you write a new algorithm that requires a parameter to be a
+field, then your algorithm will work automatically with every field
+defined in the system; past, present, or future.
+</li>
+<li> if you introduce a new domain constructor that produces a field,
+then the objects of that domain can be used as parameters to any algorithm
+using field objects defined in the system; past, present, or future.
+</li>
+</ul>
+
+
+
+<p>These are the key ideas.  For further information, we particularly
+recommend your reading chapters 11, 12, and 13, where these ideas are
+explained in greater detail.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-0.1.xhtml" style="margin-right: 10px;">Previous Section 0.1 Introduction to Axiom</a><a href="section-0.3.xhtml" style="margin-right: 10px;">Next Section 0.3 Using Axiom as a Pocket Calculator</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-0.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-0.3.xhtml
new file mode 100644
index 0000000..da619c7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-0.3.xhtml
@@ -0,0 +1,998 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section0.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-0.2.xhtml" style="margin-right: 10px;">Previous Section 0.2 A Technical Introduction</a><a href="section-0.4.xhtml" style="margin-right: 10px;">Next Section 0.4 Using Axiom as a Symbolic Calculator</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-0.3">
+<h2 class="sectiontitle">0.3  Using Axiom as a Pocket Calculator</h2>
+
+
+<p>At the simplest level Axiom can be used as a pocket calculator
+where expressions involving numbers and operators are entered 
+directly in infix notation. In this sense the more advanced
+features of the calculator can be regarded as operators (e.g 
+<span style="font-weight: bold;"> sin</span>, <span style="font-weight: bold;"> cos</span>, etc).
+</p>
+
+
+
+<a name="subsec-0.3.1"/>
+<div class="subsection"  id="subsec-0.3.1">
+<h3 class="subsectitle">0.3.1  Basic Arithmetic</h3>
+
+
+<p>An example of this might be to calculate the cosine of 2.45 (in radians).
+To do this one would type:
+</p>
+
+
+
+
+<div id="spadComm0-23" class="spadComm" >
+<form id="formComm0-23" action="javascript:makeRequest('0-23');" >
+<input id="comm0-23" type="text" class="command" style="width: 6em;" value="cos 2.45" />
+</form>
+<span id="commSav0-23" class="commSav" >cos 2.45</span>
+<div id="mathAns0-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>7702312540</mn><mn>473073417</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Before proceeding any further it would be best to explain the previous 
+three lines. Firstly the text ``(1) <span class="teletype">-></span> '' is part of the prompt that the
+Axiom system provides when in interactive mode. The full prompt has other 
+text preceding this but it is not relevant here. The number in parenthesis
+is the step number of the input which may be used to refer to the 
+<span class="slant">results</span> of previous calculations. The step number appears at the start
+of the second line to tell you which step the result belongs to. Since the
+interpreter probably loaded numberous libraries to calculate the result given
+above and listed each one in the prcess, there could easily be several pages
+of text between your input and the answer.
+</p>
+
+
+<p>The last line contains the type of the result. The type <span class="teletype">Float</span> is used
+to represent real numbers of arbitrary size and precision (where the user is
+able to define how big arbitrary is -- the default is 20 digits but can be
+as large as your computer system can handle). The type of the result can help
+track down mistakes in your input if you don't get the answer you expected.
+</p>
+
+
+<p>Other arithmetic operations such as addition, subtraction, and multiplication
+behave as expected:
+</p>
+
+
+
+
+<div id="spadComm0-24" class="spadComm" >
+<form id="formComm0-24" action="javascript:makeRequest('0-24');" >
+<input id="comm0-24" type="text" class="command" style="width: 9em;" value="6.93 * 4.1328" />
+</form>
+<span id="commSav0-24" class="commSav" >6.93 * 4.1328</span>
+<div id="mathAns0-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>28</mn><mo>.</mo><mn>640304</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm0-25" class="spadComm" >
+<form id="formComm0-25" action="javascript:makeRequest('0-25');" >
+<input id="comm0-25" type="text" class="command" style="width: 9em;" value="6.93 / 4.1328" />
+</form>
+<span id="commSav0-25" class="commSav" >6.93 / 4.1328</span>
+<div id="mathAns0-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>6768292682</mn><mn>926829268</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>but integer division isn't quite so obvious. For example, if one types:
+</p>
+
+
+
+
+<div id="spadComm0-26" class="spadComm" >
+<form id="formComm0-26" action="javascript:makeRequest('0-26');" >
+<input id="comm0-26" type="text" class="command" style="width: 2em;" value="4/6" />
+</form>
+<span id="commSav0-26" class="commSav" >4/6</span>
+<div id="mathAns0-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>2</mn><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>a fractional result is obtained. The function used to display fractions
+attempts to produce the most readable answer. In the example:
+</p>
+
+
+
+
+<div id="spadComm0-27" class="spadComm" >
+<form id="formComm0-27" action="javascript:makeRequest('0-27');" >
+<input id="comm0-27" type="text" class="command" style="width: 2em;" value="4/2" />
+</form>
+<span id="commSav0-27" class="commSav" >4/2</span>
+<div id="mathAns0-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>the result is stored as the fraction 2/1 but is displayed as the integer 2.
+This fraction could be converted to type <span class="teletype">Integer</span> with no loss of
+informatin but Axiom will not do so automatically.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.3.2"/>
+<div class="subsection"  id="subsec-0.3.2">
+<h3 class="subsectitle">0.3.2  Type Conversion</h3>
+
+
+<p>To obtain the floating point value of a fraction one must convert (
+<span style="font-weight: bold;"> conversions</span> are applied by the user and 
+<span style="font-weight: bold;"> coercions</span> are applied automatically by the interpreter) the result
+to type <span class="teletype">Float</span> using the ``::'' operator as follows: 
+</p>
+
+
+
+
+<div id="spadComm0-28" class="spadComm" >
+<form id="formComm0-28" action="javascript:makeRequest('0-28');" >
+<input id="comm0-28" type="text" class="command" style="width: 8em;" value="(4.6)::Float" />
+</form>
+<span id="commSav0-28" class="commSav" >(4.6)::Float</span>
+<div id="mathAns0-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>4</mn><mo>.</mo><mn>6</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Although Axiom can convert this back to a fraction it might not be the
+same fraction you started with as due to rounding errors. For example, the
+following conversion appears to be without error but others might not:
+</p>
+
+
+
+
+<div id="spadComm0-29" class="spadComm" >
+<form id="formComm0-29" action="javascript:makeRequest('0-29');" >
+<input id="comm0-29" type="text" class="command" style="width: 14em;" value="%::Fraction Integer" />
+</form>
+<span id="commSav0-29" class="commSav" >%::Fraction Integer</span>
+<div id="mathAns0-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>23</mn><mn>5</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>where ``%'' represents the previous <span class="italic">result</span> (not the calculation).
+</p>
+
+
+<p>Although Axiom has the ability to work with floating-point numbers to
+a very high precision it must be remembered that calculations with these
+numbers are <span style="font-weight: bold;"> not</span> exact. Since Axiom is a computer algebra package and
+not a numerical solutions package this should not create too many problems.
+The idea is that the user should use Axiom to do all the necessary symbolic
+manipulation and only at the end should actual numerical results be extracted.
+</p>
+
+
+<p>If you bear in mind that Axiom appears to store expressions just as you have
+typed them and does not perform any evalutation of them unless forced to then
+programming in the system will be much easier. It means that anything you
+ask Axiom to do (within reason) will be carried with complete accuracy.
+</p>
+
+
+<p>In the previous examples the ``::'' operator was used to convert values from
+one type to another. This type conversion is not possible for all values.
+For instance, it is not possible to convert the number 3.4 to an integer
+type since it can't be represented as an integer. The number 4.0 can be 
+converted to an integer type since it has no fractional part.
+</p>
+
+
+<p>Conversion from floating point values to integers is performed using the 
+functions <span style="font-weight: bold;"> round</span> and <span style="font-weight: bold;"> truncate</span>. The first of these rounds a 
+floating point number to the nearest integer while the other truncates
+(i.e. removes the fractional part). Both functions return the result as a
+<span style="font-weight: bold;"> floating point</span> number. To extract the fractional part of a floating
+point number use the function <span style="font-weight: bold;"> fractionPart</span> but note that the sign
+of the result depends on the sign of the argument. Axiom obtains the
+fractional partof  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> using  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>-</mo><mi>truncate</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>:
+</p>
+
+
+
+
+<div id="spadComm0-30" class="spadComm" >
+<form id="formComm0-30" action="javascript:makeRequest('0-30');" >
+<input id="comm0-30" type="text" class="command" style="width: 10em;" value="round(3.77623)" />
+</form>
+<span id="commSav0-30" class="commSav" >round(3.77623)</span>
+<div id="mathAns0-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>4</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm0-31" class="spadComm" >
+<form id="formComm0-31" action="javascript:makeRequest('0-31');" >
+<input id="comm0-31" type="text" class="command" style="width: 10em;" value="round(-3.77623)" />
+</form>
+<span id="commSav0-31" class="commSav" >round(-3.77623)</span>
+<div id="mathAns0-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>4</mn><mo>.</mo><mn>0</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm0-32" class="spadComm" >
+<form id="formComm0-32" action="javascript:makeRequest('0-32');" >
+<input id="comm0-32" type="text" class="command" style="width: 10em;" value="truncate(9.235)" />
+</form>
+<span id="commSav0-32" class="commSav" >truncate(9.235)</span>
+<div id="mathAns0-32" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>9</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm0-33" class="spadComm" >
+<form id="formComm0-33" action="javascript:makeRequest('0-33');" >
+<input id="comm0-33" type="text" class="command" style="width: 11em;" value="truncate(-9.654)" />
+</form>
+<span id="commSav0-33" class="commSav" >truncate(-9.654)</span>
+<div id="mathAns0-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>9</mn><mo>.</mo><mn>0</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm0-34" class="spadComm" >
+<form id="formComm0-34" action="javascript:makeRequest('0-34');" >
+<input id="comm0-34" type="text" class="command" style="width: 15em;" value="fractionPart(-3.77623)" />
+</form>
+<span id="commSav0-34" class="commSav" >fractionPart(-3.77623)</span>
+<div id="mathAns0-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>77623</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.3.3"/>
+<div class="subsection"  id="subsec-0.3.3">
+<h3 class="subsectitle">0.3.3  Useful Functions</h3>
+
+
+<p>To obtain the absolute value of a number the <span style="font-weight: bold;"> abs</span> function can be used.
+This takes a single argument which is usually an integer or a floating point
+value but doesn't necessarily have to be. The sign of a value can be obtained
+via the <span style="font-weight: bold;"> sign</span> function which rturns  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>, or  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> depending on the 
+sign of the argument.
+</p>
+
+
+
+
+<div id="spadComm0-35" class="spadComm" >
+<form id="formComm0-35" action="javascript:makeRequest('0-35');" >
+<input id="comm0-35" type="text" class="command" style="width: 4em;" value="abs(4)" />
+</form>
+<span id="commSav0-35" class="commSav" >abs(4)</span>
+<div id="mathAns0-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-36" class="spadComm" >
+<form id="formComm0-36" action="javascript:makeRequest('0-36');" >
+<input id="comm0-36" type="text" class="command" style="width: 5em;" value="abs(-3)" />
+</form>
+<span id="commSav0-36" class="commSav" >abs(-3)</span>
+<div id="mathAns0-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-37" class="spadComm" >
+<form id="formComm0-37" action="javascript:makeRequest('0-37');" >
+<input id="comm0-37" type="text" class="command" style="width: 12em;" value="abs(-34254.12314)" />
+</form>
+<span id="commSav0-37" class="commSav" >abs(-34254.12314)</span>
+<div id="mathAns0-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>34254</mn><mo>.</mo><mn>12314</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm0-38" class="spadComm" >
+<form id="formComm0-38" action="javascript:makeRequest('0-38');" >
+<input id="comm0-38" type="text" class="command" style="width: 14em;" value="sign(-49543.2345346)" />
+</form>
+<span id="commSav0-38" class="commSav" >sign(-49543.2345346)</span>
+<div id="mathAns0-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-39" class="spadComm" >
+<form id="formComm0-39" action="javascript:makeRequest('0-39');" >
+<input id="comm0-39" type="text" class="command" style="width: 5em;" value="sign(0)" />
+</form>
+<span id="commSav0-39" class="commSav" >sign(0)</span>
+<div id="mathAns0-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-40" class="spadComm" >
+<form id="formComm0-40" action="javascript:makeRequest('0-40');" >
+<input id="comm0-40" type="text" class="command" style="width: 12em;" value="sign(234235.42354)" />
+</form>
+<span id="commSav0-40" class="commSav" >sign(234235.42354)</span>
+<div id="mathAns0-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Tests on values can be done using various functions which are generally more
+efficient than using relational operators such as  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>=</mo></mstyle></math> particularly if the 
+value is a matrix. Examples of some of these functions are:
+</p>
+
+
+
+
+<div id="spadComm0-41" class="spadComm" >
+<form id="formComm0-41" action="javascript:makeRequest('0-41');" >
+<input id="comm0-41" type="text" class="command" style="width: 10em;" value="positive?(-234)" />
+</form>
+<span id="commSav0-41" class="commSav" >positive?(-234)</span>
+<div id="mathAns0-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm0-42" class="spadComm" >
+<form id="formComm0-42" action="javascript:makeRequest('0-42');" >
+<input id="comm0-42" type="text" class="command" style="width: 10em;" value="negative?(-234)" />
+</form>
+<span id="commSav0-42" class="commSav" >negative?(-234)</span>
+<div id="mathAns0-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm0-43" class="spadComm" >
+<form id="formComm0-43" action="javascript:makeRequest('0-43');" >
+<input id="comm0-43" type="text" class="command" style="width: 6em;" value="zero?(42)" />
+</form>
+<span id="commSav0-43" class="commSav" >zero?(42)</span>
+<div id="mathAns0-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm0-44" class="spadComm" >
+<form id="formComm0-44" action="javascript:makeRequest('0-44');" >
+<input id="comm0-44" type="text" class="command" style="width: 5em;" value="one?(1)" />
+</form>
+<span id="commSav0-44" class="commSav" >one?(1)</span>
+<div id="mathAns0-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm0-45" class="spadComm" >
+<form id="formComm0-45" action="javascript:makeRequest('0-45');" >
+<input id="comm0-45" type="text" class="command" style="width: 6em;" value="odd?(23)" />
+</form>
+<span id="commSav0-45" class="commSav" >odd?(23)</span>
+<div id="mathAns0-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm0-46" class="spadComm" >
+<form id="formComm0-46" action="javascript:makeRequest('0-46');" >
+<input id="comm0-46" type="text" class="command" style="width: 8em;" value="odd?(9.435)" />
+</form>
+<span id="commSav0-46" class="commSav" >odd?(9.435)</span>
+<div id="mathAns0-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm0-47" class="spadComm" >
+<form id="formComm0-47" action="javascript:makeRequest('0-47');" >
+<input id="comm0-47" type="text" class="command" style="width: 7em;" value="even?(-42)" />
+</form>
+<span id="commSav0-47" class="commSav" >even?(-42)</span>
+<div id="mathAns0-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm0-48" class="spadComm" >
+<form id="formComm0-48" action="javascript:makeRequest('0-48');" >
+<input id="comm0-48" type="text" class="command" style="width: 7em;" value="prime?(37)" />
+</form>
+<span id="commSav0-48" class="commSav" >prime?(37)</span>
+<div id="mathAns0-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm0-49" class="spadComm" >
+<form id="formComm0-49" action="javascript:makeRequest('0-49');" >
+<input id="comm0-49" type="text" class="command" style="width: 8em;" value="prime?(-37)" />
+</form>
+<span id="commSav0-49" class="commSav" >prime?(-37)</span>
+<div id="mathAns0-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Some other functions that are quite useful for manipulating numerical values
+are:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+sin(x)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sine&nbsp;of&nbsp;x<br />
+cos(x)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cosine&nbsp;of&nbsp;x<br />
+tan(x)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tangent&nbsp;of&nbsp;x<br />
+asin(x)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arcsin&nbsp;of&nbsp;x<br />
+acos(x)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arccos&nbsp;of&nbsp;x<br />
+atan(x)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arctangent&nbsp;of&nbsp;x<br />
+gcd(x,y)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Greatest&nbsp;common&nbsp;divisor&nbsp;of&nbsp;x&nbsp;and&nbsp;y<br />
+lcm(x,y)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lowest&nbsp;common&nbsp;multiple&nbsp;of&nbsp;x&nbsp;and&nbsp;y<br />
+max(x,y)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum&nbsp;of&nbsp;x&nbsp;and&nbsp;y<br />
+min(x,y)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Minimum&nbsp;of&nbsp;x&nbsp;and&nbsp;y<br />
+factorial(x)&nbsp;&nbsp;&nbsp;Factorial&nbsp;of&nbsp;x<br />
+factor(x)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prime&nbsp;factors&nbsp;of&nbsp;x<br />
+divide(x,y)&nbsp;&nbsp;&nbsp;&nbsp;Quotient&nbsp;and&nbsp;remainder&nbsp;of&nbsp;x/y<br />
+</div>
+
+
+
+<p>Some simple infix and prefix operators:
+</p>
+
+
+
+<div class="verbatim"><br />
++&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Addition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subtraction<br />
+-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Numerical&nbsp;Negation&nbsp;&nbsp;&nbsp;~&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logical&nbsp;Negation<br />
+/&amp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conjunction&nbsp;(AND)&nbsp;&nbsp;&nbsp;&nbsp;\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disjunction&nbsp;(OR)<br />
+and&nbsp;&nbsp;&nbsp;&nbsp;Logical&nbsp;AND&nbsp;(/\)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logical&nbsp;OR&nbsp;(\/)<br />
+not&nbsp;&nbsp;&nbsp;&nbsp;Logical&nbsp;Negation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exponentiation<br />
+*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Multiplication&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Division<br />
+quo&nbsp;&nbsp;&nbsp;&nbsp;Quotient&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rem&nbsp;&nbsp;&nbsp;&nbsp;Remainder<br />
+&lt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;less&nbsp;than&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;greater&nbsp;than<br />
+&lt;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;less&nbsp;than&nbsp;or&nbsp;equal&nbsp;&nbsp;&nbsp;&gt;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;greater&nbsp;than&nbsp;or&nbsp;equal<br />
+</div>
+
+
+
+<p>Some useful Axiom macros:
+</p>
+
+
+
+<div class="verbatim"><br />
+%i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;square&nbsp;root&nbsp;of&nbsp;-1<br />
+%e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;base&nbsp;of&nbsp;the&nbsp;natural&nbsp;logarithm<br />
+%pi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pi<br />
+%infinity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Infinity<br />
+%plusInfinity&nbsp;&nbsp;&nbsp;Positive&nbsp;Infinity<br />
+%minusInfinity&nbsp;&nbsp;Negative&nbsp;Infinity<br />
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-0.2.xhtml" style="margin-right: 10px;">Previous Section 0.2 A Technical Introduction</a><a href="section-0.4.xhtml" style="margin-right: 10px;">Next Section 0.4 Using Axiom as a Symbolic Calculator</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-0.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-0.4.xhtml
new file mode 100644
index 0000000..0dbc2a2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-0.4.xhtml
@@ -0,0 +1,1312 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section0.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-0.3.xhtml" style="margin-right: 10px;">Previous Section 0.3 Using Axiom as a Pocket Calculator</a><a href="section-0.5.xhtml" style="margin-right: 10px;">Next Section 0.5 General Points about Axiom</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-0.4">
+<h2 class="sectiontitle">0.4  Using Axiom as a Symbolic Calculator</h2>
+
+
+<p>In the previous section all the examples involved numbers and simple
+functions. Also none of the expressions entered were assigned to anything.
+In this section we will move on to simple algebra (i.e. expressions involving
+symbols and other features available on more sophisticated calculators).
+</p>
+
+
+
+<a name="subsec-0.4.1"/>
+<div class="subsection"  id="subsec-0.4.1">
+<h3 class="subsectitle">0.4.1  Expressions Involving Symbols</h3>
+
+
+<p>Expressions involving symbols are entered just as they are written down,
+for example:
+</p>
+
+
+
+
+<div id="spadComm0-50" class="spadComm" >
+<form id="formComm0-50" action="javascript:makeRequest('0-50');" >
+<input id="comm0-50" type="text" class="command" style="width: 11em;" value="xSquared := x**2" />
+</form>
+<span id="commSav0-50" class="commSav" >xSquared := x**2</span>
+<div id="mathAns0-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>where the assignment operator ``:='' represents immediate assignment. Later
+it will be seen that this form of assignment is not always desirable and
+the use of the delayed assignment operator ``=='' will be introduced. The
+type of the result is <span class="teletype">Polynomial Integer</span> which is used to represent
+polynomials with integer coefficients. Some other examples along similar
+lines are:
+</p>
+
+
+
+
+<div id="spadComm0-51" class="spadComm" >
+<form id="formComm0-51" action="javascript:makeRequest('0-51');" >
+<input id="comm0-51" type="text" class="command" style="width: 13em;" value="xDummy := 3.21*x**2" />
+</form>
+<span id="commSav0-51" class="commSav" >xDummy := 3.21*x**2</span>
+<div id="mathAns0-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>.</mo><mn>21</mn></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Float
+</div>
+
+
+
+
+
+<div id="spadComm0-52" class="spadComm" >
+<form id="formComm0-52" action="javascript:makeRequest('0-52');" >
+<input id="comm0-52" type="text" class="command" style="width: 11em;" value="xDummy := x**2.5" />
+</form>
+<span id="commSav0-52" class="commSav" >xDummy := x**2.5</span>
+<div id="mathAns0-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msqrt><mi>x</mi></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Float
+</div>
+
+
+
+
+
+<div id="spadComm0-53" class="spadComm" >
+<form id="formComm0-53" action="javascript:makeRequest('0-53');" >
+<input id="comm0-53" type="text" class="command" style="width: 11em;" value="xDummy := x**3.3" />
+</form>
+<span id="commSav0-53" class="commSav" >xDummy := x**3.3</span>
+<div id="mathAns0-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mroot><mi>x</mi><mn>10</mn></mroot></mrow><mn>3</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Float
+</div>
+
+
+
+
+
+<div id="spadComm0-54" class="spadComm" >
+<form id="formComm0-54" action="javascript:makeRequest('0-54');" >
+<input id="comm0-54" type="text" class="command" style="width: 15em;" value="xyDummy := x**2 - y**2" />
+</form>
+<span id="commSav0-54" class="commSav" >xyDummy := x**2 - y**2</span>
+<div id="mathAns0-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Given that we can define expressions involving symbols, how do we actually
+compute the result when the symbols are assigned values? The answer is to
+use the <span style="font-weight: bold;"> eval</span> function which takes an expression as its first argument
+followed by a list of assignments. For example, to evaluate the expressions
+<span style="font-weight: bold;"> XDummy</span> and {xyDummy} resulting from their respective assignments above
+we type:
+</p>
+
+
+
+
+<div id="spadComm0-55" class="spadComm" >
+<form id="formComm0-55" action="javascript:makeRequest('0-55');" >
+<input id="comm0-55" type="text" class="command" style="width: 11em;" value="eval(xDummy,x=3)" />
+</form>
+<span id="commSav0-55" class="commSav" >eval(xDummy,x=3)</span>
+<div id="mathAns0-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>37</mn><mo>.</mo><mn>5405075985</mn><mn>29552193</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Float
+</div>
+
+
+
+
+
+<div id="spadComm0-56" class="spadComm" >
+<form id="formComm0-56" action="javascript:makeRequest('0-56');" >
+<input id="comm0-56" type="text" class="command" style="width: 18em;" value="eval(xyDummy, [x=3, y=2.1])" />
+</form>
+<span id="commSav0-56" class="commSav" >eval(xyDummy, [x=3, y=2.1])</span>
+<div id="mathAns0-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>4</mn><mo>.</mo><mn>59</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Float
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.4.2"/>
+<div class="subsection"  id="subsec-0.4.2">
+<h3 class="subsectitle">0.4.2  Complex Numbers</h3>
+
+
+<p>For many scientific calculations real numbers aren't sufficient and support
+for complex numbers is also required. Complex numbers are handled in an
+intuitive manner and Axiom, which uses the <span style="font-weight: bold;"> %i</span> macro to represent
+the square root of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>. Thus expressions involving complex numbers are
+entered just like other expressions.
+</p>
+
+
+
+
+<div id="spadComm0-57" class="spadComm" >
+<form id="formComm0-57" action="javascript:makeRequest('0-57');" >
+<input id="comm0-57" type="text" class="command" style="width: 10em;" value="(2/3 + %i)**3" />
+</form>
+<span id="commSav0-57" class="commSav" >(2/3 + %i)**3</span>
+<div id="mathAns0-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>46</mn><mn>27</mn></mfrac><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+<p>The real and imaginary parts of a complex number can be extracted using 
+the <span style="font-weight: bold;"> real</span> and <span style="font-weight: bold;"> imag</span> functions and the complex conjugate of a
+number can be obtained using <span style="font-weight: bold;"> conjugate</span>:
+</p>
+
+
+
+
+<div id="spadComm0-58" class="spadComm" >
+<form id="formComm0-58" action="javascript:makeRequest('0-58');" >
+<input id="comm0-58" type="text" class="command" style="width: 10em;" value="real(3 + 2*%i)" />
+</form>
+<span id="commSav0-58" class="commSav" >real(3 + 2*%i)</span>
+<div id="mathAns0-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-59" class="spadComm" >
+<form id="formComm0-59" action="javascript:makeRequest('0-59');" >
+<input id="comm0-59" type="text" class="command" style="width: 10em;" value="imag(3+ 2*%i)" />
+</form>
+<span id="commSav0-59" class="commSav" >imag(3+ 2*%i)</span>
+<div id="mathAns0-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-60" class="spadComm" >
+<form id="formComm0-60" action="javascript:makeRequest('0-60');" >
+<input id="comm0-60" type="text" class="command" style="width: 14em;" value="conjugate(3 + 2*%i)" />
+</form>
+<span id="commSav0-60" class="commSav" >conjugate(3 + 2*%i)</span>
+<div id="mathAns0-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Integer
+</div>
+
+
+
+<p>The function <span style="font-weight: bold;"> factor</span> can also be applied to complex numbers but the
+results aren't quite so obvious as for factoring integer:
+</p>
+
+
+
+
+<div id="spadComm0-61" class="spadComm" >
+<form id="formComm0-61" action="javascript:makeRequest('0-61');" >
+<input id="comm0-61" type="text" class="command" style="width: 8em;" value="144 + 24*%i" />
+</form>
+<span id="commSav0-61" class="commSav" >144 + 24*%i</span>
+<div id="mathAns0-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>144</mn><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.4.3"/>
+<div class="subsection"  id="subsec-0.4.3">
+<h3 class="subsectitle">0.4.3  Number Representations</h3>
+
+
+<p>By default all numerical results are displayed in decimal with real numbers
+shown to 20 significant figures. If the integer part of a number is longer
+than 20 digits then nothing after the decimal point is shown and the integer
+part is given in full. To alter the number of digits shown the function
+<span style="font-weight: bold;"> digits</span> can be called. The result returned by this function is the
+previous setting. For example, to find the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math> to 40 digits
+we type:
+</p>
+
+
+
+
+<div id="spadComm0-62" class="spadComm" >
+<form id="formComm0-62" action="javascript:makeRequest('0-62');" >
+<input id="comm0-62" type="text" class="command" style="width: 7em;" value="digits(40)" />
+</form>
+<span id="commSav0-62" class="commSav" >digits(40)</span>
+<div id="mathAns0-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>20</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-63" class="spadComm" >
+<form id="formComm0-63" action="javascript:makeRequest('0-63');" >
+<input id="comm0-63" type="text" class="command" style="width: 8em;" value="%pi::Float" />
+</form>
+<span id="commSav0-63" class="commSav" >%pi::Float</span>
+<div id="mathAns0-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mn>1415926535</mn><mspace width="0.5 em" /><mn>8979323846</mn><mspace width="0.5 em" /><mn>2643383279</mn><mspace width="0.5 em" /><mn>502884197</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>As can be seen in the example above, there is a gap after every ten digits.
+This can be changed using the <span style="font-weight: bold;"> outputSpacing</span> function where the argument
+is the number of digits to be displayed before a space is inserted. If no
+spaces are desired then use the value  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>. Two other functions controlling
+the appearance of real numbers are <span style="font-weight: bold;"> outputFloating</span> and <span style="font-weight: bold;"> outputFixed</span>.
+The former causes Axiom to display floating-point values in exponent notation
+and the latter causes it to use fixed-point notation. For example:
+</p>
+
+
+
+
+<div id="spadComm0-64" class="spadComm" >
+<form id="formComm0-64" action="javascript:makeRequest('0-64');" >
+<input id="comm0-64" type="text" class="command" style="width: 14em;" value="outputFloating(); %" />
+</form>
+<span id="commSav0-64" class="commSav" >outputFloating(); %</span>
+<div id="mathAns0-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>3141592653</mn><mn>5897932384</mn><mn>6264338327</mn><mn>9502884197</mn><mi>E</mi><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm0-65" class="spadComm" >
+<form id="formComm0-65" action="javascript:makeRequest('0-65');" >
+<input id="comm0-65" type="text" class="command" style="width: 18em;" value="outputFloating(3); 0.00345" />
+</form>
+<span id="commSav0-65" class="commSav" >outputFloating(3); 0.00345</span>
+<div id="mathAns0-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>345</mn><mi>E</mi><mo>-</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm0-66" class="spadComm" >
+<form id="formComm0-66" action="javascript:makeRequest('0-66');" >
+<input id="comm0-66" type="text" class="command" style="width: 12em;" value="outputFixed(); %" />
+</form>
+<span id="commSav0-66" class="commSav" >outputFixed(); %</span>
+<div id="mathAns0-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>00345</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm0-67" class="spadComm" >
+<form id="formComm0-67" action="javascript:makeRequest('0-67');" >
+<input id="comm0-67" type="text" class="command" style="width: 12em;" value="outputFixed(3); %" />
+</form>
+<span id="commSav0-67" class="commSav" >outputFixed(3); %</span>
+<div id="mathAns0-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>003</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm0-68" class="spadComm" >
+<form id="formComm0-68" action="javascript:makeRequest('0-68');" >
+<input id="comm0-68" type="text" class="command" style="width: 13em;" value="outputGeneral(); %" />
+</form>
+<span id="commSav0-68" class="commSav" >outputGeneral(); %</span>
+<div id="mathAns0-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>00345</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Note that the semicolon ``;'' in the examples above allows several
+expressions to be entered on one line. The result of the last expression
+is displayed. remember also that the percent symbol ``%'' is used to
+represent the result of a previous calculation.
+</p>
+
+
+<p>To display rational numbers in a base other than 10 the function <span style="font-weight: bold;"> radix</span>
+is used. The first argument of this function is the expression to be 
+displayed and the second is the base to be used.
+</p>
+
+
+
+
+<div id="spadComm0-69" class="spadComm" >
+<form id="formComm0-69" action="javascript:makeRequest('0-69');" >
+<input id="comm0-69" type="text" class="command" style="width: 11em;" value="radix(10**10,32)" />
+</form>
+<span id="commSav0-69" class="commSav" >radix(10**10,32)</span>
+<div id="mathAns0-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext>9A0NP00</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 32
+</div>
+
+
+
+
+
+<div id="spadComm0-70" class="spadComm" >
+<form id="formComm0-70" action="javascript:makeRequest('0-70');" >
+<input id="comm0-70" type="text" class="command" style="width: 9em;" value="radix(3/21,5)" />
+</form>
+<span id="commSav0-70" class="commSav" >radix(3/21,5)</span>
+<div id="mathAns0-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="http://www.w3.org/1998/Math/MathML" mathsize="big" display="block">
+<mn>0</mn><mi>.</mi><mrow><mover accent='true'><mrow><mrow><mn>0</mn><mn>3</mn><mn>2</mn><mn>4</mn><mn>1</mn><mn>2</mn></mrow></mrow><mo stretchy='true'>&OverBar;</mo></mover></mrow>
+</math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 5
+</div>
+
+
+
+<p>Rational numbers can be represented as a repeated decimal expansion using
+the <span style="font-weight: bold;"> decimal</span> function or as a continued fraction using 
+<span style="font-weight: bold;"> continuedFraction</span>. Any attempt to call these functions with irrational
+values will fail.
+</p>
+
+
+
+
+<div id="spadComm0-71" class="spadComm" >
+<form id="formComm0-71" action="javascript:makeRequest('0-71');" >
+<input id="comm0-71" type="text" class="command" style="width: 9em;" value="decimal(22/7)" />
+</form>
+<span id="commSav0-71" class="commSav" >decimal(22/7)</span>
+<div id="mathAns0-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" class="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>142857</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DecimalExpansion
+</div>
+
+
+
+
+
+<div id="spadComm0-72" class="spadComm" >
+<form id="formComm0-72" action="javascript:makeRequest('0-72');" >
+<input id="comm0-72" type="text" class="command" style="width: 18em;" value="continuedFraction(6543/210)" />
+</form>
+<span id="commSav0-72" class="commSav" >continuedFraction(6543/210)</span>
+<div id="mathAns0-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="http://www.w3.org/1998/Math/MathML" mathsize="big" display="block">
+<mrow><mrow><mn>31</mn></mrow><mo>+</mo><mfrac><mn>1</mn><mrow><mn><mn>6</mn></mn><mo>+</mo><mfrac><mn>1</mn><mrow><mn><mn>2</mn></mn><mo>+</mo><mfrac><mn>1</mn><mrow><mn><mn>1</mn></mn><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow></mfrac></mrow></mfrac></mrow></mfrac></mrow>
+</math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ContinuedFraction Integer
+</div>
+
+
+
+<p>Finally, partial fractions in compact and expanded form are available via the
+functions <span style="font-weight: bold;"> partialFraction</span> and <span style="font-weight: bold;"> padicFraction</span> respectively. The
+former takes two arguments, the first being the numerator of the fraction
+and the second being the denominator. The latter function takes a fraction
+and expands it further while the function <span style="font-weight: bold;"> compactFraction</span> does the
+reverse:
+</p>
+
+
+
+
+<div id="spadComm0-73" class="spadComm" >
+<form id="formComm0-73" action="javascript:makeRequest('0-73');" >
+<input id="comm0-73" type="text" class="command" style="width: 16em;" value="partialFraction(234,40)" />
+</form>
+<span id="commSav0-73" class="commSav" >partialFraction(234,40)</span>
+<div id="mathAns0-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>6</mn><mo>-</mo><mfrac><mn>3</mn><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>3</mn><mn>5</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-74" class="spadComm" >
+<form id="formComm0-74" action="javascript:makeRequest('0-74');" >
+<input id="comm0-74" type="text" class="command" style="width: 12em;" value="padicFraction(%)" />
+</form>
+<span id="commSav0-74" class="commSav" >padicFraction(%)</span>
+<div id="mathAns0-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>6</mn><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>-</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>3</mn><mn>5</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-75" class="spadComm" >
+<form id="formComm0-75" action="javascript:makeRequest('0-75');" >
+<input id="comm0-75" type="text" class="command" style="width: 13em;" value="compactFraction(%)" />
+</form>
+<span id="commSav0-75" class="commSav" >compactFraction(%)</span>
+<div id="mathAns0-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>6</mn><mo>-</mo><mfrac><mn>3</mn><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>3</mn><mn>5</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-76" class="spadComm" >
+<form id="formComm0-76" action="javascript:makeRequest('0-76');" >
+<input id="comm0-76" type="text" class="command" style="width: 14em;" value="padicFraction(234/40)" />
+</form>
+<span id="commSav0-76" class="commSav" >padicFraction(234/40)</span>
+<div id="mathAns0-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>117</mn><mn>20</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Fraction Integer
+</div>
+
+
+
+<p>To extract parts of a partial fraction the function <span style="font-weight: bold;"> nthFractionalTerm</span>
+is available and returns a partial fraction of one term. To decompose this
+further the numerator can be obtained using <span style="font-weight: bold;"> firstNumer</span> and the 
+denominator with <span style="font-weight: bold;"> firstDenom</span>. The whole part of a partial fraction can
+be retrieved using <span style="font-weight: bold;"> wholePart</span> and the number of fractional parts can
+be found using the function <span style="font-weight: bold;"> numberOf FractionalTerms</span>:
+</p>
+
+
+
+
+<div id="spadComm0-77" class="spadComm" >
+<form id="formComm0-77" action="javascript:makeRequest('0-77');" >
+<input id="comm0-77" type="text" class="command" style="width: 19em;" value="t := partialFraction(234,40)" />
+</form>
+<span id="commSav0-77" class="commSav" >t := partialFraction(234,40)</span>
+<div id="mathAns0-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>6</mn><mo>-</mo><mfrac><mn>3</mn><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>3</mn><mn>5</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-78" class="spadComm" >
+<form id="formComm0-78" action="javascript:makeRequest('0-78');" >
+<input id="comm0-78" type="text" class="command" style="width: 8em;" value="wholePart(t)" />
+</form>
+<span id="commSav0-78" class="commSav" >wholePart(t)</span>
+<div id="mathAns0-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>6</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-79" class="spadComm" >
+<form id="formComm0-79" action="javascript:makeRequest('0-79');" >
+<input id="comm0-79" type="text" class="command" style="width: 18em;" value="numberOfFractionalTerms(t)" />
+</form>
+<span id="commSav0-79" class="commSav" >numberOfFractionalTerms(t)</span>
+<div id="mathAns0-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-80" class="spadComm" >
+<form id="formComm0-80" action="javascript:makeRequest('0-80');" >
+<input id="comm0-80" type="text" class="command" style="width: 18em;" value="p := nthFractionalTerm(t,1)" />
+</form>
+<span id="commSav0-80" class="commSav" >p := nthFractionalTerm(t,1)</span>
+<div id="mathAns0-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>3</mn><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-81" class="spadComm" >
+<form id="formComm0-81" action="javascript:makeRequest('0-81');" >
+<input id="comm0-81" type="text" class="command" style="width: 9em;" value="firstNumer(p)" />
+</form>
+<span id="commSav0-81" class="commSav" >firstNumer(p)</span>
+<div id="mathAns0-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-82" class="spadComm" >
+<form id="formComm0-82" action="javascript:makeRequest('0-82');" >
+<input id="comm0-82" type="text" class="command" style="width: 9em;" value="firstDenom(p)" />
+</form>
+<span id="commSav0-82" class="commSav" >firstDenom(p)</span>
+<div id="mathAns0-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.4.4"/>
+<div class="subsection"  id="subsec-0.4.4">
+<h3 class="subsectitle">0.4.4  Modular Arithmetic</h3>
+
+
+<p>By using the type constructor <span class="teletype">PrimeField</span> it is possible to do 
+arithmetic modulo some prime number. For example, arithmetic module  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math>
+can be performed as follows:
+</p>
+
+
+
+
+<div id="spadComm0-83" class="spadComm" >
+<form id="formComm0-83" action="javascript:makeRequest('0-83');" >
+<input id="comm0-83" type="text" class="command" style="width: 14em;" value="x : PrimeField 7 := 5" />
+</form>
+<span id="commSav0-83" class="commSav" >x : PrimeField 7 := 5</span>
+<div id="mathAns0-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 7
+</div>
+
+
+
+
+
+<div id="spadComm0-84" class="spadComm" >
+<form id="formComm0-84" action="javascript:makeRequest('0-84');" >
+<input id="comm0-84" type="text" class="command" style="width: 6em;" value="x**5 + 6" />
+</form>
+<span id="commSav0-84" class="commSav" >x**5 + 6</span>
+<div id="mathAns0-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 7
+</div>
+
+
+
+
+
+<div id="spadComm0-85" class="spadComm" >
+<form id="formComm0-85" action="javascript:makeRequest('0-85');" >
+<input id="comm0-85" type="text" class="command" style="width: 2em;" value="1/x" />
+</form>
+<span id="commSav0-85" class="commSav" >1/x</span>
+<div id="mathAns0-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 7
+</div>
+
+
+
+<p>The first example should be read as:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">Let  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> be of type PrimeField(7) and assign to it the value  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>5</mn></mstyle></math></span>
+</p>
+
+
+
+</div>
+
+
+
+<p>Note that it is only possible to invert non-zero values if the arithmetic
+is performed modulo a prime number. Thus arithmetic modulo a non-prime
+integer is possible but the reciprocal operation is undefined and will
+generate an error. Attempting to use the <span class="teletype">PrimeField</span> type constructor
+with a non-prime argument will generate an error. An example of non-prime
+modulo arithmetic is:
+</p>
+
+
+
+
+<div id="spadComm0-86" class="spadComm" >
+<form id="formComm0-86" action="javascript:makeRequest('0-86');" >
+<input id="comm0-86" type="text" class="command" style="width: 15em;" value="y : IntegerMod 8 := 11" />
+</form>
+<span id="commSav0-86" class="commSav" >y : IntegerMod 8 := 11</span>
+<div id="mathAns0-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: IntegerMod 8
+</div>
+
+
+
+
+
+<div id="spadComm0-87" class="spadComm" >
+<form id="formComm0-87" action="javascript:makeRequest('0-87');" >
+<input id="comm0-87" type="text" class="command" style="width: 6em;" value="y*4 + 27" />
+</form>
+<span id="commSav0-87" class="commSav" >y*4 + 27</span>
+<div id="mathAns0-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: IntegerMod 8
+</div>
+
+
+
+<p>Note that polynomials can be constructed in a similar way:
+</p>
+
+
+
+
+<div id="spadComm0-88" class="spadComm" >
+<form id="formComm0-88" action="javascript:makeRequest('0-88');" >
+<input id="comm0-88" type="text" class="command" style="width: 30em;" value="(3*a**4 + 27*a - 36)::Polynomial PrimeField 7" />
+</form>
+<span id="commSav0-88" class="commSav" >(3*a**4 + 27*a - 36)::Polynomial PrimeField 7</span>
+<div id="mathAns0-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mn>6</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial PrimeField 7
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-0.3.xhtml" style="margin-right: 10px;">Previous Section 0.3 Using Axiom as a Pocket Calculator</a><a href="section-0.5.xhtml" style="margin-right: 10px;">Next Section 0.5 General Points about Axiom</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-0.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-0.5.xhtml
new file mode 100644
index 0000000..06473f1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-0.5.xhtml
@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section0.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-0.4.xhtml" style="margin-right: 10px;">Previous Section 0.4 Using Axiom as a Symbolic Calculator</a><a href="section-0.6.xhtml" style="margin-right: 10px;">Next Section 0.6 Data Structures in Axiom</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-0.5">
+<h2 class="sectiontitle">0.5  General Points about Axiom</h2>
+
+
+
+<a name="subsec-0.5.1"/>
+<div class="subsection"  id="subsec-0.5.1">
+<h3 class="subsectitle">0.5.1  Computation Without Output</h3>
+
+
+<p>It is sometimes desirable to enter an expression and prevent Axiom from
+displaying the result. To do this the expression should be terminated with
+a semicolon ``;''. In a previous section it was mentioned that a set of 
+expressions separated by semicolons would be evaluated and the result
+of the last one displayed. Thus if a single expression is followed by a
+semicolon no output will be produced (except for its type):
+</p>
+
+
+
+
+<div id="spadComm0-89" class="spadComm" >
+<form id="formComm0-89" action="javascript:makeRequest('0-89');" >
+<input id="comm0-89" type="text" class="command" style="width: 6em;" value="2 + 4*5;" />
+</form>
+<span id="commSav0-89" class="commSav" >2 + 4*5;</span>
+<div id="mathAns0-89" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.5.2"/>
+<div class="subsection"  id="subsec-0.5.2">
+<h3 class="subsectitle">0.5.2  Accessing Earlier Results</h3>
+
+
+<p>The ``%'' macro represents the result of the previous computation. The 
+``%%'' macro is available which takes a single integer argument. If the
+argument is positive then it refers to the step number of the calculation
+where the numbering begins from one and can be seen at the end of each
+prompt (the number in parentheses). If the argument is negative then it
+refers to previous results counting backwards from the last result. That is,
+``%%(-1)'' is the same as ``%''. The value of ``%%(0)'' is not defined and
+will generate an error if requested.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.5.3"/>
+<div class="subsection"  id="subsec-0.5.3">
+<h3 class="subsectitle">0.5.3  Splitting Expressions Over Several Lines</h3>
+
+
+<p>Although Axiom will quite happily accept expressions that are longer than
+the width of the screen (just keep typing without pressing the <span style="font-weight: bold;"> Return</span>
+key) it is often preferable to split the expression being entered at a point
+where it would result in more readable input. To do this the underscore
+``_'' symbol is placed before the break point and then the <span style="font-weight: bold;"> Return</span>
+key is pressed. The rest of the expression is typed on the next line,
+can be preceeded by any number of whitespace chars, for example:
+</p>
+
+
+
+<div class="verbatim"><br />
+2_<br />
++_<br />
+3<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The underscore symbol is an escape character and its presence alters the
+meaning of the characters that follow it. As mentions above whitespace
+following an underscore is ignored (the <span style="font-weight: bold;"> Return</span> key generates a
+whitespace character). Any other character following an underscore loses
+whatever special meaning it may have had. Thus one can create the
+identifier ``a+b'' by typing ``a_+b'' although this might lead to confusions.
+Also note the result of the following example:
+</p>
+
+
+
+
+<div id="spadComm0-90" class="spadComm" >
+<form id="formComm0-90" action="javascript:makeRequest('0-90');" >
+<input id="comm0-90" type="text" class="command" style="width: 20em;" value="ThisIsAVeryLong_
+VariableName" />
+</form>
+<span id="commSav0-90" class="commSav" >ThisIsAVeryLong_
+VariableName</span>
+<div id="mathAns0-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>ThisIsAVeryLongVariableName</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Variable ThisIsAVeryLongVariableName
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.5.4"/>
+<div class="subsection"  id="subsec-0.5.4">
+<h3 class="subsectitle">0.5.4  Comments and Descriptions</h3>
+
+
+<p>Comments and descriptions are really only of use in files of Axiom code but
+can be used when the output of an interactive session is being spooled to
+a file (via the system command <span style="font-weight: bold;"> )spool</span>). A comment begins with two
+dashes ``- -'' and continues until the end of the line. Multi-line
+comments are only possible if each individual line begins with two dashes.
+</p>
+
+
+<p>Descriptions are the same as comments except that the Axiom compiler will 
+include them in the object files produced and make them availabe to the
+end user for documentation purposes.
+</p>
+
+
+<p>A description is placed <span style="font-weight: bold;"> before</span> a calculation begins with three
+``+++'' signs and a description placed after a calculation begins with
+two plus symbols ``+''. The so-called ``plus plus'' comments are used
+within the algebra files and are processed by the compiler to add
+to the documentation. The so-called ``minus minus'' comments are ignored
+everywhere.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.5.5"/>
+<div class="subsection"  id="subsec-0.5.5">
+<h3 class="subsectitle">0.5.5  Control of Result Types</h3>
+
+
+<p>In earlier sections the type of an expression was converted to another
+via the ``::'' operator. However, this is not the only method for
+converting between types and two other operators need to be introduced
+and explained. 
+</p>
+
+
+<p>The first operator is ``$'' and is used to specify the package to be
+used to calculate the result. Thus:
+</p>
+
+
+
+
+<div id="spadComm0-91" class="spadComm" >
+<form id="formComm0-91" action="javascript:makeRequest('0-91');" >
+<input id="comm0-91" type="text" class="command" style="width: 8em;" value="(2/3)$Float" />
+</form>
+<span id="commSav0-91" class="commSav" >(2/3)$Float</span>
+<div id="mathAns0-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>6666666666</mn><mspace width="0.5 em" /><mn>6666666667</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>tells Axiom to use the ``/'' operator from the <span class="teletype">Float</span> package to
+evaluate the expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>/</mo><mn>3</mn></mrow></mstyle></math>. This does not necessarily mean that the
+result will be of the same type as the domain from which the operator
+was taken. In the following example the <span style="font-weight: bold;"> sign</span> operator is taken
+from the <span class="teletype">Float</span> package but the result is of type <span class="teletype">Integer</span>.
+</p>
+
+
+
+
+<div id="spadComm0-92" class="spadComm" >
+<form id="formComm0-92" action="javascript:makeRequest('0-92');" >
+<input id="comm0-92" type="text" class="command" style="width: 10em;" value="sign(2.3)$Float" />
+</form>
+<span id="commSav0-92" class="commSav" >sign(2.3)$Float</span>
+<div id="mathAns0-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>The other operator is ``@'' which is used to tell Axiom what the desired
+type of the result of the calculation is. In most situations all three
+operators yield the same results but the example below should help 
+distinguish them.
+</p>
+
+
+
+
+<div id="spadComm0-93" class="spadComm" >
+<form id="formComm0-93" action="javascript:makeRequest('0-93');" >
+<input id="comm0-93" type="text" class="command" style="width: 10em;" value="(2 + 3)::String" />
+</form>
+<span id="commSav0-93" class="commSav" >(2 + 3)::String</span>
+<div id="mathAns0-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"5"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm0-94" class="spadComm" >
+<form id="formComm0-94" action="javascript:makeRequest('0-94');" >
+<input id="comm0-94" type="text" class="command" style="width: 10em;" value="(2 + 3)@String" />
+</form>
+<span id="commSav0-94" class="commSav" >(2 + 3)@String</span>
+<div id="mathAns0-94" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+An&nbsp;expression&nbsp;involving&nbsp;@&nbsp;String&nbsp;actually&nbsp;evaluated&nbsp;to&nbsp;one&nbsp;of&nbsp;<br />
+&nbsp;&nbsp;&nbsp;type&nbsp;PositiveInteger&nbsp;.&nbsp;Perhaps&nbsp;you&nbsp;should&nbsp;use&nbsp;::&nbsp;String&nbsp;.<br />
+</div>
+
+
+
+
+
+<div id="spadComm0-95" class="spadComm" >
+<form id="formComm0-95" action="javascript:makeRequest('0-95');" >
+<input id="comm0-95" type="text" class="command" style="width: 10em;" value="(2 + 3)$String" />
+</form>
+<span id="commSav0-95" class="commSav" >(2 + 3)$String</span>
+<div id="mathAns0-95" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;The&nbsp;function&nbsp;+&nbsp;is&nbsp;not&nbsp;implemented&nbsp;in&nbsp;String&nbsp;.<br />
+</div>
+
+
+
+<p>If an expression <span class="slant">X</span> is converted using one of the three operators to 
+type <span class="slant">T</span> the interpretations are:
+</p>
+
+
+<p><span style="font-weight: bold;"> ::</span> means explicitly convert <span class="slant">X</span> to type <span class="slant">T</span> if possible.
+</p>
+
+
+<p><span style="font-weight: bold;"> $</span> means use the available operators for type <span class="slant">T</span> to compute <span class="slant">X</span>.
+</p>
+
+
+<p><span style="font-weight: bold;"> @</span> means choose operators to compute <span class="slant">X</span> so that the result is of
+type <span class="slant">T</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-0.4.xhtml" style="margin-right: 10px;">Previous Section 0.4 Using Axiom as a Symbolic Calculator</a><a href="section-0.6.xhtml" style="margin-right: 10px;">Next Section 0.6 Data Structures in Axiom</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-0.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-0.6.xhtml
new file mode 100644
index 0000000..3dc4e96
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-0.6.xhtml
@@ -0,0 +1,2742 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section0.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-0.5.xhtml" style="margin-right: 10px;">Previous Section 0.5 General Points about Axiom</a><a href="section-0.7.xhtml" style="margin-right: 10px;">Next Section 0.7 Functions, Choices, and Loops</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-0.6">
+<h2 class="sectiontitle">0.6  Data Structures in Axiom</h2>
+
+
+<p>This chapter is an overview of <span class="slant">some</span> of the data structures provided
+by Axiom.
+</p>
+
+
+<a name="subsec-0.6.1"/>
+<div class="subsection"  id="subsec-0.6.1">
+<h3 class="subsectitle">0.6.1  Lists</h3>
+
+
+<p>The Axiom <span class="teletype">List</span> type constructor is used to create homogenous lists of
+finite size. The notation for lists and the names of the functions that 
+operate over them are similar to those found in functional languages such
+as ML.
+</p>
+
+
+<p>Lists can be created by placing a comma separated list of values inside
+square brackets or if a list with just one element is desired then the
+function <span style="font-weight: bold;"> list</span> is available:
+</p>
+
+
+
+
+<div id="spadComm0-96" class="spadComm" >
+<form id="formComm0-96" action="javascript:makeRequest('0-96');" >
+<input id="comm0-96" type="text" class="command" style="width: 2em;" value="[4]" />
+</form>
+<span id="commSav0-96" class="commSav" >[4]</span>
+<div id="mathAns0-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-97" class="spadComm" >
+<form id="formComm0-97" action="javascript:makeRequest('0-97');" >
+<input id="comm0-97" type="text" class="command" style="width: 5em;" value="list(4)" />
+</form>
+<span id="commSav0-97" class="commSav" >list(4)</span>
+<div id="mathAns0-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-98" class="spadComm" >
+<form id="formComm0-98" action="javascript:makeRequest('0-98');" >
+<input id="comm0-98" type="text" class="command" style="width: 10em;" value="[1,2,3,5,7,11]" />
+</form>
+<span id="commSav0-98" class="commSav" >[1,2,3,5,7,11]</span>
+<div id="mathAns0-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>The function <span style="font-weight: bold;"> append</span> takes two lists as arguments and returns the list
+consisting of the second argument appended to the first. A single element
+can be added to the front of a list using <span style="font-weight: bold;"> cons</span>:
+</p>
+
+
+
+
+<div id="spadComm0-99" class="spadComm" >
+<form id="formComm0-99" action="javascript:makeRequest('0-99');" >
+<input id="comm0-99" type="text" class="command" style="width: 16em;" value="append([1,2,3,5],[7,11])" />
+</form>
+<span id="commSav0-99" class="commSav" >append([1,2,3,5],[7,11])</span>
+<div id="mathAns0-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-100" class="spadComm" >
+<form id="formComm0-100" action="javascript:makeRequest('0-100');" >
+<input id="comm0-100" type="text" class="command" style="width: 13em;" value="cons(23,[65,42,19])" />
+</form>
+<span id="commSav0-100" class="commSav" >cons(23,[65,42,19])</span>
+<div id="mathAns0-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>23</mn><mo>,</mo><mn>65</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>19</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Lists are accessed sequentially so if Axiom is asked for the value of the
+twentieth element in the list it will move from the start of the list over
+nineteen elements before it reaches the desired element. Each element of a 
+list is stored as a node consisting of the value of the element and a pointer
+to the rest of the list. As a result the two main operations on a list are
+called <span style="font-weight: bold;"> first</span> and <span style="font-weight: bold;"> rest</span>. Both of these functions take a second
+optional argument which specifies the length of the first part of the list:
+</p>
+
+
+
+
+<div id="spadComm0-101" class="spadComm" >
+<form id="formComm0-101" action="javascript:makeRequest('0-101');" >
+<input id="comm0-101" type="text" class="command" style="width: 12em;" value="first([1,5,6,2,3])" />
+</form>
+<span id="commSav0-101" class="commSav" >first([1,5,6,2,3])</span>
+<div id="mathAns0-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-102" class="spadComm" >
+<form id="formComm0-102" action="javascript:makeRequest('0-102');" >
+<input id="comm0-102" type="text" class="command" style="width: 14em;" value="first([1,5,6,2,3],2)" />
+</form>
+<span id="commSav0-102" class="commSav" >first([1,5,6,2,3],2)</span>
+<div id="mathAns0-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>5</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-103" class="spadComm" >
+<form id="formComm0-103" action="javascript:makeRequest('0-103');" >
+<input id="comm0-103" type="text" class="command" style="width: 12em;" value="rest([1,5,6,2,3])" />
+</form>
+<span id="commSav0-103" class="commSav" >rest([1,5,6,2,3])</span>
+<div id="mathAns0-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-104" class="spadComm" >
+<form id="formComm0-104" action="javascript:makeRequest('0-104');" >
+<input id="comm0-104" type="text" class="command" style="width: 13em;" value="rest([1,5,6,2,3],2)" />
+</form>
+<span id="commSav0-104" class="commSav" >rest([1,5,6,2,3],2)</span>
+<div id="mathAns0-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>6</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Other functions are <span style="font-weight: bold;"> empty?</span> which tests to see if a list contains no
+elements, <span style="font-weight: bold;"> member?</span> which tests to see if the first argument is a member
+of the second, <span style="font-weight: bold;"> reverse</span> which reverses the order of the list, <span style="font-weight: bold;"> sort</span>
+which sorts a list, and <span style="font-weight: bold;"> removeDuplicates</span> which removes any duplicates.
+The length of a list can be obtained using the `` #'' operator.
+</p>
+
+
+
+
+<div id="spadComm0-105" class="spadComm" >
+<form id="formComm0-105" action="javascript:makeRequest('0-105');" >
+<input id="comm0-105" type="text" class="command" style="width: 12em;" value="empty?([7,2,-1,2])" />
+</form>
+<span id="commSav0-105" class="commSav" >empty?([7,2,-1,2])</span>
+<div id="mathAns0-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm0-106" class="spadComm" >
+<form id="formComm0-106" action="javascript:makeRequest('0-106');" >
+<input id="comm0-106" type="text" class="command" style="width: 15em;" value="member?(-1,[7,2,-1,2])" />
+</form>
+<span id="commSav0-106" class="commSav" >member?(-1,[7,2,-1,2])</span>
+<div id="mathAns0-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm0-107" class="spadComm" >
+<form id="formComm0-107" action="javascript:makeRequest('0-107');" >
+<input id="comm0-107" type="text" class="command" style="width: 13em;" value="reverse([7,2,-1,2])" />
+</form>
+<span id="commSav0-107" class="commSav" >reverse([7,2,-1,2])</span>
+<div id="mathAns0-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-108" class="spadComm" >
+<form id="formComm0-108" action="javascript:makeRequest('0-108');" >
+<input id="comm0-108" type="text" class="command" style="width: 11em;" value="sort([7,2,-1,2])" />
+</form>
+<span id="commSav0-108" class="commSav" >sort([7,2,-1,2])</span>
+<div id="mathAns0-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-109" class="spadComm" >
+<form id="formComm0-109" action="javascript:makeRequest('0-109');" >
+<input id="comm0-109" type="text" class="command" style="width: 22em;" value="removeDuplicates([1,5,3,5,1,1,2])" />
+</form>
+<span id="commSav0-109" class="commSav" >removeDuplicates([1,5,3,5,1,1,2])</span>
+<div id="mathAns0-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-110" class="spadComm" >
+<form id="formComm0-110" action="javascript:makeRequest('0-110');" >
+<input id="comm0-110" type="text" class="command" style="width: 8em;" value=" #[7,2,-1,2]" />
+</form>
+<span id="commSav0-110" class="commSav" > #[7,2,-1,2]</span>
+<div id="mathAns0-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Lists in Axiom are mutable and so their contents (the elements and the links)
+can be modified in place. Functions that operator over lists in this way have
+names ending in the symbol ``!''. For example, <span style="font-weight: bold;"> concat!</span> takes two lists
+as arguments and appends the second argument to the first (except when the
+first argument is an empty list) and <span style="font-weight: bold;"> setrest!</span> changes the link 
+emanating from the first argument to point to the second argument:
+</p>
+
+
+
+
+<div id="spadComm0-111" class="spadComm" >
+<form id="formComm0-111" action="javascript:makeRequest('0-111');" >
+<input id="comm0-111" type="text" class="command" style="width: 10em;" value="u := [9,2,4,7]" />
+</form>
+<span id="commSav0-111" class="commSav" >u := [9,2,4,7]</span>
+<div id="mathAns0-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-112" class="spadComm" >
+<form id="formComm0-112" action="javascript:makeRequest('0-112');" >
+<input id="comm0-112" type="text" class="command" style="width: 15em;" value="concat!(u,[1,5,42]); u" />
+</form>
+<span id="commSav0-112" class="commSav" >concat!(u,[1,5,42]); u</span>
+<div id="mathAns0-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>42</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-113" class="spadComm" >
+<form id="formComm0-113" action="javascript:makeRequest('0-113');" >
+<input id="comm0-113" type="text" class="command" style="width: 13em;" value="endOfu := rest(u,4)" />
+</form>
+<span id="commSav0-113" class="commSav" >endOfu := rest(u,4)</span>
+<div id="mathAns0-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>42</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-114" class="spadComm" >
+<form id="formComm0-114" action="javascript:makeRequest('0-114');" >
+<input id="comm0-114" type="text" class="command" style="width: 14em;" value="partOfu := rest(u,2)" />
+</form>
+<span id="commSav0-114" class="commSav" >partOfu := rest(u,2)</span>
+<div id="mathAns0-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>42</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-115" class="spadComm" >
+<form id="formComm0-115" action="javascript:makeRequest('0-115');" >
+<input id="comm0-115" type="text" class="command" style="width: 18em;" value="setrest!(endOfu,partOfu); u" />
+</form>
+<span id="commSav0-115" class="commSav" >setrest!(endOfu,partOfu); u</span>
+<div id="mathAns0-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="http://www.w3.org/1998/Math/MathML" mathsize="big" display="block">
+<mo>[</mo><mn>9</mn><mo>,</mo><mn>2</mn><mo>,</mo><mrow><mover accent='true'><mrow><mrow><mn>4</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>1</mn></mrow></mrow><mo stretchy='true'>&OverBar;</mo></mover></mrow><mo>]</mo>
+</math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>From this it can be seen that the lists returned by <span style="font-weight: bold;"> first</span> and <span style="font-weight: bold;"> rest</span>
+are pointers to the original list and <span class="slant">not</span> a copy. Thus great care must
+be taken when dealing with lists in Axiom.
+</p>
+
+
+<p>Although the <span class="slant">n</span>th element of the list <span class="slant">l</span> can be obtained by 
+applying the <span style="font-weight: bold;"> first</span> function to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math> applications of <span style="font-weight: bold;"> rest</span>
+to <span class="slant">l</span>, Axiom provides a more useful access method in the form of
+the ``.'' operator:
+</p>
+
+
+
+
+<div id="spadComm0-116" class="spadComm" >
+<form id="formComm0-116" action="javascript:makeRequest('0-116');" >
+<input id="comm0-116" type="text" class="command" style="width: 2em;" value="u.3" />
+</form>
+<span id="commSav0-116" class="commSav" >u.3</span>
+<div id="mathAns0-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-117" class="spadComm" >
+<form id="formComm0-117" action="javascript:makeRequest('0-117');" >
+<input id="comm0-117" type="text" class="command" style="width: 2em;" value="u.5" />
+</form>
+<span id="commSav0-117" class="commSav" >u.5</span>
+<div id="mathAns0-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-118" class="spadComm" >
+<form id="formComm0-118" action="javascript:makeRequest('0-118');" >
+<input id="comm0-118" type="text" class="command" style="width: 2em;" value="u.6" />
+</form>
+<span id="commSav0-118" class="commSav" >u.6</span>
+<div id="mathAns0-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-119" class="spadComm" >
+<form id="formComm0-119" action="javascript:makeRequest('0-119');" >
+<input id="comm0-119" type="text" class="command" style="width: 22em;" value="first rest rest u -- Same as u.3" />
+</form>
+<span id="commSav0-119" class="commSav" >first rest rest u -- Same as u.3</span>
+<div id="mathAns0-119" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-120" class="spadComm" >
+<form id="formComm0-120" action="javascript:makeRequest('0-120');" >
+<input id="comm0-120" type="text" class="command" style="width: 5em;" value="u.first" />
+</form>
+<span id="commSav0-120" class="commSav" >u.first</span>
+<div id="mathAns0-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>9</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-121" class="spadComm" >
+<form id="formComm0-121" action="javascript:makeRequest('0-121');" >
+<input id="comm0-121" type="text" class="command" style="width: 3em;" value="u(3)" />
+</form>
+<span id="commSav0-121" class="commSav" >u(3)</span>
+<div id="mathAns0-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="slant">u.i</span> is referred to as <span class="slant">indexing into u</span> or 
+<span class="slant">elting into u</span>. The latter term comes from the <span style="font-weight: bold;"> elt</span> function
+which is used to extract elements (the first element of the list is at
+index  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>).
+</p>
+
+
+
+
+<div id="spadComm0-122" class="spadComm" >
+<form id="formComm0-122" action="javascript:makeRequest('0-122');" >
+<input id="comm0-122" type="text" class="command" style="width: 6em;" value="elt(u,4)" />
+</form>
+<span id="commSav0-122" class="commSav" >elt(u,4)</span>
+<div id="mathAns0-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>If a list has no cycles then any attempt to access an element beyond the
+end of the list will generate an error. However, in the example above there
+was a cycle starting at the third element so the access to the sixth
+element wrapped around to give the third element. Since lists are mutable it
+is possible to modify elements directly:
+</p>
+
+
+
+
+<div id="spadComm0-123" class="spadComm" >
+<form id="formComm0-123" action="javascript:makeRequest('0-123');" >
+<input id="comm0-123" type="text" class="command" style="width: 8em;" value="u.3 := 42; u" />
+</form>
+<span id="commSav0-123" class="commSav" >u.3 := 42; u</span>
+<div id="mathAns0-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="http://www.w3.org/1998/Math/MathML" mathsize="big" display="block">
+<mo>[</mo><mn>9</mn><mo>,</mo><mn>2</mn><mo>,</mo><mrow><mover accent='true'><mrow><mrow><mrow><mn>42</mn></mrow><mo>,</mo><mn>7</mn><mo>,</mo><mn>1</mn></mrow></mrow><mo stretchy='true'>&OverBar;</mo></mover></mrow><mo>]</mo>
+</math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Other list operations are:
+</p>
+
+
+
+<div id="spadComm0-124" class="spadComm" >
+<form id="formComm0-124" action="javascript:makeRequest('0-124');" >
+<input id="comm0-124" type="text" class="command" style="width: 13em;" value="L := [9,3,4,7];  #L" />
+</form>
+<span id="commSav0-124" class="commSav" >L := [9,3,4,7];  #L</span>
+<div id="mathAns0-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-125" class="spadComm" >
+<form id="formComm0-125" action="javascript:makeRequest('0-125');" >
+<input id="comm0-125" type="text" class="command" style="width: 5em;" value="last(L)" />
+</form>
+<span id="commSav0-125" class="commSav" >last(L)</span>
+<div id="mathAns0-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-126" class="spadComm" >
+<form id="formComm0-126" action="javascript:makeRequest('0-126');" >
+<input id="comm0-126" type="text" class="command" style="width: 4em;" value="L.last" />
+</form>
+<span id="commSav0-126" class="commSav" >L.last</span>
+<div id="mathAns0-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-127" class="spadComm" >
+<form id="formComm0-127" action="javascript:makeRequest('0-127');" >
+<input id="comm0-127" type="text" class="command" style="width: 8em;" value="L.( #L - 1)" />
+</form>
+<span id="commSav0-127" class="commSav" >L.( #L - 1)</span>
+<div id="mathAns0-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Note that using the `` #'' operator on a list with cycles causes Axiom to
+enter an infinite loop.
+</p>
+
+
+<p>Note that any operation on a list <span class="slant">L</span> that returns a list  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>L</mi><msup><mi>L</mi><mo>&prime;</mo></msup></mstyle></math>
+will, in general, be such that any changes to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>L</mi><msup><mi>L</mi><mo>&prime;</mo></msup></mstyle></math> will have the
+side-effect of altering <span class="slant">L</span>. For example:
+</p>
+
+
+
+
+<div id="spadComm0-128" class="spadComm" >
+<form id="formComm0-128" action="javascript:makeRequest('0-128');" >
+<input id="comm0-128" type="text" class="command" style="width: 10em;" value="m := rest(L,2)" />
+</form>
+<span id="commSav0-128" class="commSav" >m := rest(L,2)</span>
+<div id="mathAns0-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-129" class="spadComm" >
+<form id="formComm0-129" action="javascript:makeRequest('0-129');" >
+<input id="comm0-129" type="text" class="command" style="width: 8em;" value="m.1 := 20; L" />
+</form>
+<span id="commSav0-129" class="commSav" >m.1 := 20; L</span>
+<div id="mathAns0-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-130" class="spadComm" >
+<form id="formComm0-130" action="javascript:makeRequest('0-130');" >
+<input id="comm0-130" type="text" class="command" style="width: 4em;" value="n := L" />
+</form>
+<span id="commSav0-130" class="commSav" >n := L</span>
+<div id="mathAns0-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-131" class="spadComm" >
+<form id="formComm0-131" action="javascript:makeRequest('0-131');" >
+<input id="comm0-131" type="text" class="command" style="width: 8em;" value="n.2 := 99; L" />
+</form>
+<span id="commSav0-131" class="commSav" >n.2 := 99; L</span>
+<div id="mathAns0-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>99</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-132" class="spadComm" >
+<form id="formComm0-132" action="javascript:makeRequest('0-132');" >
+<input id="comm0-132" type="text" class="command" style="width: 1em;" value="n" />
+</form>
+<span id="commSav0-132" class="commSav" >n</span>
+<div id="mathAns0-132" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>99</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Thus the only save way of copying lists is to copy each element from one to
+another and not use the assignment operator:
+</p>
+
+
+
+
+<div id="spadComm0-133" class="spadComm" >
+<form id="formComm0-133" action="javascript:makeRequest('0-133');" >
+<input id="comm0-133" type="text" class="command" style="width: 30em;" value="p := [i for i in n] -- Same as `p := copy(n)'" />
+</form>
+<span id="commSav0-133" class="commSav" >p := [i for i in n] -- Same as `p := copy(n)'</span>
+<div id="mathAns0-133" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>99</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-134" class="spadComm" >
+<form id="formComm0-134" action="javascript:makeRequest('0-134');" >
+<input id="comm0-134" type="text" class="command" style="width: 8em;" value="p.2 := 5; p" />
+</form>
+<span id="commSav0-134" class="commSav" >p.2 := 5; p</span>
+<div id="mathAns0-134" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-135" class="spadComm" >
+<form id="formComm0-135" action="javascript:makeRequest('0-135');" >
+<input id="comm0-135" type="text" class="command" style="width: 1em;" value="n" />
+</form>
+<span id="commSav0-135" class="commSav" >n</span>
+<div id="mathAns0-135" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>99</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>In the previous example a new way of constructing lists was given. This is
+a powerful method which gives the reader more information about the contents
+of the list than before and which is extremely flexible. The example
+</p>
+
+
+
+
+<div id="spadComm0-136" class="spadComm" >
+<form id="formComm0-136" action="javascript:makeRequest('0-136');" >
+<input id="comm0-136" type="text" class="command" style="width: 12em;" value="[i for i in 1..10]" />
+</form>
+<span id="commSav0-136" class="commSav" >[i for i in 1..10]</span>
+<div id="mathAns0-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>should be read as
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>``Using the expression <span class="slant">i</span>, generate each element of the list by
+iterating the symbol <span class="slant">i</span> over the range of integers [1,10]''
+</p>
+
+
+
+</div>
+
+
+
+<p>To generate the list of the squares of the first ten elements we just use:
+</p>
+
+
+
+
+<div id="spadComm0-137" class="spadComm" >
+<form id="formComm0-137" action="javascript:makeRequest('0-137');" >
+<input id="comm0-137" type="text" class="command" style="width: 14em;" value="[i**2 for i in 1..10]" />
+</form>
+<span id="commSav0-137" class="commSav" >[i**2 for i in 1..10]</span>
+<div id="mathAns0-137" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>100</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>For more complex lists we can apply a condition to the elements that are to
+be placed into the list to obtain a list of even numbers between 0 and 11:
+</p>
+
+
+
+
+<div id="spadComm0-138" class="spadComm" >
+<form id="formComm0-138" action="javascript:makeRequest('0-138');" >
+<input id="comm0-138" type="text" class="command" style="width: 20em;" value="[i for i in 1..10 | even?(i)]" />
+</form>
+<span id="commSav0-138" class="commSav" >[i for i in 1..10 | even?(i)]</span>
+<div id="mathAns0-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>10</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>This example should be read as:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>``Using the expression <span class="slant">i</span>, generate each element of the list
+by iterating the symbol <span class="slant">i</span> over the range of integers [1,10] such that 
+<span class="slant">i</span> is even''
+</p>
+
+
+
+</div>
+
+
+
+<p>The following achieves the same result:
+</p>
+
+
+
+
+<div id="spadComm0-139" class="spadComm" >
+<form id="formComm0-139" action="javascript:makeRequest('0-139');" >
+<input id="comm0-139" type="text" class="command" style="width: 16em;" value="[i for i in 2..10 by 2]" />
+</form>
+<span id="commSav0-139" class="commSav" >[i for i in 2..10 by 2]</span>
+<div id="mathAns0-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>10</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.6.2"/>
+<div class="subsection"  id="subsec-0.6.2">
+<h3 class="subsectitle">0.6.2  Segmented Lists</h3>
+
+
+<p>A segmented list is one in which some of the elements are ranges of values.
+The <span style="font-weight: bold;"> expand</span> function converts lists of this type into ordinary lists:
+</p>
+
+
+
+
+<div id="spadComm0-140" class="spadComm" >
+<form id="formComm0-140" action="javascript:makeRequest('0-140');" >
+<input id="comm0-140" type="text" class="command" style="width: 5em;" value="[1..10]" />
+</form>
+<span id="commSav0-140" class="commSav" >[1..10]</span>
+<div id="mathAns0-140" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mo>.</mo><mn>10</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Segment PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-141" class="spadComm" >
+<form id="formComm0-141" action="javascript:makeRequest('0-141');" >
+<input id="comm0-141" type="text" class="command" style="width: 11em;" value="[1..3,5,6,8..10]" />
+</form>
+<span id="commSav0-141" class="commSav" >[1..3,5,6,8..10]</span>
+<div id="mathAns0-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mo>.</mo><mn>3</mn></mrow><mo>,</mo><mrow><mn>5</mn><mo>.</mo><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>6</mn><mo>.</mo><mo>.</mo><mn>6</mn></mrow><mo>,</mo><mrow><mn>8</mn><mo>.</mo><mo>.</mo><mn>10</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Segment PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-142" class="spadComm" >
+<form id="formComm0-142" action="javascript:makeRequest('0-142');" >
+<input id="comm0-142" type="text" class="command" style="width: 7em;" value="expand(%)" />
+</form>
+<span id="commSav0-142" class="commSav" >expand(%)</span>
+<div id="mathAns0-142" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>If the upper bound of a segment is omitted then a different type of 
+segmented list is obtained and expanding it will produce a stream (which
+will be considered in the next section):
+</p>
+
+
+
+
+<div id="spadComm0-143" class="spadComm" >
+<form id="formComm0-143" action="javascript:makeRequest('0-143');" >
+<input id="comm0-143" type="text" class="command" style="width: 4em;" value="[1..]" />
+</form>
+<span id="commSav0-143" class="commSav" >[1..]</span>
+<div id="mathAns0-143" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mo>.</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List UniversalSegment PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-144" class="spadComm" >
+<form id="formComm0-144" action="javascript:makeRequest('0-144');" >
+<input id="comm0-144" type="text" class="command" style="width: 7em;" value="expand(%)" />
+</form>
+<span id="commSav0-144" class="commSav" >expand(%)</span>
+<div id="mathAns0-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.6.3"/>
+<div class="subsection"  id="subsec-0.6.3">
+<h3 class="subsectitle">0.6.3  Streams</h3>
+
+
+<p>Streams are infinite lists which have the ability to calculate the next
+element should it be required. For example, a stream of positive integers
+and a list of prime numbers can be generated by:
+</p>
+
+
+
+
+<div id="spadComm0-145" class="spadComm" >
+<form id="formComm0-145" action="javascript:makeRequest('0-145');" >
+<input id="comm0-145" type="text" class="command" style="width: 11em;" value="[i for i in 1..]" />
+</form>
+<span id="commSav0-145" class="commSav" >[i for i in 1..]</span>
+<div id="mathAns0-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-146" class="spadComm" >
+<form id="formComm0-146" action="javascript:makeRequest('0-146');" >
+<input id="comm0-146" type="text" class="command" style="width: 19em;" value="[i for i in 1.. | prime?(i)]" />
+</form>
+<span id="commSav0-146" class="commSav" >[i for i in 1.. | prime?(i)]</span>
+<div id="mathAns0-146" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>19</mn><mo>,</mo><mn>23</mn><mo>,</mo><mn>29</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream PositiveInteger
+</div>
+
+
+
+<p>In each case the first few elements of the stream are calculated for display
+purposes but the rest of the stream remains unevaluated. The value of items
+in a stream are only calculated when they are needed which gives rise to
+their alternative name of ``lazy lists''.
+</p>
+
+
+<p>Another method of creating streams is to use the <span style="font-weight: bold;"> generate(f,a)</span> function.
+This applies its first argument repeatedly onto its second to produce the
+stream  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>a</mi><mo>,</mo><mi>f</mi><mo>(</mo><mi>a</mi><mo>)</mo><mo>,</mo><mi>f</mi><mo>(</mo><mi>f</mi><mo>(</mo><mi>a</mi><mo>)</mo><mo>)</mo><mo>,</mo><mi>f</mi><mo>(</mo><mi>f</mi><mo>(</mo><mi>f</mi><mo>(</mo><mi>a</mi><mo>)</mo><mo>)</mo><mo>)</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>. Given that the function
+<span style="font-weight: bold;"> nextPrime</span> returns the lowest prime number greater than its argument we
+can generate a stream of primes as follows:
+</p>
+
+
+
+<div id="spadComm0-147" class="spadComm" >
+<form id="formComm0-147" action="javascript:makeRequest('0-147');" >
+<input id="comm0-147" type="text" class="command" style="width: 24em;" value="generate(nextPrime,2)$Stream Integer" />
+</form>
+<span id="commSav0-147" class="commSav" >generate(nextPrime,2)$Stream Integer</span>
+<div id="mathAns0-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>19</mn><mo>,</mo><mn>23</mn><mo>,</mo><mn>29</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>As a longer example a stream of Fibonacci numbers will be computed. The
+Fibonacci numbers start at  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and each following number is the addition
+of the two numbers that precede it so the Fibonacci sequence is:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mo>&#x2026;</mo></mrow></mstyle></math>. 
+</p>
+
+
+<p>Since the generation of any Fibonacci number only relies on knowing the 
+previous two numbers we can look at the series through a window of two
+elements. To create the series the window is placed at the start over
+the values  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math> and their sum obtained. The window is now shifted to 
+the right by one position and the sum placed into the empty slot of the
+window; the process is then repeated. To implement this we require a 
+function that takes a list of two elements (the current view of the window),
+adds them, and outputs the new window. The result is the function
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>]</mo><mo>&#x2192;</mo><mi>b</mi><mo>,</mo><mi>a</mi><mo>+</mo><mi>b</mi><mo>]</mo></mrow></mstyle></math>:
+</p>
+
+
+
+<div id="spadComm0-148" class="spadComm" >
+<form id="formComm0-148" action="javascript:makeRequest('0-148');" >
+<input id="comm0-148" type="text" class="command" style="width: 23em;" value="win : List Integer -> List Integer" />
+</form>
+<span id="commSav0-148" class="commSav" >win : List Integer -> List Integer</span>
+<div id="mathAns0-148" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm0-149" class="spadComm" >
+<form id="formComm0-149" action="javascript:makeRequest('0-149');" >
+<input id="comm0-149" type="text" class="command" style="width: 18em;" value="win(x) == [x.2, x.1 + x.2]" />
+</form>
+<span id="commSav0-149" class="commSav" >win(x) == [x.2, x.1 + x.2]</span>
+<div id="mathAns0-149" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm0-150" class="spadComm" >
+<form id="formComm0-150" action="javascript:makeRequest('0-150');" >
+<input id="comm0-150" type="text" class="command" style="width: 7em;" value="win([1,1])" />
+</form>
+<span id="commSav0-150" class="commSav" >win([1,1])</span>
+<div id="mathAns0-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-151" class="spadComm" >
+<form id="formComm0-151" action="javascript:makeRequest('0-151');" >
+<input id="comm0-151" type="text" class="command" style="width: 5em;" value="win(%)" />
+</form>
+<span id="commSav0-151" class="commSav" >win(%)</span>
+<div id="mathAns0-151" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>Thus it can be seen that repeatedly applying <span style="font-weight: bold;"> win</span> to the <span class="slant">results</span>
+of the previous invocation each element of the series is obtained. Clearly
+<span style="font-weight: bold;"> win</span> is an ideal function to construct streams using the <span style="font-weight: bold;"> generate</span>
+function:
+</p>
+
+
+
+<div id="spadComm0-152" class="spadComm" >
+<form id="formComm0-152" action="javascript:makeRequest('0-152');" >
+<input id="comm0-152" type="text" class="command" style="width: 20em;" value="fibs := [generate(win,[1,1])]" />
+</form>
+<span id="commSav0-152" class="commSav" >fibs := [generate(win,[1,1])]</span>
+<div id="mathAns0-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>34</mn><mo>,</mo><mn>55</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>55</mn><mo>,</mo><mn>89</mn><mo>]</mo></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream List Integer
+</div>
+
+
+
+<p>This isn't quite what is wanted -- we need to extract the first element of
+each list and place that in our series:
+</p>
+
+
+
+<div id="spadComm0-153" class="spadComm" >
+<form id="formComm0-153" action="javascript:makeRequest('0-153');" >
+<input id="comm0-153" type="text" class="command" style="width: 30em;" value="fibs := [i.1 for i in [generate(win,[1,1])] ]" />
+</form>
+<span id="commSav0-153" class="commSav" >fibs := [i.1 for i in [generate(win,[1,1])] ]</span>
+<div id="mathAns0-153" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mn>55</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Obtaining the 200th Fibonacci number is trivial:
+</p>
+
+
+
+<div id="spadComm0-154" class="spadComm" >
+<form id="formComm0-154" action="javascript:makeRequest('0-154');" >
+<input id="comm0-154" type="text" class="command" style="width: 6em;" value="fibs.200" />
+</form>
+<span id="commSav0-154" class="commSav" >fibs.200</span>
+<div id="mathAns0-154" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>280571172992510140037611932413038677189525</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>One other function of interest is <span style="font-weight: bold;"> complete</span> which expands a finite
+stream derived from an infinite one (and thus was still stored as an
+infinite stream) to form a finite stream.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.6.4"/>
+<div class="subsection"  id="subsec-0.6.4">
+<h3 class="subsectitle">0.6.4  Arrays, Vectors, Strings, and Bits</h3>
+
+
+<p>The simplest array data structure is the <span class="slant">one-dimensional array</span> which
+can be obtained by applying the <span style="font-weight: bold;"> oneDimensionalArray</span> function to a list:
+</p>
+
+
+
+<div id="spadComm0-155" class="spadComm" >
+<form id="formComm0-155" action="javascript:makeRequest('0-155');" >
+<input id="comm0-155" type="text" class="command" style="width: 23em;" value="oneDimensionalArray([7,2,5,4,1,9])" />
+</form>
+<span id="commSav0-155" class="commSav" >oneDimensionalArray([7,2,5,4,1,9])</span>
+<div id="mathAns0-155" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+<p>One-dimensional array are homogenous (all elements must have the same type)
+and mutable (elements can be changed) like lists but unlike lists they are
+constant in size and have uniform access times (it is just as quick to read
+the last element of a one-dimensional array as it is to read the first; this
+is not true for lists).
+</p>
+
+
+<p>Since these arrays are mutable all the warnings that apply to lists apply to
+arrays. That is, it is possible to modify an element in a copy of an array
+and change the original:
+</p>
+
+
+
+<div id="spadComm0-156" class="spadComm" >
+<form id="formComm0-156" action="javascript:makeRequest('0-156');" >
+<input id="comm0-156" type="text" class="command" style="width: 26em;" value="x := oneDimensionalArray([7,2,5,4,1,9])" />
+</form>
+<span id="commSav0-156" class="commSav" >x := oneDimensionalArray([7,2,5,4,1,9])</span>
+<div id="mathAns0-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-157" class="spadComm" >
+<form id="formComm0-157" action="javascript:makeRequest('0-157');" >
+<input id="comm0-157" type="text" class="command" style="width: 4em;" value="y := x" />
+</form>
+<span id="commSav0-157" class="commSav" >y := x</span>
+<div id="mathAns0-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-158" class="spadComm" >
+<form id="formComm0-158" action="javascript:makeRequest('0-158');" >
+<input id="comm0-158" type="text" class="command" style="width: 9em;" value="y.3 := 20 ; x" />
+</form>
+<span id="commSav0-158" class="commSav" >y.3 := 20 ; x</span>
+<div id="mathAns0-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+<p>Note that because these arrays are of fixed size the <span style="font-weight: bold;"> concat!</span> function
+cannot be applied to them without generating an error. If arrays of this 
+type are required use the <span style="font-weight: bold;"> FlexibleArray</span> constructor.
+</p>
+
+
+<p>One-dimensional arrays can be created using <span style="font-weight: bold;"> new</span> which specifies the size
+of the array and the initial value for each of the elements. Other operations
+that can be applied to one-dimensional arrays are <span style="font-weight: bold;"> map!</span> which applies
+a mapping onto each element, <span style="font-weight: bold;"> swap!</span> which swaps two elements and
+<span style="font-weight: bold;"> copyInto!(a,b,c)</span> which copies the array <span class="slant">b</span> onto <span class="slant">a</span> starting at
+position <span class="slant">c</span>.
+</p>
+
+
+
+<div id="spadComm0-159" class="spadComm" >
+<form id="formComm0-159" action="javascript:makeRequest('0-159');" >
+<input id="comm0-159" type="text" class="command" style="width: 26em;" value="a : ARRAY1 PositiveInteger := new(10,3)" />
+</form>
+<span id="commSav0-159" class="commSav" >a : ARRAY1 PositiveInteger := new(10,3)</span>
+<div id="mathAns0-159" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+<p>(note that <span class="teletype">ARRAY1</span> is an abbreviation for the type 
+<span class="teletype">OneDimensionalArray</span>.) Other types based on one-dimensional arrays are
+<span class="teletype">Vector</span>, <span class="teletype">String</span>, and <span class="teletype">Bits</span>.
+</p>
+
+
+
+
+<div id="spadComm0-160" class="spadComm" >
+<form id="formComm0-160" action="javascript:makeRequest('0-160');" >
+<input id="comm0-160" type="text" class="command" style="width: 14em;" value="map!(i +-> i+1,a); a" />
+</form>
+<span id="commSav0-160" class="commSav" >map!(i +-> i+1,a); a</span>
+<div id="mathAns0-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-161" class="spadComm" >
+<form id="formComm0-161" action="javascript:makeRequest('0-161');" >
+<input id="comm0-161" type="text" class="command" style="width: 25em;" value="b := oneDimensionalArray([2,3,4,5,6])" />
+</form>
+<span id="commSav0-161" class="commSav" >b := oneDimensionalArray([2,3,4,5,6])</span>
+<div id="mathAns0-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-162" class="spadComm" >
+<form id="formComm0-162" action="javascript:makeRequest('0-162');" >
+<input id="comm0-162" type="text" class="command" style="width: 10em;" value="swap!(b,2,3); b" />
+</form>
+<span id="commSav0-162" class="commSav" >swap!(b,2,3); b</span>
+<div id="mathAns0-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-163" class="spadComm" >
+<form id="formComm0-163" action="javascript:makeRequest('0-163');" >
+<input id="comm0-163" type="text" class="command" style="width: 11em;" value="copyInto!(a,b,3)" />
+</form>
+<span id="commSav0-163" class="commSav" >copyInto!(a,b,3)</span>
+<div id="mathAns0-163" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-164" class="spadComm" >
+<form id="formComm0-164" action="javascript:makeRequest('0-164');" >
+<input id="comm0-164" type="text" class="command" style="width: 1em;" value="a" />
+</form>
+<span id="commSav0-164" class="commSav" >a</span>
+<div id="mathAns0-164" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-165" class="spadComm" >
+<form id="formComm0-165" action="javascript:makeRequest('0-165');" >
+<input id="comm0-165" type="text" class="command" style="width: 15em;" value="vector([1/2,1/3,1/14])" />
+</form>
+<span id="commSav0-165" class="commSav" >vector([1/2,1/3,1/14])</span>
+<div id="mathAns0-165" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>,</mo><mfrac><mn>1</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>1</mn><mn>14</mn></mfrac><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-166" class="spadComm" >
+<form id="formComm0-166" action="javascript:makeRequest('0-166');" >
+<input id="comm0-166" type="text" class="command" style="width: 10em;" value='"Hello, World"' />
+</form>
+<span id="commSav0-166" class="commSav" >"Hello, World"</span>
+<div id="mathAns0-166" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"Hello,World"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm0-167" class="spadComm" >
+<form id="formComm0-167" action="javascript:makeRequest('0-167');" >
+<input id="comm0-167" type="text" class="command" style="width: 8em;" value="bits(8,true)" />
+</form>
+<span id="commSav0-167" class="commSav" >bits(8,true)</span>
+<div id="mathAns0-167" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"11111111"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Bits
+</div>
+
+
+
+<p>A vector is similar to a one-dimensional array except that if its 
+components belong to a ring then arithmetic operations are provided.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.6.5"/>
+<div class="subsection"  id="subsec-0.6.5">
+<h3 class="subsectitle">0.6.5  Flexible Arrays</h3>
+
+
+<p>Flexible arrays are designed to provide the efficiency of one-dimensional
+arrays while retaining the flexibility of lists. They are implemented by
+allocating a fixed block of storage for the array. If the array needs to
+be expanded then a larger block of storage is allocated and the contents
+of the old block are copied into the new one.
+</p>
+
+
+<p>There are several operations that can be applied to this type, most of
+which modify the array in place. As a result these functions all have 
+names ending in ``!''. The <span style="font-weight: bold;"> physicalLength</span> returns the actual length
+of the array as stored in memory while the <span style="font-weight: bold;"> physicalLength!</span> allows this
+value to be changed by the user.
+</p>
+
+
+
+<div id="spadComm0-168" class="spadComm" >
+<form id="formComm0-168" action="javascript:makeRequest('0-168');" >
+<input id="comm0-168" type="text" class="command" style="width: 18em;" value="f : FARRAY INT := new(6,1)" />
+</form>
+<span id="commSav0-168" class="commSav" >f : FARRAY INT := new(6,1)</span>
+<div id="mathAns0-168" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-169" class="spadComm" >
+<form id="formComm0-169" action="javascript:makeRequest('0-169');" >
+<input id="comm0-169" type="text" class="command" style="width: 24em;" value="f.1:=4; f.2:=3 ; f.3:=8 ; f.5:=2 ; f" />
+</form>
+<span id="commSav0-169" class="commSav" >f.1:=4; f.2:=3 ; f.3:=8 ; f.5:=2 ; f</span>
+<div id="mathAns0-169" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-170" class="spadComm" >
+<form id="formComm0-170" action="javascript:makeRequest('0-170');" >
+<input id="comm0-170" type="text" class="command" style="width: 12em;" value="insert!(42,f,3); f" />
+</form>
+<span id="commSav0-170" class="commSav" >insert!(42,f,3); f</span>
+<div id="mathAns0-170" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-171" class="spadComm" >
+<form id="formComm0-171" action="javascript:makeRequest('0-171');" >
+<input id="comm0-171" type="text" class="command" style="width: 12em;" value="insert!(28,f,8); f" />
+</form>
+<span id="commSav0-171" class="commSav" >insert!(28,f,8); f</span>
+<div id="mathAns0-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>28</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-172" class="spadComm" >
+<form id="formComm0-172" action="javascript:makeRequest('0-172');" >
+<input id="comm0-172" type="text" class="command" style="width: 14em;" value="removeDuplicates!(f)" />
+</form>
+<span id="commSav0-172" class="commSav" >removeDuplicates!(f)</span>
+<div id="mathAns0-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>28</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-173" class="spadComm" >
+<form id="formComm0-173" action="javascript:makeRequest('0-173');" >
+<input id="comm0-173" type="text" class="command" style="width: 8em;" value="delete!(f,5)" />
+</form>
+<span id="commSav0-173" class="commSav" >delete!(f,5)</span>
+<div id="mathAns0-173" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>28</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-174" class="spadComm" >
+<form id="formComm0-174" action="javascript:makeRequest('0-174');" >
+<input id="comm0-174" type="text" class="command" style="width: 7em;" value="g:=f(3..5)" />
+</form>
+<span id="commSav0-174" class="commSav" >g:=f(3..5)</span>
+<div id="mathAns0-174" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>42</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-175" class="spadComm" >
+<form id="formComm0-175" action="javascript:makeRequest('0-175');" >
+<input id="comm0-175" type="text" class="command" style="width: 6em;" value="g.2:=7; f" />
+</form>
+<span id="commSav0-175" class="commSav" >g.2:=7; f</span>
+<div id="mathAns0-175" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>28</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-176" class="spadComm" >
+<form id="formComm0-176" action="javascript:makeRequest('0-176');" >
+<input id="comm0-176" type="text" class="command" style="width: 10em;" value="insert!(g,f,1)" />
+</form>
+<span id="commSav0-176" class="commSav" >insert!(g,f,1)</span>
+<div id="mathAns0-176" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>42</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>28</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-177" class="spadComm" >
+<form id="formComm0-177" action="javascript:makeRequest('0-177');" >
+<input id="comm0-177" type="text" class="command" style="width: 12em;" value="physicalLength(f)" />
+</form>
+<span id="commSav0-177" class="commSav" >physicalLength(f)</span>
+<div id="mathAns0-177" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm0-178" class="spadComm" >
+<form id="formComm0-178" action="javascript:makeRequest('0-178');" >
+<input id="comm0-178" type="text" class="command" style="width: 14em;" value="physicalLength!(f,20)" />
+</form>
+<span id="commSav0-178" class="commSav" >physicalLength!(f,20)</span>
+<div id="mathAns0-178" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>42</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>28</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-179" class="spadComm" >
+<form id="formComm0-179" action="javascript:makeRequest('0-179');" >
+<input id="comm0-179" type="text" class="command" style="width: 17em;" value="merge!(sort!(f),sort!(g))" />
+</form>
+<span id="commSav0-179" class="commSav" >merge!(sort!(f),sort!(g))</span>
+<div id="mathAns0-179" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>28</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>42</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-180" class="spadComm" >
+<form id="formComm0-180" action="javascript:makeRequest('0-180');" >
+<input id="comm0-180" type="text" class="command" style="width: 27em;" value="shrinkable(false)$FlexibleArray(Integer)" />
+</form>
+<span id="commSav0-180" class="commSav" >shrinkable(false)$FlexibleArray(Integer)</span>
+<div id="mathAns0-180" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>There are several things to point out concerning these
+examples. First, although flexible arrays are mutable, making copies
+of these arrays creates separate entities. This can be seen by the
+fact that the modification of element <span class="slant">b.2</span> above did not alter
+<span class="slant">a</span>. Second, the <span style="font-weight: bold;"> merge!</span>  function can take an extra argument
+before the two arrays are merged. The argument is a comparison
+function and defaults to ``<span class="teletype">&lt;=</span>'' if omitted. Lastly, 
+<span style="font-weight: bold;"> shrinkable</span> tells the system whether or not to let flexible arrays
+contract when elements are deleted from them. An explicit package
+reference must be given as in the example above.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-0.5.xhtml" style="margin-right: 10px;">Previous Section 0.5 General Points about Axiom</a><a href="section-0.7.xhtml" style="margin-right: 10px;">Next Section 0.7 Functions, Choices, and Loops</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-0.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-0.7.xhtml
new file mode 100644
index 0000000..84bf255
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-0.7.xhtml
@@ -0,0 +1,1865 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section0.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-0.6.xhtml" style="margin-right: 10px;">Previous Section 0.6 Data Structures in Axiom</a><a href="section-1.0.xhtml" style="margin-right: 10px;">Next Section 1.0 An Overview of Axiom</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-0.7">
+<h2 class="sectiontitle">0.7  Functions, Choices, and Loops</h2>
+
+
+<p>By now the reader should be able to construct simple one-line expressions
+involving variables and different data structures. This section builds on
+this knowledge and shows how to use iteration, make choices, and build
+functions in Axiom. At the moment it is assumed that the reader has a rough
+idea of how types are specified and constructed so that they can follow
+the examples given.
+</p>
+
+
+<p>From this point on most examples will be taken from input files. 
+</p>
+
+
+
+<a name="subsec-0.7.1"/>
+<div class="subsection"  id="subsec-0.7.1">
+<h3 class="subsectitle">0.7.1  Reading Code from a File</h3>
+
+
+<p>Input files contain code that will be fed to the command prompt. The 
+primary different between the command line and an input file is that
+indentation matters. In an input file you can specify ``piles'' of code
+by using indentation. 
+</p>
+
+
+<p>The names of all input files in Axiom should end in ``.input'' otherwise
+Axiom will refuse to read them. 
+</p>
+
+
+<p>If an input file is named <span style="font-weight: bold;"> foo.input</span> you can feed the contents of
+the file to the command prompt (as though you typed them) by writing:
+<span style="font-weight: bold;"> )read foo.input</span>.
+</p>
+
+
+<p>It is good practice to start each input file with the <span style="font-weight: bold;"> )clear all</span>
+command so that all functions and variables in the current environment
+are erased. 
+</p>
+
+
+
+</div>
+
+
+
+<a name="subsec-0.7.2"/>
+<div class="subsection"  id="subsec-0.7.2">
+<h3 class="subsectitle">0.7.2  Blocks</h3>
+
+
+<p>The Axiom constructs that provide looping, choices, and user-defined
+functions all rely on the notion of blocks. A block is a sequence of
+expressions which are evaluated in the order that they appear except
+when it is modified by control expressions such as loops. To leave a
+block prematurely use an expression of the form:
+<span class="slant">BoolExpr</span><span class="teletype">=></span><span class="slant">Expr</span> 
+where <span class="slant">BoolExpr</span> is any Axiom expression that has type <span class="teletype">Boolean</span>. 
+The value and type of <span class="slant">Expr</span> determines the value and type returned 
+by the block.
+</p>
+
+
+<p>If blocks are entered at the keyboard (as opposed to reading them from
+a text file) then there is only one way of creating them. The syntax is:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>(</mo><mi>expression1</mi><mo>;</mo><mi>expression2</mi><mo>;</mo><mo>&#x2026;</mo><mo>;</mo><mi>expressionN</mi><mo>)</mo></mrow></mstyle></math>
+</p>
+
+
+<p>In an input file a block can be constructed as above or by placing all the
+statements at the same indentation level. When indentation is used to
+indicate program structure the block is called a <span class="slant">pile</span>. As an example
+of a simple block a list of three integers can be constructed using
+parentheses:
+</p>
+
+
+
+<div id="spadComm0-181" class="spadComm" >
+<form id="formComm0-181" action="javascript:makeRequest('0-181');" >
+<input id="comm0-181" type="text" class="command" style="width: 21em;" value="( a:=4; b:=1; c:=9; L:=[a,b,c])" />
+</form>
+<span id="commSav0-181" class="commSav" >( a:=4; b:=1; c:=9; L:=[a,b,c])</span>
+<div id="mathAns0-181" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Doing the same thing using piles in an input file you could type:
+</p>
+
+
+
+<div class="verbatim"><br />
+L&nbsp;:=<br />
+&nbsp;&nbsp;a:=4<br />
+&nbsp;&nbsp;b:=1<br />
+&nbsp;&nbsp;c:=9<br />
+&nbsp;&nbsp;[a,b,c]<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Since blocks have a type and a value they can be used as arguments to 
+functions or as part of other expressions. It should be pointed out that
+the following example is not recommended practice but helps to illustrate
+the idea of blocks and their ability to return values:
+</p>
+
+
+
+<div class="verbatim"><br />
+sqrt(4.0&nbsp;+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a:=3.0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b:=1.0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c:=a&nbsp;+&nbsp;b<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c<br />
+&nbsp;&nbsp;&nbsp;&nbsp;)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>8284271247</mn><mspace width="0.5 em" /><mn>461900976</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Note that indentation is <span style="font-weight: bold;"> extremely</span> important. If the example above
+had the pile starting at ``a:='' moved left by two spaces so that the
+``a'' was under the ``('' of the first line then the interpreter would
+signal an error. Furthermore if the closing parenthesis ``)'' is moved 
+up to give
+</p>
+
+
+
+<div class="verbatim"><br />
+sqrt(4.0&nbsp;+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a:=3.0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b:=1.0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c:=a&nbsp;+&nbsp;b<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c)<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;1:&nbsp;sqrt(4.0&nbsp;+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;....A<br />
+&nbsp;&nbsp;Error&nbsp;&nbsp;A:&nbsp;Missing&nbsp;mate.<br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a:=3.0<br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b:=1.0<br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;4:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c:=a&nbsp;+&nbsp;b<br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;5:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.........AB<br />
+&nbsp;&nbsp;Error&nbsp;&nbsp;A:&nbsp;(from&nbsp;A&nbsp;up&nbsp;to&nbsp;B)&nbsp;Ignored.<br />
+&nbsp;&nbsp;Error&nbsp;&nbsp;B:&nbsp;Improper&nbsp;syntax.<br />
+&nbsp;&nbsp;Error&nbsp;&nbsp;B:&nbsp;syntax&nbsp;error&nbsp;at&nbsp;top&nbsp;level<br />
+&nbsp;&nbsp;Error&nbsp;&nbsp;B:&nbsp;Possibly&nbsp;missing&nbsp;a&nbsp;)&nbsp;<br />
+&nbsp;&nbsp;&nbsp;5&nbsp;error(s)&nbsp;parsing&nbsp;<br />
+</div>
+
+
+<p>then the parser will generate errors. If the parenthesis is shifted right 
+by several spaces so that it is in line with the ``c'' thus:
+</p>
+
+
+
+<div class="verbatim"><br />
+sqrt(4.0&nbsp;+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a:=3.0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b:=1.0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c:=a&nbsp;+&nbsp;b<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;1:&nbsp;sqrt(4.0&nbsp;+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;....A<br />
+&nbsp;&nbsp;Error&nbsp;&nbsp;A:&nbsp;Missing&nbsp;mate.<br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a:=3.0<br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b:=1.0<br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;4:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c:=a&nbsp;+&nbsp;b<br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;5:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c<br />
+&nbsp;&nbsp;Line&nbsp;&nbsp;&nbsp;6:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.........A<br />
+&nbsp;&nbsp;Error&nbsp;&nbsp;A:&nbsp;(from&nbsp;A&nbsp;up&nbsp;to&nbsp;A)&nbsp;Ignored.<br />
+&nbsp;&nbsp;Error&nbsp;&nbsp;A:&nbsp;Improper&nbsp;syntax.<br />
+&nbsp;&nbsp;Error&nbsp;&nbsp;A:&nbsp;syntax&nbsp;error&nbsp;at&nbsp;top&nbsp;level<br />
+&nbsp;&nbsp;Error&nbsp;&nbsp;A:&nbsp;Possibly&nbsp;missing&nbsp;a&nbsp;)&nbsp;<br />
+&nbsp;&nbsp;&nbsp;5&nbsp;error(s)&nbsp;parsing&nbsp;<br />
+</div>
+
+
+<p>a similar error will be raised. Finally, the ``)'' must be indented by 
+at least one space relative to the sqrt thus:
+</p>
+
+
+
+<div class="verbatim"><br />
+sqrt(4.0&nbsp;+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a:=3.0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b:=1.0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c:=a&nbsp;+&nbsp;b<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c<br />
+&nbsp;)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>8284271247</mn><mspace width="0.5 em" /><mn>461900976</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+<p>or an error will be generated.
+</p>
+
+
+<p>It can be seen that great care needs to be taken when constructing input
+files consisting of piles of expressions. It would seem prudent to add
+one pile at a time and check if it is acceptable before adding more,
+particularly if piles are nested. However, it should be pointed out that
+the use of piles as values for functions is not very readable and so
+perhaps the delicate nature of their interpretation should deter programmers
+from using them in these situations. Using piles should really be restricted
+to constructing functions, etc. and a small amount of rewriting can remove
+the need to use them as arguments. For example, the previous block could
+easily be implemented as:
+</p>
+
+
+
+<div class="verbatim"><br />
+a:=3.0<br />
+b:=1.0<br />
+c:=a&nbsp;+&nbsp;b<br />
+sqrt(4.0&nbsp;+&nbsp;c)<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+a:=3.0<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+b:=1.0<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+c:=a&nbsp;+&nbsp;b<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>4</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+sqrt(4.0&nbsp;+&nbsp;c)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>8284271247</mn><mspace width="0.5 em" /><mn>461900976</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>which achieves the same result and is easier to understand. Note that this
+is still a pile but it is not as fragile as the previous version.
+</p>
+
+
+
+</div>
+
+
+
+<a name="subsec-0.7.3"/>
+<div class="subsection"  id="subsec-0.7.3">
+<h3 class="subsectitle">0.7.3  Functions</h3>
+
+
+<p>Definitions of functions in Axiom are quite simple providing two things
+are observed. First, the type of the function must either be completely
+specified or completely unspecified. Second, the body of the function is
+assigned to the function identifier using the delayed assignment operator
+``==''.
+</p>
+
+
+<p>To specify the type of something the ``:'' operator is used. Thus to define
+a variable <span class="slant">x</span> to be of type <span class="teletype">Fraction Integer</span> we enter:
+</p>
+
+
+
+<div id="spadComm0-182" class="spadComm" >
+<form id="formComm0-182" action="javascript:makeRequest('0-182');" >
+<input id="comm0-182" type="text" class="command" style="width: 14em;" value="x : Fraction Integer" />
+</form>
+<span id="commSav0-182" class="commSav" >x : Fraction Integer</span>
+<div id="mathAns0-182" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>For functions the method is the same except that the arguments are
+placed in parentheses and the return type is placed after the symbol
+``<span class="teletype">-></span>''.  Some examples of function definitions taking zero, one,
+two, or three arguments and returning a list of integers are:
+</p>
+
+
+
+
+<div id="spadComm0-183" class="spadComm" >
+<form id="formComm0-183" action="javascript:makeRequest('0-183');" >
+<input id="comm0-183" type="text" class="command" style="width: 15em;" value="f : () -> List Integer" />
+</form>
+<span id="commSav0-183" class="commSav" >f : () -> List Integer</span>
+<div id="mathAns0-183" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm0-184" class="spadComm" >
+<form id="formComm0-184" action="javascript:makeRequest('0-184');" >
+<input id="comm0-184" type="text" class="command" style="width: 20em;" value="g : (Integer) -> List Integer" />
+</form>
+<span id="commSav0-184" class="commSav" >g : (Integer) -> List Integer</span>
+<div id="mathAns0-184" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm0-185" class="spadComm" >
+<form id="formComm0-185" action="javascript:makeRequest('0-185');" >
+<input id="comm0-185" type="text" class="command" style="width: 26em;" value="h : (Integer, Integer) -> List Integer" />
+</form>
+<span id="commSav0-185" class="commSav" >h : (Integer, Integer) -> List Integer</span>
+<div id="mathAns0-185" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm0-186" class="spadComm" >
+<form id="formComm0-186" action="javascript:makeRequest('0-186');" >
+<input id="comm0-186" type="text" class="command" style="width: 32em;" value="k : (Integer, Integer, Integer) -> List Integer" />
+</form>
+<span id="commSav0-186" class="commSav" >k : (Integer, Integer, Integer) -> List Integer</span>
+<div id="mathAns0-186" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Now the actual function definitions might be:
+</p>
+
+
+
+<div id="spadComm0-187" class="spadComm" >
+<form id="formComm0-187" action="javascript:makeRequest('0-187');" >
+<input id="comm0-187" type="text" class="command" style="width: 10em;" value="f() == [&nbsp;]" />
+</form>
+<span id="commSav0-187" class="commSav" >f() == [&nbsp;]</span>
+<div id="mathAns0-187" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm0-188" class="spadComm" >
+<form id="formComm0-188" action="javascript:makeRequest('0-188');" >
+<input id="comm0-188" type="text" class="command" style="width: 8em;" value="g(a) == [a]" />
+</form>
+<span id="commSav0-188" class="commSav" >g(a) == [a]</span>
+<div id="mathAns0-188" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm0-189" class="spadComm" >
+<form id="formComm0-189" action="javascript:makeRequest('0-189');" >
+<input id="comm0-189" type="text" class="command" style="width: 10em;" value="h(a,b) == [a,b]" />
+</form>
+<span id="commSav0-189" class="commSav" >h(a,b) == [a,b]</span>
+<div id="mathAns0-189" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm0-190" class="spadComm" >
+<form id="formComm0-190" action="javascript:makeRequest('0-190');" >
+<input id="comm0-190" type="text" class="command" style="width: 13em;" value="k(a,b,c) == [a,b,c]" />
+</form>
+<span id="commSav0-190" class="commSav" >k(a,b,c) == [a,b,c]</span>
+<div id="mathAns0-190" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>with some invocations of these functions:
+</p>
+
+
+
+<div id="spadComm0-191" class="spadComm" >
+<form id="formComm0-191" action="javascript:makeRequest('0-191');" >
+<input id="comm0-191" type="text" class="command" style="width: 2em;" value="f()" />
+</form>
+<span id="commSav0-191" class="commSav" >f()</span>
+<div id="mathAns0-191" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;with&nbsp;type&nbsp;()&nbsp;-&gt;&nbsp;List&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mspace width="0.5 em" /><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-192" class="spadComm" >
+<form id="formComm0-192" action="javascript:makeRequest('0-192');" >
+<input id="comm0-192" type="text" class="command" style="width: 3em;" value="g(4)" />
+</form>
+<span id="commSav0-192" class="commSav" >g(4)</span>
+<div id="mathAns0-192" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;List&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-193" class="spadComm" >
+<form id="formComm0-193" action="javascript:makeRequest('0-193');" >
+<input id="comm0-193" type="text" class="command" style="width: 4em;" value="h(2,9)" />
+</form>
+<span id="commSav0-193" class="commSav" >h(2,9)</span>
+<div id="mathAns0-193" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;h&nbsp;with&nbsp;type&nbsp;(Integer,Integer)&nbsp;-&gt;&nbsp;List&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm0-194" class="spadComm" >
+<form id="formComm0-194" action="javascript:makeRequest('0-194');" >
+<input id="comm0-194" type="text" class="command" style="width: 8em;" value="k(-3,42,100)" />
+</form>
+<span id="commSav0-194" class="commSav" >k(-3,42,100)</span>
+<div id="mathAns0-194" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;k&nbsp;with&nbsp;type&nbsp;(Integer,Integer,Integer)&nbsp;-&gt;&nbsp;List&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>3</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>100</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>The value returned by a function is either the value of the last expression
+evaluated or the result of a <span style="font-weight: bold;"> return</span> statement. For example, the
+following are effectively the same:
+</p>
+
+
+
+<div id="spadComm0-195" class="spadComm" >
+<form id="formComm0-195" action="javascript:makeRequest('0-195');" >
+<input id="comm0-195" type="text" class="command" style="width: 15em;" value="p : Integer -> Integer" />
+</form>
+<span id="commSav0-195" class="commSav" >p : Integer -> Integer</span>
+<div id="mathAns0-195" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm0-196" class="spadComm" >
+<form id="formComm0-196" action="javascript:makeRequest('0-196');" >
+<input id="comm0-196" type="text" class="command" style="width: 18em;" value="p x == (a:=1; b:=2; a+b+x)" />
+</form>
+<span id="commSav0-196" class="commSav" >p x == (a:=1; b:=2; a+b+x)</span>
+<div id="mathAns0-196" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm0-197" class="spadComm" >
+<form id="formComm0-197" action="javascript:makeRequest('0-197');" >
+<input id="comm0-197" type="text" class="command" style="width: 23em;" value="p x == (a:=1; b:=2; return(a+b+x))" />
+</form>
+<span id="commSav0-197" class="commSav" >p x == (a:=1; b:=2; return(a+b+x))</span>
+<div id="mathAns0-197" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Note that a block (pile) is assigned to the function identifier <span style="font-weight: bold;"> p</span> and
+thus all the rules about blocks apply to function definitions. Also there was
+only one argument so the parenthese are not needed.
+</p>
+
+
+<p>This is basically all that one needs to know about defining functions in 
+Axiom -- first specify the complete type and then assign a block to the
+function name. The rest of this section is concerned with defining more 
+complex blocks than those in this section and as a result function definitions
+will crop up continually particularly since they are a good way of testing
+examples. Since the block structure is more complex we will use the <span style="font-weight: bold;"> pile</span>
+notation and thus have to use input files to read the piles.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.7.4"/>
+<div class="subsection"  id="subsec-0.7.4">
+<h3 class="subsectitle">0.7.4  Choices</h3>
+
+
+<p>Apart from the ``<span class="teletype">=></span>'' operator that allows a block to exit before the end
+Axiom provides the standard <span style="font-weight: bold;"> if-then-else</span> construct. The general
+syntax is:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>if <span class="slant">BooleanExpr</span> then <span class="slant">Expr1</span> else <span class="slant">Expr2</span>
+</p>
+
+
+
+</div>
+
+
+<p>where ``else <span class="slant">Expr2</span>'' can be omitted. If the expression <span class="slant">BooleanExpr</span>
+evaluates to <span class="teletype">true</span> then <span class="slant">Expr1</span> is executed otherwise <span class="slant">Expr2</span>
+(if present) will be executed. An example of piles and <span style="font-weight: bold;"> if-then-else</span> is:
+(read from an input file)
+</p>
+
+
+
+<div class="verbatim"><br />
+h&nbsp;:=&nbsp;2.0<br />
+if&nbsp;h&nbsp;&gt;&nbsp;3.1&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0<br />
+&nbsp;&nbsp;&nbsp;else<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z:=&nbsp;cos(h)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max(x,0.5)<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+h&nbsp;:=&nbsp;2.0<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+if&nbsp;h&nbsp;&gt;&nbsp;3.1&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0<br />
+&nbsp;&nbsp;&nbsp;else<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z:=&nbsp;cos(h)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max(x,0.5)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Float
+</div>
+
+
+
+<p>Note the indentation -- the ``else'' must be indented relative to the ``if''
+otherwise it will generate an error (Axiom will think there are two piles,
+the second one beginning with ``else'').
+</p>
+
+
+<p>Any expression that has type <span class="teletype">Boolean</span> can be used as <span class="teletype">BooleanExpr</span>
+and the most common will be those involving the relational operators `` <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&gt;</mo></mstyle></math>'',
+`` <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&lt;</mo></mstyle></math>'', and ``=''. Usually the type of an expression involving the equality
+operator ``='' will be <span style="font-weight: bold;"> Boolean</span> but in those situations when it isn't
+you may need to use the ``@'' operator to ensure that it is.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-0.7.5"/>
+<div class="subsection"  id="subsec-0.7.5">
+<h3 class="subsectitle">0.7.5  Loops</h3>
+
+
+<p>Loops in Axiom are regarded as expressions containing another expression 
+called the <span class="slant">loop body</span>. The loop body is executed zero or more times
+depending on the kind of loop. Loops can be nested to any depth.
+</p>
+
+
+
+<a name="subsubsec-0.7.5.1"/>
+<div class="subsubsection"  id="subsubsec-0.7.5.1">
+<h3 class="subsubsectitle">0.7.5.1  The <span class="teletype">repeat</span> loop</h3>
+
+
+<p>The simplest kind of loop provided by Axiom is the <span style="font-weight: bold;"> repeat</span> loop. The 
+general syntax of this is:
+</p>
+<div style="text-align: center">repeat  <span class="slant">loopBody</span></div>
+
+
+<p>This will cause Axiom to execute <span class="slant">loopBody</span> repeatedly until either a
+<span style="font-weight: bold;"> break</span> or <span style="font-weight: bold;"> return</span> statement is encountered. If <span class="slant">loopBody</span>
+contains neither of these statements then it will loop forever. The 
+following piece of code will display the numbers from  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>4</mn></mstyle></math>:
+</p>
+
+
+
+<div class="verbatim"><br />
+i:=1<br />
+repeat<br />
+&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;4&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;output(i)<br />
+&nbsp;&nbsp;i:=i+1<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+i:=1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+repeat<br />
+&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;4&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;output(i)<br />
+&nbsp;&nbsp;i:=i+1<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;3<br />
+&nbsp;&nbsp;&nbsp;4<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>It was mentioned that loops will only be left when either a <span style="font-weight: bold;"> break</span> or
+<span style="font-weight: bold;"> return</span> statement is encountered so why can't one use the ``<span class="teletype">=></span>'' 
+operator? The reason is that the ``<span class="teletype">=></span>'' operator tells Axiom to leave the
+current block whereas <span style="font-weight: bold;"> break</span> leaves the current loop. The <span style="font-weight: bold;"> return</span>
+statement leave the current function.
+</p>
+
+
+<p>To skip the rest of a loop body and continue the next iteration of the loop
+use the <span style="font-weight: bold;"> iterate</span> statement (the -- starts a comment in Axiom)
+</p>
+
+
+
+<div class="verbatim"><br />
+i&nbsp;:=&nbsp;0<br />
+repeat<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;6&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;--&nbsp;Return&nbsp;to&nbsp;start&nbsp;if&nbsp;i&nbsp;is&nbsp;odd<br />
+&nbsp;&nbsp;if&nbsp;odd?(i)&nbsp;then&nbsp;iterate<br />
+&nbsp;&nbsp;output(i)<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+i&nbsp;:=&nbsp;0<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+repeat<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;6&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;--&nbsp;Return&nbsp;to&nbsp;start&nbsp;if&nbsp;i&nbsp;is&nbsp;odd<br />
+&nbsp;&nbsp;if&nbsp;odd?(i)&nbsp;then&nbsp;iterate<br />
+&nbsp;&nbsp;output(i)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;4<br />
+&nbsp;&nbsp;&nbsp;6<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-0.7.5.2"/>
+<div class="subsubsection"  id="subsubsec-0.7.5.2">
+<h3 class="subsubsectitle">0.7.5.2  The <span class="teletype">while</span> loop</h3>
+
+
+<p>The while statement extends the basic <span style="font-weight: bold;"> repeat</span> loop to place the control
+of leaving the loop at the start rather than have it buried in the middle.
+Since the body of the loop is still part of a <span style="font-weight: bold;"> repeat</span> loop, <span style="font-weight: bold;"> break</span>
+and ``<span class="teletype">=></span>'' work in the same way as in the previous section. The general
+syntax of a <span style="font-weight: bold;"> while</span> loop is:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>while <span class="slant">BoolExpr</span> repeat <span class="slant">loopBody</span>
+</p>
+
+
+
+</div>
+
+
+<p>As before, <span class="slant">BoolExpr</span> must be an expression of type <span style="font-weight: bold;"> Boolean</span>. Before
+the body of the loop is executed <span class="slant">BoolExpr</span> is tested. If it evaluates to
+<span class="teletype">true</span> then the loop body is entered otherwise the loop is terminated.
+Multiple conditions can be applied using the logical operators such as 
+<span style="font-weight: bold;"> and</span> or by using several <span style="font-weight: bold;"> while</span> statements before the <span style="font-weight: bold;"> repeat</span>.
+</p>
+
+
+
+<div class="verbatim"><br />
+x:=1<br />
+y:=1<br />
+while&nbsp;x&nbsp;&lt;&nbsp;4&nbsp;and&nbsp;y&nbsp;&lt;&nbsp;10&nbsp;repeat<br />
+&nbsp;&nbsp;output&nbsp;[x,y]<br />
+&nbsp;&nbsp;x&nbsp;:=&nbsp;x&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;y&nbsp;:=&nbsp;y&nbsp;+&nbsp;2<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+x:=1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+y:=1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+while&nbsp;x&nbsp;&lt;&nbsp;4&nbsp;and&nbsp;y&nbsp;&lt;&nbsp;10&nbsp;repeat<br />
+&nbsp;&nbsp;output&nbsp;[x,y]<br />
+&nbsp;&nbsp;x&nbsp;:=&nbsp;x&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;y&nbsp;:=&nbsp;y&nbsp;+&nbsp;2<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[1,1]<br />
+&nbsp;&nbsp;&nbsp;[2,3]<br />
+&nbsp;&nbsp;&nbsp;[3,5]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+x:=1<br />
+y:=1<br />
+while&nbsp;x&nbsp;&lt;&nbsp;4&nbsp;while&nbsp;y&nbsp;&lt;&nbsp;10&nbsp;repeat<br />
+&nbsp;&nbsp;output&nbsp;[x,y]<br />
+&nbsp;&nbsp;x&nbsp;:=&nbsp;x&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;y&nbsp;:=&nbsp;y&nbsp;+&nbsp;2<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+x:=1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+y:=1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+while&nbsp;x&nbsp;&lt;&nbsp;4&nbsp;while&nbsp;y&nbsp;&lt;&nbsp;10&nbsp;repeat<br />
+&nbsp;&nbsp;output&nbsp;[x,y]<br />
+&nbsp;&nbsp;x&nbsp;:=&nbsp;x&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;y&nbsp;:=&nbsp;y&nbsp;+&nbsp;2<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[1,1]<br />
+&nbsp;&nbsp;&nbsp;[2,3]<br />
+&nbsp;&nbsp;&nbsp;[3,5]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Note that the last example using two <span style="font-weight: bold;"> while</span> statements is <span class="slant">not</span> a
+nested loop but the following one is:
+</p>
+
+
+
+<div class="verbatim"><br />
+x:=1<br />
+y:=1<br />
+while&nbsp;x&nbsp;&lt;&nbsp;4&nbsp;repeat<br />
+&nbsp;&nbsp;while&nbsp;y&nbsp;&lt;&nbsp;10&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[x,y]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;:=&nbsp;x&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;:=&nbsp;y&nbsp;+&nbsp;2<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+x:=1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+y:=1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+while&nbsp;x&nbsp;&lt;&nbsp;4&nbsp;repeat<br />
+&nbsp;&nbsp;while&nbsp;y&nbsp;&lt;&nbsp;10&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[x,y]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;:=&nbsp;x&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;:=&nbsp;y&nbsp;+&nbsp;2<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[1,1]<br />
+&nbsp;&nbsp;&nbsp;[2,3]<br />
+&nbsp;&nbsp;&nbsp;[3,5]<br />
+&nbsp;&nbsp;&nbsp;[4,7]<br />
+&nbsp;&nbsp;&nbsp;[5,9]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Suppose we that, given a matrix of arbitrary size, find the position and
+value of the first negative element by examining the matrix in row-major 
+order:
+</p>
+
+
+
+<div class="verbatim"><br />
+m&nbsp;:=&nbsp;matrix&nbsp;[&nbsp;[&nbsp;21,&nbsp;37,&nbsp;53,&nbsp;14&nbsp;],_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;&nbsp;8,&nbsp;22,-24,&nbsp;16&nbsp;],_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;&nbsp;2,&nbsp;10,&nbsp;15,&nbsp;14&nbsp;],_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;26,&nbsp;33,&nbsp;55,-13&nbsp;]&nbsp;]<br />
+<br />
+lastrow&nbsp;:=&nbsp;nrows(m)<br />
+lastcol&nbsp;:=&nbsp;ncols(m)<br />
+r&nbsp;:=&nbsp;1<br />
+while&nbsp;r&nbsp;&lt;=&nbsp;lastrow&nbsp;repeat<br />
+&nbsp;&nbsp;c&nbsp;:=&nbsp;1&nbsp;--&nbsp;Index&nbsp;of&nbsp;first&nbsp;column<br />
+&nbsp;&nbsp;while&nbsp;c&nbsp;&lt;=&nbsp;lastcol&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;elt(m,r,c)&nbsp;&lt;&nbsp;0&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[r,c,elt(m,r,c)]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;lastrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break&nbsp;--&nbsp;Don't&nbsp;look&nbsp;any&nbsp;further<br />
+&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;:=&nbsp;c&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;r&nbsp;:=&nbsp;r&nbsp;+&nbsp;1<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+m&nbsp;:=&nbsp;matrix&nbsp;[&nbsp;[&nbsp;21,&nbsp;37,&nbsp;53,&nbsp;14&nbsp;],_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;&nbsp;8,&nbsp;22,-24,&nbsp;16&nbsp;],_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;&nbsp;2,&nbsp;10,&nbsp;15,&nbsp;14&nbsp;],_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;26,&nbsp;33,&nbsp;55,-13&nbsp;]&nbsp;]<br />
+</div>
+
+<p> 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>21</mn></mtd><mtd><mn>37</mn></mtd><mtd><mn>53</mn></mtd><mtd><mn>14</mn></mtd></mtr><mtr><mtd><mn>8</mn></mtd><mtd><mn>22</mn></mtd><mtd><mo>-</mo><mn>24</mn></mtd><mtd><mn>16</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>10</mn></mtd><mtd><mn>15</mn></mtd><mtd><mn>14</mn></mtd></mtr><mtr><mtd><mn>26</mn></mtd><mtd><mn>33</mn></mtd><mtd><mn>55</mn></mtd><mtd><mo>-</mo><mn>13</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+lastrow&nbsp;:=&nbsp;nrows(m)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+lastcol&nbsp;:=&nbsp;ncols(m)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+r&nbsp;:=&nbsp;1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+while&nbsp;r&nbsp;&lt;=&nbsp;lastrow&nbsp;repeat<br />
+&nbsp;&nbsp;c&nbsp;:=&nbsp;1&nbsp;--&nbsp;Index&nbsp;of&nbsp;first&nbsp;column<br />
+&nbsp;&nbsp;while&nbsp;c&nbsp;&lt;=&nbsp;lastcol&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;elt(m,r,c)&nbsp;&lt;&nbsp;0&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[r,c,elt(m,r,c)]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;lastrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break&nbsp;--&nbsp;Don't&nbsp;look&nbsp;any&nbsp;further<br />
+&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;:=&nbsp;c&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;r&nbsp;:=&nbsp;r&nbsp;+&nbsp;1<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[2,3,-&nbsp;24]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-0.7.5.3"/>
+<div class="subsubsection"  id="subsubsec-0.7.5.3">
+<h3 class="subsubsectitle">0.7.5.3  The <span class="teletype">for</span> loop</h3>
+
+
+<p>The last loop statement of interest is the <span style="font-weight: bold;"> for</span> loop. There are two
+ways of creating a <span style="font-weight: bold;"> for</span> loop. The first way uses either a list or
+a segment:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>for <span class="slant">var</span> in <span class="slant">seg</span> repeat <span class="slant">loopBody</span><br/>
+for <span class="slant">var</span> in <span class="slant">list</span> repeat <span class="slant">loopBody</span><br/>
+</p>
+
+
+
+</div>
+
+
+<p>where <span class="slant">var</span> is an index variable which is iterated over the values in
+<span class="slant">seg</span> or <span class="slant">list</span>. The value <span class="slant">seg</span> is a segment such as  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>&#x2026;</mo><mn>10</mn></mrow></mstyle></math>
+or  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>&#x2026;</mo></mrow></mstyle></math> and <span class="slant">list</span> is a list of some type. For example:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;1..10&nbsp;repeat<br />
+&nbsp;&nbsp;~prime?(i)&nbsp;=&gt;&nbsp;iterate<br />
+&nbsp;&nbsp;output(i)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;3<br />
+&nbsp;&nbsp;&nbsp;5<br />
+&nbsp;&nbsp;&nbsp;7<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+for&nbsp;w&nbsp;in&nbsp;["This",&nbsp;"is",&nbsp;"your",&nbsp;"life!"]&nbsp;repeat<br />
+&nbsp;&nbsp;output(w)<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+for&nbsp;w&nbsp;in&nbsp;["This",&nbsp;"is",&nbsp;"your",&nbsp;"life!"]&nbsp;repeat<br />
+&nbsp;&nbsp;output(w)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;This<br />
+&nbsp;&nbsp;&nbsp;is<br />
+&nbsp;&nbsp;&nbsp;your<br />
+&nbsp;&nbsp;&nbsp;life!<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The second form of the <span style="font-weight: bold;"> for</span> loop syntax includes a ``<span style="font-weight: bold;"> such that</span>''
+clause which must be of type <span style="font-weight: bold;"> Boolean</span>:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>for <span class="slant">var</span>  in <span class="slant">seg</span> | <span class="slant">BoolExpr</span> repeat <span class="slant">loopBody</span><br />
+for <span class="slant">var</span>  in <span class="slant">list</span> | <span class="slant">BoolExpr</span> repeat <span class="slant">loopBody</span>
+</p>
+
+
+
+</div>
+
+
+<p>Some examples are:
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;1..10&nbsp;|&nbsp;prime?(i)&nbsp;repeat<br />
+&nbsp;&nbsp;output(i)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;3<br />
+&nbsp;&nbsp;&nbsp;5<br />
+&nbsp;&nbsp;&nbsp;7<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;[1,2,3,4,5,6,7,8,9,10]&nbsp;|&nbsp;prime?(i)&nbsp;repeat<br />
+&nbsp;&nbsp;output(i)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;3<br />
+&nbsp;&nbsp;&nbsp;5<br />
+&nbsp;&nbsp;&nbsp;7<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>You can also use a <span style="font-weight: bold;"> while</span> clause:
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;1..&nbsp;while&nbsp;i&nbsp;&lt;&nbsp;7&nbsp;repeat<br />
+&nbsp;&nbsp;if&nbsp;even?(i)&nbsp;then&nbsp;output(i)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;4<br />
+&nbsp;&nbsp;&nbsp;6<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Using the ``<span style="font-weight: bold;"> such that</span>'' clause makes this appear simpler:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;1..&nbsp;|&nbsp;even?(i)&nbsp;while&nbsp;i&nbsp;&lt;&nbsp;7&nbsp;repeat<br />
+&nbsp;&nbsp;output(i)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;4<br />
+&nbsp;&nbsp;&nbsp;6<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>You can use multiple <span style="font-weight: bold;"> for</span> clauses to iterate over several sequences
+in parallel:
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;a&nbsp;in&nbsp;1..4&nbsp;for&nbsp;b&nbsp;in&nbsp;5..8&nbsp;repeat<br />
+&nbsp;&nbsp;output&nbsp;[a,b]<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[1,5]<br />
+&nbsp;&nbsp;&nbsp;[2,6]<br />
+&nbsp;&nbsp;&nbsp;[3,7]<br />
+&nbsp;&nbsp;&nbsp;[4,8]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>As a general point it should be noted that any symbols referred to in the
+``<span style="font-weight: bold;"> such that</span>'' and <span style="font-weight: bold;"> while</span> clauses must be pre-defined. This 
+either means that the symbols must have been defined in an outer level
+(e.g. in an enclosing loop) or in a <span style="font-weight: bold;"> for</span> clause appearing before the
+``<span style="font-weight: bold;"> such that</span>'' or <span style="font-weight: bold;"> while</span>. For example:
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;a&nbsp;in&nbsp;1..4&nbsp;repeat<br />
+&nbsp;&nbsp;for&nbsp;b&nbsp;in&nbsp;7..9&nbsp;|&nbsp;prime?(a+b)&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[a,b,a+b]<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[2,9,11]<br />
+&nbsp;&nbsp;&nbsp;[3,8,11]<br />
+&nbsp;&nbsp;&nbsp;[4,7,11]<br />
+&nbsp;&nbsp;&nbsp;[4,9,13]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Finally, the <span style="font-weight: bold;"> for</span> statement has a <span style="font-weight: bold;"> by</span> clause to specify the
+step size. This makes it possible to iterate over the segment in
+reverse order:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+for&nbsp;a&nbsp;in&nbsp;1..4&nbsp;for&nbsp;b&nbsp;in&nbsp;8..5&nbsp;by&nbsp;-1&nbsp;repeat<br />
+&nbsp;&nbsp;output&nbsp;[a,b]<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[1,8]<br />
+&nbsp;&nbsp;&nbsp;[2,7]<br />
+&nbsp;&nbsp;&nbsp;[3,6]<br />
+&nbsp;&nbsp;&nbsp;[4,5]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Note that without the ``by -1'' the segment 8..5 is empty so there is
+nothing to iterate over and the loop exits immediately.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-0.6.xhtml" style="margin-right: 10px;">Previous Section 0.6 Data Structures in Axiom</a><a href="section-1.0.xhtml" style="margin-right: 10px;">Next Section 1.0 An Overview of Axiom</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.0.xhtml
new file mode 100644
index 0000000..434ed92
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.0.xhtml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-0.7.xhtml" style="margin-right: 10px;">Previous Section 0.7  Functions, Choices, and Loops</a><a href="section-1.1.xhtml" style="margin-right: 10px;">Next Section 1.1 Starting Up and Winding Down</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.0">
+<h2 class="sectiontitle">1.0 An Overview of Axiom</h2>
+
+
+<div class="quote" >
+
+
+<p>When we start cataloging the gains in tools sitting on a computer, the 
+benefits of software are amazing. But, if the benefits of software are
+so great, why do we worry about making it easier -- don't the ends pay 
+for the means? We worry becuase making such software is extraordinarily
+hard and almost no one can do it -- the detail is exhausting, the 
+creativity required is extreme, the hours of failure upon failure
+requiring patience and persistence would tax anyone claiming to be
+sane. Yet we require people with such characteristics be found and
+employed and employed cheaply.
+</p>
+
+
+<p>-- Christopher Alexander
+</p>
+
+
+<p>(from Patterns of Software by Richard Gabriel)
+</p>
+
+
+
+
+</div>
+
+
+<a name="ugIntro" class="label"/>
+
+
+<p>Welcome to the Axiom environment for interactive computation and
+problem solving.  Consider this chapter a brief, whirlwind tour of the
+Axiom world.  We introduce you to Axiom's graphics and the
+Axiom language.  Then we give a sampling of the large variety of
+facilities in the Axiom system, ranging from the various kinds
+of numbers, to data types (like lists, arrays, and sets) and
+mathematical objects (like matrices, integrals, and differential
+equations).  We conclude with the discussion of system commands and an
+interactive ``undo.''
+</p>
+
+
+<p>Before embarking on the tour, we need to brief those readers working
+interactively with Axiom on some details. 
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-0.7.xhtml" style="margin-right: 10px;">Previous Section 0.7  Functions, Choices, and Loops</a><a href="section-1.1.xhtml" style="margin-right: 10px;">Next Section 1.1 Starting Up and Winding Down</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.1.xhtml
new file mode 100644
index 0000000..642b2ea
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.1.xhtml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.0.xhtml" style="margin-right: 10px;">Previous Section 1.0 An Overview of Axiom</a><a href="section-1.2.xhtml" style="margin-right: 10px;">Next Section 1.2 Typographic Conventions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.1">
+<h2 class="sectiontitle">1.1  Starting Up and Winding Down</h2>
+
+
+<a name="ugIntroStart" class="label"/>
+
+<p>You need to know how to start the Axiom system and how to stop it.
+We assume that Axiom has been correctly installed on your
+machine (as described in another Axiom document).
+</p>
+
+
+<p>To begin using Axiom, issue the command <span style="font-weight: bold;"> axiom</span> to the
+Axiom operating system shell.
+<span class="index">axiom @<span style="font-weight: bold;"> axiom</span><a name="chapter-1-0"/></span> There is a brief pause, some start-up
+messages, and then one or more windows appear.
+</p>
+
+
+<p>If you are not running Axiom under the X Window System, there is
+only one window (the console).  At the lower left of the screen there
+is a prompt that <span class="index">prompt</span><a name="chapter-1-1"/> looks like
+</p>
+
+
+
+<div class="verbatim"><br />
+(1)&nbsp;-&gt;<br />
+</div>
+
+
+
+<p>When you want to enter input to Axiom, you do so on the same
+line after the prompt.  The ``1'' in ``(1)'', also called the equation
+number, is the computation step number and is incremented 
+<span class="index">step number</span><a name="chapter-1-2"/> after you enter Axiom statements.  
+Note, however, that a system command such as <span class="teletype">)clear all</span> 
+may change the step number in other ways.  We talk about step numbers 
+more when we discuss system commands and the workspace history facility.
+</p>
+
+
+<p>If you are running Axiom under the X Window System, there may be
+two <span class="index">X Window System</span><a name="chapter-1-3"/> windows: the console window (as just
+described) and the HyperDoc main menu.  <span class="index">Hyper@{HyperDoc}</span><a name="chapter-1-4"/> 
+HyperDoc is a multiple-window hypertext system
+that lets you <span class="index">window</span><a name="chapter-1-5"/> view Axiom documentation and
+examples on-line, execute Axiom expressions, and generate
+graphics.  If you are in a graphical windowing environment, it is
+usually started automatically when Axiom begins.  If it is not
+running, issue <span class="teletype">)hd</span> to start it.  We discuss the basics of
+HyperDoc in Chapter <a href="section-3.0.xhtml#ugHyper" class="ref" >ugHyper</a> .  
+</p>
+
+
+<p>To interrupt an Axiom computation, hold down the <span class="index">interrupt</span><a name="chapter-1-6"/> 
+<span style="font-weight: bold;"> Ctrl</span> (control) key and press <span style="font-weight: bold;"> c</span>.  This brings you back to 
+the Axiom prompt.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>To exit from Axiom, move to the console window, <span class="index">stopping
+@{stopping Axiom}</span><a name="chapter-1-7"/> type <span class="teletype">)quit</span> <span class="index">exiting @{exiting
+Axiom}</span><a name="chapter-1-8"/> at the input prompt and press the <span style="font-weight: bold;"> Enter</span> key.
+You will probably be prompted with the following
+message:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>Please enter <span style="font-weight: bold;"> y</span> or <span style="font-weight: bold;"> yes</span> if you really want to leave the <br/>
+interactive environment and return to the operating system
+</p>
+
+
+
+</div>
+
+
+<p>You should respond <span style="font-weight: bold;"> yes</span>, for example, to exit Axiom.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>We are purposely vague in describing exactly what your screen looks
+like or what messages Axiom displays.  Axiom runs on a number of
+different machines, operating systems and window environments, and
+these differences all affect the physical look of the system.  You can
+also change the way that Axiom behaves via <span class="italic">system commands</span>
+described later in this chapter and in Appendix A.
+System commands are special commands, like <span class="teletype">)set</span>, that begin with
+a closing parenthesis and are used to change your environment.  For
+example, you can set a system variable so that you are not prompted
+for confirmation when you want to leave Axiom.
+</p>
+
+
+
+<a name="subsec-1.1.1"/>
+<div class="subsection"  id="subsec-1.1.1">
+<h3 class="subsectitle">1.1.1  Clef</h3>
+
+
+<a name="ugAvailCLEF" class="label"/>
+
+<p>If you are using Axiom under the X Window System, the
+<span class="index">Clef</span><a name="chapter-1-9"/> <span class="index">command line editor</span><a name="chapter-1-10"/> Clef command
+line editor is probably available and installed.  With this editor you
+can recall previous lines with the up and down arrow keys.  To move
+forward and backward on a line, use the right and left arrows.  You
+can use the <span style="font-weight: bold;"> Insert</span> key to toggle insert mode on or off.  When
+you are in insert mode, the cursor appears as a large block and if you
+type anything, the characters are inserted into the line without
+deleting the previous ones.
+</p>
+
+
+<p>If you press the <span style="font-weight: bold;"> Home</span> key, the cursor moves to the beginning of
+the line and if you press the <span style="font-weight: bold;"> End</span> key, the cursor moves to the
+end of the line.  Pressing <span style="font-weight: bold;"> Ctrl-End</span> deletes all the text from
+the cursor to the end of the line.
+</p>
+
+
+<p>Clef also provides Axiom operation name completion for
+<span class="index">operation name completion</span><a name="chapter-1-11"/> a limited set of operations.  If you
+enter a few letters and then press the <span style="font-weight: bold;"> Tab</span> key, Clef tries to
+use those letters as the prefix of an Axiom operation name.  If
+a name appears and it is not what you want, press <span style="font-weight: bold;"> Tab</span> again to
+see another name.
+</p>
+
+
+<p>You are ready to begin your journey into the world of Axiom.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.0.xhtml" style="margin-right: 10px;">Previous Section 1.0 An Overview of Axiom</a><a href="section-1.2.xhtml" style="margin-right: 10px;">Next Section 1.2 Typographic Conventions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.10.xhtml
new file mode 100644
index 0000000..ba41af7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.10.xhtml
@@ -0,0 +1,379 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.9.xhtml" style="margin-right: 10px;">Previous Section 1.9 Limits</a><a href="section-1.11.xhtml" style="margin-right: 10px;">Next Section 1.11 Derivatives</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.10">
+<h2 class="sectiontitle">1.10  Series</h2>
+
+
+<a name="ugIntroSeries" class="label"/>
+
+
+<p>Axiom also provides power series.  <span class="index">series:power</span><a name="chapter-1-70"/> By default,
+Axiom tries to compute and display the first ten elements of a series.
+Use <span class="teletype">)set streams calculate</span> to change the default value to
+something else.  For the purposes of this document, we have used this
+system command to display fewer than ten terms.  For more information
+about working with series, see <a href="section-8.9.xhtml#ugProblemSeries" class="ref" >ugProblemSeries</a>.
+</p>
+
+
+<p>You can convert a functional expression to a power series by using the
+operation <span style="font-weight: bold;"> series</span>.  In this example, <span class="teletype">sin(a*x)</span> is
+expanded in powers of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>0</mn><mo>)</mo></mrow></mstyle></math>, that is, in powers of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-140" class="spadComm" >
+<form id="formComm1-140" action="javascript:makeRequest('1-140');" >
+<input id="comm1-140" type="text" class="command" style="width: 15em;" value="series(sin(a*x),x = 0)" />
+</form>
+<span id="commSav1-140" class="commSav" >series(sin(a*x),x = 0)</span>
+<div id="mathAns1-140" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>a</mi><mo></mo><mi>x</mi></mrow><mo>-</mo><mrow><mfrac><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>a</mi><mn>5</mn></msup></mrow><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><msup><mi>a</mi><mn>7</mn></msup></mrow><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>a</mi><mn>9</mn></msup></mrow><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><msup><mi>a</mi><mn>11</mn></msup></mrow><mn>39916800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>This expression expands <span class="teletype">sin(a*x)</span> in powers of <span class="teletype">(x - %pi/4)</span>.
+</p>
+
+
+
+<div id="spadComm1-141" class="spadComm" >
+<form id="formComm1-141" action="javascript:makeRequest('1-141');" >
+<input id="comm1-141" type="text" class="command" style="width: 18em;" value="series(sin(a*x),x = %pi/4)" />
+</form>
+<span id="commSav1-141" class="commSav" >series(sin(a*x),x = %pi/4)</span>
+<div id="mathAns1-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+<p><math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mfrac><mrow><mi>a</mi><mo></mo><mi>&#x03C0;</mi></mrow><mn>4</mn></mfrac><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>4</mn></mfrac><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo></mo><mrow><mo>cos</mo><mo>(</mo><mfrac><mrow><mi>a</mi><mo></mo><mi>&#x03C0;</mi></mrow><mn>4</mn></mfrac><mo>)</mo></mrow></mrow><mn>6</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>4</mn></mfrac><mo>)</mo></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mrow><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mfrac><mrow><mi>a</mi><mo></mo><mi>&#x03C0;</mi></mrow><mn>4</mn></mfrac><mo>)</mo></mrow></mrow><mn>24</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>4</mn></mfrac><mo>)</mo></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><msup><mi>a</mi><mn>5</mn></msup></mrow><mo></mo><mrow><mo>cos</mo><mo>(</mo><mfrac><mrow><mi>a</mi><mo></mo><mi>&#x03C0;</mi></mrow><mn>4</mn></mfrac><mo>)</mo></mrow></mrow><mn>120</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>4</mn></mfrac><mo>)</mo></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mrow><mrow><msup><mi>a</mi><mn>6</mn></msup></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mfrac><mrow><mi>a</mi><mo></mo><mi>&#x03C0;</mi></mrow><mn>4</mn></mfrac><mo>)</mo></mrow></mrow><mn>720</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>4</mn></mfrac><mo>)</mo></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><mrow><msup><mi>a</mi><mn>7</mn></msup></mrow><mo></mo><mrow><mo>cos</mo><mo>(</mo><mfrac><mrow><mi>a</mi><mo></mo><mi>&#x03C0;</mi></mrow><mn>4</mn></mfrac><mo>)</mo></mrow></mrow><mn>5040</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>4</mn></mfrac><mo>)</mo></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mrow><mrow><msup><mi>a</mi><mn>8</mn></msup></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mfrac><mrow><mi>a</mi><mo></mo><mi>&#x03C0;</mi></mrow><mn>4</mn></mfrac><mo>)</mo></mrow></mrow><mn>40320</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>4</mn></mfrac><mo>)</mo></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><msup><mi>a</mi><mn>9</mn></msup></mrow><mo></mo><mrow><mo>cos</mo><mo>(</mo><mfrac><mrow><mi>a</mi><mo></mo><mi>&#x03C0;</mi></mrow><mn>4</mn></mfrac><mo>)</mo></mrow></mrow><mn>362880</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>4</mn></mfrac><mo>)</mo></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mrow><mrow><msup><mi>a</mi><mn>10</mn></msup></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mfrac><mrow><mi>a</mi><mo></mo><mi>&#x03C0;</mi></mrow><mn>4</mn></mfrac><mo>)</mo></mrow></mrow><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>4</mn></mfrac><mo>)</mo></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>4</mn></mfrac><mo>)</mo></mrow><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,pi/4)
+</div>
+
+
+
+<p>Axiom provides <span class="index">series:Puiseux</span><a name="chapter-1-71"/> <span class="italic">Puiseux series:</span>
+<span class="index">Puiseux series</span><a name="chapter-1-72"/> series with rational number exponents.  The
+first argument to <span style="font-weight: bold;"> series</span> is an in-place function that
+computes the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th coefficient.  (Recall that the
+``<span class="teletype">+-></span>'' is an infix operator meaning ``maps to.'')
+</p>
+
+
+
+<div id="spadComm1-142" class="spadComm" >
+<form id="formComm1-142" action="javascript:makeRequest('1-142');" >
+<input id="comm1-142" type="text" class="command" style="width: 43em;" value="series(n +-> (-1)**((3*n - 4)/6)/factorial(n - 1/3),x=0,4/3..,2)" />
+</form>
+<span id="commSav1-142" class="commSav" >series(n +-> (-1)**((3*n - 4)/6)/factorial(n - 1/3),x=0,4/3..,2)</span>
+<div id="mathAns1-142" ></div>
+</div>
+
+
+
+<p><!--NOTE: the paper book shows O(x^4) but Axiom computes O(x^5)-->
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mfrac><mn>4</mn><mn>3</mn></mfrac></msup></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mfrac><mn>10</mn><mn>3</mn></mfrac></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>Once you have created a power series, you can perform arithmetic
+operations on that series.  We compute the Taylor expansion of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>/</mo><mo>(</mo><mn>1</mn><mo>-</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+<span class="index">series:Taylor</span><a name="chapter-1-73"/>
+</p>
+
+
+
+<div id="spadComm1-143" class="spadComm" >
+<form id="formComm1-143" action="javascript:makeRequest('1-143');" >
+<input id="comm1-143" type="text" class="command" style="width: 18em;" value="f := series(1/(1-x),x = 0)" />
+</form>
+<span id="commSav1-143" class="commSav" >f := series(1/(1-x),x = 0)</span>
+<div id="mathAns1-143" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>Compute the square of the series.
+</p>
+
+
+
+<div id="spadComm1-144" class="spadComm" >
+<form id="formComm1-144" action="javascript:makeRequest('1-144');" >
+<input id="comm1-144" type="text" class="command" style="width: 4em;" value="f ** 2" />
+</form>
+<span id="commSav1-144" class="commSav" >f ** 2</span>
+<div id="mathAns1-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>11</mn><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>The usual elementary functions
+(<span style="font-weight: bold;"> log</span>, <span style="font-weight: bold;"> exp</span>, trigonometric functions, and so on)
+are defined for power series.
+</p>
+
+
+
+<div id="spadComm1-145" class="spadComm" >
+<form id="formComm1-145" action="javascript:makeRequest('1-145');" >
+<input id="comm1-145" type="text" class="command" style="width: 18em;" value="f := series(1/(1-x),x = 0)" />
+</form>
+<span id="commSav1-145" class="commSav" >f := series(1/(1-x),x = 0)</span>
+<div id="mathAns1-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+<div id="spadComm1-146" class="spadComm" >
+<form id="formComm1-146" action="javascript:makeRequest('1-146');" >
+<input id="comm1-146" type="text" class="command" style="width: 8em;" value="g := log(f)" />
+</form>
+<span id="commSav1-146" class="commSav" >g := log(f)</span>
+<div id="mathAns1-146" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>x</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>7</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>8</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>11</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+<div id="spadComm1-147" class="spadComm" >
+<form id="formComm1-147" action="javascript:makeRequest('1-147');" >
+<input id="comm1-147" type="text" class="command" style="width: 4em;" value="exp(g)" />
+</form>
+<span id="commSav1-147" class="commSav" >exp(g)</span>
+<div id="mathAns1-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p><!-- Warning: currently there are (interpreter) problems with converting
+ rational functions and polynomials to power series.-->
+</p>
+
+
+<p>Here is a way to obtain numerical approximations of
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>e</mi></mstyle></math> from the Taylor series expansion of <span style="font-weight: bold;"> exp</span>(x).
+First create the desired Taylor expansion.
+</p>
+
+
+
+<div id="spadComm1-148" class="spadComm" >
+<form id="formComm1-148" action="javascript:makeRequest('1-148');" >
+<input id="comm1-148" type="text" class="command" style="width: 13em;" value="f := taylor(exp(x))" />
+</form>
+<span id="commSav1-148" class="commSav" >f := taylor(exp(x))</span>
+<div id="mathAns1-148" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>40320</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>Evaluate the series at the value <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>.
+<!-- Warning: syntax for evaluating power series may change.-->
+As you see, you get a sequence of partial sums.
+</p>
+
+
+
+
+<div id="spadComm1-149" class="spadComm" >
+<form id="formComm1-149" action="javascript:makeRequest('1-149');" >
+<input id="comm1-149" type="text" class="command" style="width: 8em;" value="eval(f,1.0)" />
+</form>
+<span id="commSav1-149" class="commSav" >eval(f,1.0)</span>
+<div id="mathAns1-149" ></div>
+</div>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>6666666666</mn><mn>666666667</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7083333333</mn><mn>333333333</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7166666666</mn><mn>666666667</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7180555555</mn><mn>555555556</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7182539682</mn><mn>53968254</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7182787698</mn><mn>412698413</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7182815255</mn><mn>731922399</mn></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: Stream Expression Float
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.9.xhtml" style="margin-right: 10px;">Previous Section 1.9 Limits</a><a href="section-1.11.xhtml" style="margin-right: 10px;">Next Section 1.11 Derivatives</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.11.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.11.xhtml
new file mode 100644
index 0000000..335ec9e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.11.xhtml
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.11</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.10.xhtml" style="margin-right: 10px;">Previous Section 1.10 Series</a><a href="section-1.12.xhtml" style="margin-right: 10px;">Next Section 1.12 Integration</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.11">
+<h2 class="sectiontitle">1.11  Derivatives</h2>
+
+
+<a name="ugIntroCalcDeriv" class="label"/>
+
+
+<p>Use the Axiom function <span style="font-weight: bold;"> D</span> to differentiate an
+<span class="index">derivative</span><a name="chapter-1-74"/> expression.  <span class="index">differentiation</span><a name="chapter-1-75"/>
+</p>
+
+
+<p>To find the derivative of an expression <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> with respect to a
+variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>, enter <span style="font-weight: bold;"> D</span>(f, x).
+</p>
+
+
+
+
+<div id="spadComm1-150" class="spadComm" >
+<form id="formComm1-150" action="javascript:makeRequest('1-150');" >
+<input id="comm1-150" type="text" class="command" style="width: 10em;" value="f := exp exp x" />
+</form>
+<span id="commSav1-150" class="commSav" >f := exp exp x</span>
+<div id="mathAns1-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>e</mi><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm1-151" class="spadComm" >
+<form id="formComm1-151" action="javascript:makeRequest('1-151');" >
+<input id="comm1-151" type="text" class="command" style="width: 5em;" value="D(f, x)" />
+</form>
+<span id="commSav1-151" class="commSav" >D(f, x)</span>
+<div id="mathAns1-151" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><mo></mo><mrow><msup><mi>e</mi><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>An optional third argument <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> in <span style="font-weight: bold;"> D</span> asks Axiom for the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th
+derivative of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.  This finds the fourth derivative of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> with
+respect to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm1-152" class="spadComm" >
+<form id="formComm1-152" action="javascript:makeRequest('1-152');" >
+<input id="comm1-152" type="text" class="command" style="width: 7em;" value="D(f, x, 4)" />
+</form>
+<span id="commSav1-152" class="commSav" >D(f, x, 4)</span>
+<div id="mathAns1-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><msup><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mo></mo><mrow><msup><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mi>e</mi><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>You can also compute partial derivatives by specifying the order of
+<span class="index">differentiation:partial</span><a name="chapter-1-76"/>
+differentiation.
+</p>
+
+
+
+<div id="spadComm1-153" class="spadComm" >
+<form id="formComm1-153" action="javascript:makeRequest('1-153');" >
+<input id="comm1-153" type="text" class="command" style="width: 12em;" value="g := sin(x**2 + y)" />
+</form>
+<span id="commSav1-153" class="commSav" >g := sin(x**2 + y)</span>
+<div id="mathAns1-153" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>sin</mo><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm1-154" class="spadComm" >
+<form id="formComm1-154" action="javascript:makeRequest('1-154');" >
+<input id="comm1-154" type="text" class="command" style="width: 5em;" value="D(g, y)" />
+</form>
+<span id="commSav1-154" class="commSav" >D(g, y)</span>
+<div id="mathAns1-154" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>cos</mo><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm1-155" class="spadComm" >
+<form id="formComm1-155" action="javascript:makeRequest('1-155');" >
+<input id="comm1-155" type="text" class="command" style="width: 12em;" value="D(g, [y, y, x, x])" />
+</form>
+<span id="commSav1-155" class="commSav" >D(g, [y, y, x, x])</span>
+<div id="mathAns1-155" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>4</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><mo>cos</mo><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Axiom can manipulate the derivatives (partial and iterated) of
+<span class="index">differentiation:formal</span><a name="chapter-1-77"/> expressions involving formal operators.
+All the dependencies must be explicit.
+</p>
+
+
+<p>This returns <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> since F (so far) does not explicitly depend on <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm1-156" class="spadComm" >
+<form id="formComm1-156" action="javascript:makeRequest('1-156');" >
+<input id="comm1-156" type="text" class="command" style="width: 4em;" value="D(F,x)" />
+</form>
+<span id="commSav1-156" class="commSav" >D(F,x)</span>
+<div id="mathAns1-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Suppose that we have F a function of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>, and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>,
+where <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> are themselves functions of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>.
+</p>
+
+
+<p>Start by declaring that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>F</mi></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>, and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> are operators.
+<span class="index">operator</span><a name="chapter-1-78"/>
+</p>
+
+
+
+
+<div id="spadComm1-157" class="spadComm" >
+<form id="formComm1-157" action="javascript:makeRequest('1-157');" >
+<input id="comm1-157" type="text" class="command" style="width: 35em;" value="F := operator 'F; x := operator 'x; y := operator 'y" />
+</form>
+<span id="commSav1-157" class="commSav" >F := operator 'F; x := operator 'x; y := operator 'y</span>
+<div id="mathAns1-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>You can use F, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>, and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> in expressions.
+</p>
+
+
+
+
+<div id="spadComm1-158" class="spadComm" >
+<form id="formComm1-158" action="javascript:makeRequest('1-158');" >
+<input id="comm1-158" type="text" class="command" style="width: 22em;" value="a := F(x z, y z, z**2) + x y(z+1)" />
+</form>
+<span id="commSav1-158" class="commSav" >a := F(x z, y z, z**2) + x y(z+1)</span>
+<div id="mathAns1-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x</mi><mo>(</mo><mrow><mi>y</mi><mo>(</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mi>F</mi><mo>(</mo><mrow><mrow><mi>x</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>,</mo><mrow><mi>y</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Differentiate formally with respect to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>.
+The formal derivatives appearing in <math xmlns="&mathml;" mathsize="big"><mstyle><mi>dadz</mi></mstyle></math> are not just formal symbols,
+but do represent the derivatives of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>, and F.
+</p>
+
+
+
+
+<div id="spadComm1-159" class="spadComm" >
+<form id="formComm1-159" action="javascript:makeRequest('1-159');" >
+<input id="comm1-159" type="text" class="command" style="width: 10em;" value="dadz := D(a, z)" />
+</form>
+<span id="commSav1-159" class="commSav" >dadz := D(a, z)</span>
+<div id="mathAns1-159" ></div>
+</div>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mn>2</mn><mo></mo><mi>z</mi><mo></mo><mrow><mrow><msub><mi>F</mi><mrow><mo>,</mo><mn>3</mn></mrow></msub></mrow><mo>(</mo><mrow><mrow><mi>x</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>,</mo><mrow><mi>y</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo></mo><mrow><mrow><msub><mi>F</mi><mrow><mo>,</mo><mn>2</mn></mrow></msub></mrow><mo>(</mo><mrow><mrow><mi>x</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>,</mo><mrow><mi>y</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><msubsup><mi>x</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo></mo><mrow><mrow><msub><mi>F</mi><mrow><mo>,</mo><mn>1</mn></mrow></msub></mrow><mo>(</mo><mrow><mrow><mi>x</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>,</mo><mrow><mi>y</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><mrow><msubsup><mi>x</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mrow><mi>y</mi><mo>(</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+<p>You can evaluate the above for particular functional values of
+F, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>, and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.  If <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is <span style="font-weight: bold;"> exp</span>(z) and <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is <span style="font-weight: bold;"> log</span>(z+1), 
+then evaluates <span class="teletype">dadz</span>.
+</p>
+
+
+
+
+<div id="spadComm1-160" class="spadComm" >
+<form id="formComm1-160" action="javascript:makeRequest('1-160');" >
+<input id="comm1-160" type="text" class="command" style="width: 36em;" value="eval(eval(dadz, 'x, z +-> exp z), 'y, z +-> log(z+1))" />
+</form>
+<span id="commSav1-160" class="commSav" >eval(eval(dadz, 'x, z +-> exp z), 'y, z +-> log(z+1))</span>
+<div id="mathAns1-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>z</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mrow><msub><mi>F</mi><mrow><mo>,</mo><mn>3</mn></mrow></msub></mrow><mo>(</mo><mrow><mrow><msup><mi>e</mi><mi>z</mi></msup></mrow><mo>,</mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msub><mi>F</mi><mrow><mo>,</mo><mn>2</mn></mrow></msub></mrow><mo>(</mo><mrow><mrow><msup><mi>e</mi><mi>z</mi></msup></mrow><mo>,</mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mi>z</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>e</mi><mi>z</mi></msup></mrow><mo></mo><mrow><mrow><msub><mi>F</mi><mrow><mo>,</mo><mn>1</mn></mrow></msub></mrow><mo>(</mo><mrow><mrow><msup><mi>e</mi><mi>z</mi></msup></mrow><mo>,</mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mi>z</mi><mo>+</mo><mn>1</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>You obtain the same result by first evaluating <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> and
+then differentiating.
+</p>
+
+
+
+
+<div id="spadComm1-161" class="spadComm" >
+<form id="formComm1-161" action="javascript:makeRequest('1-161');" >
+<input id="comm1-161" type="text" class="command" style="width: 34em;" value="eval(eval(a, 'x, z +-> exp z), 'y, z +-> log(z+1))" />
+</form>
+<span id="commSav1-161" class="commSav" >eval(eval(a, 'x, z +-> exp z), 'y, z +-> log(z+1))</span>
+<div id="mathAns1-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>F</mi><mo>(</mo><mrow><mrow><msup><mi>e</mi><mi>z</mi></msup></mrow><mo>,</mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo>+</mo><mi>z</mi><mo>+</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm1-162" class="spadComm" >
+<form id="formComm1-162" action="javascript:makeRequest('1-162');" >
+<input id="comm1-162" type="text" class="command" style="width: 6em;" value="D(%, z)" />
+</form>
+<span id="commSav1-162" class="commSav" >D(%, z)</span>
+<div id="mathAns1-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>z</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mrow><msub><mi>F</mi><mrow><mo>,</mo><mn>3</mn></mrow></msub></mrow><mo>(</mo><mrow><mrow><msup><mi>e</mi><mi>z</mi></msup></mrow><mo>,</mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msub><mi>F</mi><mrow><mo>,</mo><mn>2</mn></mrow></msub></mrow><mo>(</mo><mrow><mrow><msup><mi>e</mi><mi>z</mi></msup></mrow><mo>,</mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mi>z</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>e</mi><mi>z</mi></msup></mrow><mo></mo><mrow><mrow><msub><mi>F</mi><mrow><mo>,</mo><mn>1</mn></mrow></msub></mrow><mo>(</mo><mrow><mrow><msup><mi>e</mi><mi>z</mi></msup></mrow><mo>,</mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>,</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mi>z</mi><mo>+</mo><mn>1</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.10.xhtml" style="margin-right: 10px;">Previous Section 1.10 Series</a><a href="section-1.12.xhtml" style="margin-right: 10px;">Next Section 1.12 Integration</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.12.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.12.xhtml
new file mode 100644
index 0000000..6a54ceb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.12.xhtml
@@ -0,0 +1,445 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.11.xhtml" style="margin-right: 10px;">Previous Section 1.11 Derivatives</a><a href="section-1.13.xhtml" style="margin-right: 10px;">Next Section 1.13 Differential Equations</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.12">
+<h2 class="sectiontitle">1.12  Integration</h2>
+
+
+<a name="ugIntroIntegrate" class="label"/>
+
+
+<p>Axiom has extensive library facilities for integration.
+<span class="index">integration</span><a name="chapter-1-79"/>
+</p>
+
+
+<p>The first example is the integration of a fraction with denominator
+that factors into a quadratic and a quartic irreducible polynomial.
+The usual partial fraction approach used by most other computer
+algebra systems either fails or introduces expensive unneeded
+algebraic numbers.
+</p>
+
+
+<p>We use a factorization-free algorithm.
+</p>
+
+
+
+<div id="spadComm1-163" class="spadComm" >
+<form id="formComm1-163" action="javascript:makeRequest('1-163');" >
+<input id="comm1-163" type="text" class="command" style="width: 26em;" value="integrate((x**2+2*x+1)/((x+1)**6+1),x)" />
+</form>
+<span id="commSav1-163" class="commSav" >integrate((x**2+2*x+1)/((x+1)**6+1),x)</span>
+<div id="mathAns1-163" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>arctan</mo><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>When real parameters are present, the form of the integral can depend on
+the signs of some expressions.
+</p>
+
+
+<p>Rather than query the user or make sign assumptions, Axiom returns
+all possible answers.
+</p>
+
+
+
+<div id="spadComm1-164" class="spadComm" >
+<form id="formComm1-164" action="javascript:makeRequest('1-164');" >
+<input id="comm1-164" type="text" class="command" style="width: 17em;" value="integrate(1/(x**2 + a),x)" />
+</form>
+<span id="commSav1-164" class="commSav" >integrate(1/(x**2 + a),x)</span>
+<div id="mathAns1-164" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mfrac><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>a</mi><mo>)</mo></mrow><mo></mo><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>a</mi><mo></mo><mi>x</mi></mrow></mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>a</mi></mrow></mfrac><mo>)</mo></mrow><mrow><mn>2</mn><mo></mo><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mrow></mfrac><mo>,</mo><mfrac><mrow><mo>arctan</mo><mo>(</mo><mfrac><mrow><mi>x</mi><mo></mo><mrow><msqrt><mi>a</mi></msqrt></mrow></mrow><mi>a</mi></mfrac><mo>)</mo></mrow><mrow><msqrt><mi>a</mi></msqrt></mrow></mfrac><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(List Expression Integer,...)
+</div>
+
+
+
+<p>The <span style="font-weight: bold;"> integrate</span> operation generally assumes that all
+parameters are real.  The only exception is when the integrand has
+complex valued quantities.
+</p>
+
+
+<p>If the parameter is complex instead of real, then the notion of sign
+is undefined and there is a unique answer.  You can request this
+answer by ``prepending'' the word ``complex'' to the command name:
+</p>
+
+
+
+
+<div id="spadComm1-165" class="spadComm" >
+<form id="formComm1-165" action="javascript:makeRequest('1-165');" >
+<input id="comm1-165" type="text" class="command" style="width: 22em;" value="complexIntegrate(1/(x**2 + a),x)" />
+</form>
+<span id="commSav1-165" class="commSav" >complexIntegrate(1/(x**2 + a),x)</span>
+<div id="mathAns1-165" ></div>
+</div>
+
+
+
+<p><!-- NOTE: the expression in the book is different but they differentiate
+to exactly the same answer. -->
+</p>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mi>x</mi><mo></mo><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mrow><mo>+</mo><mi>a</mi></mrow><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mfrac><mo>)</mo></mrow><mo>-</mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mi>x</mi><mo></mo><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mrow><mo>-</mo><mi>a</mi></mrow><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mfrac><mo>)</mo></mrow></mrow><mrow><mn>2</mn><mo></mo><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>The following two examples illustrate the limitations of table-based
+approaches.  The two integrands are very similar, but the answer to
+one of them requires the addition of two new algebraic numbers.
+</p>
+
+
+<p>This one is the easy one.
+The next one looks very similar
+but the answer is much more complicated.
+</p>
+
+
+
+<div id="spadComm1-166" class="spadComm" >
+<form id="formComm1-166" action="javascript:makeRequest('1-166');" >
+<input id="comm1-166" type="text" class="command" style="width: 23em;" value="integrate(x**3 / (a+b*x)**(1/3),x)" />
+</form>
+<span id="commSav1-166" class="commSav" >integrate(x**3 / (a+b*x)**(1/3),x)</span>
+<div id="mathAns1-166" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mo>(</mo><mrow><mn>120</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>135</mn><mo></mo><mi>a</mi><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>162</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mo></mo><mi>b</mi><mo></mo><mi>x</mi></mrow><mo>-</mo><mrow><mn>243</mn><mo></mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mrow><mroot><mrow><mrow><mi>b</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow></mrow><mrow><mn>440</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>Only an algorithmic approach is guaranteed to find what new constants
+must be added in order to find a solution.
+</p>
+
+
+
+
+<div id="spadComm1-167" class="spadComm" >
+<form id="formComm1-167" action="javascript:makeRequest('1-167');" >
+<input id="comm1-167" type="text" class="command" style="width: 27em;" value="integrate(1 / (x**3 * (a+b*x)**(1/3)),x)" />
+</form>
+<span id="commSav1-167" class="commSav" >integrate(1 / (x**3 * (a+b*x)**(1/3)),x)</span>
+<div id="mathAns1-167" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msqrt><mn>3</mn></msqrt></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mrow><mrow><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow><mo></mo><mrow><msup><mrow><mroot><mrow><mrow><mi>b</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow><mo></mo><mrow><mroot><mrow><mrow><mi>b</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow></mrow><mo>+</mo><mi>a</mi></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>4</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msqrt><mn>3</mn></msqrt></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mrow><mrow><mrow><msup><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow><mo></mo><mrow><mroot><mrow><mrow><mi>b</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow></mrow><mo>-</mo><mi>a</mi></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>12</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><mo>arctan</mo><mo>(</mo><mfrac><mrow><mrow><mn>2</mn><mo></mo><mrow><msqrt><mn>3</mn></msqrt></mrow><mo></mo><mrow><msup><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow><mo></mo><mrow><mroot><mrow><mrow><mi>b</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow></mrow><mo>+</mo><mrow><mi>a</mi><mo></mo><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow></mrow><mrow><mn>3</mn><mo></mo><mi>a</mi></mrow></mfrac><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>12</mn><mo></mo><mi>b</mi><mo></mo><mi>x</mi></mrow><mo>-</mo><mrow><mn>9</mn><mo></mo><mi>a</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msqrt><mn>3</mn></msqrt></mrow><mo></mo><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow><mo></mo><mrow><msup><mrow><mroot><mrow><mrow><mi>b</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mi>a</mi></mrow><mn>3</mn></mroot></mrow><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mn>18</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msqrt><mn>3</mn></msqrt></mrow><mo></mo><mrow><mroot><mi>a</mi><mn>3</mn></mroot></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>Some computer algebra systems use heuristics or table-driven
+approaches to integration.  When these systems cannot determine the
+answer to an integration problem, they reply ``I don't know.''  Axiom
+uses an algorithm which is a <span style="font-style: italic;"> decision procedure</span> for integration.
+If Axiom returns the original integral that conclusively proves that
+an integral cannot be expressed in terms of elementary functions.
+</p>
+
+
+<p>When Axiom returns an integral sign, it has proved that no answer
+exists as an elementary function.
+</p>
+
+
+
+
+<div id="spadComm1-168" class="spadComm" >
+<form id="formComm1-168" action="javascript:makeRequest('1-168');" >
+<input id="comm1-168" type="text" class="command" style="width: 26em;" value="integrate(log(1 + sqrt(a*x + b)) / x,x)" />
+</form>
+<span id="commSav1-168" class="commSav" >integrate(log(1 + sqrt(a*x + b)) / x,x)</span>
+<div id="mathAns1-168" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mo>&#x222B;</mo><mrow><mi>x</mi></mrow></msup><mrow><mfrac><mrow><mo>log</mo><mo>(</mo><mrow><mrow><msqrt><mrow><mi>b</mi><mo>+</mo><mrow><mo>%</mo><mi>Q</mi><mo></mo><mi>a</mi></mrow></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mrow><mo>%</mo><mi>Q</mi></mrow></mfrac><mo></mo><mrow><mi>d</mi><mo>%</mo><mi>Q</mi></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>Axiom can handle complicated mixed functions much beyond what you
+can find in tables.
+</p>
+
+
+<p>Whenever possible, Axiom tries to express the answer using the
+functions present in the integrand.
+</p>
+
+
+
+
+<div id="spadComm1-169" class="spadComm" >
+<form id="formComm1-169" action="javascript:makeRequest('1-169');" >
+<input id="comm1-169" type="text" class="command" style="width: 58em;" value="integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b)) / (sqrt(x+b) * (x + cosh(1+sqrt(x + b)))), x)" />
+</form>
+<span id="commSav1-169" class="commSav" >integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b)) / (sqrt(x+b) * (x + cosh(1+sqrt(x + b)))), x)</span>
+<div id="mathAns1-169" ></div>
+</div>
+
+
+
+<p><!-- NOTE: the book has the same answer with a trailing ``+4'' term.
+This term is not generated by Axiom. -->
+</p>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo></mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><mo>cosh</mo><mo>(</mo><mrow><mrow><msqrt><mrow><mi>x</mi><mo>+</mo><mi>b</mi></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>x</mi></mrow></mrow><mrow><mrow><mo>sinh</mo><mo>(</mo><mrow><mrow><msqrt><mrow><mi>x</mi><mo>+</mo><mi>b</mi></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>-</mo><mrow><mo>cosh</mo><mo>(</mo><mrow><mrow><msqrt><mrow><mi>x</mi><mo>+</mo><mi>b</mi></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow></mfrac><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><msqrt><mrow><mi>x</mi><mo>+</mo><mi>b</mi></mrow></msqrt></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>A strong structure-checking algorithm in Axiom finds hidden algebraic
+relationships between functions.
+</p>
+
+
+
+
+<div id="spadComm1-170" class="spadComm" >
+<form id="formComm1-170" action="javascript:makeRequest('1-170');" >
+<input id="comm1-170" type="text" class="command" style="width: 18em;" value="integrate(tan(atan(x)/3),x)" />
+</form>
+<span id="commSav1-170" class="commSav" >integrate(tan(atan(x)/3),x)</span>
+<div id="mathAns1-170" ></div>
+</div>
+
+
+<p><!-- NOTE: the book has a trailing ``+16'' term in the numerator
+This is not generated by Axiom. -->
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mn>8</mn><mo></mo><mrow><mo>log</mo><mo>(</mo><mrow><mrow><mn>3</mn><mo></mo><mrow><msup><mrow><mo>tan</mo><mo>(</mo><mfrac><mrow><mo>arctan</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>3</mn></mfrac><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mrow><mo>tan</mo><mo>(</mo><mfrac><mrow><mo>arctan</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>3</mn></mfrac><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>18</mn><mo></mo><mi>x</mi><mo></mo><mrow><mo>tan</mo><mo>(</mo><mfrac><mrow><mo>arctan</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>3</mn></mfrac><mo>)</mo></mrow></mrow></mtd></mtr></mtable><mo>)</mo></mrow><mn>18</mn></mfrac></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>The discovery of this algebraic relationship is necessary for correct
+integration of this function.
+Here are the details:
+</p>
+
+
+
+<ol>
+<li>
+
+If <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mo>tan</mo><mi>t</mi></mrow></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>g</mi><mo>=</mo><mo>tan</mo><mo>(</mo><mi>t</mi><mo>/</mo><mn>3</mn><mo>)</mo></mrow></mstyle></math> then the following 
+algebraic relation is true: <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>g</mi><mn>3</mn></msup><mo>-</mo><mn>3</mn><msup><mi>xg</mi><mn>2</mn></msup><mo>-</mo><mn>3</mn><mi>g</mi><mo>+</mo><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>
+</li>
+<li>
+Integrate <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> using this algebraic relation; this produces:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mn>24</mn><msup><mi>g</mi><mn>2</mn></msup><mo>-</mo><mn>8</mn><mo>)</mo><mo>log</mo><mo>(</mo><mn>3</mn><msup><mi>g</mi><mn>2</mn></msup><mo>-</mo><mn>1</mn><mo>)</mo><mo>+</mo><mo>(</mo><mn>81</mn><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><mn>24</mn><mo>)</mo><msup><mi>g</mi><mn>2</mn></msup><mo>+</mo><mn>72</mn><mi>xg</mi><mo>-</mo><mn>27</mn><msup><mi>x</mi><mn>2</mn></msup><mo>-</mo><mn>16</mn></mrow><mrow><mn>54</mn><msup><mi>g</mi><mn>2</mn></msup><mo>-</mo><mn>18</mn></mrow></mfrac></mstyle></math>
+</li>
+<li>
+Rationalize the denominator, producing:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mn>8</mn><mo>log</mo><mo>(</mo><mn>3</mn><msup><mi>g</mi><mn>2</mn></msup><mo>-</mo><mn>1</mn><mo>)</mo><mo>-</mo><mn>3</mn><msup><mi>g</mi><mn>2</mn></msup><mo>+</mo><mn>18</mn><mi>xg</mi><mo>+</mo><mn>16</mn></mrow><mn>18</mn></mfrac></mstyle></math>
+Replace <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> by the initial definition
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>g</mi><mo>=</mo><mo>tan</mo><mo>(</mo><mo>arctan</mo><mo>(</mo><mi>x</mi><mo>)</mo><mo>/</mo><mn>3</mn><mo>)</mo></mrow></mstyle></math>
+to produce the final result.
+</li>
+</ol>
+
+
+
+<p>This is an example of a mixed function where
+the algebraic layer is over the transcendental one.
+</p>
+
+
+
+<div id="spadComm1-171" class="spadComm" >
+<form id="formComm1-171" action="javascript:makeRequest('1-171');" >
+<input id="comm1-171" type="text" class="command" style="width: 32em;" value="integrate((x + 1) / (x*(x + log x) ** (3/2)), x)" />
+</form>
+<span id="commSav1-171" class="commSav" >integrate((x + 1) / (x*(x + log x) ** (3/2)), x)</span>
+<div id="mathAns1-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mrow><mn>2</mn><mo></mo><mrow><msqrt><mrow><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mi>x</mi></mrow></msqrt></mrow></mrow><mrow><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mi>x</mi></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>While incomplete for non-elementary functions, Axiom can
+handle some of them.
+</p>
+
+
+
+<div id="spadComm1-172" class="spadComm" >
+<form id="formComm1-172" action="javascript:makeRequest('1-172');" >
+<input id="comm1-172" type="text" class="command" style="width: 48em;" value="integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)" />
+</form>
+<span id="commSav1-172" class="commSav" >integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)</span>
+<div id="mathAns1-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mrow><mo>(</mo><mrow><mi>erf</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msqrt><mi>&#x03C0;</mi></msqrt></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mi>erf</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>-</mo><mn>1</mn></mrow><mrow><mrow><mi>erf</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mn>1</mn></mrow></mfrac><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><msqrt><mi>&#x03C0;</mi></msqrt></mrow></mrow></mrow><mrow><mrow><mn>8</mn><mo></mo><mrow><mi>erf</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>-</mo><mn>8</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>More examples of Axiom's integration capabilities are discussed in
+Section <a href="section-8.8.xhtml#ugProblemIntegration" class="ref" >ugProblemIntegration</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.11.xhtml" style="margin-right: 10px;">Previous Section 1.11 Derivatives</a><a href="section-1.13.xhtml" style="margin-right: 10px;">Next Section 1.13 Differential Equations</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.13.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.13.xhtml
new file mode 100644
index 0000000..3d897b7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.13.xhtml
@@ -0,0 +1,445 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.13</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.12.xhtml" style="margin-right: 10px;">Previous Section 1.12 Integration</a><a href="section-1.14.xhtml" style="margin-right: 10px;">Next Section 1.14 Solution of Equations</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.13">
+<h2 class="sectiontitle">1.13  Differential Equations</h2>
+
+
+<a name="ugIntroDiffEqns" class="label"/>
+
+<p>The general approach used in integration also carries over to the
+solution of linear differential equations.
+</p>
+
+
+<p>Let's solve some differential equations.
+Let <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> be the unknown function in terms of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-173" class="spadComm" >
+<form id="formComm1-173" action="javascript:makeRequest('1-173');" >
+<input id="comm1-173" type="text" class="command" style="width: 11em;" value="y := operator 'y" />
+</form>
+<span id="commSav1-173" class="commSav" >y := operator 'y</span>
+<div id="mathAns1-173" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>Here we solve a third order equation with polynomial coefficients.
+</p>
+
+
+
+<div id="spadComm1-174" class="spadComm" >
+<form id="formComm1-174" action="javascript:makeRequest('1-174');" >
+<input id="comm1-174" type="text" class="command" style="width: 60em;" value="deq := x**3 * D(y x, x, 3) + x**2 * D(y x, x, 2) - 2 * x * D(y x, x) + 2 * y x = 2 * x**4" />
+</form>
+<span id="commSav1-174" class="commSav" >deq := x**3 * D(y x, x, 3) + x**2 * D(y x, x, 2) - 2 * x * D(y x, x) + 2 * y x = 2 * x**4</span>
+<div id="mathAns1-174" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>x</mi><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow><mo>=</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm1-175" class="spadComm" >
+<form id="formComm1-175" action="javascript:makeRequest('1-175');" >
+<input id="comm1-175" type="text" class="command" style="width: 11em;" value="solve(deq, y, x)" />
+</form>
+<span id="commSav1-175" class="commSav" >solve(deq, y, x)</span>
+<div id="mathAns1-175" ></div>
+</div>
+
+
+
+<p><!-- NOTE: the book has a different solution and it appears to be 
+less complicated than this one. -->
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mfrac><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>20</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn></mrow><mrow><mn>15</mn><mo></mo><mi>x</mi></mrow></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mfrac><mrow><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mi>x</mi></mfrac><mo>,</mo><mfrac><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mi>x</mi></mfrac><mo>,</mo><mfrac><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mi>x</mi></mfrac><mo>]</mo></mrow></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+</div>
+
+
+
+
+<p>Here we find all the algebraic function solutions of the equation.
+</p>
+
+
+
+<div id="spadComm1-176" class="spadComm" >
+<form id="formComm1-176" action="javascript:makeRequest('1-176');" >
+<input id="comm1-176" type="text" class="command" style="width: 42em;" value="deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0" />
+</form>
+<span id="commSav1-176" class="commSav" >deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0</span>
+<div id="mathAns1-176" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mi>x</mi><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>=</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm1-177" class="spadComm" >
+<form id="formComm1-177" action="javascript:makeRequest('1-177');" >
+<input id="comm1-177" type="text" class="command" style="width: 11em;" value="solve(deq, y, x)" />
+</form>
+<span id="commSav1-177" class="commSav" >solve(deq, y, x)</span>
+<div id="mathAns1-177" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mfrac><mn>1</mn><mrow><msqrt><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></msqrt></mrow></mfrac><mo>,</mo><mfrac><mrow><mo>log</mo><mo>(</mo><mrow><mrow><msqrt><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></msqrt></mrow><mo>-</mo><mi>x</mi></mrow><mo>)</mo></mrow><mrow><msqrt><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></msqrt></mrow></mfrac><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+</div>
+
+
+
+<p>Coefficients of differential equations can come from arbitrary
+constant fields.  For example, coefficients can contain algebraic
+numbers.
+</p>
+
+
+<p>This example has solutions whose logarithmic derivative is an
+algebraic function of degree two.
+</p>
+
+
+
+
+<div id="spadComm1-178" class="spadComm" >
+<form id="formComm1-178" action="javascript:makeRequest('1-178');" >
+<input id="comm1-178" type="text" class="command" style="width: 37em;" value="eq := 2*x**3 * D(y x,x,2) + 3*x**2 * D(y x,x) - 2 * y x" />
+</form>
+<span id="commSav1-178" class="commSav" >eq := 2*x**3 * D(y x,x,2) + 3*x**2 * D(y x,x) - 2 * y x</span>
+<div id="mathAns1-178" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm1-179" class="spadComm" >
+<form id="formComm1-179" action="javascript:makeRequest('1-179');" >
+<input id="comm1-179" type="text" class="command" style="width: 13em;" value="solve(eq,y,x).basis" />
+</form>
+<span id="commSav1-179" class="commSav" >solve(eq,y,x).basis</span>
+<div id="mathAns1-179" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msup><mi>e</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mn>2</mn><mrow><msqrt><mi>x</mi></msqrt></mrow></mfrac><mo>)</mo></mrow></msup></mrow><mo>,</mo><mrow><msup><mi>e</mi><mfrac><mn>2</mn><mrow><msqrt><mi>x</mi></msqrt></mrow></mfrac></msup></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Expression Integer
+</div>
+
+
+
+<p>Here's another differential equation to solve.
+</p>
+
+
+
+<div id="spadComm1-180" class="spadComm" >
+<form id="formComm1-180" action="javascript:makeRequest('1-180');" >
+<input id="comm1-180" type="text" class="command" style="width: 31em;" value="deq := D(y x, x) = y(x) / (x + y(x) * log y x)" />
+</form>
+<span id="commSav1-180" class="commSav" >deq := D(y x, x) = y(x) / (x + y(x) * log y x)</span>
+<div id="mathAns1-180" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mrow><mrow><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mi>x</mi></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm1-181" class="spadComm" >
+<form id="formComm1-181" action="javascript:makeRequest('1-181');" >
+<input id="comm1-181" type="text" class="command" style="width: 11em;" value="solve(deq, y, x)" />
+</form>
+<span id="commSav1-181" class="commSav" >solve(deq, y, x)</span>
+<div id="mathAns1-181" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo></mo><mrow><msup><mrow><mo>log</mo><mo>(</mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>x</mi></mrow></mrow><mrow><mn>2</mn><mo></mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>Rather than attempting to get a closed form solution of
+a differential equation, you instead might want to find an
+approximate solution in the form of a series.
+</p>
+
+
+<p>Let's solve a system of nonlinear first order equations and get a
+solution in power series.  Tell Axiom that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is also an
+operator.
+</p>
+
+
+
+
+<div id="spadComm1-182" class="spadComm" >
+<form id="formComm1-182" action="javascript:makeRequest('1-182');" >
+<input id="comm1-182" type="text" class="command" style="width: 11em;" value="x := operator 'x" />
+</form>
+<span id="commSav1-182" class="commSav" >x := operator 'x</span>
+<div id="mathAns1-182" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>Here are the two equations forming our system.
+</p>
+
+
+
+<div id="spadComm1-183" class="spadComm" >
+<form id="formComm1-183" action="javascript:makeRequest('1-183');" >
+<input id="comm1-183" type="text" class="command" style="width: 21em;" value="eq1 := D(x(t), t) = 1 + x(t)**2" />
+</form>
+<span id="commSav1-183" class="commSav" >eq1 := D(x(t), t) = 1 + x(t)**2</span>
+<div id="mathAns1-183" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msubsup><mi>x</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mrow><mrow><msup><mrow><mi>x</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm1-184" class="spadComm" >
+<form id="formComm1-184" action="javascript:makeRequest('1-184');" >
+<input id="comm1-184" type="text" class="command" style="width: 21em;" value="eq2 := D(y(t), t) = x(t) * y(t)" />
+</form>
+<span id="commSav1-184" class="commSav" >eq2 := D(y(t), t) = x(t) * y(t)</span>
+<div id="mathAns1-184" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mrow><mrow><mi>x</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo></mo><mrow><mi>y</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+<p>We can solve the system around <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>t</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math> with the initial
+conditions <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><mn>0</mn></mrow></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><mn>1</mn></mrow></mstyle></math>.  Notice that since
+we give the unknowns in the order <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>]</mo></mrow></mstyle></math>, the answer is a list
+of two series in the order 
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mrow><mtext>series&nbsp;for&nbsp;</mtext></mrow><mi>x</mi><mo>(</mo><mi>t</mi><mo>)</mo><mo>,</mo><mrow><mtext>series&nbsp;for&nbsp;</mtext></mrow><mi>y</mi><mo>(</mo><mi>t</mi><mo>)</mo><mo>]</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm1-185" class="spadComm" >
+<form id="formComm1-185" action="javascript:makeRequest('1-185');" >
+<input id="comm1-185" type="text" class="command" style="width: 40em;" value="seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])" />
+</form>
+<span id="commSav1-185" class="commSav" >seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])</span>
+<div id="mathAns1-185" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo></mo><mi>t</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>15</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>17</mn><mn>315</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>62</mn><mn>2835</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>t</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>,</mo><mrow><mn>1</mn><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>5</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>61</mn><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>277</mn><mn>8064</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>50521</mn><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>t</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List UnivariateTaylorSeries(Expression Integer,t,0)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.12.xhtml" style="margin-right: 10px;">Previous Section 1.12 Integration</a><a href="section-1.14.xhtml" style="margin-right: 10px;">Next Section 1.14 Solution of Equations</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.14.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.14.xhtml
new file mode 100644
index 0000000..6a955a8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.14.xhtml
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.14</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.13.xhtml" style="margin-right: 10px;">Previous Section 1.13 Differential Equations</a><a href="section-1.15.xhtml" style="margin-right: 10px;">Next Section 1.15 System Commands</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.14">
+<h2 class="sectiontitle">1.14  Solution of Equations</h2>
+
+
+<a name="ugIntroSolution" class="label"/>
+
+<p>Axiom also has state-of-the-art algorithms for the solution of
+systems of polynomial equations.  When the number of equations and
+unknowns is the same, and you have no symbolic coefficients, you can
+use <span style="font-weight: bold;"> solve</span> for real roots and <span style="font-weight: bold;"> complexSolve</span> for
+complex roots.  In each case, you tell Axiom how accurate you
+want your result to be.  All operations in the <span class="italic">solve</span> family
+return answers in the form of a list of solution sets, where each
+solution set is a list of equations.
+</p>
+
+
+<p>A system of two equations involving a symbolic parameter <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-186" class="spadComm" >
+<form id="formComm1-186" action="javascript:makeRequest('1-186');" >
+<input id="comm1-186" type="text" class="command" style="width: 26em;" value="S(t) == [x**2-2*y**2 - t,x*y-y-5*x + 5]" />
+</form>
+<span id="commSav1-186" class="commSav" >S(t) == [x**2-2*y**2 - t,x*y-y-5*x + 5]</span>
+<div id="mathAns1-186" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Find the real roots of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>S</mi><mo>(</mo><mn>19</mn><mo>)</mo></mrow></mstyle></math> with
+rational arithmetic, correct to within <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>/</mo><msup><mn>10</mn><mn>20</mn></msup></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-187" class="spadComm" >
+<form id="formComm1-187" action="javascript:makeRequest('1-187');" >
+<input id="comm1-187" type="text" class="command" style="width: 14em;" value="solve(S(19),1/10**20)" />
+</form>
+<span id="commSav1-187" class="commSav" >solve(S(19),1/10**20)</span>
+<div id="mathAns1-187" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mfrac><mn>2451682632253093442511</mn><mn>295147905179352825856</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mn>2451682632253093442511</mn><mn>295147905179352825856</mn></mfrac></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Polynomial Fraction Integer
+</div>
+
+
+
+<p>Find the complex roots of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>S</mi><mo>(</mo><mn>19</mn><mo>)</mo></mrow></mstyle></math> with floating
+point coefficients to <math xmlns="&mathml;" mathsize="big"><mstyle><mn>20</mn></mstyle></math> digits accuracy in the mantissa.
+</p>
+
+
+
+
+<div id="spadComm1-188" class="spadComm" >
+<form id="formComm1-188" action="javascript:makeRequest('1-188');" >
+<input id="comm1-188" type="text" class="command" style="width: 18em;" value="complexSolve(S(19),10.e-20)" />
+</form>
+<span id="commSav1-188" class="commSav" >complexSolve(S(19),10.e-20)</span>
+<div id="mathAns1-188" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mrow><mn>5</mn><mo>.</mo><mn>0</mn></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mrow><mn>8</mn><mo>.</mo><mn>3066238629</mn><mn>180748526</mn></mrow></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mrow><mn>5</mn><mo>.</mo><mn>0</mn></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mrow><mn>8</mn><mo>.</mo><mn>3066238629</mn><mn>180748526</mn></mrow></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mo>-</mo><mrow><mrow><mn>3</mn><mo>.</mo><mn>0</mn></mrow><mo></mo><mi>i</mi></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mrow><mrow><mn>3</mn><mo>.</mo><mn>0</mn></mrow><mo></mo><mi>i</mi></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Polynomial Complex Float
+</div>
+
+
+
+<p>If a system of equations has symbolic coefficients and you want
+a solution in radicals, try <span style="font-weight: bold;"> radicalSolve</span>.
+</p>
+
+
+
+<div id="spadComm1-189" class="spadComm" >
+<form id="formComm1-189" action="javascript:makeRequest('1-189');" >
+<input id="comm1-189" type="text" class="command" style="width: 16em;" value="radicalSolve(S(a),[x,y])" />
+</form>
+<span id="commSav1-189" class="commSav" >radicalSolve(S(a),[x,y])</span>
+<div id="mathAns1-189" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mrow><msqrt><mrow><mi>a</mi><mo>+</mo><mn>50</mn></mrow></msqrt></mrow></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mn>5</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mrow><msqrt><mrow><mi>a</mi><mo>+</mo><mn>50</mn></mrow></msqrt></mrow></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mn>5</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mrow><msqrt><mfrac><mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></msqrt></mrow></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mo>-</mo><mrow><msqrt><mfrac><mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></msqrt></mrow></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Expression Integer
+</div>
+
+
+
+<p>For systems of equations with symbolic coefficients, you can apply
+<span style="font-weight: bold;"> solve</span>, listing the variables that you want Axiom to
+solve for.  For polynomial equations, a solution cannot usually be
+expressed solely in terms of the other variables.  Instead, the
+solution is presented as a ``triangular'' system of equations, where
+each polynomial has coefficients involving only the succeeding
+variables. This is analogous to converting a linear system of
+equations to ``triangular form''.
+</p>
+
+
+<p>A system of three equations in five variables.
+</p>
+
+
+
+<div id="spadComm1-190" class="spadComm" >
+<form id="formComm1-190" action="javascript:makeRequest('1-190');" >
+<input id="comm1-190" type="text" class="command" style="width: 41em;" value="eqns := [x**2 - y + z,x**2*z + x**4 - b*y, y**2 *z - a - b*x]" />
+</form>
+<span id="commSav1-190" class="commSav" >eqns := [x**2 - y + z,x**2*z + x**4 - b*y, y**2 *z - a - b*x]</span>
+<div id="mathAns1-190" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>z</mi><mo>-</mo><mi>y</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>-</mo><mrow><mi>b</mi><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>-</mo><mrow><mi>b</mi><mo></mo><mi>x</mi></mrow><mo>-</mo><mi>a</mi></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+<p>Solve the system for unknowns <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>]</mo></mrow></mstyle></math>,
+reducing the solution to triangular form.
+</p>
+
+
+
+<div id="spadComm1-191" class="spadComm" >
+<form id="formComm1-191" action="javascript:makeRequest('1-191');" >
+<input id="comm1-191" type="text" class="command" style="width: 13em;" value="solve(eqns,[x,y,z])" />
+</form>
+<span id="commSav1-191" class="commSav" >solve(eqns,[x,y,z])</span>
+<div id="mathAns1-191" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mfrac><mi>a</mi><mi>b</mi></mfrac></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>=</mo><mo>-</mo><mfrac><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mtable><mtr><mtd><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>b</mi><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>-</mo><mi>a</mi></mrow><mi>b</mi></mfrac></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mrow><mi>z</mi><mo>+</mo><mi>b</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><msup><mi>z</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>b</mi><mo></mo><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>a</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>a</mi><mo></mo><mi>b</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>.</mo><mrow><mn>2</mn><mo></mo><mi>a</mi><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>-</mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mo>=</mo><mn>0</mn><mo>]</mo></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Fraction Polynomial Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.13.xhtml" style="margin-right: 10px;">Previous Section 1.13 Differential Equations</a><a href="section-1.15.xhtml" style="margin-right: 10px;">Next Section 1.15 System Commands</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.15.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.15.xhtml
new file mode 100644
index 0000000..b99d138
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.15.xhtml
@@ -0,0 +1,484 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.15</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.14.xhtml" style="margin-right: 10px;">Previous Section 1.14 Solution of Equations</a><a href="section-1.16.xhtml" style="margin-right: 10px;">Next Section 1.16 Graphics</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.15">
+<h2 class="sectiontitle">1.15  System Commands</h2>
+
+
+<a name="ugIntroSysCmmands" class="label"/>
+
+
+
+<p>We conclude our tour of Axiom with a brief discussion of
+<span class="italic">system commands</span>.  System commands are special statements
+that start with a closing parenthesis (<span class="teletype">)</span>). They are used
+to control or display your Axiom environment, start the
+HyperDoc system, issue operating system commands and leave
+Axiom.  For example, <span class="teletype">)system</span> is used to issue commands
+to the operating system from Axiom.  Here
+is a brief description of some of these commands.  For more
+information on specific commands, see Appendix A .
+</p>
+
+
+
+<p>Perhaps the most important user command is the <span class="teletype">)clear all</span>
+command that initializes your environment.  Every section and
+subsection in this document has an invisible <span class="teletype">)clear all</span> that is
+read prior to the examples given in the section.  <span class="teletype">)clear all</span>
+gives you a fresh, empty environment with no user variables defined
+and the step number reset to <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.  The <span class="teletype">)clear</span> command
+can also be used to selectively clear values and properties of system
+variables.
+</p>
+
+
+
+<p>Another useful system command is <span class="teletype">)read</span>.  A preferred way to
+develop an application in Axiom is to put your interactive
+commands into a file, say <span style="font-weight: bold;"> my.input</span> file.  To get Axiom to
+read this file, you use the system command <span class="teletype">)read my.input</span>.
+If you need to make changes to your approach or definitions, go into
+your favorite editor, change <span style="font-weight: bold;"> my.input</span>, then <span class="teletype">)read
+my.input</span> again.
+</p>
+
+
+
+<p>Other system commands include: <span class="teletype">)history</span>, to display
+previous input and/or output lines; <span class="teletype">)display</span>, to display
+properties and values of workspace variables; and <span class="teletype">)what</span>.
+</p>
+
+
+
+<p>Issue <span class="teletype">)what</span> to get a list of Axiom objects that
+contain a given substring in their name.
+</p>
+
+
+
+
+
+<div id="spadComm1-192" class="spadComm" >
+<form id="formComm1-192" action="javascript:makeRequest('1-192');" >
+<input id="comm1-192" type="text" class="command" style="width: 18em;" value=")what operations integrate" />
+</form>
+<span id="commSav1-192" class="commSav" >)what operations integrate</span>
+<div id="mathAns1-192" ></div>
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+Operations&nbsp;whose&nbsp;names&nbsp;satisfy&nbsp;the&nbsp;above&nbsp;pattern(s):<br />
+<br />
+HermiteIntegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;algintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complexIntegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+expintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extendedIntegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+infieldIntegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;internalIntegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+internalIntegrate0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lazyGintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lazyIntegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+lfintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limitedIntegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;monomialIntegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+nagPolygonIntegrate&nbsp;&nbsp;&nbsp;&nbsp;palgintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pmComplexintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+pmintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tanintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;<br />
+To&nbsp;get&nbsp;more&nbsp;information&nbsp;about&nbsp;an&nbsp;operation&nbsp;such&nbsp;as&nbsp;<br />
+limitedIntegrate&nbsp;,&nbsp;issue&nbsp;the&nbsp;command&nbsp;)display&nbsp;op&nbsp;limitedIntegrate<br />
+</div>
+
+
+
+
+<a name="subsec-1.15.1"/>
+<div class="subsection"  id="subsec-1.15.1">
+<h3 class="subsectitle">1.15.1  Undo</h3>
+
+
+<a name="ugIntroUndo" class="label"/>
+
+
+
+<p>A useful system command is <span class="teletype">)undo</span>.  Sometimes while computing
+interactively with Axiom, you make a mistake and enter an
+incorrect definition or assignment.  Or perhaps you need to try one of
+several alternative approaches, one after another, to find the best
+way to approach an application.  For this, you will find the
+<span class="italic">undo</span> facility of Axiom helpful.
+</p>
+
+
+
+<p>System command <span class="teletype">)undo n</span> means ``undo back to step
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>''; it restores the values of user variables to those that
+existed immediately after input expression <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> was evaluated.
+Similarly, <span class="teletype">)undo -n</span> undoes changes caused by the last
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> input expressions.  Once you have done an <span class="teletype">)undo</span>,
+you can continue on from there, or make a change and <span style="font-weight: bold;"> redo</span> all
+your input expressions from the point of the <span class="teletype">)undo</span> forward.
+The <span class="teletype">)undo</span> is completely general: it changes the environment
+like any user expression.  Thus you can <span class="teletype">)undo</span> any previous
+undo.
+</p>
+
+
+
+<p>Here is a sample dialogue between user and Axiom.
+</p>
+
+
+
+<p>``Let me define
+two mutually dependent functions <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> piece-wise.''
+</p>
+
+
+
+
+
+<div id="spadComm1-193" class="spadComm" >
+<form id="formComm1-193" action="javascript:makeRequest('1-193');" >
+<input id="comm1-193" type="text" class="command" style="width: 14em;" value="f(0) == 1; g(0) == 1" />
+</form>
+<span id="commSav1-193" class="commSav" >f(0) == 1; g(0) == 1</span>
+<div id="mathAns1-193" ></div>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>``Here is the general term for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.''
+</p>
+
+
+
+
+
+<div id="spadComm1-194" class="spadComm" >
+<form id="formComm1-194" action="javascript:makeRequest('1-194');" >
+<input id="comm1-194" type="text" class="command" style="width: 20em;" value="f(n) == e/2*f(n-1) - x*g(n-1)" />
+</form>
+<span id="commSav1-194" class="commSav" >f(n) == e/2*f(n-1) - x*g(n-1)</span>
+<div id="mathAns1-194" ></div>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+<p>``And here is the general term for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math>.''
+</p>
+
+
+
+
+
+<div id="spadComm1-195" class="spadComm" >
+<form id="formComm1-195" action="javascript:makeRequest('1-195');" >
+<input id="comm1-195" type="text" class="command" style="width: 20em;" value="g(n) == -x*f(n-1) + d/3*g(n-1)" />
+</form>
+<span id="commSav1-195" class="commSav" >g(n) == -x*f(n-1) + d/3*g(n-1)</span>
+<div id="mathAns1-195" ></div>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+<p>``What is value of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mstyle></math>?''
+</p>
+
+
+
+
+
+<div id="spadComm1-196" class="spadComm" >
+<form id="formComm1-196" action="javascript:makeRequest('1-196');" >
+<input id="comm1-196" type="text" class="command" style="width: 3em;" value="f(3)" />
+</form>
+<span id="commSav1-196" class="commSav" >f(3)</span>
+<div id="mathAns1-196" ></div>
+</div>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mi>e</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mi>d</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mi>d</mi><mo></mo><mi>e</mi></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mo></mo><mrow><msup><mi>d</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>8</mn></mfrac><mo></mo><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+
+<p>``Hmm, I think I want to define <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> differently.
+Undo to the environment right after I defined <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.''
+</p>
+
+
+
+<div id="spadComm1-197" class="spadComm" >
+<form id="formComm1-197" action="javascript:makeRequest('1-197');" >
+<input id="comm1-197" type="text" class="command" style="width: 5em;" value=")undo 2" />
+</form>
+<span id="commSav1-197" class="commSav" >)undo 2</span>
+<div id="mathAns1-197" ></div>
+</div>
+
+
+
+
+<p>``Here is how I think I want <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> to be defined instead.''
+</p>
+
+
+
+
+<div id="spadComm1-198" class="spadComm" >
+<form id="formComm1-198" action="javascript:makeRequest('1-198');" >
+<input id="comm1-198" type="text" class="command" style="width: 20em;" value="f(n) == d/3*f(n-1) - x*g(n-1)" />
+</form>
+<span id="commSav1-198" class="commSav" >f(n) == d/3*f(n-1) - x*g(n-1)</span>
+<div id="mathAns1-198" ></div>
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;f&nbsp;<br />
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+<p>Redo the computation from expression <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math> forward.
+</p>
+
+
+
+
+
+<div id="spadComm1-199" class="spadComm" >
+<form id="formComm1-199" action="javascript:makeRequest('1-199');" >
+<input id="comm1-199" type="text" class="command" style="width: 8em;" value=")undo )redo" />
+</form>
+<span id="commSav1-199" class="commSav" >)undo )redo</span>
+<div id="mathAns1-199" ></div>
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+g(n)&nbsp;==&nbsp;-x*f(n-1)&nbsp;+&nbsp;d/3*g(n-1)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type:&nbsp;Void<br />
+f(3)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Polynomial&nbsp;Fraction&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+<br />
++++&nbsp;|*1;g;1;G82322;AUX|&nbsp;redefined<br />
+<br />
++++&nbsp;|*1;g;1;G82322|&nbsp;redefined<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Polynomial&nbsp;Fraction&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+<br />
++++&nbsp;|*1;g;1;G82322;AUX|&nbsp;redefined<br />
+<br />
++++&nbsp;|*1;g;1;G82322|&nbsp;redefined<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Polynomial&nbsp;Fraction&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+<br />
++++&nbsp;|*1;f;1;G82322;AUX|&nbsp;redefined<br />
+<br />
++++&nbsp;|*1;f;1;G82322|&nbsp;redefined<br />
+</div>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mi>d</mi><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>d</mi><mn>2</mn></msup></mrow><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mo></mo><mrow><msup><mi>d</mi><mn>3</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+
+<p>``I want my old definition of
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> after all. Undo the undo and restore
+the environment to that immediately after <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mstyle></math>.''
+</p>
+
+
+
+
+
+<div id="spadComm1-200" class="spadComm" >
+<form id="formComm1-200" action="javascript:makeRequest('1-200');" >
+<input id="comm1-200" type="text" class="command" style="width: 5em;" value=")undo 4" />
+</form>
+<span id="commSav1-200" class="commSav" >)undo 4</span>
+<div id="mathAns1-200" ></div>
+</div>
+
+
+
+
+<p>``Check that the value of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mstyle></math> is restored.''
+</p>
+
+
+
+
+
+<div id="spadComm1-201" class="spadComm" >
+<form id="formComm1-201" action="javascript:makeRequest('1-201');" >
+<input id="comm1-201" type="text" class="command" style="width: 3em;" value="f(3)" />
+</form>
+<span id="commSav1-201" class="commSav" >f(3)</span>
+<div id="mathAns1-201" ></div>
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Polynomial&nbsp;Fraction&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+<br />
++++&nbsp;|*1;g;1;G82322;AUX|&nbsp;redefined<br />
+<br />
++++&nbsp;|*1;g;1;G82322|&nbsp;redefined<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Polynomial&nbsp;Fraction&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+<br />
++++&nbsp;|*1;g;1;G82322;AUX|&nbsp;redefined<br />
+<br />
++++&nbsp;|*1;g;1;G82322|&nbsp;redefined<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Polynomial&nbsp;Fraction&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+<br />
++++&nbsp;|*1;f;1;G82322;AUX|&nbsp;redefined<br />
+<br />
++++&nbsp;|*1;f;1;G82322|&nbsp;redefined<br />
+</div>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mi>e</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mi>d</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mi>d</mi><mo></mo><mi>e</mi></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mo></mo><mrow><msup><mi>d</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>8</mn></mfrac><mo></mo><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+
+<p>After you have gone off on several tangents, then backtracked to
+previous points in your conversation using <span class="teletype">)undo</span>, you might
+want to save all the ``correct'' input commands you issued,
+disregarding those undone.  The system command <span class="teletype">)history
+)write mynew.input</span> writes a clean straight-line program onto the file
+<span style="font-weight: bold;"> mynew.input</span> on your disk.
+</p>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.14.xhtml" style="margin-right: 10px;">Previous Section 1.14 Solution of Equations</a><a href="section-1.16.xhtml" style="margin-right: 10px;">Next Section 1.16 Graphics</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.16.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.16.xhtml
new file mode 100644
index 0000000..a961e45
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.16.xhtml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.16</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.15.xhtml" style="margin-right: 10px;">Previous Section 1.15 System Commands</a><a href="section-2.0.xhtml" style="margin-right: 10px;">Next Section 2.0 Using Types and Modes</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.16">
+<h2 class="sectiontitle">1.16  Graphics</h2>
+
+
+<a name="ugIntroGraphics" class="label"/>
+
+
+
+<p>Axiom has a two- and three-dimensional drawing and rendering
+<span class="index">graphics</span><a name="chapter-1-80"/> package that allows you to draw, shade, color,
+rotate, translate, map, clip, scale and combine graphic output of
+Axiom computations.  The graphics interface is capable of
+plotting functions of one or more variables and plotting parametric
+surfaces.  Once the graphics figure appears in a window, move your
+mouse to the window and click.  A control panel appears immediately
+and allows you to interactively transform the object.
+</p>
+
+
+
+<p>This is an example of Axiom's two-dimensional plotting.
+From the 2D Control Panel you can rescale the plot, turn axes and units
+on and off and save the image, among other things.
+This PostScript image was produced by clicking on the
+<span style="font-weight: bold;"> PS</span> 2D Control Panel button.
+</p>
+
+
+
+
+
+<div class="spadgraph" style="width: 25em">
+draw(cos(5*t/8), t=0..16*%pi, coordinates==polar)
+</div>
+
+
+
+<table class="image">
+<tr><td>
+<img src="ps/P28a.png" alt=""/>
+</td></tr>
+<tr><td>
+<div class="figcaption">
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>J</mi><mn>0</mn></msub><mo>(</mo><msqrt><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup></mrow></msqrt><mo>)</mo></mrow></mstyle></math> for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>20</mn><mo>&#x2264;</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>&#x2264;</mo><mn>20</mn></mrow></mstyle></math>
+</div>
+</td></tr>
+</table>
+
+<p>This is an example of Axiom's three-dimensional plotting.
+It is a monochrome graph of the complex arctangent
+function.
+The image displayed was rotated and had the ``shade'' and ``outline''
+display options set from the 3D Control Panel.
+The PostScript output was produced by clicking on the
+<span style="font-weight: bold;"> save</span> 3D Control Panel button and then
+clicking on the <span style="font-weight: bold;"> PS</span> button.
+See Section <a href="section-8.1.xhtml#ugProblemNumeric" class="ref" >ugProblemNumeric</a> 
+for more details and examples of Axiom's numeric and graphics capabilities.
+</p>
+
+
+
+
+
+<div class="spadgraph" style="width: 60em">
+draw((x,y) +-> real atan complex(x,y), -%pi..%pi, -%pi..%pi, colorFunction == (x,y) +-> argument atan complex(x,y))
+</div>
+
+
+<table class="image">
+<tr><td>
+<img src="ps/P28b.png" alt=""/>
+</td></tr>
+<tr><td>
+<div class="figcaption">atan</div>
+</td></tr>
+</table>
+
+<p>An exhibit of Axiom images is given later.  For a description of the
+commands and programs that produced these figures, see
+<a href="section-21.0.xhtml#ugAppGraphics" class="ref" >ugAppGraphics</a> .  PostScript
+<span class="index">PostScript</span><a name="chapter-1-81"/> output is available so that Axiom images can be
+printed.<span class="footnote">PostScript is a trademark of Adobe Systems
+Incorporated, registered in the United States.</span>  See <a href="section-7.0.xhtml#ugGraph" class="ref" >ugGraph</a> for more examples and details about using
+Axiom's graphics facilities.
+</p>
+
+
+
+<p>This concludes your tour of Axiom.
+To disembark, issue the system command <span class="teletype">)quit</span> to leave Axiom
+and return to the operating system.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.15.xhtml" style="margin-right: 10px;">Previous Section 1.15 System Commands</a><a href="section-2.0.xhtml" style="margin-right: 10px;">Next Section 2.0 Using Types and Modes</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.2.xhtml
new file mode 100644
index 0000000..bc8c088
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.2.xhtml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.1.xhtml" style="margin-right: 10px;">Previous Section 1.1 Starting Up and Winding Down</a><a href="section-1.3.xhtml" style="margin-right: 10px;">Next Section 1.3 The Axiom Language</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.2">
+<h2 class="sectiontitle">1.2  Typographic Conventions</h2>
+
+
+<a name="ugIntroTypo" class="label"/>
+
+<p>In this document we have followed these typographical conventions:
+</p>
+
+
+
+<ul>
+<li>
+ Categories, domains and packages are displayed in this font:
+<span class="teletype">Ring</span>, <span class="teletype">Integer</span>, <span class="teletype">DiophantineSolutionPackage</span>.
+</li>
+<li> Prefix operators, infix operators, and punctuation symbols in 
+the Axiom language are displayed in the text like this:
+<span class="teletype">+</span>, <span class="teletype"> $</span>, <span class="teletype">+-></span>.
+</li>
+<li> Axiom expressions or expression fragments are displayed in this font:<br/>
+<span class="teletype">inc(x) == x + 1</span>.
+</li>
+<li> For clarity of presentation, <span class="texlogo">TeX</span> is often used to format expressions<br/>
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>=</mo><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><mn>1</mn></mrow></mstyle></math>.
+</li>
+<li> Function names and HyperDoc button names are displayed in the text in
+this font:
+<span style="font-weight: bold;"> factor</span>, <span style="font-weight: bold;"> integrate</span>,  <span style="font-weight: bold;"> Lighting</span>.
+</li>
+<li> Italics are used for emphasis and for words defined in the glossary: <br/>
+<span class="italic">category</span>.
+</li>
+</ul>
+
+
+
+<p>This document contains over 2500 examples of Axiom input and output.  All
+examples were run though Axiom and their output was created in <span class="texlogo">TeX</span>
+form by the Axiom <span class="teletype">TexFormat</span> package.  We have deleted system
+messages from the example output if those messages are not important
+for the discussions in which the examples appear.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.1.xhtml" style="margin-right: 10px;">Previous Section 1.1 Starting Up and Winding Down</a><a href="section-1.3.xhtml" style="margin-right: 10px;">Next Section 1.3 The Axiom Language</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.3.xhtml
new file mode 100644
index 0000000..ac340ca
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.3.xhtml
@@ -0,0 +1,1342 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.2.xhtml" style="margin-right: 10px;">Previous Section 1.2 Typographic Conventions</a><a href="section-1.4.xhtml" style="margin-right: 10px;">Next Section 1.4 Numbers</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.3">
+<h2 class="sectiontitle">1.3  The Axiom Language</h2>
+
+
+<a name="ugIntroExpressions" class="label"/>
+
+<p>The Axiom language is a rich language for performing interactive
+computations and for building components of the Axiom library.
+Here we present only some basic aspects of the language that you need
+to know for the rest of this chapter.  Our discussion here is
+intentionally informal, with details unveiled on an ``as needed''
+basis.  For more information on a particular construct, we suggest you
+consult the index.
+</p>
+
+
+
+<a name="subsec-1.3.1"/>
+<div class="subsection"  id="subsec-1.3.1">
+<h3 class="subsectitle">1.3.1  Arithmetic Expressions</h3>
+
+
+<a name="ugIntroArithmetic" class="label"/>
+
+<p>For arithmetic expressions, use the ``<span class="teletype">+</span>'' and ``<span class="teletype">-</span>'' operator
+as in mathematics.  Use ``<span class="teletype">*</span>'' for multiplication, and ``<span class="teletype">**</span>''
+for exponentiation.  To create a fraction, use ``<span class="teletype">/</span>''.  When an
+expression contains several operators, those of highest
+<span class="italic">precedence</span> are evaluated first.  For arithmetic operators,
+``<span class="teletype">**</span>'' has highest precedence, ``<span class="teletype">*</span>'' and ``<span class="teletype">/</span>'' have the
+next highest precedence, and ``<span class="teletype">+</span>'' and ``<span class="teletype">-</span>'' have the lowest
+precedence.
+</p>
+
+
+<p>Axiom puts implicit parentheses around operations of higher
+precedence, and groups those of equal precedence from left to right.
+</p>
+
+
+
+<div id="spadComm1-1" class="spadComm" >
+<form id="formComm1-1" action="javascript:makeRequest('1-1');" >
+<input id="comm1-1" type="text" class="command" style="width: 18em;" value="1 + 2 - 3 / 4 * 3 ** 2 - 1" />
+</form>
+<span id="commSav1-1" class="commSav" >1 + 2 - 3 / 4 * 3 ** 2 - 1</span>
+<div id="mathAns1-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>19</mn><mn>4</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The above expression is equivalent to this.
+</p>
+
+
+
+<div id="spadComm1-2" class="spadComm" >
+<form id="formComm1-2" action="javascript:makeRequest('1-2');" >
+<input id="comm1-2" type="text" class="command" style="width: 24em;" value="((1 + 2) - ((3 / 4) * (3 ** 2))) - 1" />
+</form>
+<span id="commSav1-2" class="commSav" >((1 + 2) - ((3 / 4) * (3 ** 2))) - 1</span>
+<div id="mathAns1-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>19</mn><mn>4</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>If an expression contains subexpressions enclosed in parentheses,
+the parenthesized subexpressions are evaluated first (from left to
+right, from inside out).
+</p>
+
+
+
+<div id="spadComm1-3" class="spadComm" >
+<form id="formComm1-3" action="javascript:makeRequest('1-3');" >
+<input id="comm1-3" type="text" class="command" style="width: 20em;" value="1 + 2 - 3/ (4 * 3 ** (2 - 1))" />
+</form>
+<span id="commSav1-3" class="commSav" >1 + 2 - 3/ (4 * 3 ** (2 - 1))</span>
+<div id="mathAns1-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>11</mn><mn>4</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-1.3.2"/>
+<div class="subsection"  id="subsec-1.3.2">
+<h3 class="subsectitle">1.3.2  Previous Results</h3>
+
+
+<a name="ugIntroPrevious" class="label"/>
+
+<p>Use the percent sign ``<span class="teletype">%</span>'' to refer to the last result.
+<span class="index">result:previous</span><a name="chapter-1-12"/> Also, use ``<span class="teletype">%%</span>" to refer to
+previous results.  <span class="index">percentpercent@{%%}</span><a name="chapter-1-13"/> ``<span class="teletype">%%(-1)</span>'' is
+equivalent to ``<span class="teletype">%</span>'', ``<span class="teletype">%%(-2)</span>'' returns the next to
+the last result, and so on.  ``<span class="teletype">%%(1)</span>'' returns the result from
+step number 1, ``<span class="teletype">%%(2)</span>'' returns the result from step number 2,
+and so on.  ``<span class="teletype">%%(0)</span>'' is not defined.
+</p>
+
+
+<p>This is ten to the tenth power.
+</p>
+
+
+
+<div id="spadComm1-4" class="spadComm" >
+<form id="formComm1-4" action="javascript:makeRequest('1-4');" >
+<input id="comm1-4" type="text" class="command" style="width: 6em;" value="10 ** 10" />
+</form>
+<span id="commSav1-4" class="commSav" >10 ** 10</span>
+<div id="mathAns1-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10000000000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is the last result minus one.
+</p>
+
+
+
+<div id="spadComm1-5" class="spadComm" >
+<form id="formComm1-5" action="javascript:makeRequest('1-5');" >
+<input id="comm1-5" type="text" class="command" style="width: 4em;" value="% - 1" />
+</form>
+<span id="commSav1-5" class="commSav" >% - 1</span>
+<div id="mathAns1-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>9999999999</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is the last result.
+</p>
+
+
+
+<div id="spadComm1-6" class="spadComm" >
+<form id="formComm1-6" action="javascript:makeRequest('1-6');" >
+<input id="comm1-6" type="text" class="command" style="width: 6em;" value="%%(-1)" />
+</form>
+<span id="commSav1-6" class="commSav" >%%(-1)</span>
+<div id="mathAns1-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>9999999999</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is the result from step number 1.
+</p>
+
+
+
+<div id="spadComm1-7" class="spadComm" >
+<form id="formComm1-7" action="javascript:makeRequest('1-7');" >
+<input id="comm1-7" type="text" class="command" style="width: 5em;" value="%%(1)" />
+</form>
+<span id="commSav1-7" class="commSav" >%%(1)</span>
+<div id="mathAns1-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10000000000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-1.3.3"/>
+<div class="subsection"  id="subsec-1.3.3">
+<h3 class="subsectitle">1.3.3  Some Types</h3>
+
+
+<a name="ugIntroTypes" class="label"/>
+
+<p>Everything in Axiom has a type.  The type determines what operations
+you can perform on an object and how the object can be used.
+Chapter~<a href="section-2.0.xhtml#ugTypes" class="ref" >ugTypes</a>  is dedicated to the
+interactive use of types.  Several of the final chapters discuss how
+types are built and how they are organized in the Axiom library.
+</p>
+
+
+<p>Positive integers are given type <span style="font-weight: bold;"> PositiveInteger</span>.
+</p>
+
+
+
+<div id="spadComm1-8" class="spadComm" >
+<form id="formComm1-8" action="javascript:makeRequest('1-8');" >
+<input id="comm1-8" type="text" class="command" style="width: 1em;" value="8" />
+</form>
+<span id="commSav1-8" class="commSav" >8</span>
+<div id="mathAns1-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Negative ones are given type <span style="font-weight: bold;"> Integer</span>.  This fine
+distinction is helpful to the Axiom interpreter.
+</p>
+
+
+
+
+<div id="spadComm1-9" class="spadComm" >
+<form id="formComm1-9" action="javascript:makeRequest('1-9');" >
+<input id="comm1-9" type="text" class="command" style="width: 2em;" value="-8" />
+</form>
+<span id="commSav1-9" class="commSav" >-8</span>
+<div id="mathAns1-9" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>8</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>Here a positive integer exponent gives a polynomial result.
+</p>
+
+
+
+<div id="spadComm1-10" class="spadComm" >
+<form id="formComm1-10" action="javascript:makeRequest('1-10');" >
+<input id="comm1-10" type="text" class="command" style="width: 3em;" value="x**8" />
+</form>
+<span id="commSav1-10" class="commSav" >x**8</span>
+<div id="mathAns1-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Here a negative integer exponent produces a fraction.
+</p>
+
+
+
+<div id="spadComm1-11" class="spadComm" >
+<form id="formComm1-11" action="javascript:makeRequest('1-11');" >
+<input id="comm1-11" type="text" class="command" style="width: 5em;" value="x**(-8)" />
+</form>
+<span id="commSav1-11" class="commSav" >x**(-8)</span>
+<div id="mathAns1-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>1</mn><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-1.3.4"/>
+<div class="subsection"  id="subsec-1.3.4">
+<h3 class="subsectitle">1.3.4  Symbols, Variables, Assignments, and Declarations</h3>
+
+
+<a name="ugIntroAssign" class="label"/>
+
+<p>A <span class="italic">symbol</span> is a literal used for the input of things like
+the ``variables'' in polynomials and power series.
+</p>
+
+
+<p>We use the three symbols <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>, and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> in
+entering this polynomial.
+</p>
+
+
+
+<div id="spadComm1-12" class="spadComm" >
+<form id="formComm1-12" action="javascript:makeRequest('1-12');" >
+<input id="comm1-12" type="text" class="command" style="width: 8em;" value="(x - y*z)**2" />
+</form>
+<span id="commSav1-12" class="commSav" >(x - y*z)**2</span>
+<div id="mathAns1-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>x</mi><mo></mo><mi>y</mi><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>A symbol has a name beginning with an uppercase or lowercase
+alphabetic <span class="index">symbol:naming</span><a name="chapter-1-14"/> character, ``<span class="teletype">%</span>'', or
+``<span class="teletype">!</span>''.  Successive characters (if any) can be any of the
+above, digits, or ``<span class="teletype">?</span>''.  Case is distinguished: the symbol
+<span class="teletype">points</span> is different from the symbol <span class="teletype">Points</span>.
+</p>
+
+
+<p>A symbol can also be used in Axiom as a <span class="italic">variable</span>.  A variable
+refers to a value.  To <span style="font-style: italic;"> assign</span> a value to a variable,
+<span class="index">variable:naming</span><a name="chapter-1-15"/> the operator ``<span class="teletype">:=</span>'' <span class="index">assignment</span><a name="chapter-1-16"/>
+is used.  <span class="footnote">Axiom actually has two forms of assignment: 
+<span class="italic">immediate</span> assignment, as discussed here, and <span class="italic">delayed
+assignment</span>.  See Section <a href="section-5.1.xhtml#ugLangAssign" class="ref" >ugLangAssign</a> 
+for details.</span>  A variable initially has no restrictions on the kinds
+of <span class="index">declaration</span><a name="chapter-1-17"/> values to which it can refer.
+</p>
+
+
+<p>This assignment gives the value <math xmlns="&mathml;" mathsize="big"><mstyle><mn>4</mn></mstyle></math> (an integer) to
+a variable named <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-13" class="spadComm" >
+<form id="formComm1-13" action="javascript:makeRequest('1-13');" >
+<input id="comm1-13" type="text" class="command" style="width: 4em;" value="x := 4" />
+</form>
+<span id="commSav1-13" class="commSav" >x := 4</span>
+<div id="mathAns1-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This gives the value <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>+</mo><mn>3</mn><mo>/</mo><mn>5</mn></mrow></mstyle></math> (a polynomial)  to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-14" class="spadComm" >
+<form id="formComm1-14" action="javascript:makeRequest('1-14');" >
+<input id="comm1-14" type="text" class="command" style="width: 8em;" value="x := z + 3/5" />
+</form>
+<span id="commSav1-14" class="commSav" >x := z + 3/5</span>
+<div id="mathAns1-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>z</mi><mo>+</mo><mfrac><mn>3</mn><mn>5</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+<p>To restrict the types of objects that can be assigned to a variable,
+use a <span class="italic">declaration</span>
+</p>
+
+
+
+<div id="spadComm1-15" class="spadComm" >
+<form id="formComm1-15" action="javascript:makeRequest('1-15');" >
+<input id="comm1-15" type="text" class="command" style="width: 8em;" value="y : Integer" />
+</form>
+<span id="commSav1-15" class="commSav" >y : Integer</span>
+<div id="mathAns1-15" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>After a variable is declared to be of some type, only values
+of that type can be assigned to that variable.
+</p>
+
+
+
+<div id="spadComm1-16" class="spadComm" >
+<form id="formComm1-16" action="javascript:makeRequest('1-16');" >
+<input id="comm1-16" type="text" class="command" style="width: 5em;" value="y := 89" />
+</form>
+<span id="commSav1-16" class="commSav" >y := 89</span>
+<div id="mathAns1-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>89</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>The declaration for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> forces values assigned to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> to
+be converted to integer values.
+</p>
+
+
+
+<div id="spadComm1-17" class="spadComm" >
+<form id="formComm1-17" action="javascript:makeRequest('1-17');" >
+<input id="comm1-17" type="text" class="command" style="width: 9em;" value="y := sin %pi" />
+</form>
+<span id="commSav1-17" class="commSav" >y := sin %pi</span>
+<div id="mathAns1-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>If no such conversion is possible,
+Axiom refuses to assign a value to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-18" class="spadComm" >
+<form id="formComm1-18" action="javascript:makeRequest('1-18');" >
+<input id="comm1-18" type="text" class="command" style="width: 6em;" value="y := 2/3" />
+</form>
+<span id="commSav1-18" class="commSav" >y := 2/3</span>
+<div id="mathAns1-18" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Cannot&nbsp;convert&nbsp;right-hand&nbsp;side&nbsp;of&nbsp;assignment<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;-<br />
+&nbsp;&nbsp;&nbsp;3<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;an&nbsp;object&nbsp;of&nbsp;the&nbsp;type&nbsp;Integer&nbsp;of&nbsp;the&nbsp;left-hand&nbsp;side.<br />
+</div>
+
+
+
+<p>A type declaration can also be given together with an assignment.
+The declaration can assist Axiom in choosing the correct
+operations to apply.
+</p>
+
+
+
+<div id="spadComm1-19" class="spadComm" >
+<form id="formComm1-19" action="javascript:makeRequest('1-19');" >
+<input id="comm1-19" type="text" class="command" style="width: 11em;" value="f : Float := 2/3" />
+</form>
+<span id="commSav1-19" class="commSav" >f : Float := 2/3</span>
+<div id="mathAns1-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>6666666666</mn><mo></mo><mn>6666666667</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Any number of expressions can be given on input line.
+Just separate them by semicolons.
+Only the result of evaluating the last expression is displayed.
+</p>
+
+
+<p>These two expressions have the same effect as
+the previous single expression.
+</p>
+
+
+
+
+<div id="spadComm1-20" class="spadComm" >
+<form id="formComm1-20" action="javascript:makeRequest('1-20');" >
+<input id="comm1-20" type="text" class="command" style="width: 13em;" value="f : Float; f := 2/3" />
+</form>
+<span id="commSav1-20" class="commSav" >f : Float; f := 2/3</span>
+<div id="mathAns1-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>6666666666</mn><mo></mo><mn>6666666667</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The type of a symbol is either <span class="teletype">Symbol</span>
+or <span class="teletype">Variable(<span class="italic">name</span>)</span> where <span class="italic">name</span> is the name
+of the symbol.
+</p>
+
+
+<p>By default, the interpreter
+gives this symbol the type <span class="teletype">Variable(q)</span>.
+</p>
+
+
+
+
+<div id="spadComm1-21" class="spadComm" >
+<form id="formComm1-21" action="javascript:makeRequest('1-21');" >
+<input id="comm1-21" type="text" class="command" style="width: 1em;" value="q" />
+</form>
+<span id="commSav1-21" class="commSav" >q</span>
+<div id="mathAns1-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>q</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Variable q
+</div>
+
+
+
+<p>When multiple symbols are involved, <span class="teletype">Symbol</span> is used.
+</p>
+
+
+
+<div id="spadComm1-22" class="spadComm" >
+<form id="formComm1-22" action="javascript:makeRequest('1-22');" >
+<input id="comm1-22" type="text" class="command" style="width: 4em;" value="[q, r]" />
+</form>
+<span id="commSav1-22" class="commSav" >[q, r]</span>
+<div id="mathAns1-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>q</mi><mo>,</mo><mi>r</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List OrderedVariableList [q,r]
+</div>
+
+
+
+<p>What happens when you try to use a symbol that is the name of a variable?
+</p>
+
+
+
+<div id="spadComm1-23" class="spadComm" >
+<form id="formComm1-23" action="javascript:makeRequest('1-23');" >
+<input id="comm1-23" type="text" class="command" style="width: 1em;" value="f" />
+</form>
+<span id="commSav1-23" class="commSav" >f</span>
+<div id="mathAns1-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>6666666666</mn><mo></mo><mn>6666666667</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Use a single quote ``<span class="teletype">'</span>'' before <span class="index">quote</span><a name="chapter-1-18"/> the name to get the symbol.
+</p>
+
+
+
+
+<div id="spadComm1-24" class="spadComm" >
+<form id="formComm1-24" action="javascript:makeRequest('1-24');" >
+<input id="comm1-24" type="text" class="command" style="width: 2em;" value="'f" />
+</form>
+<span id="commSav1-24" class="commSav" >'f</span>
+<div id="mathAns1-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>f</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Variable f
+</div>
+
+
+
+<p>Quoting a name creates a symbol by preventing evaluation of the name
+as a variable.  Experience will teach you when you are most likely
+going to need to use a quote.  We try to point out the location of
+such trouble spots.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-1.3.5"/>
+<div class="subsection"  id="subsec-1.3.5">
+<h3 class="subsectitle">1.3.5  Conversion</h3>
+
+
+<a name="ugIntroConversion" class="label"/>
+
+<p>Objects of one type can usually be ``converted'' to objects of several
+other types.  To <span style="font-style: italic;"> convert</span> an object to a new type, use the ``<span class="teletype">::</span>'' 
+infix operator.  <span class="footnote">Conversion is discussed in detail in
+<a href="section-2.7.xhtml#ugTypesConvert" class="ref" >ugTypesConvert</a>.</span>  For example,
+to display an object, it is necessary to convert the object to type
+<span class="teletype">OutputForm</span>.
+</p>
+
+
+<p>This produces a polynomial with rational number coefficients.
+</p>
+
+
+
+
+<div id="spadComm1-25" class="spadComm" >
+<form id="formComm1-25" action="javascript:makeRequest('1-25');" >
+<input id="comm1-25" type="text" class="command" style="width: 10em;" value="p := r**2 + 2/3" />
+</form>
+<span id="commSav1-25" class="commSav" >p := r**2 + 2/3</span>
+<div id="mathAns1-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>r</mi><mn>2</mn></msup></mrow><mo>+</mo><mfrac><mn>2</mn><mn>3</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+<p>Create a quotient of polynomials with integer coefficients
+by using ``<span class="teletype">::</span>''.
+</p>
+
+
+
+
+<div id="spadComm1-26" class="spadComm" >
+<form id="formComm1-26" action="javascript:makeRequest('1-26');" >
+<input id="comm1-26" type="text" class="command" style="width: 22em;" value="p :: Fraction Polynomial Integer " />
+</form>
+<span id="commSav1-26" class="commSav" >p :: Fraction Polynomial Integer </span>
+<div id="mathAns1-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>3</mn><mo></mo><mrow><msup><mi>r</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn></mrow><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+<p>Some conversions can be performed automatically when Axiom tries
+to evaluate your input.  Others conversions must be explicitly
+requested.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-1.3.6"/>
+<div class="subsection"  id="subsec-1.3.6">
+<h3 class="subsectitle">1.3.6  Calling Functions</h3>
+
+
+<a name="ugIntroCallFun" class="label"/>
+
+<p>As we saw earlier, when you want to add or subtract two values, you
+place the arithmetic operator ``<span class="teletype">+</span>'' or ``<span class="teletype">-</span>'' between the two
+arguments denoting the values.  To use most other Axiom
+operations, however, you use another syntax: <span class="index">function:calling</span><a name="chapter-1-19"/>
+write the name of the operation first, then an open parenthesis, then
+each of the arguments separated by commas, and, finally, a closing
+parenthesis.  If the operation takes only one argument and the
+argument is a number or a symbol, you can omit the parentheses.
+</p>
+
+
+<p>This calls the operation <span style="font-weight: bold;"> factor</span> with the single integer argument <math xmlns="&mathml;" mathsize="big"><mstyle><mn>120</mn></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm1-27" class="spadComm" >
+<form id="formComm1-27" action="javascript:makeRequest('1-27');" >
+<input id="comm1-27" type="text" class="command" style="width: 8em;" value="factor(120)" />
+</form>
+<span id="commSav1-27" class="commSav" >factor(120)</span>
+<div id="mathAns1-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mo></mo><mn>3</mn><mo></mo><mn>5</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>This is a call to <span style="font-weight: bold;"> divide</span> with the two integer arguments
+<math xmlns="&mathml;" mathsize="big"><mstyle><mn>125</mn></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-28" class="spadComm" >
+<form id="formComm1-28" action="javascript:makeRequest('1-28');" >
+<input id="comm1-28" type="text" class="command" style="width: 9em;" value="divide(125,7)" />
+</form>
+<span id="commSav1-28" class="commSav" >divide(125,7)</span>
+<div id="mathAns1-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>quotient</mi><mo>=</mo><mn>17</mn></mrow><mo>,</mo><mrow><mi>remainder</mi><mo>=</mo><mn>6</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(quotient: Integer, remainder: Integer)
+</div>
+
+
+
+<p>This calls <span style="font-weight: bold;"> quatern</span> with four floating-point arguments.
+</p>
+
+
+
+<div id="spadComm1-29" class="spadComm" >
+<form id="formComm1-29" action="javascript:makeRequest('1-29');" >
+<input id="comm1-29" type="text" class="command" style="width: 16em;" value="quatern(3.4,5.6,2.9,0.1)" />
+</form>
+<span id="commSav1-29" class="commSav" >quatern(3.4,5.6,2.9,0.1)</span>
+<div id="mathAns1-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>.</mo><mn>4</mn></mrow><mo>+</mo><mrow><mrow><mn>5</mn><mo>.</mo><mn>6</mn></mrow><mo></mo><mi>i</mi></mrow><mo>+</mo><mrow><mrow><mn>2</mn><mo>.</mo><mn>9</mn></mrow><mo></mo><mi>j</mi></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>1</mn></mrow><mo></mo><mi>k</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Float
+</div>
+
+
+
+<p>This is the same as <span style="font-weight: bold;"> factorial</span>(10).
+</p>
+
+
+
+<div id="spadComm1-30" class="spadComm" >
+<form id="formComm1-30" action="javascript:makeRequest('1-30');" >
+<input id="comm1-30" type="text" class="command" style="width: 8em;" value="factorial 10" />
+</form>
+<span id="commSav1-30" class="commSav" >factorial 10</span>
+<div id="mathAns1-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3628800</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>An operation that returns a <span class="teletype">Boolean</span> value (that is,
+<span class="teletype">true</span> or <span class="teletype">false</span>) frequently has a name suffixed with
+a question mark (``?'').  For example, the <span style="font-weight: bold;"> even?</span>
+operation returns <span class="teletype">true</span> if its integer argument is an even
+number, <span class="teletype">false</span> otherwise.
+</p>
+
+
+<p>An operation that can be destructive on one or more arguments
+usually has a name ending in a exclamation point (``!'').
+This actually means that it is <span class="italic">allowed</span> to update its
+arguments but it is not <span class="italic">required</span> to do so. For example,
+the underlying representation of a collection type may not allow
+the very last element to be removed and so an empty object may be
+returned instead. Therefore it is important that you use the
+object returned by the operation and not rely on a physical
+change having occurred within the object. Usually destructive
+operations are provided for efficiency reasons.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-1.3.7"/>
+<div class="subsection"  id="subsec-1.3.7">
+<h3 class="subsectitle">1.3.7  Some Predefined Macros</h3>
+
+
+<a name="ugIntroMacros" class="label"/>
+
+<p>Axiom provides several macros for your convenience.<span class="footnote">See
+<a href="section-6.2.xhtml#ugUserMacros" class="ref" >ugUserMacros</a>  for a discussion on
+how to write your own macros.</span>  Macros are names
+<span class="index">macro:predefined</span><a name="chapter-1-20"/> (or forms) that expand to larger expressions
+for commonly used values.
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><table class="begintabular">
+<tr><td><span class="italic">%i</span>             </td><td>  The square root of -1. </td></tr>
+<tr><td><span class="italic">%e</span>             </td><td>  The base of the natural logarithm. </td></tr>
+<tr><td><span class="italic">%pi</span>            </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math>. </td></tr>
+<tr><td><span class="italic">%infinity</span>      </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x221E;</mo></mstyle></math>. </td></tr>
+<tr><td><span class="italic">%plusInfinity</span>  </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>+</mo><mo>&#x221E;</mo></mrow></mstyle></math>. </td></tr>
+<tr><td><span class="italic">%minusInfinity</span> </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mo>&#x221E;</mo></mrow></mstyle></math>. </td></tr>
+</table>
+</p>
+
+
+
+</div>
+
+
+<p><span class="index">%i</span><a name="chapter-1-21"/>
+<span class="index">%e</span><a name="chapter-1-22"/>
+<span class="index">%pi</span><a name="chapter-1-23"/>
+<span class="index">pi@{<math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math> (= %pi)}</span><a name="chapter-1-24"/>
+<span class="index">%infinity</span><a name="chapter-1-25"/>
+<span class="index">infinity@{<math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x221E;</mo></mstyle></math> (= %infinity)}</span><a name="chapter-1-26"/>
+<span class="index">%plusInfinity</span><a name="chapter-1-27"/>
+<span class="index">%minusInfinity</span><a name="chapter-1-28"/>
+</p>
+
+
+<p>To display all the macros (along with anything you have
+defined in the workspace), issue the system command <span class="teletype">)display all</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-1.3.8"/>
+<div class="subsection"  id="subsec-1.3.8">
+<h3 class="subsectitle">1.3.8  Long Lines</h3>
+
+
+<a name="ugIntroLong" class="label"/>
+
+<p>When you enter Axiom expressions from your keyboard, there will
+be times when they are too long to fit on one line.  Axiom does
+not care how long your lines are, so you can let them continue from
+the right margin to the left side of the next line.
+</p>
+
+
+<p>Alternatively, you may want to enter several shorter lines and have
+Axiom glue them together.  To get this glue, put an underscore
+(_) at the end of each line you wish to continue.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+2_<br />
++_<br />
+3<br />
+</div>
+
+
+<p>is the same as if you had entered
+</p>
+
+
+
+<div class="verbatim"><br />
+2+3<br />
+</div>
+
+
+
+<p>Axiom statements in an input file
+(see Section <a href="section-4.1.xhtml#ugInOutIn" class="ref" >ugInOutIn</a> ),
+can use indentation to indicate the program structure .
+(see Section <a href="section-5.2.xhtml#ugLangBlocks" class="ref" >ugLangBlocks</a> ).
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-1.3.9"/>
+<div class="subsection"  id="subsec-1.3.9">
+<h3 class="subsectitle">1.3.9  Comments</h3>
+
+
+<a name="ugIntroComments" class="label"/>
+
+<p>Comment statements begin with two consecutive hyphens or two
+consecutive plus signs and continue until the end of the line.
+</p>
+
+
+<p>The comment beginning with ``<span class="teletype">--</span>'' is ignored by Axiom.
+</p>
+
+
+
+<div id="spadComm1-31" class="spadComm" >
+<form id="formComm1-31" action="javascript:makeRequest('1-31');" >
+<input id="comm1-31" type="text" class="command" style="width: 25em;" value="2 + 3   -- this is rather simple, no?" />
+</form>
+<span id="commSav1-31" class="commSav" >2 + 3   -- this is rather simple, no?</span>
+<div id="mathAns1-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>There is no way to write long multi-line comments other than starting
+each line with ``<span class="teletype">--</span>'' or ``<span class="teletype">++</span>''.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.2.xhtml" style="margin-right: 10px;">Previous Section 1.2 Typographic Conventions</a><a href="section-1.4.xhtml" style="margin-right: 10px;">Next Section 1.4 Numbers</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.4.xhtml
new file mode 100644
index 0000000..332e58c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.4.xhtml
@@ -0,0 +1,1329 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.3.xhtml" style="margin-right: 10px;">Previous Section 1.3 The Axiom Language</a><a href="section-1.5.xhtml" style="margin-right: 10px;">Next Section 1.5 Data Structures</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.4">
+<h2 class="sectiontitle">1.4  Numbers</h2>
+
+
+<a name="ugIntroNumbers" class="label"/>
+
+<p>Axiom distinguishes very carefully between different kinds of
+numbers, how they are represented and what their properties are.  Here
+are a sampling of some of these kinds of numbers and some things you
+can do with them.
+</p>
+
+
+<p>Integer arithmetic is always exact.
+</p>
+
+
+
+<div id="spadComm1-32" class="spadComm" >
+<form id="formComm1-32" action="javascript:makeRequest('1-32');" >
+<input id="comm1-32" type="text" class="command" style="width: 26em;" value="11**13 * 13**11 * 17**7 - 19**5 * 23**3" />
+</form>
+<span id="commSav1-32" class="commSav" >11**13 * 13**11 * 17**7 - 19**5 * 23**3</span>
+<div id="mathAns1-32" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>25387751112538918594666224484237298</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Integers can be represented in factored form.
+</p>
+
+
+
+<div id="spadComm1-33" class="spadComm" >
+<form id="formComm1-33" action="javascript:makeRequest('1-33');" >
+<input id="comm1-33" type="text" class="command" style="width: 37em;" value="factor 643238070748569023720594412551704344145570763243" />
+</form>
+<span id="commSav1-33" class="commSav" >factor 643238070748569023720594412551704344145570763243</span>
+<div id="mathAns1-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>11</mn><mn>13</mn></msup></mrow><mo></mo><mrow><msup><mn>13</mn><mn>11</mn></msup></mrow><mo></mo><mrow><msup><mn>17</mn><mn>7</mn></msup></mrow><mo></mo><mrow><msup><mn>19</mn><mn>5</mn></msup></mrow><mo></mo><mrow><msup><mn>23</mn><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mn>29</mn><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>Results stay factored when you do arithmetic.
+Note that the <math xmlns="&mathml;" mathsize="big"><mstyle><mn>12</mn></mstyle></math> is automatically factored for you.
+</p>
+
+
+
+<div id="spadComm1-34" class="spadComm" >
+<form id="formComm1-34" action="javascript:makeRequest('1-34');" >
+<input id="comm1-34" type="text" class="command" style="width: 5em;" value="% * 12" />
+</form>
+<span id="commSav1-34" class="commSav" >% * 12</span>
+<div id="mathAns1-34" ></div>
+</div>
+
+
+<p><span class="index">radix</span><a name="chapter-1-29"/>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mo></mo><mn>3</mn><mo></mo><mrow><msup><mn>11</mn><mn>13</mn></msup></mrow><mo></mo><mrow><msup><mn>13</mn><mn>11</mn></msup></mrow><mo></mo><mrow><msup><mn>17</mn><mn>7</mn></msup></mrow><mo></mo><mrow><msup><mn>19</mn><mn>5</mn></msup></mrow><mo></mo><mrow><msup><mn>23</mn><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mn>29</mn><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>Integers can also be displayed to bases other than 10.
+This is an integer in base 11.
+</p>
+
+
+
+<div id="spadComm1-35" class="spadComm" >
+<form id="formComm1-35" action="javascript:makeRequest('1-35');" >
+<input id="comm1-35" type="text" class="command" style="width: 14em;" value="radix(25937424601,11)" />
+</form>
+<span id="commSav1-35" class="commSav" >radix(25937424601,11)</span>
+<div id="mathAns1-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10000000000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 11
+</div>
+
+
+
+<p>Roman numerals are also available for those special occasions.
+<span class="index">Roman numerals</span><a name="chapter-1-30"/>
+</p>
+
+
+
+
+<div id="spadComm1-36" class="spadComm" >
+<form id="formComm1-36" action="javascript:makeRequest('1-36');" >
+<input id="comm1-36" type="text" class="command" style="width: 8em;" value="roman(1992)" />
+</form>
+<span id="commSav1-36" class="commSav" >roman(1992)</span>
+<div id="mathAns1-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext>MCMXCII</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RomanNumeral
+</div>
+
+
+
+<p>Rational number arithmetic is also exact.
+</p>
+
+
+
+
+<div id="spadComm1-37" class="spadComm" >
+<form id="formComm1-37" action="javascript:makeRequest('1-37');" >
+<input id="comm1-37" type="text" class="command" style="width: 37em;" value="r := 10 + 9/2 + 8/3 + 7/4 + 6/5 + 5/6 + 4/7 + 3/8 + 2/9" />
+</form>
+<span id="commSav1-37" class="commSav" >r := 10 + 9/2 + 8/3 + 7/4 + 6/5 + 5/6 + 4/7 + 3/8 + 2/9</span>
+<div id="mathAns1-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>55739</mn><mn>2520</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>To factor fractions, you have to pmap <span style="font-weight: bold;"> factor</span> onto the numerator
+and denominator.
+</p>
+
+
+
+
+<div id="spadComm1-38" class="spadComm" >
+<form id="formComm1-38" action="javascript:makeRequest('1-38');" >
+<input id="comm1-38" type="text" class="command" style="width: 9em;" value="map(factor,r)" />
+</form>
+<span id="commSav1-38" class="commSav" >map(factor,r)</span>
+<div id="mathAns1-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mn>139</mn><mo></mo><mn>401</mn></mrow><mrow><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mo></mo><mn>5</mn><mo></mo><mn>7</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Factored Integer
+</div>
+
+
+
+<p><span class="teletype">SingleInteger</span> refers to machine word-length integers.
+</p>
+
+
+<p>In English, this expression means ``<math xmlns="&mathml;" mathsize="big"><mstyle><mn>11</mn></mstyle></math> as a small integer''.
+</p>
+
+
+
+<div id="spadComm1-39" class="spadComm" >
+<form id="formComm1-39" action="javascript:makeRequest('1-39');" >
+<input id="comm1-39" type="text" class="command" style="width: 11em;" value="11@SingleInteger" />
+</form>
+<span id="commSav1-39" class="commSav" >11@SingleInteger</span>
+<div id="mathAns1-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>11</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+<p>Machine double-precision floating-point numbers are also available for
+numeric and graphical applications.
+</p>
+
+
+
+<div id="spadComm1-40" class="spadComm" >
+<form id="formComm1-40" action="javascript:makeRequest('1-40');" >
+<input id="comm1-40" type="text" class="command" style="width: 12em;" value="123.21@DoubleFloat" />
+</form>
+<span id="commSav1-40" class="commSav" >123.21@DoubleFloat</span>
+<div id="mathAns1-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>123</mn><mo>.</mo><mn>21000000000001</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+<p>The normal floating-point type in Axiom, <span class="teletype">Float</span>, is a
+software implementation of floating-point numbers in which the
+exponent and the mantissa may have any number of digits.
+The types <span class="teletype">Complex(Float)</span> and
+<span class="teletype">Complex(DoubleFloat)</span> are the corresponding software
+implementations of complex floating-point numbers.
+</p>
+
+
+<p>This is a floating-point approximation to about twenty digits.
+<span class="index">floating point</span><a name="chapter-1-31"/> The ``<span class="teletype">::</span>'' is used here to change from
+one kind of object (here, a rational number) to another (a
+floating-point number).
+</p>
+
+
+
+
+<div id="spadComm1-41" class="spadComm" >
+<form id="formComm1-41" action="javascript:makeRequest('1-41');" >
+<input id="comm1-41" type="text" class="command" style="width: 7em;" value="r :: Float" />
+</form>
+<span id="commSav1-41" class="commSav" >r :: Float</span>
+<div id="mathAns1-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>22</mn><mo>.</mo><mn>1186507936</mn><mn>50793651</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" style="font-weight: bold;">digits</span><span class="index">digits</span><a name="chapter-1-32"/><span class="index">Float</span><a name="chapter-1-33"/> to change the number of digits in
+the representation.
+This operation returns the previous value so you can reset it
+later.
+</p>
+
+
+
+<div id="spadComm1-42" class="spadComm" >
+<form id="formComm1-42" action="javascript:makeRequest('1-42');" >
+<input id="comm1-42" type="text" class="command" style="width: 7em;" value="digits(22)" />
+</form>
+<span id="commSav1-42" class="commSav" >digits(22)</span>
+<div id="mathAns1-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>20</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>To <math xmlns="&mathml;" mathsize="big"><mstyle><mn>22</mn></mstyle></math> digits of precision, the number
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>e</mi><mrow><mi>&#x03C0;</mi><mrow><msqrt><mrow><mn>163</mn><mo>.</mo><mn>0</mn></mrow></msqrt></mrow></mrow></msup></mrow></mstyle></math> appears to be an integer.
+</p>
+
+
+
+<div id="spadComm1-43" class="spadComm" >
+<form id="formComm1-43" action="javascript:makeRequest('1-43');" >
+<input id="comm1-43" type="text" class="command" style="width: 15em;" value="exp(%pi * sqrt 163.0)" />
+</form>
+<span id="commSav1-43" class="commSav" >exp(%pi * sqrt 163.0)</span>
+<div id="mathAns1-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>26253741</mn><mn>2640768744</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Increase the precision to forty digits and try again.
+</p>
+
+
+
+<div id="spadComm1-44" class="spadComm" >
+<form id="formComm1-44" action="javascript:makeRequest('1-44');" >
+<input id="comm1-44" type="text" class="command" style="width: 24em;" value="digits(40);  exp(%pi * sqrt 163.0)" />
+</form>
+<span id="commSav1-44" class="commSav" >digits(40);  exp(%pi * sqrt 163.0)</span>
+<div id="mathAns1-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>26253741</mn><mo></mo><mn>2640768743</mn><mo>.</mo><mn>9999999999</mn><mo></mo><mn>9925007259</mn><mo></mo><mn>76</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Here are complex numbers with rational numbers as real and
+<span class="index">complex numbers</span><a name="chapter-1-34"/> imaginary parts.
+</p>
+
+
+
+<div id="spadComm1-45" class="spadComm" >
+<form id="formComm1-45" action="javascript:makeRequest('1-45');" >
+<input id="comm1-45" type="text" class="command" style="width: 10em;" value="(2/3 + %i)**3" />
+</form>
+<span id="commSav1-45" class="commSav" >(2/3 + %i)**3</span>
+<div id="mathAns1-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>46</mn><mn>27</mn></mfrac><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+<p>The standard operations on complex numbers are available.
+</p>
+
+
+
+<div id="spadComm1-46" class="spadComm" >
+<form id="formComm1-46" action="javascript:makeRequest('1-46');" >
+<input id="comm1-46" type="text" class="command" style="width: 9em;" value="conjugate % " />
+</form>
+<span id="commSav1-46" class="commSav" >conjugate % </span>
+<div id="mathAns1-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>46</mn><mn>27</mn></mfrac><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+<p>You can factor complex integers.
+</p>
+
+
+
+<div id="spadComm1-47" class="spadComm" >
+<form id="formComm1-47" action="javascript:makeRequest('1-47');" >
+<input id="comm1-47" type="text" class="command" style="width: 14em;" value="factor(89 - 23 * %i)" />
+</form>
+<span id="commSav1-47" class="commSav" >factor(89 - 23 * %i)</span>
+<div id="mathAns1-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow><mo></mo><mrow><msup><mrow><mo>(</mo><mn>2</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mrow><mo>(</mo><mn>3</mn><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>i</mi></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Complex Integer
+</div>
+
+
+
+<p>Complex numbers with floating point parts are also available.
+</p>
+
+
+
+<div id="spadComm1-48" class="spadComm" >
+<form id="formComm1-48" action="javascript:makeRequest('1-48');" >
+<input id="comm1-48" type="text" class="command" style="width: 13em;" value="exp(%pi/4.0 * %i)" />
+</form>
+<span id="commSav1-48" class="commSav" >exp(%pi/4.0 * %i)</span>
+<div id="mathAns1-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>0</mn><mo>.</mo><mn>7071067811</mn><mo></mo><mn>8654752440</mn><mo></mo><mn>0844362104</mn><mo></mo><mn>8490392849</mn></mrow><mo>+</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+<p><math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>0</mn><mo>.</mo><mn>7071067811</mn><mo></mo><mn>8654752440</mn><mo></mo><mn>0844362104</mn><mo></mo><mn>8490392848</mn></mrow><mo></mo><mi>i</mi></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+<p>The real and imaginary parts can be symbolic.
+</p>
+
+
+
+<div id="spadComm1-49" class="spadComm" >
+<form id="formComm1-49" action="javascript:makeRequest('1-49');" >
+<input id="comm1-49" type="text" class="command" style="width: 8em;" value="complex(u,v)" />
+</form>
+<span id="commSav1-49" class="commSav" >complex(u,v)</span>
+<div id="mathAns1-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>u</mi><mo>+</mo><mrow><mi>v</mi><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Polynomial Integer
+</div>
+
+
+
+<p>Of course, you can do complex arithmetic with these also.
+</p>
+
+
+
+<div id="spadComm1-50" class="spadComm" >
+<form id="formComm1-50" action="javascript:makeRequest('1-50');" >
+<input id="comm1-50" type="text" class="command" style="width: 5em;" value="% ** 2" />
+</form>
+<span id="commSav1-50" class="commSav" >% ** 2</span>
+<div id="mathAns1-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>u</mi><mo></mo><mi>v</mi><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Polynomial Integer
+</div>
+
+
+
+<p>Every rational number has an exact representation as a
+repeating decimal expansion
+</p>
+
+
+
+<div id="spadComm1-51" class="spadComm" >
+<form id="formComm1-51" action="javascript:makeRequest('1-51');" >
+<input id="comm1-51" type="text" class="command" style="width: 10em;" value="decimal(1/352)" />
+</form>
+<span id="commSav1-51" class="commSav" >decimal(1/352)</span>
+<div id="mathAns1-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>00284</mn><mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DecimalExpansion
+</div>
+
+
+
+<p>A rational number can also be expressed as a continued fraction.
+</p>
+
+
+
+
+<div id="spadComm1-52" class="spadComm" >
+<form id="formComm1-52" action="javascript:makeRequest('1-52');" >
+<input id="comm1-52" type="text" class="command" style="width: 18em;" value="continuedFraction(6543/210)" />
+</form>
+<span id="commSav1-52" class="commSav" >continuedFraction(6543/210)</span>
+<div id="mathAns1-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>31</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ContinuedFraction Integer
+</div>
+
+
+
+<p>Also, partial fractions can be used and can be displayed in a
+<span class="index">partial fraction</span><a name="chapter-1-35"/>
+compact format
+<span class="index">fraction:partial</span><a name="chapter-1-36"/>
+</p>
+
+
+
+<div id="spadComm1-53" class="spadComm" >
+<form id="formComm1-53" action="javascript:makeRequest('1-53');" >
+<input id="comm1-53" type="text" class="command" style="width: 22em;" value="partialFraction(1,factorial(10))" />
+</form>
+<span id="commSav1-53" class="commSav" >partialFraction(1,factorial(10))</span>
+<div id="mathAns1-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>159</mn><mrow><msup><mn>2</mn><mn>8</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>23</mn><mrow><msup><mn>3</mn><mn>4</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>12</mn><mrow><msup><mn>5</mn><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mn>7</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+<p>or expanded format.
+</p>
+
+
+
+<div id="spadComm1-54" class="spadComm" >
+<form id="formComm1-54" action="javascript:makeRequest('1-54');" >
+<input id="comm1-54" type="text" class="command" style="width: 12em;" value="padicFraction(%)" />
+</form>
+<span id="commSav1-54" class="commSav" >padicFraction(%)</span>
+<div id="mathAns1-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>+</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>4</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>5</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>6</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>7</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>8</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>2</mn><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>1</mn><mrow><msup><mn>3</mn><mn>3</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>2</mn><mrow><msup><mn>3</mn><mn>4</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>2</mn><mn>5</mn></mfrac><mo>-</mo><mfrac><mn>2</mn><mrow><msup><mn>5</mn><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mn>7</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+<p>Like integers, bases (radices) other than ten can be used for rational
+numbers.
+Here we use base eight.
+</p>
+
+
+
+<div id="spadComm1-55" class="spadComm" >
+<form id="formComm1-55" action="javascript:makeRequest('1-55');" >
+<input id="comm1-55" type="text" class="command" style="width: 9em;" value="radix(4/7, 8)" />
+</form>
+<span id="commSav1-55" class="commSav" >radix(4/7, 8)</span>
+<div id="mathAns1-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 8
+</div>
+
+
+
+<p>Of course, there are complex versions of these as well.
+Axiom decides to make the result a complex rational number.
+</p>
+
+
+
+<div id="spadComm1-56" class="spadComm" >
+<form id="formComm1-56" action="javascript:makeRequest('1-56');" >
+<input id="comm1-56" type="text" class="command" style="width: 8em;" value="% + 2/3*%i" />
+</form>
+<span id="commSav1-56" class="commSav" >% + 2/3*%i</span>
+<div id="mathAns1-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>4</mn><mn>7</mn></mfrac><mo>+</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+<p>You can also use Axiom to manipulate fractional powers.
+<span class="index">radical</span><a name="chapter-1-37"/>
+</p>
+
+
+
+<div id="spadComm1-57" class="spadComm" >
+<form id="formComm1-57" action="javascript:makeRequest('1-57');" >
+<input id="comm1-57" type="text" class="command" style="width: 21em;" value="(5 + sqrt 63 + sqrt 847)**(1/3)" />
+</form>
+<span id="commSav1-57" class="commSav" >(5 + sqrt 63 + sqrt 847)**(1/3)</span>
+<div id="mathAns1-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mroot><mrow><mrow><mn>14</mn><mo></mo><mrow><msqrt><mn>7</mn></msqrt></mrow></mrow><mo>+</mo><mn>5</mn></mrow><mn>3</mn></mroot></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+<p>You can also compute with integers modulo a prime.
+</p>
+
+
+
+<div id="spadComm1-58" class="spadComm" >
+<form id="formComm1-58" action="javascript:makeRequest('1-58');" >
+<input id="comm1-58" type="text" class="command" style="width: 14em;" value="x : PrimeField 7 := 5" />
+</form>
+<span id="commSav1-58" class="commSav" >x : PrimeField 7 := 5</span>
+<div id="mathAns1-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 7
+</div>
+
+
+
+<p>Arithmetic is then done modulo <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-59" class="spadComm" >
+<form id="formComm1-59" action="javascript:makeRequest('1-59');" >
+<input id="comm1-59" type="text" class="command" style="width: 3em;" value="x**3" />
+</form>
+<span id="commSav1-59" class="commSav" >x**3</span>
+<div id="mathAns1-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>6</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 7
+</div>
+
+
+
+<p>Since <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math> is prime, you can invert nonzero values.
+</p>
+
+
+
+<div id="spadComm1-60" class="spadComm" >
+<form id="formComm1-60" action="javascript:makeRequest('1-60');" >
+<input id="comm1-60" type="text" class="command" style="width: 2em;" value="1/x" />
+</form>
+<span id="commSav1-60" class="commSav" >1/x</span>
+<div id="mathAns1-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 7
+</div>
+
+
+
+<p>You can also compute modulo an integer that is not a prime.
+</p>
+
+
+
+<div id="spadComm1-61" class="spadComm" >
+<form id="formComm1-61" action="javascript:makeRequest('1-61');" >
+<input id="comm1-61" type="text" class="command" style="width: 14em;" value="y : IntegerMod 6 := 5" />
+</form>
+<span id="commSav1-61" class="commSav" >y : IntegerMod 6 := 5</span>
+<div id="mathAns1-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: IntegerMod 6
+</div>
+
+
+
+<p>All of the usual arithmetic operations are available.
+</p>
+
+
+
+<div id="spadComm1-62" class="spadComm" >
+<form id="formComm1-62" action="javascript:makeRequest('1-62');" >
+<input id="comm1-62" type="text" class="command" style="width: 3em;" value="y**3" />
+</form>
+<span id="commSav1-62" class="commSav" >y**3</span>
+<div id="mathAns1-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: IntegerMod 6
+</div>
+
+
+
+<p>Inversion is not available if the modulus is not a prime number.
+Modular arithmetic and prime fields are discussed in Section
+<a href="section-8.11.xhtml#ugxProblemFinitePrime" class="ref" >ugxProblemFinitePrime</a> .
+</p>
+
+
+
+
+<div id="spadComm1-63" class="spadComm" >
+<form id="formComm1-63" action="javascript:makeRequest('1-63');" >
+<input id="comm1-63" type="text" class="command" style="width: 2em;" value="1/y" />
+</form>
+<span id="commSav1-63" class="commSav" >1/y</span>
+<div id="mathAns1-63" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;There&nbsp;are&nbsp;12&nbsp;exposed&nbsp;and&nbsp;13&nbsp;unexposed&nbsp;library&nbsp;operations&nbsp;named&nbsp;/&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;having&nbsp;2&nbsp;argument(s)&nbsp;but&nbsp;none&nbsp;was&nbsp;determined&nbsp;to&nbsp;be&nbsp;applicable.&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;HyperDoc&nbsp;Browse,&nbsp;or&nbsp;issue<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)display&nbsp;op&nbsp;/<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;learn&nbsp;more&nbsp;about&nbsp;the&nbsp;available&nbsp;operations.&nbsp;Perhaps&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;package-calling&nbsp;the&nbsp;operation&nbsp;or&nbsp;using&nbsp;coercions&nbsp;on&nbsp;the&nbsp;arguments<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;allow&nbsp;you&nbsp;to&nbsp;apply&nbsp;the&nbsp;operation.<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Cannot&nbsp;find&nbsp;a&nbsp;definition&nbsp;or&nbsp;applicable&nbsp;library&nbsp;operation&nbsp;named&nbsp;/&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;argument&nbsp;type(s)&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PositiveInteger<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntegerMod&nbsp;6<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Perhaps&nbsp;you&nbsp;should&nbsp;use&nbsp;"@"&nbsp;to&nbsp;indicate&nbsp;the&nbsp;required&nbsp;return&nbsp;type,&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;"$"&nbsp;to&nbsp;specify&nbsp;which&nbsp;version&nbsp;of&nbsp;the&nbsp;function&nbsp;you&nbsp;need.<br />
+</div>
+
+
+
+<p>This defines <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> to be an algebraic number, that is,
+a root of a polynomial equation.
+</p>
+
+
+
+<div id="spadComm1-64" class="spadComm" >
+<form id="formComm1-64" action="javascript:makeRequest('1-64');" >
+<input id="comm1-64" type="text" class="command" style="width: 25em;" value="a := rootOf(a**5 + a**3 + a**2 + 3,a)" />
+</form>
+<span id="commSav1-64" class="commSav" >a := rootOf(a**5 + a**3 + a**2 + 3,a)</span>
+<div id="mathAns1-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>a</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Computations with <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> are reduced according to the polynomial equation.
+</p>
+
+
+
+<div id="spadComm1-65" class="spadComm" >
+<form id="formComm1-65" action="javascript:makeRequest('1-65');" >
+<input id="comm1-65" type="text" class="command" style="width: 8em;" value="(a + 1)**10" />
+</form>
+<span id="commSav1-65" class="commSav" >(a + 1)**10</span>
+<div id="mathAns1-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>85</mn><mo></mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>264</mn><mo></mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>378</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>458</mn><mo></mo><mi>a</mi></mrow><mo>-</mo><mn>287</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Define <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> to be an algebraic number involving <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-66" class="spadComm" >
+<form id="formComm1-66" action="javascript:makeRequest('1-66');" >
+<input id="comm1-66" type="text" class="command" style="width: 16em;" value="b := rootOf(b**4 + a,b)" />
+</form>
+<span id="commSav1-66" class="commSav" >b := rootOf(b**4 + a,b)</span>
+<div id="mathAns1-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Do some arithmetic.
+</p>
+
+
+
+<div id="spadComm1-67" class="spadComm" >
+<form id="formComm1-67" action="javascript:makeRequest('1-67');" >
+<input id="comm1-67" type="text" class="command" style="width: 6em;" value="2/(b - 1)" />
+</form>
+<span id="commSav1-67" class="commSav" >2/(b - 1)</span>
+<div id="mathAns1-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>2</mn><mrow><mi>b</mi><mo>-</mo><mn>1</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>To expand and simplify this, call <span class="italic">ratDenom</span>
+to rationalize the denominator.
+</p>
+
+
+
+<div id="spadComm1-68" class="spadComm" >
+<form id="formComm1-68" action="javascript:makeRequest('1-68');" >
+<input id="comm1-68" type="text" class="command" style="width: 8em;" value="ratDenom(%)" />
+</form>
+<span id="commSav1-68" class="commSav" >ratDenom(%)</span>
+<div id="mathAns1-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mi>b</mi></mrow><mo>+</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>If we do this, we should get <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-69" class="spadComm" >
+<form id="formComm1-69" action="javascript:makeRequest('1-69');" >
+<input id="comm1-69" type="text" class="command" style="width: 4em;" value="2/%+1" />
+</form>
+<span id="commSav1-69" class="commSav" >2/%+1</span>
+<div id="mathAns1-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mi>b</mi></mrow><mo>+</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>3</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mi>b</mi></mrow><mo>+</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a</mi><mo>+</mo><mn>1</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>But we need to rationalize the denominator again.
+</p>
+
+
+
+
+<div id="spadComm1-70" class="spadComm" >
+<form id="formComm1-70" action="javascript:makeRequest('1-70');" >
+<input id="comm1-70" type="text" class="command" style="width: 8em;" value="ratDenom(%)" />
+</form>
+<span id="commSav1-70" class="commSav" >ratDenom(%)</span>
+<div id="mathAns1-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Types <span class="teletype">Quaternion</span> and <span class="teletype">Octonion</span> are also available.
+Multiplication of quaternions is non-commutative, as expected.
+</p>
+
+
+
+
+<div id="spadComm1-71" class="spadComm" >
+<form id="formComm1-71" action="javascript:makeRequest('1-71');" >
+<input id="comm1-71" type="text" class="command" style="width: 48em;" value="q:=quatern(1,2,3,4)*quatern(5,6,7,8) - quatern(5,6,7,8)*quatern(1,2,3,4)" />
+</form>
+<span id="commSav1-71" class="commSav" >q:=quatern(1,2,3,4)*quatern(5,6,7,8) - quatern(5,6,7,8)*quatern(1,2,3,4)</span>
+<div id="mathAns1-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>8</mn><mo></mo><mi>i</mi></mrow><mo>+</mo><mrow><mn>16</mn><mo></mo><mi>j</mi></mrow><mo>-</mo><mrow><mn>8</mn><mo></mo><mi>k</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.3.xhtml" style="margin-right: 10px;">Previous Section 1.3 The Axiom Language</a><a href="section-1.5.xhtml" style="margin-right: 10px;">Next Section 1.5 Data Structures</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.5.xhtml
new file mode 100644
index 0000000..729c74e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.5.xhtml
@@ -0,0 +1,1036 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.4.xhtml" style="margin-right: 10px;">Previous Section 1.4 Numbers</a><a href="section-1.6.xhtml" style="margin-right: 10px;">Next Section 1.6 Expanding to Higher Dimensions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.5">
+<h2 class="sectiontitle">1.5  Data Structures</h2>
+
+
+<a name="ugIntroCollect" class="label"/>
+
+<p>Axiom has a large variety of data structures available.  Many
+data structures are particularly useful for interactive computation
+and others are useful for building applications.  The data structures
+of Axiom are organized into <span style="font-style: italic;"> category hierarchies</span>.
+</p>
+
+
+<p>A <span class="italic">list</span>, <span class="footnote">Lists are discussed in Section <a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a></span>, is the most commonly used data structure in
+Axiom for holding objects all of the same type. The name <span class="italic">list</span> is
+short for ``linked-list of nodes.'' Each node consists of a value
+(<span class="spadfunFrom" style="font-weight: bold;">first</span><span class="index">first</span><a name="chapter-1-38"/><span class="index">List</span><a name="chapter-1-39"/>) and a link (<span class="spadfunFrom" style="font-weight: bold;">rest</span><span class="index">rest</span><a name="chapter-1-40"/><span class="index">List</span><a name="chapter-1-41"/>) that
+points to the next node, or to a distinguished value denoting the
+empty list.  To get to, say, the third element, Axiom starts at the
+front of the list, then traverses across two links to the third node.
+</p>
+
+
+<p>Write a list of elements using square brackets with commas separating
+the elements.
+</p>
+
+
+
+<div id="spadComm1-72" class="spadComm" >
+<form id="formComm1-72" action="javascript:makeRequest('1-72');" >
+<input id="comm1-72" type="text" class="command" style="width: 10em;" value="u := [1,-7,11]" />
+</form>
+<span id="commSav1-72" class="commSav" >u := [1,-7,11]</span>
+<div id="mathAns1-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>This is the value at the third node.  Alternatively, you can say <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>u</mi><mo>.</mo><mn>3</mn></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-73" class="spadComm" >
+<form id="formComm1-73" action="javascript:makeRequest('1-73');" >
+<input id="comm1-73" type="text" class="command" style="width: 12em;" value="first rest rest u" />
+</form>
+<span id="commSav1-73" class="commSav" >first rest rest u</span>
+<div id="mathAns1-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>11</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Many operations are defined on lists, such as: <span style="font-weight: bold;"> empty?</span>, to test
+that a list has no elements; <span style="font-weight: bold;"> cons</span><math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>l</mi><mo>)</mo></mrow></mstyle></math>, to create a new list
+with <span style="font-weight: bold;"> first</span> element <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <span style="font-weight: bold;"> rest</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>l</mi></mstyle></math>; <span style="font-weight: bold;"> reverse</span>, to
+create a new list with elements in reverse order; and <span style="font-weight: bold;"> sort</span>, to
+arrange elements in order.
+</p>
+
+
+<p>An important point about lists is that they are ``mutable'': their
+constituent elements and links can be changed ``in place.''
+To do this, use any of the operations whose names end with the
+character ``<span class="teletype">!</span>''.
+</p>
+
+
+<p>The operation <span class="spadfunFrom" style="font-weight: bold;">concat!</span><span class="index">concat!</span><a name="chapter-1-42"/><span class="index">List</span><a name="chapter-1-43"/><math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math> replaces the
+last link of the list <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math> to point to some other list <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math>.
+Since <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math> refers to the original list, this change is seen by <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-74" class="spadComm" >
+<form id="formComm1-74" action="javascript:makeRequest('1-74');" >
+<input id="comm1-74" type="text" class="command" style="width: 16em;" value="concat!(u,[9,1,3,-4]); u" />
+</form>
+<span id="commSav1-74" class="commSav" >concat!(u,[9,1,3,-4]); u</span>
+<div id="mathAns1-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>A <span class="italic">cyclic list</span> is a list with a ``cycle'': <span class="index">list:cyclic</span><a name="chapter-1-44"/> a
+link pointing back to an earlier node of the list.  <span class="index">cyclic
+list</span><a name="chapter-1-45"/> To create a cycle, first get a node somewhere down the list.
+</p>
+
+
+
+<div id="spadComm1-75" class="spadComm" >
+<form id="formComm1-75" action="javascript:makeRequest('1-75');" >
+<input id="comm1-75" type="text" class="command" style="width: 14em;" value="lastnode := rest(u,3)" />
+</form>
+<span id="commSav1-75" class="commSav" >lastnode := rest(u,3)</span>
+<div id="mathAns1-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" style="font-weight: bold;">setrest!</span><span class="index">setrest!</span><a name="chapter-1-46"/><span class="index">List</span><a name="chapter-1-47"/> to change the link emanating from
+that node to point back to an earlier part of the list.
+</p>
+
+
+
+
+<div id="spadComm1-76" class="spadComm" >
+<form id="formComm1-76" action="javascript:makeRequest('1-76');" >
+<input id="comm1-76" type="text" class="command" style="width: 21em;" value="setrest!(lastnode,rest(u,2)); u" />
+</form>
+<span id="commSav1-76" class="commSav" >setrest!(lastnode,rest(u,2)); u</span>
+<div id="mathAns1-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>,</mo><mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>A <span class="italic">stream</span> is a structure that (potentially) has an infinite
+number of distinct elements. Think of a stream as an
+``infinite list'' where elements are computed successively.
+<span class="footnote">Streams are discussed in Section{StreamXmpPage}.</span>
+</p>
+
+
+<p>Create an infinite stream of factored integers.  Only a certain number
+of initial elements are computed and displayed.
+</p>
+
+
+
+
+<div id="spadComm1-77" class="spadComm" >
+<form id="formComm1-77" action="javascript:makeRequest('1-77');" >
+<input id="comm1-77" type="text" class="command" style="width: 20em;" value="[factor(i) for i in 2.. by 2]" />
+</form>
+<span id="commSav1-77" class="commSav" >[factor(i) for i in 2.. by 2]</span>
+<div id="mathAns1-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mo>,</mo><mrow><mn>2</mn><mo></mo><mn>3</mn></mrow><mo>,</mo><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mo>,</mo><mrow><mn>2</mn><mo></mo><mn>5</mn></mrow><mo>,</mo><mrow><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mo></mo><mn>3</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo></mo><mn>7</mn></mrow><mo>,</mo><mrow><msup><mn>2</mn><mn>4</mn></msup></mrow><mo>,</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mo></mo><mn>5</mn></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Factored Integer
+</div>
+
+
+
+<p>Axiom represents streams by a collection of already-computed
+elements together with a function to compute the next element ``on
+demand.''  Asking for the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th element causes elements
+<math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> through <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> to be evaluated.
+</p>
+
+
+
+<div id="spadComm1-78" class="spadComm" >
+<form id="formComm1-78" action="javascript:makeRequest('1-78');" >
+<input id="comm1-78" type="text" class="command" style="width: 4em;" value="%.36" />
+</form>
+<span id="commSav1-78" class="commSav" >%.36</span>
+<div id="mathAns1-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>Streams can also be finite or cyclic.
+They are implemented by a linked list structure similar to lists
+and have many of the same operations.
+For example, <span style="font-weight: bold;"> first</span> and <span style="font-weight: bold;"> rest</span> are used to access
+elements and successive nodes of a stream.
+</p>
+
+
+<p>A <span class="italic">one-dimensional array</span> is another data structure used to hold
+objects of the same type <span class="footnote">OnedimensionalArray is discussed in
+Section <a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a></span>. Unlike lists,
+one-dimensional arrays are inflexible---they are
+<span class="index">array:one-dimensional</span><a name="chapter-1-48"/> implemented using a fixed block of
+storage.  Their advantage is that they give quick and equal access
+time to any element.
+</p>
+
+
+<p>A simple way to create a one-dimensional array is to apply the
+operation <span style="font-weight: bold;"> oneDimensionalArray</span> to a list of elements.
+</p>
+
+
+
+<div id="spadComm1-79" class="spadComm" >
+<form id="formComm1-79" action="javascript:makeRequest('1-79');" >
+<input id="comm1-79" type="text" class="command" style="width: 27em;" value="a := oneDimensionalArray [1, -7, 3, 3/2]" />
+</form>
+<span id="commSav1-79" class="commSav" >a := oneDimensionalArray [1, -7, 3, 3/2]</span>
+<div id="mathAns1-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>,</mo><mn>3</mn><mo>,</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Fraction Integer
+</div>
+
+
+
+<p>One-dimensional arrays are also mutable: you can change their
+constituent elements ``in place.''
+</p>
+
+
+
+<div id="spadComm1-80" class="spadComm" >
+<form id="formComm1-80" action="javascript:makeRequest('1-80');" >
+<input id="comm1-80" type="text" class="command" style="width: 8em;" value="a.3 := 11; a" />
+</form>
+<span id="commSav1-80" class="commSav" >a.3 := 11; a</span>
+<div id="mathAns1-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>,</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Fraction Integer
+</div>
+
+
+
+<p>However, one-dimensional arrays are not flexible structures.
+You cannot destructively <span style="font-weight: bold;"> concat!</span> them together.
+</p>
+
+
+
+<div id="spadComm1-81" class="spadComm" >
+<form id="formComm1-81" action="javascript:makeRequest('1-81');" >
+<input id="comm1-81" type="text" class="command" style="width: 25em;" value="concat!(a,oneDimensionalArray [1,-2])" />
+</form>
+<span id="commSav1-81" class="commSav" >concat!(a,oneDimensionalArray [1,-2])</span>
+<div id="mathAns1-81" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;There&nbsp;are&nbsp;5&nbsp;exposed&nbsp;and&nbsp;0&nbsp;unexposed&nbsp;library&nbsp;operations&nbsp;named&nbsp;concat!<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;having&nbsp;2&nbsp;argument(s)&nbsp;but&nbsp;none&nbsp;was&nbsp;determined&nbsp;to&nbsp;be&nbsp;applicable.&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;HyperDoc&nbsp;Browse,&nbsp;or&nbsp;issue<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)display&nbsp;op&nbsp;concat!<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;learn&nbsp;more&nbsp;about&nbsp;the&nbsp;available&nbsp;operations.&nbsp;Perhaps&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;package-calling&nbsp;the&nbsp;operation&nbsp;or&nbsp;using&nbsp;coercions&nbsp;on&nbsp;the&nbsp;arguments<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;allow&nbsp;you&nbsp;to&nbsp;apply&nbsp;the&nbsp;operation.<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Cannot&nbsp;find&nbsp;a&nbsp;definition&nbsp;or&nbsp;applicable&nbsp;library&nbsp;operation&nbsp;named&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat!&nbsp;with&nbsp;argument&nbsp;type(s)&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OneDimensionalArray&nbsp;Fraction&nbsp;Integer<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OneDimensionalArray&nbsp;Integer<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Perhaps&nbsp;you&nbsp;should&nbsp;use&nbsp;"@"&nbsp;to&nbsp;indicate&nbsp;the&nbsp;required&nbsp;return&nbsp;type,&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;"$"&nbsp;to&nbsp;specify&nbsp;which&nbsp;version&nbsp;of&nbsp;the&nbsp;function&nbsp;you&nbsp;need.<br />
+</div>
+
+
+
+<p>Examples of datatypes similar to <span class="teletype">OneDimensionalArray</span>
+are: <span class="teletype">Vector</span> (vectors are mathematical structures
+implemented by one-dimensional arrays), <span class="teletype">String</span> (arrays
+of ``characters,'' represented by byte vectors), and
+<span class="teletype">Bits</span> (represented by ``bit vectors'').
+</p>
+
+
+<p>A vector of 32 bits, each representing the <span style="font-weight: bold;"> Boolean</span> value
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-82" class="spadComm" >
+<form id="formComm1-82" action="javascript:makeRequest('1-82');" >
+<input id="comm1-82" type="text" class="command" style="width: 9em;" value="bits(32,true)" />
+</form>
+<span id="commSav1-82" class="commSav" >bits(32,true)</span>
+<div id="mathAns1-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"11111111111111111111111111111111"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Bits
+</div>
+
+
+
+<p>A <span class="italic">flexible array</span> (<span class="footnote">FlexibleArray is discussed in Section
+<a href="section-9.26.xhtml#FlexibleArrayXmpPage" class="ref" >FlexibleArrayXmpPage</a> </span>) is
+a cross between a list <span class="index">array:flexible</span><a name="chapter-1-49"/> and a one-dimensional
+array. Like a one-dimensional array, a flexible array occupies a fixed
+block of storage.  Its block of storage, however, has room to expand.
+When it gets full, it grows (a new, larger block of storage is
+allocated); when it has too much room, it contracts.
+</p>
+
+
+<p>Create a flexible array of three elements.
+</p>
+
+
+
+<div id="spadComm1-83" class="spadComm" >
+<form id="formComm1-83" action="javascript:makeRequest('1-83');" >
+<input id="comm1-83" type="text" class="command" style="width: 20em;" value="f := flexibleArray [2, 7, -5]" />
+</form>
+<span id="commSav1-83" class="commSav" >f := flexibleArray [2, 7, -5]</span>
+<div id="mathAns1-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>7</mn><mo>,</mo><mo>-</mo><mn>5</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>Insert some elements between the second and third elements.
+</p>
+
+
+
+<div id="spadComm1-84" class="spadComm" >
+<form id="formComm1-84" action="javascript:makeRequest('1-84');" >
+<input id="comm1-84" type="text" class="command" style="width: 24em;" value="insert!(flexibleArray [11, -3],f,2)" />
+</form>
+<span id="commSav1-84" class="commSav" >insert!(flexibleArray [11, -3],f,2)</span>
+<div id="mathAns1-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>11</mn><mo>,</mo><mo>-</mo><mn>3</mn><mo>,</mo><mn>7</mn><mo>,</mo><mo>-</mo><mn>5</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>Flexible arrays are used to implement ``heaps.'' A <span class="italic">heap</span> is an
+example of a data structure called a <span class="italic">priority queue</span>, where
+elements are ordered with respect to one another. A heap
+(<span class="footnote">Heap is discussed in Section <a href="section-9.32.xhtml#HeapXmpPage" class="ref" >HeapXmpPage</a> </span>) is organized so as to optimize insertion
+and extraction of maximum elements.  The <span style="font-weight: bold;"> extract!</span> operation
+returns the maximum element of the heap, after destructively removing
+that element and reorganizing the heap so that the next maximum
+element is ready to be delivered.
+</p>
+
+
+<p>An easy way to create a heap is to apply the operation <span class="italic">heap</span>
+to a list of values.
+</p>
+
+
+
+<div id="spadComm1-85" class="spadComm" >
+<form id="formComm1-85" action="javascript:makeRequest('1-85');" >
+<input id="comm1-85" type="text" class="command" style="width: 18em;" value="h := heap [-4,7,11,3,4,-7]" />
+</form>
+<span id="commSav1-85" class="commSav" >h := heap [-4,7,11,3,4,-7]</span>
+<div id="mathAns1-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>7</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Heap Integer
+</div>
+
+
+
+<p>This loop extracts elements one-at-a-time from <math xmlns="&mathml;" mathsize="big"><mstyle><mi>h</mi></mstyle></math> until the heap
+is exhausted, returning the elements as a list in the order they were
+extracted.
+</p>
+
+
+
+<div id="spadComm1-86" class="spadComm" >
+<form id="formComm1-86" action="javascript:makeRequest('1-86');" >
+<input id="comm1-86" type="text" class="command" style="width: 22em;" value="[extract!(h) while not empty?(h)]" />
+</form>
+<span id="commSav1-86" class="commSav" >[extract!(h) while not empty?(h)]</span>
+<div id="mathAns1-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>A <span class="italic">binary tree</span> is a ``tree'' with at most two branches
+<span class="index">tree</span><a name="chapter-1-50"/> per node: it is either empty, or else is a node
+consisting of a value, and a left and right subtree (again, binary
+trees). (<span class="footnote">BinarySearchTrees are discussed in Section 
+<a href="section-9.5.xhtml#BinarySearchTreeXmpPage" class="ref" >BinarySearchTreeXmpPage</a> </span>)
+Examples of binary tree types are <span class="teletype">BinarySearchTree</span>, 
+<span class="teletype">PendantTree</span>, <span class="teletype">TournamentTree</span>, and <span class="teletype">BalancedBinaryTree</span>.
+</p>
+
+
+<p>A <span class="italic">binary search tree</span> is a binary tree such that,
+<span class="index">tree:binary search</span><a name="chapter-1-51"/> for each node, the value of the node is
+<span class="index">binary search tree</span><a name="chapter-1-52"/> greater than all values (if any) in the
+left subtree, and less than or equal all values (if any) in the right
+subtree.
+</p>
+
+
+
+<div id="spadComm1-87" class="spadComm" >
+<form id="formComm1-87" action="javascript:makeRequest('1-87');" >
+<input id="comm1-87" type="text" class="command" style="width: 22em;" value="binarySearchTree [5,3,2,9,4,7,11]" />
+</form>
+<span id="commSav1-87" class="commSav" >binarySearchTree [5,3,2,9,4,7,11]</span>
+<div id="mathAns1-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>]</mo></mrow><mo>,</mo><mn>5</mn><mo>,</mo><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BinarySearchTree PositiveInteger
+</div>
+
+
+
+<p>A <span class="italic">balanced binary tree</span> is useful for doing modular computations.
+<span class="index">balanced binary tree</span><a name="chapter-1-53"/> Given a list <math xmlns="&mathml;" mathsize="big"><mstyle><mi>lm</mi></mstyle></math> of moduli,
+<span class="index">tree:balanced binary</span><a name="chapter-1-54"/> <span style="font-weight: bold;"> modTree</span><math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>a</mi><mo>,</mo><mi>lm</mi><mo>)</mo></mrow></mstyle></math> produces
+a balanced binary tree with the values <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> at its leaves.
+</p>
+
+
+
+<div id="spadComm1-88" class="spadComm" >
+<form id="formComm1-88" action="javascript:makeRequest('1-88');" >
+<input id="comm1-88" type="text" class="command" style="width: 14em;" value="modTree(8,[2,3,5,7])" />
+</form>
+<span id="commSav1-88" class="commSav" >modTree(8,[2,3,5,7])</span>
+<div id="mathAns1-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>A <span class="italic">set</span> is a collection of elements where duplication and order is
+irrelevant. <span class="footnote">Sets are discussed in Section <a href="section-9.53.xhtml#MultiSetXmpPage" class="ref" >SetXmpPage</a>
+</span> Sets are always finite and have no
+corresponding structure like streams for infinite collections.
+</p>
+
+
+<p>Create sets using braces ``{`` and ``}'' rather than brackets.
+</p>
+
+
+
+
+<div id="spadComm1-89" class="spadComm" >
+<form id="formComm1-89" action="javascript:makeRequest('1-89');" >
+<input id="comm1-89" type="text" class="command" style="width: 18em;" value="fs := set[1/3,4/5,-1/3,4/5]" />
+</form>
+<span id="commSav1-89" class="commSav" >fs := set[1/3,4/5,-1/3,4/5]</span>
+<div id="mathAns1-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mo>-</mo><mfrac><mn>1</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>1</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>4</mn><mn>5</mn></mfrac><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set Fraction Integer
+</div>
+
+
+
+<p>A <span class="italic">multiset</span> is a set that keeps track of the number of duplicate
+values. <span class="footnote">Multisets are discussed in Section
+<a href="section-9.53.xhtml#MultiSetXmpPage" class="ref" >MultiSetXmpPage</a> </span>
+</p>
+
+
+<p>For all the primes <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> between 2 and 1000, find the
+distribution of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mi>mod</mi><mn>5</mn></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-90" class="spadComm" >
+<form id="formComm1-90" action="javascript:makeRequest('1-90');" >
+<input id="comm1-90" type="text" class="command" style="width: 28em;" value="multiset [x rem 5 for x in primes(2,1000)]" />
+</form>
+<span id="commSav1-90" class="commSav" >multiset [x rem 5 for x in primes(2,1000)]</span>
+<div id="mathAns1-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>0</mn><mo>,</mo><mrow><mn>42</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>3</mn></mrow><mo>,</mo><mrow><mn>40</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>1</mn></mrow><mo>,</mo><mrow><mn>38</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>4</mn></mrow><mo>,</mo><mrow><mn>47</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>2</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Multiset Integer
+</div>
+
+
+
+<p>A <span class="italic">table</span> is conceptually a set of ``key--value'' pairs and is a
+generalization of a multiset. For examples of tables, see 
+<span class="teletype">AssociationList</span>, <span class="teletype">HashTable</span>, <span class="teletype">KeyedAccessFile</span>, 
+<span class="teletype">Library</span>, <span class="teletype">SparseTable</span>, <span class="teletype">StringTable</span>, and <span class="teletype">Table</span>.  The
+domain <span class="teletype">Table(Key, Entry)</span> provides a general-purpose type for
+tables with <span class="italic">values</span> of type <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Entry</mi></mstyle></math> indexed by <span class="italic">keys</span> of type
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>Key</mi></mstyle></math>.
+</p>
+
+
+<p>Compute the above distribution of primes using tables.  First, let
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math> denote an empty table of keys and values, each of type <span class="teletype">Integer</span>.
+</p>
+
+
+
+<div id="spadComm1-91" class="spadComm" >
+<form id="formComm1-91" action="javascript:makeRequest('1-91');" >
+<input id="comm1-91" type="text" class="command" style="width: 25em;" value="t : Table(Integer,Integer) := empty()" />
+</form>
+<span id="commSav1-91" class="commSav" >t : Table(Integer,Integer) := empty()</span>
+<div id="mathAns1-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mtext>table</mtext></mrow><mo>(</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Table(Integer,Integer)
+</div>
+
+
+
+<p>We define a function <span style="font-weight: bold;"> howMany</span> to return the number of values
+of a given modulus <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math> seen so far.  It calls
+<span style="font-weight: bold;"> search</span><math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>k</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> which returns the number of values
+stored under the key <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math> in table <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math>, or <span class="teletype">``failed''</span>
+if no such value is yet stored in <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math> under <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math>.
+</p>
+
+
+<p>In English, this says ``Define <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>howMany</mi><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mstyle></math> as follows.
+First, let <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> be the value of <span class="italic">search</span><math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>k</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math>.
+Then, if <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> has the value <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>"</mo><mi>failed</mi><mo>"</mo></mrow></mstyle></math>, return the value
+<math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>; otherwise return <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math>.''
+</p>
+
+
+
+<div id="spadComm1-92" class="spadComm" >
+<form id="formComm1-92" action="javascript:makeRequest('1-92');" >
+<input id="comm1-92" type="text" class="command" style="width: 38em;" value='howMany(k) == (n:=search(k,t); n case "failed" => 1; n+1)' />
+</form>
+<span id="commSav1-92" class="commSav" >howMany(k) == (n:=search(k,t); n case "failed" => 1; n+1)</span>
+<div id="mathAns1-92" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Run through the primes to create the table, then print the table.
+The expression <span class="teletype">t.m := howMany(m)</span> updates the value in table <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math>
+stored under key <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-93" class="spadComm" >
+<form id="formComm1-93" action="javascript:makeRequest('1-93');" >
+<input id="comm1-93" type="text" class="command" style="width: 44em;" value="for p in primes(2,1000) repeat (m:= p rem 5; t.m:= howMany(m)); t" />
+</form>
+<span id="commSav1-93" class="commSav" >for p in primes(2,1000) repeat (m:= p rem 5; t.m:= howMany(m)); t</span>
+<div id="mathAns1-93" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;howMany&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mtext>table</mtext></mrow><mo>(</mo><mrow><mrow><mn>2</mn><mo>=</mo><mn>47</mn></mrow><mo>,</mo><mrow><mn>4</mn><mo>=</mo><mn>38</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>=</mo><mn>40</mn></mrow><mo>,</mo><mrow><mn>3</mn><mo>=</mo><mn>42</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>=</mo><mn>1</mn></mrow></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Table(Integer,Integer)
+</div>
+
+
+
+
+<p>A <span class="italic">record</span> is an example of an inhomogeneous collection of
+objects.<span class="footnote">See <a href="section-2.4.xhtml#ugTypesRecords" class="ref" >ugTypesRecords</a> for details.</span>  A record consists of a
+set of named <span class="italic">selectors</span> that can be used to access its
+components.  <span class="index">Record@{\sf Record}</span><a name="chapter-1-55"/>
+</p>
+
+
+<p>Declare that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>daniel</mi></mstyle></math> can only be
+assigned a record with two prescribed fields.
+</p>
+
+
+
+<div id="spadComm1-94" class="spadComm" >
+<form id="formComm1-94" action="javascript:makeRequest('1-94');" >
+<input id="comm1-94" type="text" class="command" style="width: 31em;" value="daniel : Record(age : Integer, salary : Float)" />
+</form>
+<span id="commSav1-94" class="commSav" >daniel : Record(age : Integer, salary : Float)</span>
+<div id="mathAns1-94" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Give <math xmlns="&mathml;" mathsize="big"><mstyle><mi>daniel</mi></mstyle></math> a value, using square brackets to enclose the values of
+the fields.
+</p>
+
+
+
+<div id="spadComm1-95" class="spadComm" >
+<form id="formComm1-95" action="javascript:makeRequest('1-95');" >
+<input id="comm1-95" type="text" class="command" style="width: 16em;" value="daniel := [28, 32005.12]" />
+</form>
+<span id="commSav1-95" class="commSav" >daniel := [28, 32005.12]</span>
+<div id="mathAns1-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>age</mi><mo>=</mo><mn>28</mn></mrow><mo>,</mo><mrow><mi>salary</mi><mo>=</mo><mrow><mn>32005</mn><mo>.</mo><mn>12</mn></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(age: Integer,salary: Float)
+</div>
+
+
+
+<p>Give <math xmlns="&mathml;" mathsize="big"><mstyle><mi>daniel</mi></mstyle></math> a raise.
+</p>
+
+
+
+<div id="spadComm1-96" class="spadComm" >
+<form id="formComm1-96" action="javascript:makeRequest('1-96');" >
+<input id="comm1-96" type="text" class="command" style="width: 20em;" value="daniel.salary := 35000; daniel" />
+</form>
+<span id="commSav1-96" class="commSav" >daniel.salary := 35000; daniel</span>
+<div id="mathAns1-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>age</mi><mo>=</mo><mn>28</mn></mrow><mo>,</mo><mrow><mi>salary</mi><mo>=</mo><mrow><mn>35000</mn><mo>.</mo><mn>0</mn></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(age: Integer,salary: Float)
+</div>
+
+
+
+<p>A <span class="italic">union</span> is a data structure used when objects have multiple
+types.<span class="footnote">See <a href="section-2.5.xhtml#ugTypesUnions" class="ref" >ugTypesUnions</a> for details.</span>  <span class="index">Union@{\sf Union}</span><a name="chapter-1-56"/>
+</p>
+
+
+<p>Let <math xmlns="&mathml;" mathsize="big"><mstyle><mi>dog</mi></mstyle></math> be either an integer or a string value.
+</p>
+
+
+
+<div id="spadComm1-97" class="spadComm" >
+<form id="formComm1-97" action="javascript:makeRequest('1-97');" >
+<input id="comm1-97" type="text" class="command" style="width: 32em;" value="dog: Union(licenseNumber: Integer, name: String)" />
+</form>
+<span id="commSav1-97" class="commSav" >dog: Union(licenseNumber: Integer, name: String)</span>
+<div id="mathAns1-97" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Give <math xmlns="&mathml;" mathsize="big"><mstyle><mi>dog</mi></mstyle></math> a name.
+</p>
+
+
+
+<div id="spadComm1-98" class="spadComm" >
+<form id="formComm1-98" action="javascript:makeRequest('1-98');" >
+<input id="comm1-98" type="text" class="command" style="width: 11em;" value='dog := "Whisper"' />
+</form>
+<span id="commSav1-98" class="commSav" >dog := "Whisper"</span>
+<div id="mathAns1-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"Whisper"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(name: String,...)
+</div>
+
+
+
+<p>All told, there are over forty different data structures in Axiom.
+Using the domain constructors described in Chapter <a href="section-13.0.xhtml#ugDomains" class="ref" >ugDomains</a> you can add your own data structure or
+extend an existing one.  Choosing the right data structure for your
+application may be the key to obtaining good performance.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.4.xhtml" style="margin-right: 10px;">Previous Section 1.4 Numbers</a><a href="section-1.6.xhtml" style="margin-right: 10px;">Next Section 1.6 Expanding to Higher Dimensions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.6.xhtml
new file mode 100644
index 0000000..c4e4c02
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.6.xhtml
@@ -0,0 +1,280 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.5.xhtml" style="margin-right: 10px;">Previous Section 1.5 Data Structures</a><a href="section-1.7.xhtml" style="margin-right: 10px;">Next Section 1.7 Writing Your Own Functions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.6">
+<h2 class="sectiontitle">1.6  Expanding to Higher Dimensions</h2>
+
+
+<a name="ugIntroTwoDim" class="label"/>
+
+<p>To get higher dimensional aggregates, you can create one-dimensional
+aggregates with elements that are themselves aggregates, for example,
+lists of lists, one-dimensional arrays of lists of multisets, and so
+on.  For applications requiring two-dimensional homogeneous
+aggregates, you will likely find <span class="italic">two-dimensional arrays</span>
+<span class="index">matrix</span><a name="chapter-1-57"/> and <span class="italic">matrices</span> most useful.
+<span class="index">array:two-dimensional</span><a name="chapter-1-58"/>
+</p>
+
+
+<p>The entries in <span class="teletype">TwoDimensionalArray</span> and <span class="teletype">Matrix</span> objects are
+all the same type, except that those for <span class="teletype">Matrix</span> must belong to a
+<span class="teletype">Ring</span>.  You create and access elements in roughly the same way.
+Since matrices have an understood algebraic structure, certain
+algebraic operations are available for matrices but not for arrays.
+Because of this, we limit our discussion here to <span class="teletype">Matrix</span>, that
+can be regarded as an extension of <span class="teletype">TwoDimensionalArray</span>. See 
+<span class="teletype">TwoDimensionalArray</span> for more information about arrays.  For more
+information about Axiom's linear algebra facilities, see <span class="teletype">Matrix</span>,
+<span class="teletype">Permanent</span>, <span class="teletype">SquareMatrix</span>, <span class="teletype">Vector</span>, see Section
+<a href="section-8.4.xhtml#ugProblemEigen" class="ref" >ugProblemEigen</a>  (computation of
+eigenvalues and eigenvectors), and Section <a href="section-8.5.xhtml#ugProblemLinPolEqn" class="ref" >ugProblemLinPolEqn</a> (solution of linear and polynomial
+equations).
+</p>
+
+
+<p>You can create a matrix from a list of lists, <span class="index">matrix:creating</span><a name="chapter-1-59"/>
+where each of the inner lists represents a row of the matrix.
+</p>
+
+
+
+<div id="spadComm1-99" class="spadComm" >
+<form id="formComm1-99" action="javascript:makeRequest('1-99');" >
+<input id="comm1-99" type="text" class="command" style="width: 20em;" value="m := matrix([ [1,2], [3,4] ])" />
+</form>
+<span id="commSav1-99" class="commSav" >m := matrix([ [1,2], [3,4] ])</span>
+<div id="mathAns1-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>The ``collections'' construct (see <a href="section-5.5.xhtml#ugLangIts" class="ref" >ugLangIts</a>) is useful for creating matrices whose
+entries are given by formulas.  <span class="index">matrix:Hilbert</span><a name="chapter-1-60"/>
+</p>
+
+
+
+<div id="spadComm1-100" class="spadComm" >
+<form id="formComm1-100" action="javascript:makeRequest('1-100');" >
+<input id="comm1-100" type="text" class="command" style="width: 36em;" value="matrix([ [1/(i + j - x) for i in 1..4] for j in 1..4])" />
+</form>
+<span id="commSav1-100" class="commSav" >matrix([ [1/(i + j - x) for i in 1..4] for j in 1..4])</span>
+<div id="mathAns1-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>2</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>3</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>4</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>5</mn></mrow></mfrac></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>3</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>4</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>5</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>6</mn></mrow></mfrac></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>4</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>5</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>6</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>7</mn></mrow></mfrac></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>5</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>6</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>7</mn></mrow></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><mi>x</mi><mo>-</mo><mn>8</mn></mrow></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Polynomial Integer
+</div>
+
+
+
+<p>Let <math xmlns="&mathml;" mathsize="big"><mstyle><mi>vm</mi></mstyle></math> denote the three by three Vandermonde matrix.
+</p>
+
+
+
+<div id="spadComm1-101" class="spadComm" >
+<form id="formComm1-101" action="javascript:makeRequest('1-101');" >
+<input id="comm1-101" type="text" class="command" style="width: 32em;" value="vm := matrix [ [1,1,1], [x,y,z], [x*x,y*y,z*z] ]" />
+</form>
+<span id="commSav1-101" class="commSav" >vm := matrix [ [1,1,1], [x,y,z], [x*x,y*y,z*z] ]</span>
+<div id="mathAns1-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mi>x</mi></mtd><mtd><mi>y</mi></mtd><mtd><mi>z</mi></mtd></mtr><mtr><mtd><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mtd><mtd><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mtd><mtd><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Integer
+</div>
+
+
+
+<p>Use this syntax to extract an entry in the matrix.
+</p>
+
+
+
+
+<div id="spadComm1-102" class="spadComm" >
+<form id="formComm1-102" action="javascript:makeRequest('1-102');" >
+<input id="comm1-102" type="text" class="command" style="width: 5em;" value="vm(3,3)" />
+</form>
+<span id="commSav1-102" class="commSav" >vm(3,3)</span>
+<div id="mathAns1-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>You can also pull out a <span style="font-weight: bold;"> row</span> or a <span style="font-weight: bold;"> column</span>.
+</p>
+
+
+
+
+<div id="spadComm1-103" class="spadComm" >
+<form id="formComm1-103" action="javascript:makeRequest('1-103');" >
+<input id="comm1-103" type="text" class="command" style="width: 8em;" value="column(vm,2)" />
+</form>
+<span id="commSav1-103" class="commSav" >column(vm,2)</span>
+<div id="mathAns1-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mi>y</mi><mo>,</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Polynomial Integer
+</div>
+
+
+
+<p>You can do arithmetic.
+</p>
+
+
+
+
+<div id="spadComm1-104" class="spadComm" >
+<form id="formComm1-104" action="javascript:makeRequest('1-104');" >
+<input id="comm1-104" type="text" class="command" style="width: 5em;" value="vm * vm" />
+</form>
+<span id="commSav1-104" class="commSav" >vm * vm</span>
+<div id="mathAns1-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>x</mi><mo>+</mo><mn>1</mn></mrow></mtd><mtd><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>y</mi><mo>+</mo><mn>1</mn></mrow></mtd><mtd><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>z</mi><mo>+</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>+</mo><mi>x</mi></mrow></mtd><mtd><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>x</mi></mrow></mtd><mtd><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mi>y</mi><mo></mo><mi>z</mi></mrow><mo>+</mo><mi>x</mi></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>x</mi><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd><mtd><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd><mtd><mrow><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Integer
+</div>
+
+
+
+<p>You can perform operations such as
+<span style="font-weight: bold;"> transpose</span>, <span style="font-weight: bold;"> trace</span>, and <span style="font-weight: bold;"> determinant</span>.
+</p>
+
+
+
+<div id="spadComm1-105" class="spadComm" >
+<form id="formComm1-105" action="javascript:makeRequest('1-105');" >
+<input id="comm1-105" type="text" class="command" style="width: 14em;" value="factor determinant vm" />
+</form>
+<span id="commSav1-105" class="commSav" >factor determinant vm</span>
+<div id="mathAns1-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mi>x</mi><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>z</mi><mo>-</mo><mi>y</mi><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>z</mi><mo>-</mo><mi>x</mi><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.5.xhtml" style="margin-right: 10px;">Previous Section 1.5 Data Structures</a><a href="section-1.7.xhtml" style="margin-right: 10px;">Next Section 1.7 Writing Your Own Functions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.7.xhtml
new file mode 100644
index 0000000..5fc82ca
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.7.xhtml
@@ -0,0 +1,744 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.6.xhtml" style="margin-right: 10px;">Previous Section 1.6 Expanding to Higher Dimensions</a><a href="section-1.8.xhtml" style="margin-right: 10px;">Next Section 1.8 Polynomials</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.7">
+<h2 class="sectiontitle">1.7  Writing Your Own Functions</h2>
+
+
+<a name="ugIntroYou" class="label"/>
+
+<p>Axiom provides you with a very large library of predefined
+operations and objects to compute with.  You can use the Axiom
+library of constructors to create new objects dynamically of quite
+arbitrary complexity.  For example, you can make lists of matrices of
+fractions of polynomials with complex floating point numbers as
+coefficients.  Moreover, the library provides a wealth of operations
+that allow you to create and manipulate these objects.
+</p>
+
+
+<p>For many applications, you need to interact with the interpreter and
+write some Axiom programs to tackle your application.
+Axiom allows you to write functions interactively,
+<span class="index">function</span><a name="chapter-1-61"/> thereby effectively extending the system library.
+Here we give a few simple examples, leaving the details to
+Chapter <a href="section-6.0.xhtml#ugUser" class="ref" >ugUser</a> .
+</p>
+
+
+<p>We begin by looking at several ways that you can define the
+``factorial'' function in Axiom.  The first way is to give a
+<span class="index">function:piece-wise definition</span><a name="chapter-1-62"/> piece-wise definition of the
+function.  <span class="index">piece-wise function definition</span><a name="chapter-1-63"/> This method is best
+for a general recurrence relation since the pieces are gathered
+together and compiled into an efficient iterative function.
+Furthermore, enough previously computed values are automatically saved
+so that a subsequent call to the function can pick up from where it
+left off.
+</p>
+
+
+<p>Define the value of <span style="font-weight: bold;"> fact</span> at <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-106" class="spadComm" >
+<form id="formComm1-106" action="javascript:makeRequest('1-106');" >
+<input id="comm1-106" type="text" class="command" style="width: 8em;" value="fact(0) == 1" />
+</form>
+<span id="commSav1-106" class="commSav" >fact(0) == 1</span>
+<div id="mathAns1-106" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Define the value of <span style="font-weight: bold;"> fact</span>(n) for general <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-107" class="spadComm" >
+<form id="formComm1-107" action="javascript:makeRequest('1-107');" >
+<input id="comm1-107" type="text" class="command" style="width: 15em;" value="fact(n) == n*fact(n-1)" />
+</form>
+<span id="commSav1-107" class="commSav" >fact(n) == n*fact(n-1)</span>
+<div id="mathAns1-107" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Ask for the value at <math xmlns="&mathml;" mathsize="big"><mstyle><mn>50</mn></mstyle></math>.  The resulting function created by
+Axiom computes the value by iteration.
+</p>
+
+
+
+
+<div id="spadComm1-108" class="spadComm" >
+<form id="formComm1-108" action="javascript:makeRequest('1-108');" >
+<input id="comm1-108" type="text" class="command" style="width: 6em;" value="fact(50)" />
+</form>
+<span id="commSav1-108" class="commSav" >fact(50)</span>
+<div id="mathAns1-108" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;fact&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;fact&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>30414093201713378043612608166064768844377641568960512000000000000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>A second definition uses an <span class="teletype">if-then-else</span> and recursion.
+</p>
+
+
+
+<div id="spadComm1-109" class="spadComm" >
+<form id="formComm1-109" action="javascript:makeRequest('1-109');" >
+<input id="comm1-109" type="text" class="command" style="width: 30em;" value="fac(n) == if n &lt; 3 then n else n * fac(n - 1)" />
+</form>
+<span id="commSav1-109" class="commSav" >fac(n) == if n &lt; 3 then n else n * fac(n - 1)</span>
+<div id="mathAns1-109" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This function is less efficient than the previous version since
+each iteration involves a recursive function call.
+</p>
+
+
+
+<div id="spadComm1-110" class="spadComm" >
+<form id="formComm1-110" action="javascript:makeRequest('1-110');" >
+<input id="comm1-110" type="text" class="command" style="width: 5em;" value="fac(50)" />
+</form>
+<span id="commSav1-110" class="commSav" >fac(50)</span>
+<div id="mathAns1-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>30414093201713378043612608166064768844377641568960512000000000000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>A third version directly uses iteration.
+</p>
+
+
+
+<div id="spadComm1-111" class="spadComm" >
+<form id="formComm1-111" action="javascript:makeRequest('1-111');" >
+<input id="comm1-111" type="text" class="command" style="width: 34em;" value="fa(n) == (a := 1; for i in 2..n repeat a := a*i; a)" />
+</form>
+<span id="commSav1-111" class="commSav" >fa(n) == (a := 1; for i in 2..n repeat a := a*i; a)</span>
+<div id="mathAns1-111" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This is the least space-consumptive version.
+</p>
+
+
+
+<div id="spadComm1-112" class="spadComm" >
+<form id="formComm1-112" action="javascript:makeRequest('1-112');" >
+<input id="comm1-112" type="text" class="command" style="width: 4em;" value="fa(50)" />
+</form>
+<span id="commSav1-112" class="commSav" >fa(50)</span>
+<div id="mathAns1-112" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;fac&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>30414093201713378043612608166064768844377641568960512000000000000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>A final version appears to construct a large list and then reduces over
+it with multiplication.
+</p>
+
+
+
+<div id="spadComm1-113" class="spadComm" >
+<form id="formComm1-113" action="javascript:makeRequest('1-113');" >
+<input id="comm1-113" type="text" class="command" style="width: 24em;" value="f(n) == reduce(*,[i for i in 2..n])" />
+</form>
+<span id="commSav1-113" class="commSav" >f(n) == reduce(*,[i for i in 2..n])</span>
+<div id="mathAns1-113" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>In fact, the resulting computation is optimized into an efficient
+iteration loop equivalent to that of the third version.
+</p>
+
+
+
+<div id="spadComm1-114" class="spadComm" >
+<form id="formComm1-114" action="javascript:makeRequest('1-114');" >
+<input id="comm1-114" type="text" class="command" style="width: 4em;" value="f(50)" />
+</form>
+<span id="commSav1-114" class="commSav" >f(50)</span>
+<div id="mathAns1-114" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;function&nbsp;f&nbsp;with&nbsp;type&nbsp;<br />
+&nbsp;&nbsp;&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;PositiveInteger&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>30414093201713378043612608166064768844377641568960512000000000000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The library version uses an algorithm that is different from the four
+above because it highly optimizes the recurrence relation definition of
+<span style="font-weight: bold;"> factorial</span>.
+</p>
+
+
+
+
+<div id="spadComm1-115" class="spadComm" >
+<form id="formComm1-115" action="javascript:makeRequest('1-115');" >
+<input id="comm1-115" type="text" class="command" style="width: 9em;" value="factorial(50)" />
+</form>
+<span id="commSav1-115" class="commSav" >factorial(50)</span>
+<div id="mathAns1-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>30414093201713378043612608166064768844377641568960512000000000000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>You are not limited to one-line functions in Axiom.  If you place your
+function definitions in <span style="font-weight: bold;"> .input</span> files <span class="index">file:input</span><a name="chapter-1-64"/> (see
+<a href="section-4.1.xhtml#ugInOutIn" class="ref" >ugInOutIn</a> ), you can have multi-line
+functions that use indentation for grouping.
+</p>
+
+
+<p>Given <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> elements, <span style="font-weight: bold;"> diagonalMatrix</span> creates an
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> by <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> matrix with those elements down the diagonal.
+This function uses a permutation matrix
+that interchanges the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>th and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>j</mi></mstyle></math>th rows of a matrix
+by which it is right-multiplied.
+</p>
+
+
+<p>This function definition shows a style of definition that can be used
+in <span style="font-weight: bold;"> .input</span> files.  Indentation is used to create <span style="font-style: italic;"> blocks</span>:
+sequences of expressions that are evaluated in sequence except as
+modified by control statements such as <span class="teletype">if-then-else</span> and <span class="teletype">return</span>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+permMat(n,&nbsp;i,&nbsp;j)&nbsp;==<br />
+&nbsp;&nbsp;m&nbsp;:=&nbsp;diagonalMatrix<br />
+&nbsp;&nbsp;&nbsp;&nbsp;[(if&nbsp;i&nbsp;=&nbsp;k&nbsp;or&nbsp;j&nbsp;=&nbsp;k&nbsp;then&nbsp;0&nbsp;else&nbsp;1)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;k&nbsp;in&nbsp;1..n]<br />
+&nbsp;&nbsp;m(i,j)&nbsp;:=&nbsp;1<br />
+&nbsp;&nbsp;m(j,i)&nbsp;:=&nbsp;1<br />
+&nbsp;&nbsp;m<br />
+</div>
+
+
+
+<p>This creates a four by four matrix that interchanges the second and third
+rows.
+</p>
+
+
+
+<div id="spadComm1-116" class="spadComm" >
+<form id="formComm1-116" action="javascript:makeRequest('1-116');" >
+<input id="comm1-116" type="text" class="command" style="width: 13em;" value="p := permMat(4,2,3)" />
+</form>
+<span id="commSav1-116" class="commSav" >p := permMat(4,2,3)</span>
+<div id="mathAns1-116" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;permMat&nbsp;with&nbsp;type&nbsp;(PositiveInteger,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PositiveInteger,PositiveInteger)&nbsp;-&gt;&nbsp;Matrix&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>Create an example matrix to permute.
+</p>
+
+
+
+<div id="spadComm1-117" class="spadComm" >
+<form id="formComm1-117" action="javascript:makeRequest('1-117');" >
+<input id="comm1-117" type="text" class="command" style="width: 35em;" value="m := matrix [ [4*i + j for j in 1..4] for i in 0..3]" />
+</form>
+<span id="commSav1-117" class="commSav" >m := matrix [ [4*i + j for j in 1..4] for i in 0..3]</span>
+<div id="mathAns1-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>5</mn></mtd><mtd><mn>6</mn></mtd><mtd><mn>7</mn></mtd><mtd><mn>8</mn></mtd></mtr><mtr><mtd><mn>9</mn></mtd><mtd><mn>10</mn></mtd><mtd><mn>11</mn></mtd><mtd><mn>12</mn></mtd></mtr><mtr><mtd><mn>13</mn></mtd><mtd><mn>14</mn></mtd><mtd><mn>15</mn></mtd><mtd><mn>16</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>Interchange the second and third rows of m.
+</p>
+
+
+
+<div id="spadComm1-118" class="spadComm" >
+<form id="formComm1-118" action="javascript:makeRequest('1-118');" >
+<input id="comm1-118" type="text" class="command" style="width: 12em;" value="permMat(4,2,3) * m" />
+</form>
+<span id="commSav1-118" class="commSav" >permMat(4,2,3) * m</span>
+<div id="mathAns1-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>9</mn></mtd><mtd><mn>10</mn></mtd><mtd><mn>11</mn></mtd><mtd><mn>12</mn></mtd></mtr><mtr><mtd><mn>5</mn></mtd><mtd><mn>6</mn></mtd><mtd><mn>7</mn></mtd><mtd><mn>8</mn></mtd></mtr><mtr><mtd><mn>13</mn></mtd><mtd><mn>14</mn></mtd><mtd><mn>15</mn></mtd><mtd><mn>16</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>A function can also be passed as an argument to another function,
+which then applies the function or passes it off to some other
+function that does.  You often have to declare the type of a function
+that has functional arguments.
+</p>
+
+
+<p>This declares <span style="font-weight: bold;"> t</span> to be a two-argument function that returns a
+<span class="teletype">Float</span>.  The first argument is a function that takes one
+<span class="teletype">Float</span> argument and returns a <span class="teletype">Float</span>.
+</p>
+
+
+
+
+<div id="spadComm1-119" class="spadComm" >
+<form id="formComm1-119" action="javascript:makeRequest('1-119');" >
+<input id="comm1-119" type="text" class="command" style="width: 24em;" value="t : (Float -> Float, Float) -> Float" />
+</form>
+<span id="commSav1-119" class="commSav" >t : (Float -> Float, Float) -> Float</span>
+<div id="mathAns1-119" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This is the definition of <span style="font-weight: bold;"> t</span>.
+</p>
+
+
+
+
+<div id="spadComm1-120" class="spadComm" >
+<form id="formComm1-120" action="javascript:makeRequest('1-120');" >
+<input id="comm1-120" type="text" class="command" style="width: 23em;" value="t(fun, x) == fun(x)**2 + sin(x)**2" />
+</form>
+<span id="commSav1-120" class="commSav" >t(fun, x) == fun(x)**2 + sin(x)**2</span>
+<div id="mathAns1-120" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>We have not defined a <span style="font-weight: bold;"> cos</span> in the workspace. The one from the
+Axiom library will do.
+</p>
+
+
+
+
+<div id="spadComm1-121" class="spadComm" >
+<form id="formComm1-121" action="javascript:makeRequest('1-121');" >
+<input id="comm1-121" type="text" class="command" style="width: 10em;" value="t(cos, 5.2058)" />
+</form>
+<span id="commSav1-121" class="commSav" >t(cos, 5.2058)</span>
+<div id="mathAns1-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Here we define our own (user-defined) function.
+</p>
+
+
+
+<div id="spadComm1-122" class="spadComm" >
+<form id="formComm1-122" action="javascript:makeRequest('1-122');" >
+<input id="comm1-122" type="text" class="command" style="width: 14em;" value="cosinv(y) == cos(1/y)" />
+</form>
+<span id="commSav1-122" class="commSav" >cosinv(y) == cos(1/y)</span>
+<div id="mathAns1-122" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Pass this function as an argument to <span style="font-weight: bold;"> t</span>.
+</p>
+
+
+
+<div id="spadComm1-123" class="spadComm" >
+<form id="formComm1-123" action="javascript:makeRequest('1-123');" >
+<input id="comm1-123" type="text" class="command" style="width: 12em;" value="t(cosinv, 5.2058)" />
+</form>
+<span id="commSav1-123" class="commSav" >t(cosinv, 5.2058)</span>
+<div id="mathAns1-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>7392237241</mn><mo></mo><mn>8005164925</mn><mo></mo><mn>4147684772</mn><mo></mo><mn>932520785</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Axiom also has pattern matching capabilities for
+<span class="index">simplification</span><a name="chapter-1-65"/>
+simplification
+<span class="index">pattern matching</span><a name="chapter-1-66"/>
+of expressions and for defining new functions by rules.
+For example, suppose that you want to apply regularly a transformation
+that groups together products of radicals:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+Note that such a transformation is not generally correct.
+Axiom never uses it automatically.
+</p>
+
+
+<p>Give this rule the name <span style="font-weight: bold;"> groupSqrt</span>.
+</p>
+
+
+
+<div id="spadComm1-124" class="spadComm" >
+<form id="formComm1-124" action="javascript:makeRequest('1-124');" >
+<input id="comm1-124" type="text" class="command" style="width: 33em;" value="groupSqrt := rule(sqrt(a) * sqrt(b) == sqrt(a*b))" />
+</form>
+<span id="commSav1-124" class="commSav" >groupSqrt := rule(sqrt(a) * sqrt(b) == sqrt(a*b))</span>
+<div id="mathAns1-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><mi>C</mi><mo></mo><mrow><msqrt><mi>a</mi></msqrt></mrow><mo></mo><mrow><msqrt><mi>b</mi></msqrt></mrow></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><mo>%</mo><mi>C</mi><mo></mo><mrow><msqrt><mrow><mi>a</mi><mo></mo><mi>b</mi></mrow></msqrt></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RewriteRule(Integer,Integer,Expression Integer)
+</div>
+
+
+
+<p>Here is a test expression.
+</p>
+
+
+
+<div id="spadComm1-125" class="spadComm" >
+<form id="formComm1-125" action="javascript:makeRequest('1-125');" >
+<input id="comm1-125" type="text" class="command" style="width: 25em;" value="a := (sqrt(x) + sqrt(y) + sqrt(z))**4" />
+</form>
+<span id="commSav1-125" class="commSav" >a := (sqrt(x) + sqrt(y) + sqrt(z))**4</span>
+<div id="mathAns1-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mn>12</mn><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msqrt><mi>y</mi></msqrt></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mn>12</mn><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msqrt><mi>x</mi></msqrt></mrow></mrow><mo>)</mo></mrow><mo></mo><mrow><msqrt><mi>z</mi></msqrt></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>12</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msqrt><mi>x</mi></msqrt></mrow><mo></mo><mrow><msqrt><mi>y</mi></msqrt></mrow></mrow><mo>+</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>6</mn><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>The rule
+<span style="font-weight: bold;"> groupSqrt</span> successfully simplifies the expression.
+</p>
+
+
+
+<div id="spadComm1-126" class="spadComm" >
+<form id="formComm1-126" action="javascript:makeRequest('1-126');" >
+<input id="comm1-126" type="text" class="command" style="width: 8em;" value="groupSqrt a" />
+</form>
+<span id="commSav1-126" class="commSav" >groupSqrt a</span>
+<div id="mathAns1-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mn>12</mn><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msqrt><mrow><mi>y</mi><mo></mo><mi>z</mi></mrow></msqrt></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mn>12</mn><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msqrt><mrow><mi>x</mi><mo></mo><mi>z</mi></mrow></msqrt></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>12</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msqrt><mrow><mi>x</mi><mo></mo><mi>y</mi></mrow></msqrt></mrow></mrow><mo>+</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>6</mn><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.6.xhtml" style="margin-right: 10px;">Previous Section 1.6 Expanding to Higher Dimensions</a><a href="section-1.8.xhtml" style="margin-right: 10px;">Next Section 1.8 Polynomials</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.8.xhtml
new file mode 100644
index 0000000..ff1cd79
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.8.xhtml
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.7.xhtml" style="margin-right: 10px;">Previous Section 1.7 Writing Your Own Functions</a><a href="section-1.9.xhtml" style="margin-right: 10px;">Next Section 1.9 Limits</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.8">
+<h2 class="sectiontitle">1.8  Polynomials</h2>
+
+
+<a name="ugIntroVariables" class="label"/>
+
+<p>Polynomials are the commonly used algebraic types in symbolic
+computation.  <span class="index">polynomial</span><a name="chapter-1-67"/> Interactive users of Axiom
+generally only see one type of polynomial: <span class="teletype">Polynomial(R)</span>.
+This type represents polynomials in any number of unspecified
+variables over a particular coefficient domain <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>.  This type
+represents its coefficients <span style="font-style: italic;"> sparsely</span>: only terms with non-zero
+coefficients are represented.
+</p>
+
+
+<p>In building applications, many other kinds of polynomial
+representations are useful.  Polynomials may have one variable or
+multiple variables, the variables can be named or unnamed, the
+coefficients can be stored sparsely or densely.  So-called
+``distributed multivariate polynomials'' store polynomials as
+coefficients paired with vectors of exponents.  This type is
+particularly efficient for use in algorithms for solving systems of
+non-linear polynomial equations.
+</p>
+
+
+<p>The polynomial constructor most familiar to the interactive user
+is <span class="teletype">Polynomial</span>.
+</p>
+
+
+
+<div id="spadComm1-127" class="spadComm" >
+<form id="formComm1-127" action="javascript:makeRequest('1-127');" >
+<input id="comm1-127" type="text" class="command" style="width: 16em;" value="(x**2 - x*y**3 +3*y)**2" />
+</form>
+<span id="commSav1-127" class="commSav" >(x**2 - x*y**3 +3*y)**2</span>
+<div id="mathAns1-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mo></mo><mi>x</mi><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>If you wish to restrict the variables used,
+<span class="teletype">UnivariatePolynomial</span> provides polynomials in one variable.
+</p>
+
+
+
+
+<div id="spadComm1-128" class="spadComm" >
+<form id="formComm1-128" action="javascript:makeRequest('1-128');" >
+<input id="comm1-128" type="text" class="command" style="width: 26em;" value="p: UP(x,INT) := (3*x-1)**2 * (2*x + 8)" />
+</form>
+<span id="commSav1-128" class="commSav" >p: UP(x,INT) := (3*x-1)**2 * (2*x + 8)</span>
+<div id="mathAns1-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>18</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>60</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>46</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>8</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>The constructor <span class="teletype">MultivariatePolynomial</span> provides polynomials
+in one or more specified variables.
+</p>
+
+
+
+
+<div id="spadComm1-129" class="spadComm" >
+<form id="formComm1-129" action="javascript:makeRequest('1-129');" >
+<input id="comm1-129" type="text" class="command" style="width: 29em;" value="m: MPOLY([x,y],INT) := (x**2-x*y**3+3*y)**2" />
+</form>
+<span id="commSav1-129" class="commSav" >m: MPOLY([x,y],INT) := (x**2-x*y**3+3*y)**2</span>
+<div id="mathAns1-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mi>y</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>9</mn><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: MultivariatePolynomial([x,y],Integer)
+</div>
+
+
+
+<p>You can change the way the polynomial appears by modifying the variable
+ordering in the explicit list.
+</p>
+
+
+
+<div id="spadComm1-130" class="spadComm" >
+<form id="formComm1-130" action="javascript:makeRequest('1-130');" >
+<input id="comm1-130" type="text" class="command" style="width: 14em;" value="m :: MPOLY([y,x],INT)" />
+</form>
+<span id="commSav1-130" class="commSav" >m :: MPOLY([y,x],INT)</span>
+<div id="mathAns1-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mo></mo><mi>x</mi><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: MultivariatePolynomial([y,x],Integer)
+</div>
+
+
+
+<p>The constructor <span class="teletype">DistributedMultivariatePolynomial</span> provides
+polynomials in one or more specified variables with the monomials
+ordered lexicographically.
+</p>
+
+
+
+
+<div id="spadComm1-131" class="spadComm" >
+<form id="formComm1-131" action="javascript:makeRequest('1-131');" >
+<input id="comm1-131" type="text" class="command" style="width: 13em;" value="m :: DMP([y,x],INT)" />
+</form>
+<span id="commSav1-131" class="commSav" >m :: DMP([y,x],INT)</span>
+<div id="mathAns1-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow><mo></mo><mi>x</mi></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mi>y</mi><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DistributedMultivariatePolynomial([y,x],Integer)
+</div>
+
+
+
+<p>The constructor
+<span class="teletype">HomogeneousDistributedMultivariatePolynomial</span> is similar
+except that the monomials are ordered by total order refined by
+reverse lexicographic order.
+</p>
+
+
+
+<div id="spadComm1-132" class="spadComm" >
+<form id="formComm1-132" action="javascript:makeRequest('1-132');" >
+<input id="comm1-132" type="text" class="command" style="width: 14em;" value="m :: HDMP([y,x],INT)" />
+</form>
+<span id="commSav1-132" class="commSav" >m :: HDMP([y,x],INT)</span>
+<div id="mathAns1-132" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mi>y</mi><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: HomogeneousDistributedMultivariatePolynomial([y,x],Integer)
+</div>
+
+
+
+<p>More generally, the domain constructor
+<span class="teletype">GeneralDistributedMultivariatePolynomial</span> allows the user to
+provide an arbitrary predicate to define his own term ordering.  These
+last three constructors are typically used in Gr&#x00f6;bner basis
+applications and
+when a flat (that is, non-recursive) display is wanted and the term
+ordering is critical for controlling the computation.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.7.xhtml" style="margin-right: 10px;">Previous Section 1.7 Writing Your Own Functions</a><a href="section-1.9.xhtml" style="margin-right: 10px;">Next Section 1.9 Limits</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-1.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-1.9.xhtml
new file mode 100644
index 0000000..77a3669
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-1.9.xhtml
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section1.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.8.xhtml" style="margin-right: 10px;">Previous Section 1.8 Polynomials</a><a href="section-1.10.xhtml" style="margin-right: 10px;">Next Section 1.10 Series</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-1.9">
+<h2 class="sectiontitle">1.9  Limits</h2>
+
+
+<a name="ugIntroCalcLimits" class="label"/>
+
+
+<p>Axiom's <span style="font-weight: bold;"> limit</span> function is usually used to evaluate
+limits of quotients where the numerator and denominator <span class="index">limit</span><a name="chapter-1-68"/>
+both tend to zero or both tend to infinity.  To find the limit of an
+expression <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> as a real variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> tends to a limit
+value <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>, enter <span class="teletype">limit(f, x=a)</span>.  Use
+<span style="font-weight: bold;"> complexLimit</span> if the variable is complex.  Additional
+information and examples of limits are in 
+Section <a href="section-8.6.xhtml#ugProblemLimits" class="ref" >ugProblemLimits</a> .
+</p>
+
+
+<p>You can take limits of functions with parameters.
+<span class="index">limit:of function with parameters</span><a name="chapter-1-69"/>
+</p>
+
+
+
+<div id="spadComm1-133" class="spadComm" >
+<form id="formComm1-133" action="javascript:makeRequest('1-133');" >
+<input id="comm1-133" type="text" class="command" style="width: 17em;" value="g := csc(a*x) / csch(b*x)" />
+</form>
+<span id="commSav1-133" class="commSav" >g := csc(a*x) / csch(b*x)</span>
+<div id="mathAns1-133" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>csc</mo><mo>(</mo><mrow><mi>a</mi><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mrow><mo>csch</mo><mo>(</mo><mrow><mi>b</mi><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>As you can see, the limit is expressed in terms of the parameters.
+</p>
+
+
+
+<div id="spadComm1-134" class="spadComm" >
+<form id="formComm1-134" action="javascript:makeRequest('1-134');" >
+<input id="comm1-134" type="text" class="command" style="width: 8em;" value="limit(g,x=0)" />
+</form>
+<span id="commSav1-134" class="commSav" >limit(g,x=0)</span>
+<div id="mathAns1-134" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mi>b</mi><mi>a</mi></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+<p>A variable may also approach plus or minus infinity:
+</p>
+
+
+
+<div id="spadComm1-135" class="spadComm" >
+<form id="formComm1-135" action="javascript:makeRequest('1-135');" >
+<input id="comm1-135" type="text" class="command" style="width: 12em;" value="h := (1 + k/x)**x" />
+</form>
+<span id="commSav1-135" class="commSav" >h := (1 + k/x)**x</span>
+<div id="mathAns1-135" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mfrac><mrow><mi>x</mi><mo>+</mo><mi>k</mi></mrow><mi>x</mi></mfrac><mi>x</mi></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Use <span class="teletype">%plusInfinity</span> and <span class="teletype">%minusInfinity</span> to
+denote <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x221E;</mo></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mo>&#x221E;</mo></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm1-136" class="spadComm" >
+<form id="formComm1-136" action="javascript:makeRequest('1-136');" >
+<input id="comm1-136" type="text" class="command" style="width: 17em;" value="limit(h,x=%plusInfinity)" />
+</form>
+<span id="commSav1-136" class="commSav" >limit(h,x=%plusInfinity)</span>
+<div id="mathAns1-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>e</mi><mi>k</mi></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+<p>A function can be defined on both sides of a particular value, but
+may tend to different limits as its variable approaches that value from the
+left and from the right.
+</p>
+
+
+
+
+<div id="spadComm1-137" class="spadComm" >
+<form id="formComm1-137" action="javascript:makeRequest('1-137');" >
+<input id="comm1-137" type="text" class="command" style="width: 17em;" value="limit(sqrt(y**2)/y,y = 0)" />
+</form>
+<span id="commSav1-137" class="commSav" >limit(sqrt(y**2)/y,y = 0)</span>
+<div id="mathAns1-137" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>leftHandLimit</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>rightHandLimit</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+</div>
+
+
+
+<p>As <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> approaches <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> along the real axis, <span class="teletype">exp(-1/x**2)</span>
+tends to <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm1-138" class="spadComm" >
+<form id="formComm1-138" action="javascript:makeRequest('1-138');" >
+<input id="comm1-138" type="text" class="command" style="width: 17em;" value="limit(exp(-1/x**2),x = 0)" />
+</form>
+<span id="commSav1-138" class="commSav" >limit(exp(-1/x**2),x = 0)</span>
+<div id="mathAns1-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+<p>However, if <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is allowed to approach <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> along any path in the
+complex plane, the limiting value of <span class="teletype">exp(-1/x**2)</span> depends on the
+path taken because the function has an essential singularity at <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+This is reflected in the error message returned by the function.
+</p>
+
+
+
+<div id="spadComm1-139" class="spadComm" >
+<form id="formComm1-139" action="javascript:makeRequest('1-139');" >
+<input id="comm1-139" type="text" class="command" style="width: 22em;" value="complexLimit(exp(-1/x**2),x = 0)" />
+</form>
+<span id="commSav1-139" class="commSav" >complexLimit(exp(-1/x**2),x = 0)</span>
+<div id="mathAns1-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-1.8.xhtml" style="margin-right: 10px;">Previous Section 1.8 Polynomials</a><a href="section-1.10.xhtml" style="margin-right: 10px;">Next Section 1.10 Series</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.0.xhtml
new file mode 100644
index 0000000..821cd2f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.0.xhtml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.91.xhtml" style="margin-right: 10px;">Previous Section 9.91  ZeroDimensionalSolvePackage</a><a href="section-10.1.xhtml" style="margin-right: 10px;">Next Section 10.1 Drawing Ribbons Interactively</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.0">
+<h2 class="sectiontitle">10.0 Interactive Programming</h2>
+<a name="ugIntProg" class="label"/>
+
+<p>Programming in the interpreter is easy.
+So is the use of Axiom's graphics facility.
+Both are rather flexible and allow you to use them for many
+interesting applications.
+However, both require learning some basic ideas and skills.
+</p>
+
+
+<p>All graphics examples in the gallery section are either
+produced directly by interactive commands or by interpreter
+programs.
+Four of these programs are introduced here.
+By the end of this chapter you will know enough about graphics and
+programming in the interpreter to not only understand all these
+examples, but to tackle interesting and difficult problems on your
+own.
+The appendix on graphics lists all the remaining commands and
+programs used to create these images.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.91.xhtml" style="margin-right: 10px;">Previous Section 9.91  ZeroDimensionalSolvePackage</a><a href="section-10.1.xhtml" style="margin-right: 10px;">Next Section 10.1 Drawing Ribbons Interactively</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.1.xhtml
new file mode 100644
index 0000000..5ef6c56
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.1.xhtml
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.0.xhtml" style="margin-right: 10px;">Previous Section 10.0 Interactive Programming</a><a href="section-10.2.xhtml" style="margin-right: 10px;">Next Section 10.2 A Ribbon Program</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.1">
+<h2 class="sectiontitle">10.1  Drawing Ribbons Interactively</h2>
+
+
+<a name="ugIntProgDrawing" class="label"/>
+
+
+<p>We begin our discussion of interactive graphics with the creation
+of a useful facility: plotting ribbons of two-graphs in
+three-space.
+Suppose you want to draw the two-dimensional graphs of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>
+functions  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>f</mi><mi>i</mi></msub><mo>(</mo><mi>x</mi><mo>)</mo><mo>,</mo><mn>1</mn><mo>&#x2264;</mo><mi>i</mi><mo>&#x2264;</mo><mi>n</mi><mo>,</mo></mrow></mstyle></math> all over some fixed range of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+One approach is to create a two-dimensional graph for each one, then
+superpose one on top of the other.
+What you will more than likely get is a jumbled mess.
+Even if you make each function a different color, the result is
+likely to be confusing.
+</p>
+
+
+<p>A better approach is to display each of the  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>f</mi><mi>i</mi></msub><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> in three
+<span class="index">ribbon</span><a name="chapter-10-0"/>
+dimensions as a ``ribbon'' of some appropriate width along the
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>-direction, laying down each  ribbon next to the
+previous one.
+A ribbon is simply a function of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> depending
+only on  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+<p>We illustrate this for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>f</mi><mi>i</mi></msub><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> defined as simple powers of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> ranging between  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+</p>
+
+
+
+<p>Draw the ribbon for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>=</mo><msup><mi>x</mi><mn>2</mn></msup></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 13em">
+draw(x**2,x=-1..1,y=0..1)
+</div>
+
+
+
+<div class="image">
+<img src="ps/ribbon1.png" alt="picture" />
+</div>
+
+<p>Now that was easy!
+What you get is a ``wire-mesh'' rendition of the ribbon.
+That's fine for now.
+Notice that the mesh-size is small in both the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and the
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> directions.
+Axiom normally computes points in both these directions.
+This is unnecessary.
+One step is all we need in the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>-direction.
+To have Axiom economize on  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>-points, we re-draw the
+ribbon with option  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>var2Steps</mi><mo>=</mo><mo>=</mo><mn>1</mn></mrow></mstyle></math>.
+</p>
+
+
+<p>Re-draw the ribbon, but with option  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>var2Steps</mi><mo>=</mo><mo>=</mo><mn>1</mn></mrow></mstyle></math>
+so that only  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> step is computed in the
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> direction.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 23em">
+vp := draw(x**2,x=-1..1,y=0..1,var2Steps==1) 
+</div>
+
+
+
+<div class="image">
+<img src="ps/ribbon2.png" alt="picture" />
+</div>
+
+<p>The operation has created a viewport, that is, a graphics window
+on your screen.
+We assigned the viewport to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>vp</mi></mstyle></math> and now we manipulate
+its contents.
+</p>
+
+
+
+<p>Graphs are objects, like numbers and algebraic expressions.
+You may want to do some experimenting with graphs.
+For example, say
+</p>
+
+
+
+<div class="verbatim"><br />
+showRegion(vp,&nbsp;"on")<br />
+</div>
+
+
+<p>to put a bounding box around the ribbon.
+Try it!
+Issue  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>rotate</mi><mo>(</mo><mi>vp</mi><mo>,</mo><mo>-</mo><mn>45</mn><mo>,</mo><mn>90</mn><mo>)</mo></mrow></mstyle></math> to rotate the
+figure  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>45</mn></mrow></mstyle></math> longitudinal degrees and  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>90</mn></mstyle></math> latitudinal
+degrees.
+</p>
+
+
+<p>Here is a different rotation.
+This turns the graph so you can view it along the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>-axis.
+</p>
+
+
+
+
+<div id="spadComm10-1" class="spadComm" >
+<form id="formComm10-1" action="javascript:makeRequest('10-1');" >
+<input id="comm10-1" type="text" class="command" style="width: 12em;" value="rotate(vp, 0, -90)" />
+</form>
+<span id="commSav10-1" class="commSav" >rotate(vp, 0, -90)</span>
+<div id="mathAns10-1" ></div>
+</div>
+
+
+
+<div class="image">
+<img src="ps/ribbon2r.png" alt="picture" />
+</div>
+
+
+<p>There are many other things you can do.
+In fact, most everything you can do interactively using the
+three-dimensional control panel (such as translating, zooming, resizing,
+coloring, perspective and lighting selections) can also be done
+directly by operations (see Chapter 
+<a href="section-7.0.xhtml#ugGraph" class="ref" >ugGraph</a>  for more details).
+</p>
+
+
+<p>When you are done experimenting, say  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>reset</mi><mo>(</mo><mi>vp</mi><mo>)</mo></mrow></mstyle></math> to restore the
+picture to its original position and settings.
+</p>
+
+
+
+<p>Let's add another ribbon to our picture---one
+for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mstyle></math>.
+Since  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> ranges from  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> for the
+first ribbon, now let  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> range from  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> to
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math>.
+This puts the second ribbon next to the first one.
+</p>
+
+
+<p>How do you add a second ribbon to the viewport?
+One method is
+to extract the ``space'' component from the
+viewport using the operation
+<span class="spadfunFrom" >subspace</span><span class="index">subspace</span><a name="chapter-10-1"/><span class="index">ThreeDimensionalViewport</span><a name="chapter-10-2"/>.
+You can think of the space component as the object inside the
+window (here, the ribbon).
+Let's call it  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>sp</mi></mstyle></math>.
+To add the second ribbon, you draw the second ribbon using the
+option  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>space</mi><mo>=</mo><mo>=</mo><mi>sp</mi></mrow></mstyle></math>.
+</p>
+
+
+<p>Extract the space component of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>vp</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm10-2" class="spadComm" >
+<form id="formComm10-2" action="javascript:makeRequest('10-2');" >
+<input id="comm10-2" type="text" class="command" style="width: 12em;" value="sp := subspace(vp)" />
+</form>
+<span id="commSav10-2" class="commSav" >sp := subspace(vp)</span>
+<div id="mathAns10-2" ></div>
+</div>
+
+
+
+<p>Add the ribbon for
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mstyle></math> alongside that for
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 28em">
+vp := draw(x**3,x=-1..1,y=1..2,var2Steps==1, space==sp)
+</div>
+
+
+
+<div class="image">
+<img src="ps/ribbons.png" alt="picture" />
+</div>
+
+<p>Unless you moved the original viewport, the new viewport covers
+the old one.
+You might want to check that the old object is still there by
+moving the top window.
+</p>
+
+
+<p>Let's show quadrilateral polygon outlines on the ribbons and then
+enclose the ribbons in a box.
+</p>
+
+
+<p>Show quadrilateral polygon outlines.
+</p>
+
+
+
+
+<div id="spadComm10-3" class="spadComm" >
+<form id="formComm10-3" action="javascript:makeRequest('10-3');" >
+<input id="comm10-3" type="text" class="command" style="width: 30em;" value='drawStyle(vp,"shade");outlineRender(vp,"on")' />
+</form>
+<span id="commSav10-3" class="commSav" >drawStyle(vp,"shade");outlineRender(vp,"on")</span>
+<div id="mathAns10-3" ></div>
+</div>
+
+
+
+<div class="image">
+<img src="ps/ribbons2.png" alt="picture" />
+</div>
+
+<p>Enclose the ribbons in a box.
+</p>
+
+
+
+
+<div id="spadComm10-4" class="spadComm" >
+<form id="formComm10-4" action="javascript:makeRequest('10-4');" >
+<input id="comm10-4" type="text" class="command" style="width: 26em;" value='rotate(vp,20,-60); showRegion(vp,"on")' />
+</form>
+<span id="commSav10-4" class="commSav" >rotate(vp,20,-60); showRegion(vp,"on")</span>
+<div id="mathAns10-4" ></div>
+</div>
+
+
+
+<div class="image">
+<img src="ps/ribbons2b.png" alt="picture" />
+</div>
+
+<p>This process has become tedious!
+If we had to add two or three more ribbons, we would have to
+repeat the above steps several more times.
+It is time to write an interpreter program to help us take care of
+the details.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-10.0.xhtml" style="margin-right: 10px;">Previous Section 10.0 Interactive Programming</a><a href="section-10.2.xhtml" style="margin-right: 10px;">Next Section 10.2 A Ribbon Program</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.10.xhtml
new file mode 100644
index 0000000..81c8b38
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.10.xhtml
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.9.xhtml" style="margin-right: 10px;">Previous Section 10.9 Functions Producing Functions</a><a href="section-11.0.xhtml" style="margin-right: 10px;">Next Section 11.0 Packages</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.10">
+<h2 class="sectiontitle">10.10  Automatic Newton Iteration Formulas</h2>
+
+
+<a name="ugIntProgNewton" class="label"/>
+
+
+<p>This setting is needed to get Newton's iterations to converge.
+</p>
+
+
+
+
+<div id="spadComm10-23" class="spadComm" >
+<form id="formComm10-23" action="javascript:makeRequest('10-23');" >
+<input id="comm10-23" type="text" class="command" style="width: 17em;" value=")set streams calculate 10" />
+</form>
+<span id="commSav10-23" class="commSav" >)set streams calculate 10</span>
+<div id="mathAns10-23" ></div>
+</div>
+
+
+
+<p>We resume
+our continuing saga of arrows and complex functions.
+Suppose we want to investigate the behavior of Newton's iteration function
+<span class="index">Newton iteration</span><a name="chapter-10-9"/>
+in the complex plane.
+Given a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>, we want to find the complex values
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> such that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>z</mi><mo>)</mo><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+<p>The first step is to produce a Newton iteration formula for
+a given  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>:
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>x</mi><mi>n</mi></msub><mo>-</mo><mfrac><mrow><mi>f</mi><mo>(</mo><msub><mi>x</mi><mi>n</mi></msub><mo>)</mo></mrow><mrow><mi>f</mi><mo>'</mo><mo>(</mo><msub><mi>x</mi><mi>n</mi></msub><mo>)</mo></mrow></mfrac><mo>.</mo></mrow></mstyle></math>
+We represent this formula by a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math>
+that performs the computation on the right-hand side, that is,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mi>g</mi><mo>(</mo><msub><mi>x</mi><mi>n</mi></msub><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>The type <span class="teletype">Expression Integer</span> (abbreviated <span class="teletype">EXPR
+INT</span>) is used to represent general symbolic expressions in
+Axiom.
+<span class="index">Expression</span><a name="chapter-10-10"/>
+To make our facility as general as possible, we assume
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> has this type.
+Given  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>, we want
+to produce a Newton iteration function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> which,
+given a complex point  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>x</mi><mi>n</mi></msub></mrow></mstyle></math>, delivers the next
+Newton iteration point  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub></mrow></mstyle></math>.
+</p>
+
+
+<p>This time we write an input file called <span style="font-weight: bold;"> newton.input</span>.
+We need to import <span class="teletype">MakeUnaryCompiledFunction</span> (discussed
+in the last section), call it with appropriate types, and then define
+the function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>newtonStep</mi></mstyle></math> which references it.
+Here is the function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>newtonStep</mi></mstyle></math>:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+C&nbsp;:=&nbsp;Complex&nbsp;DoubleFloat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;complex&nbsp;numbers<br />
+complexFunPack:=MakeUnaryCompiledFunction(EXPR&nbsp;INT,C,C)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Package&nbsp;for&nbsp;making&nbsp;functions<br />
+<br />
+newtonStep(f)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Newton's&nbsp;iteration&nbsp;function<br />
+&nbsp;&nbsp;fun&nbsp;&nbsp;:=&nbsp;complexNumericFunction&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Function&nbsp;for&nbsp;$f$<br />
+&nbsp;&nbsp;deriv&nbsp;:=&nbsp;complexDerivativeFunction(f,1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Function&nbsp;for&nbsp;$f'$<br />
+&nbsp;&nbsp;(x:C):C&nbsp;+-&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;the&nbsp;iterator&nbsp;function<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;-&nbsp;fun(x)/deriv(x)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+<br />
+complexNumericFunction&nbsp;f&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Turn&nbsp;an&nbsp;expression&nbsp;$f$&nbsp;into&nbsp;a<br />
+&nbsp;&nbsp;v&nbsp;:=&nbsp;theVariableIn&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function<br />
+&nbsp;&nbsp;compiledFunction(f,&nbsp;v)$complexFunPack<br />
+<br />
+complexDerivativeFunction(f,n)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;an&nbsp;nth&nbsp;derivative<br />
+&nbsp;&nbsp;v&nbsp;:=&nbsp;theVariableIn&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function<br />
+&nbsp;&nbsp;df&nbsp;:=&nbsp;D(f,v,n)<br />
+&nbsp;&nbsp;compiledFunction(df,&nbsp;v)$complexFunPack<br />
+<br />
+theVariableIn&nbsp;f&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns&nbsp;the&nbsp;variable&nbsp;in&nbsp;$f$<br />
+&nbsp;&nbsp;vl&nbsp;:=&nbsp;variables&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;list&nbsp;of&nbsp;variables<br />
+&nbsp;&nbsp;nv&nbsp;:=&nbsp; #&nbsp;vl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;number&nbsp;of&nbsp;variables<br />
+&nbsp;&nbsp;nv&nbsp;&gt;&nbsp;1&nbsp;=&gt;&nbsp;error&nbsp;"Expression&nbsp;is&nbsp;not&nbsp;univariate."<br />
+&nbsp;&nbsp;nv&nbsp;=&nbsp;0&nbsp;=&gt;&nbsp;'x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;a&nbsp;dummy&nbsp;variable<br />
+&nbsp;&nbsp;first&nbsp;vl<br />
+</div>
+
+
+
+<p>Do you see what is going on here?
+A formula  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> is passed into the function <span style="font-weight: bold;"> newtonStep</span>.
+First, the function turns  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> into a compiled program mapping
+complex numbers into complex numbers.  Next, it does the same thing
+for the derivative of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.  Finally, it returns a function which
+computes a single step of Newton's iteration.
+</p>
+
+
+<p>The function <span style="font-weight: bold;"> complexNumericFunction</span> extracts the variable
+from the expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> and then turns  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> into a function
+which maps complex numbers into complex numbers. The function
+<span style="font-weight: bold;"> complexDerivativeFunction</span> does the same thing for the
+derivative of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.  The function <span style="font-weight: bold;"> theVariableIn</span>
+extracts the variable from the expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>, calling the function
+<span style="font-weight: bold;"> error</span> if  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> has more than one variable.
+It returns the dummy variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> if  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> has no variables.
+</p>
+
+
+<p>Let's now apply <span style="font-weight: bold;"> newtonStep</span> to the formula for computing
+cube roots of two.
+</p>
+
+
+<p>Read the input file with the definitions.
+</p>
+
+
+
+
+<div id="spadComm10-24" class="spadComm" >
+<form id="formComm10-24" action="javascript:makeRequest('10-24');" >
+<input id="comm10-24" type="text" class="command" style="width: 8em;" value=")read newton" />
+</form>
+<span id="commSav10-24" class="commSav" >)read newton</span>
+<div id="mathAns10-24" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm10-25" class="spadComm" >
+<form id="formComm10-25" action="javascript:makeRequest('10-25');" >
+<input id="comm10-25" type="text" class="command" style="width: 10em;" value=")read vectors " />
+</form>
+<span id="commSav10-25" class="commSav" >)read vectors </span>
+<div id="mathAns10-25" ></div>
+</div>
+
+
+
+<p>The cube root of two.
+</p>
+
+
+
+
+<div id="spadComm10-26" class="spadComm" >
+<form id="formComm10-26" action="javascript:makeRequest('10-26');" >
+<input id="comm10-26" type="text" class="command" style="width: 9em;" value="f := x**3 - 2" />
+</form>
+<span id="commSav10-26" class="commSav" >f := x**3 - 2</span>
+<div id="mathAns10-26" ></div>
+</div>
+
+
+
+<p>Get Newton's iteration formula.
+</p>
+
+
+
+
+<div id="spadComm10-27" class="spadComm" >
+<form id="formComm10-27" action="javascript:makeRequest('10-27');" >
+<input id="comm10-27" type="text" class="command" style="width: 12em;" value="g := newtonStep f" />
+</form>
+<span id="commSav10-27" class="commSav" >g := newtonStep f</span>
+<div id="mathAns10-27" ></div>
+</div>
+
+
+
+<p>Let  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> denote the result of
+applying Newton's iteration once to the complex number  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>+</mo><mo>%</mo><mi>i</mi></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm10-28" class="spadComm" >
+<form id="formComm10-28" action="javascript:makeRequest('10-28');" >
+<input id="comm10-28" type="text" class="command" style="width: 12em;" value="a := g(1.0 + %i)" />
+</form>
+<span id="commSav10-28" class="commSav" >a := g(1.0 + %i)</span>
+<div id="mathAns10-28" ></div>
+</div>
+
+
+
+<p>Now apply it repeatedly. How fast does it converge?
+</p>
+
+
+
+
+<div id="spadComm10-29" class="spadComm" >
+<form id="formComm10-29" action="javascript:makeRequest('10-29');" >
+<input id="comm10-29" type="text" class="command" style="width: 18em;" value="[(a := g(a)) for i in 1..]" />
+</form>
+<span id="commSav10-29" class="commSav" >[(a := g(a)) for i in 1..]</span>
+<div id="mathAns10-29" ></div>
+</div>
+
+
+
+<p>Check the accuracy of the last iterate.
+</p>
+
+
+
+
+<div id="spadComm10-30" class="spadComm" >
+<form id="formComm10-30" action="javascript:makeRequest('10-30');" >
+<input id="comm10-30" type="text" class="command" style="width: 3em;" value="a**3" />
+</form>
+<span id="commSav10-30" class="commSav" >a**3</span>
+<div id="mathAns10-30" ></div>
+</div>
+
+
+
+<p>In MappingPackage1, we show how functions can be
+manipulated as objects in Axiom.
+A useful operation to consider here is  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math>, which means
+composition.
+For example  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>g</mi><mo>*</mo><mi>g</mi></mrow></mstyle></math> causes the Newton iteration formula
+to be applied twice.
+Correspondingly,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>g</mi><mo>*</mo><mo>*</mo><mi>n</mi></mrow></mstyle></math> means to apply the iteration formula
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> times.
+</p>
+
+
+<p>Apply  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> twice to the point  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>+</mo><mo>%</mo><mi>i</mi></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm10-31" class="spadComm" >
+<form id="formComm10-31" action="javascript:makeRequest('10-31');" >
+<input id="comm10-31" type="text" class="command" style="width: 12em;" value="(g*g) (1.0 + %i)" />
+</form>
+<span id="commSav10-31" class="commSav" >(g*g) (1.0 + %i)</span>
+<div id="mathAns10-31" ></div>
+</div>
+
+
+
+<p>Apply  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> 11 times.
+</p>
+
+
+
+
+<div id="spadComm10-32" class="spadComm" >
+<form id="formComm10-32" action="javascript:makeRequest('10-32');" >
+<input id="comm10-32" type="text" class="command" style="width: 13em;" value="(g**11) (1.0 + %i)" />
+</form>
+<span id="commSav10-32" class="commSav" >(g**11) (1.0 + %i)</span>
+<div id="mathAns10-32" ></div>
+</div>
+
+
+
+<p>Look now at the vector field and surface generated
+after two steps of Newton's formula for the cube root of two.
+The poles in these pictures represent bad starting values, and the
+flat areas are the regions of convergence to the three roots.
+</p>
+
+
+
+<p>The vector field.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 20em">
+drawComplexVectorField(g**3,-3..3,-3..3)
+</div>
+
+
+
+<div class="image">
+<img src="ps/vectorRoot.png" alt="picture" />
+</div>
+
+<p>The surface.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 15em">
+drawComplex(g**3,-3..3,-3..3)
+</div>
+
+
+
+<div class="image">
+<img src="ps/complexRoot.png" alt="picture" />
+</div>
+
+
+
+<p><!--
+ Here and throughout the book we should use the terminology
+ "type of a function", rather than talking about source and target.
+ This is how the brave new world of SMWATT regards them. A function
+ is just an object that has a mapping type.
+-->
+</p>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-10.9.xhtml" style="margin-right: 10px;">Previous Section 10.9 Functions Producing Functions</a><a href="section-11.0.xhtml" style="margin-right: 10px;">Next Section 11.0 Packages</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.2.xhtml
new file mode 100644
index 0000000..044d8ed
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.2.xhtml
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.1.xhtml" style="margin-right: 10px;">Previous Section 10.1 Drawing Ribbons Interactively</a><a href="section-10.3.xhtml" style="margin-right: 10px;">Next Section 10.3 Coloring and Positioning Ribbons</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.2">
+<h2 class="sectiontitle">10.2  A Ribbon Program</h2>
+
+
+<a name="ugIntProgRibbon" class="label"/>
+
+
+<p>The above approach creates a new viewport for each additional ribbon.
+A better approach is to build one object composed of all ribbons
+before creating a viewport.  To do this, use <span style="font-weight: bold;"> makeObject</span> rather
+than <span style="font-weight: bold;"> draw</span>.  The operations have similar formats, but <span style="font-weight: bold;"> draw</span>
+returns a viewport and <span style="font-weight: bold;"> makeObject</span> returns a space object.
+</p>
+
+
+<p>We now create a function <span style="font-weight: bold;"> drawRibbons</span> of two arguments:
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>flist</mi></mstyle></math>, a list of formulas for the ribbons you want to draw,
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>xrange</mi></mstyle></math>, the range over which you want them drawn.
+Using this function, you can just say
+</p>
+
+
+
+<div class="verbatim"><br />
+drawRibbons([x**2,&nbsp;x**3],&nbsp;x=-1..1)<br />
+</div>
+
+
+<p>to do all of the work required in the last section.
+Here is the <span style="font-weight: bold;"> drawRibbons</span> program.
+Invoke your favorite editor and create a file called <span style="font-weight: bold;"> ribbon.input</span>
+containing the following program.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+drawRibbons(flist,&nbsp;xrange)&nbsp;==}{}<br />
+&nbsp;&nbsp;sp&nbsp;:=&nbsp;createThreeSpace()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;empty&nbsp;space&nbsp;$sp$.<br />
+&nbsp;&nbsp;y0&nbsp;:=&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;initial&nbsp;ribbon&nbsp;position.<br />
+&nbsp;&nbsp;for&nbsp;f&nbsp;in&nbsp;flist&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;each&nbsp;function&nbsp;$f$,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;makeObject(f,&nbsp;xrange,&nbsp;y=y0..y0+1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;and&nbsp;add&nbsp;a&nbsp;ribbon<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;space==sp,&nbsp;var2Steps&nbsp;==&nbsp;1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;$f$&nbsp;to&nbsp;the&nbsp;space&nbsp;$sp$.<br />
+&nbsp;&nbsp;&nbsp;&nbsp;y0&nbsp;:=&nbsp;y0&nbsp;+&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;next&nbsp;ribbon&nbsp;position.<br />
+&nbsp;&nbsp;vp&nbsp;:=&nbsp;makeViewport3D(sp,&nbsp;"Ribbons")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;viewport.<br />
+&nbsp;&nbsp;drawStyle(vp,&nbsp;"shade")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select&nbsp;shading&nbsp;style.<br />
+&nbsp;&nbsp;outlineRender(vp,&nbsp;"on")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Show&nbsp;polygon&nbsp;outlines.<br />
+&nbsp;&nbsp;showRegion(vp,"on")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enclose&nbsp;in&nbsp;a&nbsp;box.<br />
+&nbsp;&nbsp;n&nbsp;:=&nbsp; #&nbsp;flist&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;number&nbsp;of&nbsp;ribbons<br />
+&nbsp;&nbsp;zoom(vp,n,1,n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zoom&nbsp;in&nbsp;x-&nbsp;and&nbsp;z-directions.<br />
+&nbsp;&nbsp;rotate(vp,0,75)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Change&nbsp;the&nbsp;angle&nbsp;of&nbsp;view.<br />
+&nbsp;&nbsp;vp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;the&nbsp;viewport.<br />
+</div>
+
+
+
+<div class="caption">The first <span style="font-weight: bold;"> drawRibbons</span> function.</div>
+
+<a name="fig-ribdraw1" class="label"/>
+
+
+<p>Here are some remarks on the syntax used in the <span style="font-weight: bold;"> drawRibbons</span> function
+(consult Chapter <a href="section-6.0.xhtml#ugUser" class="ref" >ugUser</a>  for more details).
+Unlike most other programming languages which use semicolons,
+parentheses, or <span class="italic">begin</span>--<span class="italic">end</span> brackets to delineate the
+structure of programs, the structure of an Axiom program is
+determined by indentation.
+The first line of the function definition always begins in column 1.
+All other lines of the function are indented with respect to the first
+line and form a <span class="italic">pile</span> (see <a href="section-5.2.xhtml#ugLangBlocks" class="ref" >ugLangBlocks</a> ).
+</p>
+
+
+<p>The definition of <span style="font-weight: bold;"> drawRibbons</span>
+consists of a pile of expressions to be executed one after
+another.
+Each expression of the pile is indented at the same level.
+Lines 4-7 designate one single expression:
+since lines 5-7 are indented with respect to the others, these
+lines are treated as a continuation of line 4.
+Also since lines 5 and 7 have the same indentation level, these
+lines designate a pile within the outer pile.
+</p>
+
+
+<p>The last line of a pile usually gives the value returned by the
+pile.
+Here it is also the value returned by the function.
+Axiom knows this is the last line of the function because it
+is the last line of the file.
+In other cases, a new expression beginning in column one signals
+the end of a function.
+</p>
+
+
+<p>The line <span style="font-weight: bold;"> drawStyle</span><span class="teletype">(vp,"shade")</span> is given after the viewport
+has been created to select the draw style.
+We have also used the <span class="spadfunFrom" >zoom</span><span class="index">zoom</span><a name="chapter-10-3"/><span class="index">ThreeDimensionalViewport</span><a name="chapter-10-4"/>
+option.
+Without the zoom, the viewport region would be scaled equally in
+all three coordinate directions.
+</p>
+
+
+<p>Let's try the function <span style="font-weight: bold;"> drawRibbons</span>.
+First you must read the file to give Axiom the function definition.
+</p>
+
+
+<p>Read the input file.
+</p>
+
+
+
+
+<div id="spadComm10-5" class="spadComm" >
+<form id="formComm10-5" action="javascript:makeRequest('10-5');" >
+<input id="comm10-5" type="text" class="command" style="width: 9em;" value=")read ribbon " />
+</form>
+<span id="commSav10-5" class="commSav" >)read ribbon </span>
+<div id="mathAns10-5" ></div>
+</div>
+
+
+
+<p>Draw ribbons for  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>
+for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn><mo>&#x2264;</mo><mi>x</mi><mo>&#x2264;</mo><mn>1</mn></mrow></mstyle></math>
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 21em">
+drawRibbons([x**i for i in 1..5],x=-1..1) 
+</div>
+
+
+
+<div class="image">
+<img src="ps/ribbons5.png" alt="picture" />
+</div>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-10.1.xhtml" style="margin-right: 10px;">Previous Section 10.1 Drawing Ribbons Interactively</a><a href="section-10.3.xhtml" style="margin-right: 10px;">Next Section 10.3 Coloring and Positioning Ribbons</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.3.xhtml
new file mode 100644
index 0000000..f4f4d49
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.3.xhtml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.2.xhtml" style="margin-right: 10px;">Previous Section 10.2 A Ribbon Program</a><a href="section-10.4.xhtml" style="margin-right: 10px;">Next Section 10.4 Points, Lines, and Curves</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.3">
+<h2 class="sectiontitle">10.3  Coloring and Positioning Ribbons</h2>
+
+
+<a name="ugIntProgColor" class="label"/>
+
+
+
+<p>Before leaving the ribbon example, we  make two improvements.
+Normally, the color given to each point in the space is a
+function of its height within a bounding box.
+The points at the bottom of the
+box are red, those at the top are purple.
+</p>
+
+
+<p>To change the normal coloring, you can give
+an option  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>colorFunction</mi><mo>=</mo><mo>=</mo><mrow><mtext mathvariant='sans-serif-italic'>function</mtext></mrow></mrow></mstyle></math>.
+When Axiom goes about displaying the data, it
+determines the range of colors used for all points within the box.
+Axiom then distributes these numbers uniformly over the number of hues.
+Here we use the simple color function
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo><mo>&#x21a6;</mo><mi>i</mi></mrow></mstyle></math> for the
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>-th ribbon.
+</p>
+
+
+<p>Also, we add an argument  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>yrange</mi></mstyle></math> so you can give the range of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> occupied by the ribbons.
+For example, if the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>yrange</mi></mstyle></math> is given as
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mn>0</mn><mo>.</mo><mo>.</mo><mn>1</mn></mrow></mstyle></math> and there are  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>5</mn></mstyle></math> ribbons to be displayed, each
+ribbon would have width  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>2</mn></mrow></mstyle></math> and would appear in the
+range  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>&#x2264;</mo><mi>y</mi><mo>&#x2264;</mo><mn>1</mn></mrow></mstyle></math>.
+</p>
+
+
+<p>Refer to lines 4-9.
+Line 4 assigns to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>yVar</mi></mstyle></math> the variable part of the
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>yrange</mi></mstyle></math> (after all, it need not be  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>).
+Suppose that  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>yrange</mi></mstyle></math> is given as  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>t</mi><mo>=</mo><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math> where  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> have numerical values.
+Then line 5 assigns the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> to the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y0</mi></mstyle></math>.
+Line 6 computes the width of the ribbon by dividing the difference of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> by the number,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>num</mi></mstyle></math>, of ribbons.
+The result is assigned to the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>width</mi></mstyle></math>.
+Note that in the for-loop in line 7, we are iterating in parallel; it is
+not a nested loop.
+</p>
+
+
+
+
+
+<div class="verbatim"><br />
+drawRibbons(flist,&nbsp;xrange,&nbsp;yrange)&nbsp;==}{}<br />
+&nbsp;&nbsp;sp&nbsp;:=&nbsp;createThreeSpace()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;empty&nbsp;space&nbsp;$sp$.<br />
+&nbsp;&nbsp;num&nbsp;:=&nbsp; #&nbsp;flist&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;number&nbsp;of&nbsp;ribbons.<br />
+&nbsp;&nbsp;yVar&nbsp;:=&nbsp;variable&nbsp;yrange&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;ribbon&nbsp;variable.<br />
+&nbsp;&nbsp;y0:Float&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;lo&nbsp;segment&nbsp;yrange&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;first&nbsp;ribbon&nbsp;coordinate.<br />
+&nbsp;&nbsp;width:Float&nbsp;:=&nbsp;(hi&nbsp;segment&nbsp;yrange&nbsp;-&nbsp;y0)/num&nbsp;&nbsp;The&nbsp;width&nbsp;of&nbsp;a&nbsp;ribbon.<br />
+&nbsp;&nbsp;for&nbsp;f&nbsp;in&nbsp;flist&nbsp;for&nbsp;color&nbsp;in&nbsp;1..num&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;each&nbsp;function&nbsp;$f$,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;makeObject(f,&nbsp;xrange,&nbsp;yVar&nbsp;=&nbsp;y0..y0+width,&nbsp;create&nbsp;and&nbsp;add&nbsp;ribbon&nbsp;to<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var2Steps&nbsp;==&nbsp;1,&nbsp;colorFunction&nbsp;==&nbsp;(x,y)&nbsp;+-&gt;&nbsp;color,&nbsp;_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;space&nbsp;==&nbsp;sp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sp$&nbsp;of&nbsp;a&nbsp;different&nbsp;color.<br />
+&nbsp;&nbsp;&nbsp;&nbsp;y0&nbsp;:=&nbsp;y0&nbsp;+&nbsp;width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;next&nbsp;ribbon&nbsp;coordinate.<br />
+&nbsp;&nbsp;vp&nbsp;:=&nbsp;makeViewport3D(sp,&nbsp;"Ribbons")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;viewport.<br />
+&nbsp;&nbsp;drawStyle(vp,&nbsp;"shade")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select&nbsp;shading&nbsp;style.<br />
+&nbsp;&nbsp;outlineRender(vp,&nbsp;"on")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Show&nbsp;polygon&nbsp;outlines.<br />
+&nbsp;&nbsp;showRegion(vp,&nbsp;"on")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enclose&nbsp;in&nbsp;a&nbsp;box.<br />
+&nbsp;&nbsp;vp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;the&nbsp;viewport.<br />
+</div>
+
+
+
+<div class="caption">The final <span style="font-weight: bold;"> drawRibbons</span> function.</div>
+
+<a name="fig-ribdraw2" class="label"/>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-10.2.xhtml" style="margin-right: 10px;">Previous Section 10.2 A Ribbon Program</a><a href="section-10.4.xhtml" style="margin-right: 10px;">Next Section 10.4 Points, Lines, and Curves</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.4.xhtml
new file mode 100644
index 0000000..7ed76ba
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.4.xhtml
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.3.xhtml" style="margin-right: 10px;">Previous Section 10.3 Coloring and Positioning Ribbons</a><a href="section-10.5.xhtml" style="margin-right: 10px;">Next Section 10.5 A Bouquet of Arrows</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.4">
+<h2 class="sectiontitle">10.4  Points, Lines, and Curves</h2>
+
+
+<a name="ugIntProgPLC" class="label"/>
+
+
+<p>What you have seen so far is a high-level program using the
+graphics facility.
+We now turn to the more basic notions of points, lines, and curves
+in three-dimensional graphs.
+These facilities use small floats (objects
+of type <span class="teletype">DoubleFloat</span>) for data.
+Let us first give names to the small float values  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+</p>
+
+
+<p>The small float 0.
+</p>
+
+
+
+
+<div id="spadComm10-6" class="spadComm" >
+<form id="formComm10-6" action="javascript:makeRequest('10-6');" >
+<input id="comm10-6" type="text" class="command" style="width: 13em;" value="zero := 0.0@DFLOAT " />
+</form>
+<span id="commSav10-6" class="commSav" >zero := 0.0@DFLOAT </span>
+<div id="mathAns10-6" ></div>
+</div>
+
+
+
+<p>The small float 1.
+</p>
+
+
+
+
+<div id="spadComm10-7" class="spadComm" >
+<form id="formComm10-7" action="javascript:makeRequest('10-7');" >
+<input id="comm10-7" type="text" class="command" style="width: 13em;" value="one  := 1.0@DFLOAT " />
+</form>
+<span id="commSav10-7" class="commSav" >one  := 1.0@DFLOAT </span>
+<div id="mathAns10-7" ></div>
+</div>
+
+
+
+<p>The <span class="teletype">@</span> sign means ``of the type.'' Thus  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>zero</mi></mstyle></math> is
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math> of the type <span class="teletype">DoubleFloat</span>.
+You can also say  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>0</mn><mo>:</mo><mo>:</mo><mi>DFLOAT</mi></mrow></mstyle></math>.
+</p>
+
+
+<p>Points can have four small float components:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow></mstyle></math> coordinates and an
+optional color.
+A ``curve'' is simply a list of points connected by straight line
+segments.
+</p>
+
+
+<p>Create the point  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>origin</mi></mstyle></math> with color zero, that is, the lowest color
+on the color map.
+</p>
+
+
+
+
+<div id="spadComm10-8" class="spadComm" >
+<form id="formComm10-8" action="javascript:makeRequest('10-8');" >
+<input id="comm10-8" type="text" class="command" style="width: 26em;" value="origin := point [zero,zero,zero,zero] " />
+</form>
+<span id="commSav10-8" class="commSav" >origin := point [zero,zero,zero,zero] </span>
+<div id="mathAns10-8" ></div>
+</div>
+
+
+
+<p>Create the point  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>unit</mi></mstyle></math> with color zero.
+</p>
+
+
+
+
+<div id="spadComm10-9" class="spadComm" >
+<form id="formComm10-9" action="javascript:makeRequest('10-9');" >
+<input id="comm10-9" type="text" class="command" style="width: 22em;" value="unit := point [one,one,one,zero] " />
+</form>
+<span id="commSav10-9" class="commSav" >unit := point [one,one,one,zero] </span>
+<div id="mathAns10-9" ></div>
+</div>
+
+
+
+<p>Create the curve (well, here, a line) from
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>origin</mi></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>unit</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm10-10" class="spadComm" >
+<form id="formComm10-10" action="javascript:makeRequest('10-10');" >
+<input id="comm10-10" type="text" class="command" style="width: 16em;" value="line := [origin, unit]  " />
+</form>
+<span id="commSav10-10" class="commSav" >line := [origin, unit]  </span>
+<div id="mathAns10-10" ></div>
+</div>
+
+
+
+
+<p>We make this line segment into an arrow by adding an arrowhead.
+The arrowhead extends to,
+say,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p3</mi></mstyle></math> on the left, and to, say,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p4</mi></mstyle></math> on the right.
+To describe an arrow, you tell Axiom to draw the two curves
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>p1</mi><mo>,</mo><mi>p2</mi><mo>,</mo><mi>p3</mi><mo>]</mo></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>p2</mi><mo>,</mo><mi>p4</mi><mo>]</mo><mo>.</mo></mrow></mstyle></math>
+We also decide through experimentation on
+values for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>arrowScale</mi></mstyle></math>, the ratio of the size of
+the arrowhead to the stem of the arrow, and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>arrowAngle</mi></mstyle></math>,
+the angle between the arrowhead and the arrow.
+</p>
+
+
+<p>Invoke your favorite editor and create
+an input file called <span style="font-weight: bold;"> arrows.input</span>.
+This input file first defines the values of
+</p>
+
+
+<p> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>arrowAngle</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>arrowScale</mi></mstyle></math>, then
+defines the function <span style="font-weight: bold;"> makeArrow</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><msub><mi>p</mi><mn>1</mn></msub><mo>,</mo><msub><mi>p</mi><mn>2</mn></msub><mo>)</mo></mrow></mstyle></math> to
+draw an arrow from point  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>p</mi><mn>1</mn></msub></mrow></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>p</mi><mn>2</mn></msub></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+arrowAngle&nbsp;:=&nbsp;%pi-%pi/10.0@DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;angle&nbsp;of&nbsp;the&nbsp;arrowhead.<br />
+arrowScale&nbsp;:=&nbsp;0.2@DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;size&nbsp;of&nbsp;the&nbsp;arrowhead<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;relative&nbsp;to&nbsp;the&nbsp;stem.<br />
+makeArrow(p1,&nbsp;p2)&nbsp;==<br />
+&nbsp;&nbsp;delta&nbsp;:=&nbsp;p2&nbsp;-&nbsp;p1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;arrow.<br />
+&nbsp;&nbsp;len&nbsp;:=&nbsp;arrowScale&nbsp;*&nbsp;length&nbsp;delta&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;length&nbsp;of&nbsp;the&nbsp;arrowhead.<br />
+&nbsp;&nbsp;theta&nbsp;:=&nbsp;atan(delta.1,&nbsp;delta.2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;angle&nbsp;from&nbsp;the&nbsp;x-axis<br />
+&nbsp;&nbsp;c1&nbsp;:=&nbsp;len*cos(theta&nbsp;+&nbsp;arrowAngle)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;x-coord&nbsp;of&nbsp;left&nbsp;endpoint<br />
+&nbsp;&nbsp;s1&nbsp;:=&nbsp;len*sin(theta&nbsp;+&nbsp;arrowAngle)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;y-coord&nbsp;of&nbsp;left&nbsp;endpoint<br />
+&nbsp;&nbsp;c2&nbsp;:=&nbsp;len*cos(theta&nbsp;-&nbsp;arrowAngle)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;x-coord&nbsp;of&nbsp;right&nbsp;endpoint<br />
+&nbsp;&nbsp;s2&nbsp;:=&nbsp;len*sin(theta&nbsp;-&nbsp;arrowAngle)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;y-coord&nbsp;of&nbsp;right&nbsp;endpoint<br />
+&nbsp;&nbsp;z&nbsp;&nbsp;:=&nbsp;p2.3*(1&nbsp;-&nbsp;arrowScale)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;z-coord&nbsp;of&nbsp;both&nbsp;endpoints<br />
+&nbsp;&nbsp;p3&nbsp;:=&nbsp;point&nbsp;[p2.1&nbsp;+&nbsp;c1,&nbsp;p2.2&nbsp;+&nbsp;s1,&nbsp;z,&nbsp;p2.4]&nbsp;&nbsp;&nbsp;The&nbsp;left&nbsp;endpoint&nbsp;of&nbsp;head<br />
+&nbsp;&nbsp;p4&nbsp;:=&nbsp;point&nbsp;[p2.1&nbsp;+&nbsp;c2,&nbsp;p2.2&nbsp;+&nbsp;s2,&nbsp;z,&nbsp;p2.4]&nbsp;&nbsp;&nbsp;The&nbsp;right&nbsp;endpoint&nbsp;of&nbsp;head<br />
+&nbsp;&nbsp;[&nbsp;[p1,&nbsp;p2,&nbsp;p3],&nbsp;[p2,&nbsp;p4]&nbsp;]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;arrow&nbsp;as&nbsp;a&nbsp;list&nbsp;of&nbsp;curves<br />
+</div>
+
+
+
+<p>Read the file and then create
+an arrow from the point  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>origin</mi></mstyle></math> to the point  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>unit</mi></mstyle></math>.
+</p>
+
+
+<p>Read the input file defining <span style="font-weight: bold;"> makeArrow</span>.
+</p>
+
+
+
+
+<div id="spadComm10-11" class="spadComm" >
+<form id="formComm10-11" action="javascript:makeRequest('10-11');" >
+<input id="comm10-11" type="text" class="command" style="width: 8em;" value=")read arrows" />
+</form>
+<span id="commSav10-11" class="commSav" >)read arrows</span>
+<div id="mathAns10-11" ></div>
+</div>
+
+
+
+<p>Construct the arrow (a list of two curves).
+</p>
+
+
+
+
+<div id="spadComm10-12" class="spadComm" >
+<form id="formComm10-12" action="javascript:makeRequest('10-12');" >
+<input id="comm10-12" type="text" class="command" style="width: 21em;" value="arrow := makeArrow(origin,unit)" />
+</form>
+<span id="commSav10-12" class="commSav" >arrow := makeArrow(origin,unit)</span>
+<div id="mathAns10-12" ></div>
+</div>
+
+
+
+<p>Create an empty object  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>sp</mi></mstyle></math> of type  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>ThreeSpace</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm10-13" class="spadComm" >
+<form id="formComm10-13" action="javascript:makeRequest('10-13');" >
+<input id="comm10-13" type="text" class="command" style="width: 16em;" value="sp := createThreeSpace()" />
+</form>
+<span id="commSav10-13" class="commSav" >sp := createThreeSpace()</span>
+<div id="mathAns10-13" ></div>
+</div>
+
+
+
+<p>Add each curve of the arrow to the space  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>sp</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm10-14" class="spadComm" >
+<form id="formComm10-14" action="javascript:makeRequest('10-14');" >
+<input id="comm10-14" type="text" class="command" style="width: 26em;" value="for a in arrow repeat sp := curve(sp,a)" />
+</form>
+<span id="commSav10-14" class="commSav" >for a in arrow repeat sp := curve(sp,a)</span>
+<div id="mathAns10-14" ></div>
+</div>
+
+
+
+<p>Create a three-dimensional viewport containing that space.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 16em">
+vp := makeViewport3D(sp,"Arrow")
+</div>
+
+
+
+<div class="image">
+<img src="ps/arrow.png" alt="picture" />
+</div>
+
+<p>Here is a better viewing angle.
+</p>
+
+
+
+
+<div id="spadComm10-15" class="spadComm" >
+<form id="formComm10-15" action="javascript:makeRequest('10-15');" >
+<input id="comm10-15" type="text" class="command" style="width: 12em;" value="rotate(vp,200,-60)" />
+</form>
+<span id="commSav10-15" class="commSav" >rotate(vp,200,-60)</span>
+<div id="mathAns10-15" ></div>
+</div>
+
+
+
+<div class="image">
+<img src="ps/arrowr.png" alt="picture" />
+</div>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-10.3.xhtml" style="margin-right: 10px;">Previous Section 10.3 Coloring and Positioning Ribbons</a><a href="section-10.5.xhtml" style="margin-right: 10px;">Next Section 10.5 A Bouquet of Arrows</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.5.xhtml
new file mode 100644
index 0000000..58c82d0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.5.xhtml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.4.xhtml" style="margin-right: 10px;">Previous Section 10.4 Points, Lines, and Curves</a><a href="section-10.6.xhtml" style="margin-right: 10px;">Next Section 10.6 Diversion: When Things Go Wrong</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.5">
+<h2 class="sectiontitle">10.5  A Bouquet of Arrows</h2>
+
+
+<a name="ugIntProgColorArr" class="label"/>
+
+<p><!--
+Axiom gathers up all the points of a graph and looks at the range
+of color values given as integers.
+If these color values range from a minimum value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> to a maximum
+value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math>, then the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> values are colored red (the
+lowest color in our spectrum), and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> values are colored
+purple (the highest color), and those in the middle are colored
+green.
+When all the points are the same color as above, Axiom
+chooses green.
+-->
+</p>
+
+
+<p>Let's draw a ``bouquet'' of arrows.
+Each arrow is identical. The arrowheads are
+uniformly placed on a circle parallel to the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>xy</mi></mstyle></math>-plane.
+Thus the position of each arrow differs only
+by the angle  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>&#x2264;</mo><mi>&#x03B8;</mi><mo>&lt;</mo><mn>2</mn><mi>&#x03C0;</mi></mrow></mstyle></math>,
+between the arrow and
+the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>-axis on the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>xy</mi></mstyle></math>-plane.
+</p>
+
+
+<p>Our bouquet is rather special: each arrow has a different
+color (which won't be evident here, unfortunately).
+This is arranged by letting the color of each successive arrow be
+denoted by  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math>.
+In this way, the color of arrows ranges from red to green to violet.
+Here is a program to draw a bouquet of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> arrows.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+drawBouquet(n,title)&nbsp;==}{}<br />
+&nbsp;&nbsp;angle&nbsp;:=&nbsp;0.0@DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;initial&nbsp;angle<br />
+&nbsp;&nbsp;sp&nbsp;:=&nbsp;createThreeSpace()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;empty&nbsp;space&nbsp;$sp$<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;0..n-1&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;each&nbsp;index&nbsp;i,&nbsp;create:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;:=&nbsp;point&nbsp;[0.0@DFLOAT,0.0@DFLOAT,0.0@DFLOAT,angle]&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;point&nbsp;at&nbsp;base&nbsp;of&nbsp;arrow;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;:=&nbsp;point&nbsp;[cos&nbsp;angle,&nbsp;sin&nbsp;angle,&nbsp;1.0@DFLOAT,&nbsp;angle]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;point&nbsp;at&nbsp;tip&nbsp;of&nbsp;arrow;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;arrow&nbsp;:=&nbsp;makeArrow(start,end)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;$i$th&nbsp;arrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;a&nbsp;in&nbsp;makeArrow(start,end)&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;each&nbsp;arrow&nbsp;component,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curve(sp,a)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;the&nbsp;component&nbsp;to&nbsp;$sp$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;angle&nbsp;:=&nbsp;angle&nbsp;+&nbsp;2*%pi/n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;next&nbsp;angle<br />
+&nbsp;&nbsp;makeViewport3D(sp,title)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;the&nbsp;viewport&nbsp;from&nbsp;$sp$<br />
+</div>
+
+
+
+<p>Read the input file.
+</p>
+
+
+
+
+<div id="spadComm10-16" class="spadComm" >
+<form id="formComm10-16" action="javascript:makeRequest('10-16');" >
+<input id="comm10-16" type="text" class="command" style="width: 9em;" value=")read bouquet" />
+</form>
+<span id="commSav10-16" class="commSav" >)read bouquet</span>
+<div id="mathAns10-16" ></div>
+</div>
+
+
+
+<p>A bouquet of a dozen arrows.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 16em">
+drawBouquet(12,"A Dozen Arrows")
+</div>
+
+
+
+<div class="image">
+<img src="ps/bouquet.png" alt="picture" />
+</div>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-10.4.xhtml" style="margin-right: 10px;">Previous Section 10.4 Points, Lines, and Curves</a><a href="section-10.6.xhtml" style="margin-right: 10px;">Next Section 10.6 Diversion: When Things Go Wrong</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.6.xhtml
new file mode 100644
index 0000000..3bdd65a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.6.xhtml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.5.xhtml" style="margin-right: 10px;">Previous Section 10.5 A Bouquet of Arrows</a><a href="section-10.7.xhtml" style="margin-right: 10px;">Next Section 10.7 Drawing Complex Vector Fields</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.6">
+<h2 class="sectiontitle">10.6  Diversion: When Things Go Wrong</h2>
+
+
+<a name="ugIntProgDivTwo" class="label"/>
+
+
+<p>Up to now, if you have typed in all the programs exactly as they are in
+the book, you have encountered no errors.
+In practice, however, it is easy to make mistakes.
+Computers are unforgiving: your program must be letter-for-letter correct
+or you will encounter some error.
+</p>
+
+
+<p>One thing that can go wrong is that you can create a syntactically
+incorrect program.
+As pointed out in Diversion 1 the meaning of Axiom programs is
+affected by indentation.
+</p>
+
+
+<p>The Axiom parser will ensure that all parentheses, brackets, and
+braces balance, and that commas and operators appear in the correct
+context.
+</p>
+
+
+
+<p>A common mistake is to misspell an identifier or operation name.
+These are generally easy to spot since the interpreter will tell you the
+name of the operation together with the type and number of arguments which
+it is trying to find.
+</p>
+
+
+<p>Another mistake is to either to omit an argument or to give too many.
+Again Axiom will notify you of the offending operation.
+</p>
+
+
+<p>Indentation makes your programs more readable.
+However there are several ways to create a syntactically valid program.
+A most common problem occurs when a line is  indented improperly.
+If this is a first line of a pile then all the other lines will act as an
+inner pile to the first line.
+If it is a line of the pile other than the first line Axiom then
+thinks that this line is a continuation of the previous line.
+More frequently than not a syntactically correct expression is created.
+Almost never however will this be a semantically correct.
+Only when the program is run will an error be discovered.
+</p>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-10.5.xhtml" style="margin-right: 10px;">Previous Section 10.5 A Bouquet of Arrows</a><a href="section-10.7.xhtml" style="margin-right: 10px;">Next Section 10.7 Drawing Complex Vector Fields</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.7.xhtml
new file mode 100644
index 0000000..d10c796
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.7.xhtml
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.6.xhtml" style="margin-right: 10px;">Previous Section 10.6 Diversion: When Things Go Wrong</a><a href="section-10.8.xhtml" style="margin-right: 10px;">Next Section 10.8 Drawing Complex Functions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.7">
+<h2 class="sectiontitle">10.7  Drawing Complex Vector Fields</h2>
+
+
+<a name="ugIntProgVecFields" class="label"/>
+
+
+<p>We now put our arrows to good use drawing complex vector fields.
+These vector fields give a representation of complex-valued
+functions of complex variables.
+Consider a Cartesian coordinate grid of points  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> in
+the plane, and some complex-valued function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> defined on
+this grid.
+At every point on this grid, compute the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>+</mo><mi>iy</mi><mo>)</mo></mrow></mstyle></math> and call it  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>.
+Since  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> has both a real and imaginary value for a given
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> grid point, there are four dimensions to plot.
+What do we do?
+We represent the values of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> by arrows planted at each
+grid point.
+Each arrow represents the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> in polar coordinates
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>r</mi><mo>,</mo><mi>&#x03B8;</mi><mo>)</mo></mrow></mstyle></math>.
+The length of the arrow is proportional to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math>.
+Its direction is given by  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math>.
+</p>
+
+
+<p>The code for drawing vector fields is in the file <span style="font-weight: bold;"> vectors.input</span>.
+We discuss its contents from top to bottom.
+</p>
+
+
+<p>Before showing you the code, we have two small
+matters to take care of.
+First, what if the function has large spikes, say, ones that go off
+to infinity?
+We define a variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>clipValue</mi></mstyle></math> for this purpose. When
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> exceeds the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>clipValue</mi></mstyle></math>, then the value of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>clipValue</mi></mstyle></math> is used instead of that for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math>.
+For convenience, we define a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>clipFun</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> which uses
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>clipValue</mi></mstyle></math> to ``clip'' the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+
+
+<div class="verbatim"><br />
+clipValue&nbsp;:&nbsp;DFLOAT&nbsp;:=&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum&nbsp;value&nbsp;allowed<br />
+clipFun(x)&nbsp;==&nbsp;min(max(x,-clipValue),clipValue)<br />
+</div>
+
+
+
+<p>Notice that we identify  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>clipValue</mi></mstyle></math> as a small float but do
+not declare the type of the function <span style="font-weight: bold;"> clipFun</span>.
+As it turns out, <span style="font-weight: bold;"> clipFun</span> is called with a
+small float value.
+This declaration ensures that <span style="font-weight: bold;"> clipFun</span> never does a
+conversion when it is called.
+</p>
+
+
+<p>The second matter concerns the possible ``poles'' of a
+function, the actual points where the spikes have infinite
+values.
+Axiom uses normal <span class="teletype">DoubleFloat</span> arithmetic  which
+does not directly handle infinite values.
+If your function has poles, you must adjust your step size to
+avoid landing directly on them (Axiom calls <span style="font-weight: bold;"> error</span>
+when asked to divide a value by  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>, for example).
+</p>
+
+
+<p>We set the variables  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>realSteps</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>imagSteps</mi></mstyle></math> to
+hold the number of steps taken in the real and imaginary
+directions, respectively.
+Most examples will have ranges centered around the origin.
+To avoid a pole at the origin, the number of points is taken
+to be odd.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+realSteps:&nbsp;INT&nbsp;:=&nbsp;25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Number&nbsp;of&nbsp;real&nbsp;steps<br />
+imagSteps:&nbsp;INT&nbsp;:=&nbsp;25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Number&nbsp;of&nbsp;imaginary&nbsp;steps<br />
+)read&nbsp;arrows<br />
+</div>
+
+
+
+<p>Now define the function <span style="font-weight: bold;"> drawComplexVectorField</span> to draw the arrows.
+It is good practice to declare the type of the main function in
+the file.
+This one declaration is usually sufficient to ensure that other
+lower-level functions are compiled with the correct types.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+C&nbsp;:=&nbsp;Complex&nbsp;DoubleFloat<br />
+S&nbsp;:=&nbsp;Segment&nbsp;DoubleFloat<br />
+drawComplexVectorField:&nbsp;(C&nbsp;-&gt;&nbsp;C,&nbsp;S,&nbsp;S)&nbsp;-&gt;&nbsp;VIEW3D<br />
+</div>
+
+
+
+<p>The first argument is a function mapping complex small floats into
+complex small floats.
+The second and third arguments give the range of real and
+imaginary values as segments like  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math>.
+The result is a three-dimensional viewport.
+Here is the full function definition:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+drawComplexVectorField(f,&nbsp;realRange,imagRange)&nbsp;==<br />
+&nbsp;&nbsp;delReal&nbsp;:=&nbsp;(hi(realRange)-lo(realRange))/realSteps&nbsp;The&nbsp;real&nbsp;step&nbsp;size<br />
+&nbsp;&nbsp;delImag&nbsp;:=&nbsp;(hi(imagRange)-lo(imagRange))/imagSteps&nbsp;The&nbsp;imaginary&nbsp;step&nbsp;size<br />
+&nbsp;&nbsp;sp&nbsp;:=&nbsp;createThreeSpace()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;empty&nbsp;space&nbsp;$sp$<br />
+&nbsp;&nbsp;real&nbsp;:=&nbsp;lo(realRange)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;initial&nbsp;real&nbsp;value<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;1..realSteps+1&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Begin&nbsp;real&nbsp;iteration<br />
+&nbsp;&nbsp;&nbsp;&nbsp;imag&nbsp;:=&nbsp;lo(imagRange)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initial&nbsp;imaginary&nbsp;value<br />
+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;1..imagSteps+1&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Begin&nbsp;imaginary&nbsp;iteration<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;:=&nbsp;f&nbsp;complex(real,imag)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;of&nbsp;$f$&nbsp;at&nbsp;the&nbsp;point<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arg&nbsp;:=&nbsp;argument&nbsp;z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;direction&nbsp;of&nbsp;the&nbsp;arrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;:=&nbsp;clipFun&nbsp;sqrt&nbsp;norm&nbsp;z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;of&nbsp;the&nbsp;arrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1&nbsp;:=&nbsp;&nbsp;point&nbsp;[real,&nbsp;imag,&nbsp;0.0@DFLOAT,&nbsp;arg]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base&nbsp;point&nbsp;of&nbsp;the&nbsp;arrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleLen&nbsp;:=&nbsp;delReal&nbsp;*&nbsp;len&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaled&nbsp;length&nbsp;of&nbsp;the&nbsp;arrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2&nbsp;:=&nbsp;point&nbsp;[p1.1&nbsp;+&nbsp;scaleLen*cos(arg),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tip&nbsp;point&nbsp;of&nbsp;the&nbsp;arrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1.2&nbsp;+&nbsp;scaleLen*sin(arg),0.0@DFLOAT,&nbsp;arg]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrow&nbsp;:=&nbsp;makeArrow(p1,&nbsp;p2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;the&nbsp;arrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;a&nbsp;in&nbsp;arrow&nbsp;repeat&nbsp;curve(sp,&nbsp;a)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add&nbsp;arrow&nbsp;to&nbsp;space&nbsp;$sp$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imag&nbsp;:=&nbsp;imag&nbsp;+&nbsp;delImag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;next&nbsp;imaginary&nbsp;value<br />
+&nbsp;&nbsp;&nbsp;&nbsp;real&nbsp;:=&nbsp;real&nbsp;+&nbsp;delReal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;next&nbsp;real&nbsp;value<br />
+&nbsp;&nbsp;makeViewport3D(sp,&nbsp;"Complex&nbsp;Vector&nbsp;Field")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;it<br />
+</div>
+
+
+
+<p>As a first example, let us draw  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>z</mi><mo>)</mo><mo>=</mo><mo>=</mo><mi>sin</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+There is no need to create a user function: just pass the
+<span class="spadfunFrom" >sin</span><span class="index">sin</span><a name="chapter-10-5"/><span class="index">Complex DoubleFloat</span><a name="chapter-10-6"/> from <span class="teletype">Complex DoubleFloat</span>.
+</p>
+
+
+<p>Read the file.
+</p>
+
+
+
+
+<div id="spadComm10-17" class="spadComm" >
+<form id="formComm10-17" action="javascript:makeRequest('10-17');" >
+<input id="comm10-17" type="text" class="command" style="width: 10em;" value=")read vectors " />
+</form>
+<span id="commSav10-17" class="commSav" >)read vectors </span>
+<div id="mathAns10-17" ></div>
+</div>
+
+
+
+<p>Draw the complex vector field of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sin</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 20em">
+drawComplexVectorField(sin,-2..2,-2..2) 
+</div>
+
+
+
+<div class="image">
+<img src="ps/vectorSin.png" alt="picture" />
+</div>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-10.6.xhtml" style="margin-right: 10px;">Previous Section 10.6 Diversion: When Things Go Wrong</a><a href="section-10.8.xhtml" style="margin-right: 10px;">Next Section 10.8 Drawing Complex Functions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.8.xhtml
new file mode 100644
index 0000000..b77ef4b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.8.xhtml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.7.xhtml" style="margin-right: 10px;">Previous Section 10.7 Drawing Complex Vector Fields</a><a href="section-10.9.xhtml" style="margin-right: 10px;">Next Section 10.9 Functions Producing Functions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.8">
+<h2 class="sectiontitle">10.8  Drawing Complex Functions</h2>
+
+
+<a name="ugIntProgCompFuns" class="label"/>
+
+
+<p>Here is another way to graph a complex function of complex
+arguments.
+For each complex value  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>, compute  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>, again
+expressing the value in polar coordinates  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>.
+We draw the complex valued function, again considering the
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>-plane as the complex plane, using  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> as the
+height (or  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>-coordinate) and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math> as the color.
+This is a standard plot---we learned how to do this in
+Chapter <a href="section-7.0.xhtml#ugGraph" class="ref" >ugGraph</a> ---
+but here we write a new program to illustrate
+the creation of polygon meshes, or grids.
+</p>
+
+
+<p>Call this function <span style="font-weight: bold;"> drawComplex</span>.
+It displays the points using the ``mesh'' of points.
+The function definition is in three parts.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+drawComplex:&nbsp;(C&nbsp;-&gt;&nbsp;C,&nbsp;S,&nbsp;S)&nbsp;-&gt;&nbsp;VIEW3D<br />
+drawComplex(f,&nbsp;realRange,&nbsp;imagRange)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;first&nbsp;part<br />
+&nbsp;&nbsp;delReal&nbsp;:=&nbsp;(hi(realRange)-lo(realRange))/realSteps&nbsp;&nbsp;&nbsp;The&nbsp;real&nbsp;step&nbsp;size<br />
+&nbsp;&nbsp;delImag&nbsp;:=&nbsp;(hi(imagRange)-lo(imagRange))/imagSteps&nbsp;&nbsp;&nbsp;The&nbsp;imaginary&nbsp;step&nbsp;size<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initial&nbsp;list&nbsp;of&nbsp;list&nbsp;of&nbsp;points&nbsp;$llp$<br />
+&nbsp;&nbsp;llp:List&nbsp;List&nbsp;Point&nbsp;DFLOAT&nbsp;:=&nbsp;[]<br />
+</div>
+
+
+
+<p>Variables  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>delReal</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>delImag</mi></mstyle></math> give the step
+sizes along the real and imaginary directions as computed by the values
+of the global variables  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>realSteps</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>imagSteps</mi></mstyle></math>.
+The mesh is represented by a list of lists of points  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>llp</mi></mstyle></math>,
+initially empty.
+Now  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mspace width="0.5 em" /><mo>]</mo></mrow></mstyle></math> alone is ambiguous, so
+to set this initial value
+you have to tell Axiom what type of empty list it is.
+Next comes the loop which builds  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>llp</mi></mstyle></math>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;real&nbsp;:=&nbsp;lo(realRange)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;initial&nbsp;real&nbsp;value<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;1..realSteps+1&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Begin&nbsp;real&nbsp;iteration<br />
+&nbsp;&nbsp;&nbsp;&nbsp;imag&nbsp;:=&nbsp;lo(imagRange)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initial&nbsp;imaginary&nbsp;value<br />
+&nbsp;&nbsp;&nbsp;&nbsp;lp&nbsp;:=&nbsp;[]$(List&nbsp;Point&nbsp;DFLOAT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initial&nbsp;list&nbsp;of&nbsp;points&nbsp;$lp$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;1..imagSteps+1&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Begin&nbsp;imaginary&nbsp;iteration<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;:=&nbsp;f&nbsp;complex(real,imag)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;of&nbsp;$f$&nbsp;at&nbsp;the&nbsp;point<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;:=&nbsp;point&nbsp;[real,imag,&nbsp;clipFun&nbsp;sqrt&nbsp;norm&nbsp;z,&nbsp;Create&nbsp;a&nbsp;point<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argument&nbsp;z]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lp&nbsp;:=&nbsp;cons(pt,lp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add&nbsp;the&nbsp;point&nbsp;to&nbsp;$lp$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imag&nbsp;:=&nbsp;imag&nbsp;+&nbsp;delImag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;next&nbsp;imaginary&nbsp;value<br />
+&nbsp;&nbsp;&nbsp;&nbsp;real&nbsp;:=&nbsp;real&nbsp;+&nbsp;delReal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;next&nbsp;real&nbsp;value<br />
+&nbsp;&nbsp;&nbsp;&nbsp;llp&nbsp;:=&nbsp;cons(lp,&nbsp;llp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add&nbsp;$lp$&nbsp;to&nbsp;$llp$<br />
+</div>
+
+
+
+<p>The code consists of both an inner and outer loop.
+Each pass through the inner loop adds one list  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>lp</mi></mstyle></math> of points
+to the list of lists of points  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>llp</mi></mstyle></math>.
+The elements of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>lp</mi></mstyle></math> are collected in reverse order.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;makeViewport3D(mesh(llp),&nbsp;"Complex&nbsp;Function")&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;a&nbsp;mesh&nbsp;and&nbsp;display<br />
+</div>
+
+
+
+<p>The operation <span style="font-weight: bold;"> mesh</span> then creates an object of type
+<span class="teletype">ThreeSpace(DoubleFloat)</span> from the list of lists of points.
+This is then passed to <span style="font-weight: bold;"> makeViewport3D</span> to display the
+image.
+</p>
+
+
+<p>Now add this function directly to your <span style="font-weight: bold;"> vectors.input</span>
+file and re-read the file using read vectors.
+We try <span style="font-weight: bold;"> drawComplex</span> using
+a user-defined function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.
+</p>
+
+
+<p>Read the file.
+</p>
+
+
+
+
+<div id="spadComm10-18" class="spadComm" >
+<form id="formComm10-18" action="javascript:makeRequest('10-18');" >
+<input id="comm10-18" type="text" class="command" style="width: 10em;" value=")read vectors " />
+</form>
+<span id="commSav10-18" class="commSav" >)read vectors </span>
+<div id="mathAns10-18" ></div>
+</div>
+
+
+
+<p>This one has a pole at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm10-19" class="spadComm" >
+<form id="formComm10-19" action="javascript:makeRequest('10-19');" >
+<input id="comm10-19" type="text" class="command" style="width: 11em;" value="f(z) == exp(1/z)" />
+</form>
+<span id="commSav10-19" class="commSav" >f(z) == exp(1/z)</span>
+<div id="mathAns10-19" ></div>
+</div>
+
+
+
+<p>Draw it with an odd number of steps to avoid the pole.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 13em">
+drawComplex(f,-2..2,-2..2)
+</div>
+
+
+
+<div class="image">
+<img src="ps/complexExp.png" alt="picture" />
+</div>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-10.7.xhtml" style="margin-right: 10px;">Previous Section 10.7 Drawing Complex Vector Fields</a><a href="section-10.9.xhtml" style="margin-right: 10px;">Next Section 10.9 Functions Producing Functions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-10.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-10.9.xhtml
new file mode 100644
index 0000000..68da693
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-10.9.xhtml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section10.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.8.xhtml" style="margin-right: 10px;">Previous Section 10.8 Drawing Complex Functions</a><a href="section-10.10.xhtml" style="margin-right: 10px;">Next Section 10.10 Automatic Newton Iteration Formulas</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-10.9">
+<h2 class="sectiontitle">10.9  Functions Producing Functions</h2>
+
+
+<a name="ugIntProgFunctions" class="label"/>
+
+
+<p>In <a href="section-6.14.xhtml#ugUserMake" class="ref" >ugUserMake</a> , 
+you learned how to use the operation
+<span style="font-weight: bold;"> function</span> to create a function from symbolic formulas.
+Here we introduce a similar operation which not only
+creates functions, but functions from functions.
+</p>
+
+
+<p>The facility we need is provided by the package
+<span class="teletype">MakeUnaryCompiledFunction(E,S,T)</span>.
+<span class="index">MakeUnaryCompiledFunction</span><a name="chapter-10-7"/>
+This package produces a unary (one-argument) compiled
+function from some symbolic data
+generated by a previous computation.<span class="footnote">
+<span class="teletype">MakeBinaryCompiledFunction</span> is available for binary
+functions.</span>
+<span class="index">MakeBinaryCompiledFunction</span><a name="chapter-10-8"/>
+The  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>E</mi></mstyle></math> tells where the symbolic data comes from;
+the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>T</mi></mstyle></math> give Axiom the
+source and target type of the function, respectively.
+The compiled function produced  has type
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math>-> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>T</mi></mstyle></math>.
+To produce a compiled function with definition  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>=</mo><mo>=</mo><mi>expr</mi></mrow></mstyle></math>, call
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>compiledFunction</mi><mo>(</mo><mi>expr</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> from this package.
+The function you get has no name.
+You must to assign the function to the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> to give it that name.
+</p>
+
+
+
+<p>Do some computation.
+</p>
+
+
+
+
+<div id="spadComm10-20" class="spadComm" >
+<form id="formComm10-20" action="javascript:makeRequest('10-20');" >
+<input id="comm10-20" type="text" class="command" style="width: 7em;" value="(x+1/3)**5" />
+</form>
+<span id="commSav10-20" class="commSav" >(x+1/3)**5</span>
+<div id="mathAns10-20" ></div>
+</div>
+
+
+
+<p>Convert this to an anonymous function of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+Assign it to the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> to give the function a name.
+</p>
+
+
+
+
+<div id="spadComm10-21" class="spadComm" >
+<form id="formComm10-21" action="javascript:makeRequest('10-21');" >
+<input id="comm10-21" type="text" class="command" style="width: 55em;" value="p := compiledFunction(%,x)$MakeUnaryCompiledFunction(POLY FRAC INT,DFLOAT,DFLOAT)" />
+</form>
+<span id="commSav10-21" class="commSav" >p := compiledFunction(%,x)$MakeUnaryCompiledFunction(POLY FRAC INT,DFLOAT,DFLOAT)</span>
+<div id="mathAns10-21" ></div>
+</div>
+
+
+
+<p>Apply the function.
+</p>
+
+
+
+
+<div id="spadComm10-22" class="spadComm" >
+<form id="formComm10-22" action="javascript:makeRequest('10-22');" >
+<input id="comm10-22" type="text" class="command" style="width: 8em;" value="p(sin(1.3))" />
+</form>
+<span id="commSav10-22" class="commSav" >p(sin(1.3))</span>
+<div id="mathAns10-22" ></div>
+</div>
+
+
+
+<p>For a more sophisticated application, read on.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-10.8.xhtml" style="margin-right: 10px;">Previous Section 10.8 Drawing Complex Functions</a><a href="section-10.10.xhtml" style="margin-right: 10px;">Next Section 10.10 Automatic Newton Iteration Formulas</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.0.xhtml
new file mode 100644
index 0000000..e433f4e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.0.xhtml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.10.xhtml" style="margin-right: 10px;">Previous Section 10.10  Automatic Newton Iteration Formulas</a><a href="section-11.1.xhtml" style="margin-right: 10px;">Next Section 11.1 Names, Abbreviations, and File Structure</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.0">
+<h2 class="sectiontitle">11.0 Packages</h2>
+<a name="ugPackages" class="label"/>
+
+<p>Packages provide the bulk of
+<span class="index">package</span><a name="chapter-11-0"/>
+Axiom's algorithmic library, from numeric packages for computing
+special functions to symbolic facilities for
+<span class="index">constructor:package</span><a name="chapter-11-1"/>
+differential equations, symbolic integration, and limits.
+<span class="index">package:constructor</span><a name="chapter-11-2"/>
+</p>
+
+
+<p>In Chapter <a href="section-10.0.xhtml#ugIntProg" class="ref" >ugIntProg</a> , 
+we developed several useful functions for drawing
+vector fields and complex functions.
+We now show you how you can add these functions to the
+Axiom library to make them available for general use.
+</p>
+
+
+<p>The way we created the functions in Chapter <a href="section-10.0.xhtml#ugIntProg" class="ref" >ugIntProg</a> 
+ is typical of how
+you, as an advanced Axiom user, may interact with Axiom.
+You have an application.
+You go to your editor and create an input file defining some
+functions for the application.
+Then you run the file and try the functions.
+Once you get them all to work, you will often want to extend them,
+add new features, perhaps write additional functions.
+</p>
+
+
+<p>Eventually, when you have a useful set of functions for your application,
+you may want to add them to your local Axiom library.
+To do this, you embed these function definitions in a package and add
+that package to the library.
+</p>
+
+
+<p>To introduce new packages, categories, and domains into the system,
+you need to use the Axiom compiler to convert the constructors
+into executable machine code.
+An existing compiler in Axiom is available on an ``as-is''
+basis.
+A new, faster compiler will be available in version 2.0
+of Axiom.
+</p>
+
+
+<a name="pak-cdraw" class="label"/>
+
+
+
+<div class="verbatim"><br />
+C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&gt;&nbsp;Complex&nbsp;DoubleFloat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;All&nbsp;constructors&nbsp;used&nbsp;in&nbsp;a&nbsp;file<br />
+S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&gt;&nbsp;Segment&nbsp;DoubleFloat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;must&nbsp;be&nbsp;spelled&nbsp;out&nbsp;in&nbsp;full<br />
+INT&nbsp;&nbsp;&nbsp;&nbsp;==&gt;&nbsp;Integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless&nbsp;abbreviated&nbsp;by&nbsp;macros<br />
+DFLOAT&nbsp;==&gt;&nbsp;DoubleFloat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;like&nbsp;these&nbsp;at&nbsp;the&nbsp;top&nbsp;of<br />
+VIEW3D&nbsp;==&gt;&nbsp;ThreeDimensionalViewport&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;file<br />
+CURVE&nbsp;&nbsp;==&gt;&nbsp;List&nbsp;List&nbsp;Point&nbsp;DFLOAT<br />
+<br />
+)abbrev&nbsp;package&nbsp;DRAWCX&nbsp;DrawComplex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Identify&nbsp;kinds&nbsp;and&nbsp;abbreviations<br />
+DrawComplex():&nbsp;Exports&nbsp;==&nbsp;Implementation&nbsp;where&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;definition&nbsp;begins&nbsp;here<br />
+<br />
+&nbsp;&nbsp;Exports&nbsp;==&nbsp;with&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Export&nbsp;part&nbsp;begins<br />
+&nbsp;&nbsp;&nbsp;&nbsp;drawComplex:&nbsp;(C&nbsp;-&gt;&nbsp;C,S,S,Boolean)&nbsp;-&gt;&nbsp;VIEW3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exported&nbsp;Operations<br />
+&nbsp;&nbsp;&nbsp;&nbsp;drawComplexVectorField:&nbsp;(C&nbsp;-&gt;&nbsp;C,S,S)&nbsp;-&gt;&nbsp;VIEW3D<br />
+&nbsp;&nbsp;&nbsp;&nbsp;setRealSteps:&nbsp;INT&nbsp;-&gt;&nbsp;INT<br />
+&nbsp;&nbsp;&nbsp;&nbsp;setImagSteps:&nbsp;INT&nbsp;-&gt;&nbsp;INT<br />
+&nbsp;&nbsp;&nbsp;&nbsp;setClipValue:&nbsp;DFLOAT-&gt;&nbsp;DFLOAT<br />
+<br />
+&nbsp;&nbsp;Implementation&nbsp;==&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implementation&nbsp;part&nbsp;begins<br />
+&nbsp;&nbsp;&nbsp;&nbsp;arrowScale&nbsp;:&nbsp;DFLOAT&nbsp;:=&nbsp;(0.2)::DFLOAT&nbsp;--relative&nbsp;size&nbsp;Local&nbsp;variable&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;arrowAngle&nbsp;:&nbsp;DFLOAT&nbsp;:=&nbsp;pi()-pi()/(20::DFLOAT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local&nbsp;variable&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;&nbsp;realSteps&nbsp;&nbsp;:&nbsp;INT&nbsp;:=&nbsp;11&nbsp;--#&nbsp;real&nbsp;steps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local&nbsp;variable&nbsp;3<br />
+&nbsp;&nbsp;&nbsp;&nbsp;imagSteps&nbsp;&nbsp;:&nbsp;INT&nbsp;:=&nbsp;11&nbsp;--#&nbsp;imaginary&nbsp;steps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local&nbsp;variable&nbsp;4<br />
+&nbsp;&nbsp;&nbsp;&nbsp;clipValue&nbsp;&nbsp;:&nbsp;DFLOAT&nbsp;&nbsp;:=&nbsp;10::DFLOAT&nbsp;--maximum&nbsp;vector&nbsp;length<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local&nbsp;variable&nbsp;5<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;setRealSteps(n)&nbsp;==&nbsp;realSteps&nbsp;:=&nbsp;n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exported&nbsp;function&nbsp;definition&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;setImagSteps(n)&nbsp;==&nbsp;imagSteps&nbsp;:=&nbsp;n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exported&nbsp;function&nbsp;definition&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;&nbsp;setClipValue(c)&nbsp;==&nbsp;clipValue&nbsp;:=&nbsp;c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exported&nbsp;function&nbsp;definition&nbsp;3<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;clipFun:&nbsp;DFLOAT&nbsp;-&gt;&nbsp;DFLOAT&nbsp;--Clip&nbsp;large&nbsp;magnitudes.<br />
+&nbsp;&nbsp;&nbsp;&nbsp;clipFun(x)&nbsp;==&nbsp;min(max(x,&nbsp;-clipValue),&nbsp;clipValue)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local&nbsp;function&nbsp;definition&nbsp;1<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;makeArrow:&nbsp;(Point&nbsp;DFLOAT,Point&nbsp;DFLOAT,DFLOAT,DFLOAT)&nbsp;-&gt;&nbsp;CURVE<br />
+&nbsp;&nbsp;&nbsp;&nbsp;makeArrow(p1,&nbsp;p2,&nbsp;len,&nbsp;arg)&nbsp;==&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local&nbsp;function&nbsp;definition&nbsp;2<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;drawComplex(f,&nbsp;realRange,&nbsp;imagRange,&nbsp;arrows?)&nbsp;==&nbsp;...<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exported&nbsp;function&nbsp;definition&nbsp;4<br />
+</div>
+
+
+
+<div class="caption">The DrawComplex package.</div>
+
+<a name="fig-pak-cdraw" class="label"/>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-10.10.xhtml" style="margin-right: 10px;">Previous Section 10.10  Automatic Newton Iteration Formulas</a><a href="section-11.1.xhtml" style="margin-right: 10px;">Next Section 11.1 Names, Abbreviations, and File Structure</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.1.xhtml
new file mode 100644
index 0000000..9c1eccc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.1.xhtml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.0.xhtml" style="margin-right: 10px;">Previous Section 11.0 Packages</a><a href="section-11.2.xhtml" style="margin-right: 10px;">Next Section 11.2 Syntax</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.1">
+<h2 class="sectiontitle">11.1  Names, Abbreviations, and File Structure</h2>
+
+
+<a name="ugPackagesNames" class="label"/>
+
+
+
+<p>Each package has a name and an abbreviation.
+For a package of the complex draw functions from Chapter 
+<a href="section-10.0.xhtml#ugIntProg" class="ref" >ugIntProg</a> ,
+we choose the name <span class="teletype">DrawComplex</span>
+and
+<span class="index">abbreviation:constructor</span><a name="chapter-11-3"/>
+abbreviation <span class="teletype">DRAWCX</span>.<span class="footnote">An abbreviation can be any string
+of
+<span class="index">constructor:abbreviation</span><a name="chapter-11-4"/>
+between two and seven capital letters and digits, beginning with a letter.
+See <a href="section-2.2.xhtml#ugTypesWritingAbbr" class="ref" >ugTypesWritingAbbr</a>  
+for more information.</span>
+To be sure that you have not chosen a name or abbreviation already used by
+the system, issue the system command <span class="teletype">)show</span> for both the name and
+the abbreviation.
+<span class="index">show</span><a name="chapter-11-5"/>
+</p>
+
+
+<p>Once you have named the package and its abbreviation, you can choose any new
+filename you like with extension ``<span style="font-weight: bold;"> .spad</span>'' to hold the
+definition of your package.
+We choose the name <span style="font-weight: bold;"> drawpak.spad</span>.
+If your application involves more than one package, you
+can put them all in the same file.
+Axiom assumes no relationship between the name of a library file, and
+the name or abbreviation of a package.
+</p>
+
+
+<p>Near the top of the ``<span style="font-weight: bold;"> .spad</span>'' file, list all the
+abbreviations for the packages
+using <span class="teletype">)abbrev</span>, each command beginning in column one.
+Macros giving names to Axiom expressions can also be placed near the
+top of the file.
+The macros are only usable from their point of definition until the
+end of the file.
+</p>
+
+
+<p>Consider the definition of
+<span class="teletype">DrawComplex</span> in 
+Figure <a href="fig-pak-cdraw" class="ref" >fig-pak-cdraw</a> .
+After the macro
+<span class="index">macro</span><a name="chapter-11-6"/>
+definition
+</p>
+
+
+
+<div class="verbatim"><br />
+S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&gt;&nbsp;Segment&nbsp;DoubleFloat<br />
+</div>
+
+
+<p>the name
+<span class="teletype">S</span> can be used in the file as a
+shorthand for <span class="teletype">Segment DoubleFloat</span>.<span class="footnote">The interpreter also allows
+<span class="teletype">macro</span> for macro definitions.</span>
+The abbreviation command for the package
+</p>
+
+
+
+<div class="verbatim"><br />
+)abbrev&nbsp;package&nbsp;DRAWCX&nbsp;DrawComplex<br />
+</div>
+
+
+<p>is given after the macros (although it could precede them).
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-11.0.xhtml" style="margin-right: 10px;">Previous Section 11.0 Packages</a><a href="section-11.2.xhtml" style="margin-right: 10px;">Next Section 11.2 Syntax</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.10.xhtml
new file mode 100644
index 0000000..7251aa2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.10.xhtml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.9.xhtml" style="margin-right: 10px;">Previous Section 11.9 Testing</a><a href="section-12.0.xhtml" style="margin-right: 10px;">Next Section 12.0 Categories</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.10">
+<h2 class="sectiontitle">11.10  How Packages Work</h2>
+
+
+<a name="ugPackagesHow" class="label"/>
+
+
+
+<p>Recall that packages as abstract datatypes are compiled independently
+and put into the library.
+The curious reader may ask: ``How is the interpreter able to find an
+operation such as <span style="font-weight: bold;"> bubbleSort!</span>?
+Also, how is a single compiled function such as <span style="font-weight: bold;"> bubbleSort!</span> able
+to sort data of different types?''
+</p>
+
+
+<p>After the interpreter loads the package <span class="teletype">SortPackage</span>, the four
+operations from the package become known to the interpreter.
+Each of these operations is expressed as a <span class="italic">modemap</span> in which the type
+<span class="index">modemap</span><a name="chapter-11-23"/>
+of the operation is written in terms of symbolic domains.
+</p>
+
+
+<p>See the modemaps for <span style="font-weight: bold;"> bubbleSort!</span>.
+</p>
+
+
+<p>)display op bubbleSort!
+</p>
+
+
+
+
+<div class="verbatim"><br />
+There&nbsp;are&nbsp;2&nbsp;exposed&nbsp;functions&nbsp;called&nbsp;bubbleSort!&nbsp;:<br />
+<br />
+&nbsp;&nbsp;&nbsp;[1]&nbsp;D1&nbsp;-&gt;&nbsp;D1&nbsp;from&nbsp;SortPackage(D2,D1)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;D2&nbsp;has&nbsp;ORDSET&nbsp;and&nbsp;D2&nbsp;has&nbsp;OBJECT&nbsp;and&nbsp;D1&nbsp;has<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IndexedAggregate(Integer,&nbsp;D2)&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finiteAggregate<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shallowlyMutable<br />
+<br />
+&nbsp;&nbsp;&nbsp;[2]&nbsp;(D1,((D3,D3)&nbsp;-&gt;&nbsp;Boolean))&nbsp;-&gt;&nbsp;D1&nbsp;from&nbsp;SortPackage(D3,D1)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;D3&nbsp;has&nbsp;OBJECT&nbsp;and&nbsp;D1&nbsp;has<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IndexedAggregate(Integer,D3)&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finiteAggregate<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shallowlyMutable<br />
+</div>
+
+
+
+<p>What happens if you ask for <span class="teletype">bubbleSort!([1,-5,3])</span>?
+There is a unique modemap for an operation named
+<span style="font-weight: bold;"> bubbleSort!</span> with one argument.
+Since <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>5</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math> is a list of integers, the symbolic domain
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>D1</mi></mstyle></math> is defined as <span class="teletype">List(Integer)</span>.
+For some operation to apply, it must satisfy the predicate for
+some <math xmlns="&mathml;" mathsize="big"><mstyle><mi>D2</mi></mstyle></math>.
+What <math xmlns="&mathml;" mathsize="big"><mstyle><mi>D2</mi></mstyle></math>?
+The third expression of the <span class="teletype">and</span> requires <span class="teletype">D1 has
+IndexedAggregate(Integer, D2) with</span> two attributes.
+So the interpreter searches for an <span class="teletype">IndexedAggregate</span>
+among the ancestors of <span class="teletype">List (Integer)</span> (see
+<a href="section-12.4.xhtml#ugCategoriesHier" class="ref" >ugCategoriesHier</a> ).
+It finds one: <span class="teletype">IndexedAggregate(Integer, Integer)</span>.
+The interpreter tries defining <math xmlns="&mathml;" mathsize="big"><mstyle><mi>D2</mi></mstyle></math> as <span class="teletype">Integer</span>.
+After substituting for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>D1</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>D2</mi></mstyle></math>, the predicate
+evaluates to <span class="teletype">true</span>.
+An applicable operation has been found!
+</p>
+
+
+<p>Now Axiom builds the package
+<span class="teletype">SortPackage(List(Integer), Integer)</span>.
+According to its definition, this package exports the required
+operation: <span style="font-weight: bold;"> bubbleSort!</span>: List Integer->List
+Integer.
+The interpreter then asks the package for a function implementing
+this operation.
+The package gets all the functions it needs (for example,
+<span style="font-weight: bold;"> rest</span> and <span style="font-weight: bold;"> swap</span>) from the appropriate
+domains and then it
+returns a <span style="font-weight: bold;"> bubbleSort!</span> to the interpreter together with
+the local environment for <span style="font-weight: bold;"> bubbleSort!</span>.
+The interpreter applies the function to the argument <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>5</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>.
+The <span style="font-weight: bold;"> bubbleSort!</span> function is executed in its local
+environment and produces the result.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-11.9.xhtml" style="margin-right: 10px;">Previous Section 11.9 Testing</a><a href="section-12.0.xhtml" style="margin-right: 10px;">Next Section 12.0 Categories</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.2.xhtml
new file mode 100644
index 0000000..dccc5e1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.2.xhtml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.1.xhtml" style="margin-right: 10px;">Previous Section 11.1 Names, Abbreviations, and File Structure</a><a href="section-11.3.xhtml" style="margin-right: 10px;">Next Section 11.3 Abstract Datatypes</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.2">
+<h2 class="sectiontitle">11.2  Syntax</h2>
+
+
+<a name="ugPackagesSyntax" class="label"/>
+
+
+<p>The definition of a package has the syntax:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="italic">PackageForm</span> <span class="teletype">:</span> Exports&nbsp;<span class="teletype">==</span>&nbsp; Implementation
+</p>
+
+
+
+</div>
+
+
+<p>The syntax for defining a package constructor is the same as that
+<span class="index">syntax</span><a name="chapter-11-7"/>
+for defining any function in Axiom.
+In practice, the definition extends over many lines so that this syntax is
+not practical.
+Also, the type of a package is expressed by the operator <math xmlns="&mathml;" mathsize="big"><mstyle><mi>with</mi></mstyle></math>
+<span class="index">with</span><a name="chapter-11-8"/>
+followed by an explicit list of operations.
+A preferable way to write the definition of a package is with a <math xmlns="&mathml;" mathsize="big"><mstyle><mi>where</mi></mstyle></math>
+<span class="index">where</span><a name="chapter-11-9"/>
+expression:
+</p>
+
+
+<p>The definition of a package usually has the form: <br />
+<span class="teletype"><span class="italic">PackageForm</span> : Exports  ==  Implementation where <br />
+<span class="hspace75pc"> <span class="italic">optional type declarations</span></span><br />
+<span class="hspace75pc"> Exports  ==   with </span><br />
+<span class="hspace200pc">   <span class="italic">list of exported operations</span></span><br />
+<span class="hspace75pc"> Implementation == add </span><br />
+<span class="hspace200pc">   <span class="italic">list of function definitions for exported operations</span> </span><br />
+</span>
+</p>
+
+
+<p>The <span class="teletype">DrawComplex</span> package takes no parameters and exports five
+operations, each a separate item of a <span class="italic">pile</span>.
+Each operation is described as a <span class="italic">declaration</span>: a name, followed
+by a colon (<span class="teletype">:</span>), followed by the type of the operation.
+All operations have types expressed as mappings with
+the syntax
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="italic">source&nbsp;<span class="teletype">-></span>&nbsp; target
+</span>
+</p>
+
+
+
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-11.1.xhtml" style="margin-right: 10px;">Previous Section 11.1 Names, Abbreviations, and File Structure</a><a href="section-11.3.xhtml" style="margin-right: 10px;">Next Section 11.3 Abstract Datatypes</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.3.xhtml
new file mode 100644
index 0000000..852ce56
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.3.xhtml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.2.xhtml" style="margin-right: 10px;">Previous Section 11.2 Syntax</a><a href="section-11.4.xhtml" style="margin-right: 10px;">Next Section 11.4 Capsules</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.3">
+<h2 class="sectiontitle">11.3  Abstract Datatypes</h2>
+
+
+<a name="ugPackagesAbstract" class="label"/>
+
+
+<p>A constructor as defined in Axiom is called an <span class="italic">abstract
+datatype</span> in the computer science literature.
+Abstract datatypes separate ``specification'' (what operations are
+provided) from ``implementation'' (how the operations are implemented).
+The <span class="teletype">Exports</span> (specification) part of a constructor is said to be ``public'' (it
+provides the user interface to the package) whereas the <span class="teletype">Implementation</span>
+part is ``private'' (information here is effectively hidden---programs
+cannot take advantage of it).
+</p>
+
+
+<p>The <span class="teletype">Exports</span> part specifies what operations the package provides to users.
+As an author of a package, you must ensure that
+the <span class="teletype">Implementation</span> part provides a function for each
+operation in the <span class="teletype">Exports</span> part.<span class="footnote">The <span class="teletype">DrawComplex</span>
+package enhances the facility
+described in  Chapter 
+<a href="section-10.8.xhtml#ugIntProgCompFuns" class="ref" >ugIntProgCompFuns</a>  by allowing a
+complex function to have
+arrows emanating from the surface to indicate the direction of the
+complex argument.</span>
+</p>
+
+
+<p>An important difference between interactive programming and the
+use of packages is in the handling of global variables such as
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>realSteps</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>imagSteps</mi></mstyle></math>.
+In interactive programming, you simply change the values of
+variables by <span class="italic">assignment</span>.
+With packages, such variables are local to the package---their
+values can only be set using functions exported by the package.
+In our example package, we provide two functions
+<span style="font-weight: bold;"> setRealSteps</span> and <span style="font-weight: bold;"> setImagSteps</span> for
+this purpose.
+</p>
+
+
+<p>Another local variable is <math xmlns="&mathml;" mathsize="big"><mstyle><mi>clipValue</mi></mstyle></math> which can be changed using
+the exported operation <span style="font-weight: bold;"> setClipValue</span>.
+This value is referenced by the internal function <span style="font-weight: bold;"> clipFun</span> that
+decides whether to use the computed value of the function at a point or,
+if the magnitude of that value is too large, the
+value assigned to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>clipValue</mi></mstyle></math> (with the
+appropriate sign).
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-11.2.xhtml" style="margin-right: 10px;">Previous Section 11.2 Syntax</a><a href="section-11.4.xhtml" style="margin-right: 10px;">Next Section 11.4 Capsules</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.4.xhtml
new file mode 100644
index 0000000..490519f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.4.xhtml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.3.xhtml" style="margin-right: 10px;">Previous Section 11.3 Abstract Datatypes</a><a href="section-11.5.xhtml" style="margin-right: 10px;">Next Section 11.5 Input Files vs. Packages</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.4">
+<h2 class="sectiontitle">11.4  Capsules</h2>
+
+
+<a name="ugPackagesCapsules" class="label"/>
+
+
+
+<p>The part to the right of <span class="teletype">add</span> in the <span class="teletype">Implementation</span>
+<span class="index">add</span><a name="chapter-11-10"/>
+part of the definition is called a <span class="italic">capsule</span>.
+The purpose of a capsule is:
+</p>
+
+
+
+<ul>
+<li>
+ to define a function for each exported operation, and
+</li>
+<li> to define a <span class="italic">local environment</span> for these functions to run.
+</li>
+</ul>
+
+
+
+<p>What is a local environment?
+First, what is an environment?
+<span class="index">environment</span><a name="chapter-11-11"/>
+Think of the capsule as an input file that Axiom reads from top to
+bottom.
+Think of the input file as having a <span style="font-weight: bold;"> )clear all</span> at the top
+so that initially no variables or functions are defined.
+When this file is read, variables such as <math xmlns="&mathml;" mathsize="big"><mstyle><mi>realSteps</mi></mstyle></math> and
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>arrowSize</mi></mstyle></math> in <span class="teletype">DrawComplex</span> are set to initial values.
+Also, all the functions defined in the capsule are compiled.
+These include those that are exported (like <math xmlns="&mathml;" mathsize="big"><mstyle><mi>drawComplex</mi></mstyle></math>), and
+those that are not (like <math xmlns="&mathml;" mathsize="big"><mstyle><mi>makeArrow</mi></mstyle></math>).
+At the end, you get a set of name-value pairs:
+variable names (like <math xmlns="&mathml;" mathsize="big"><mstyle><mi>realSteps</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>arrowSize</mi></mstyle></math>)
+are paired with assigned values, while
+operation names (like <math xmlns="&mathml;" mathsize="big"><mstyle><mi>drawComplex</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>makeArrow</mi></mstyle></math>)
+are paired with function values.
+</p>
+
+
+<p>This set of name-value pairs is called an <span class="italic">environment</span>.
+Actually, we call this environment the ``initial environment'' of a package:
+it is the environment that exists immediately after the package is
+first built.
+Afterwards, functions of this capsule can
+access or reset a variable in the environment.
+The environment is called <span class="italic">local</span> since any changes to the value of a
+variable in this environment can be seen <span class="italic">only</span> by these functions.
+</p>
+
+
+<p>Only the functions from the package can change the variables in the local
+environment.
+When two functions are called successively from a package,
+any changes caused by the first function called
+are seen by the second.
+</p>
+
+
+<p>Since the environment is local to the package, its names
+don't get mixed
+up with others in the system or your workspace.
+If you happen to have a variable called <math xmlns="&mathml;" mathsize="big"><mstyle><mi>realSteps</mi></mstyle></math> in your
+workspace, it does not affect what the
+<span class="teletype">DrawComplex</span> functions do in any way.
+</p>
+
+
+<p>The functions in a package are compiled into machine code.
+Unlike function definitions in input files that may be compiled repeatedly
+as you use them with varying argument types,
+functions in packages have a unique type (generally parameterized by
+the argument parameters of a package) and a unique compilation residing on disk.
+</p>
+
+
+<p>The capsule itself is turned into a compiled function.
+This so-called <span class="italic">capsule function</span> is what builds the initial environment
+spoken of above.
+If the package has arguments (see below), then each call to the package
+constructor with a distinct pair of arguments
+builds a distinct package, each with its own local environment.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-11.3.xhtml" style="margin-right: 10px;">Previous Section 11.3 Abstract Datatypes</a><a href="section-11.5.xhtml" style="margin-right: 10px;">Next Section 11.5 Input Files vs. Packages</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.5.xhtml
new file mode 100644
index 0000000..9409db0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.5.xhtml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.4.xhtml" style="margin-right: 10px;">Previous Section 11.4 Capsules</a><a href="section-11.6.xhtml" style="margin-right: 10px;">Next Section 11.6 Compiling Packages</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.5">
+<h2 class="sectiontitle">11.5  Input Files vs. Packages</h2>
+
+
+<a name="ugPackagesInputFiles" class="label"/>
+
+
+
+<p>A good question at this point would be ``Is writing a package more difficult than
+writing an input file?''
+</p>
+
+
+<p>The programs in input files are designed for flexibility and ease-of-use.
+Axiom can usually work out all of your types as it reads your program
+and does the computations you request.
+Let's say that you define a one-argument function without giving its type.
+When you first apply the function to a value, this
+value is understood by Axiom as identifying the type for the
+argument parameter.
+Most of the time Axiom goes through the body of your function and
+figures out the target type that you have in mind.
+Axiom sometimes fails to get it right.
+Then---and only then---do you need a declaration to tell Axiom what
+type you want.
+</p>
+
+
+<p>Input files are usually written to be read by Axiom---and by you.
+<span class="index">file:input:vs. package</span><a name="chapter-11-12"/>
+Without suitable documentation and declarations, your input files
+<span class="index">package:vs. input file</span><a name="chapter-11-13"/>
+are likely incomprehensible to a colleague---and to you some
+months later!
+</p>
+
+
+<p>Packages are designed for legibility, as well as
+run-time efficiency.
+There are few new concepts you need to learn to write
+packages. Rather, you just have to be explicit about types
+and type conversions.
+The types of all functions are pre-declared so that Axiom---and the reader---
+knows precisely what types of arguments can be passed to and from
+the functions (certainly you don't want a colleague to guess or to
+have to work this out from context!).
+The types of local variables are also declared.
+Type conversions are explicit, never automatic.<span class="footnote">There
+is one exception to this rule: conversions from a subdomain to a
+domain are automatic.
+After all, the objects both have the domain as a common type.</span>
+</p>
+
+
+<p>In summary, packages are more tedious to write than input files.
+When writing input files, you can casually go ahead, giving some
+facts now, leaving others for later.
+Writing packages requires forethought, care and discipline.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-11.4.xhtml" style="margin-right: 10px;">Previous Section 11.4 Capsules</a><a href="section-11.6.xhtml" style="margin-right: 10px;">Next Section 11.6 Compiling Packages</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.6.xhtml
new file mode 100644
index 0000000..28d1b53
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.6.xhtml
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.5.xhtml" style="margin-right: 10px;">Previous Section 11.5 Input Files vs. Packages</a><a href="section-11.7.xhtml" style="margin-right: 10px;">Next Section 11.7 Parameters</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.6">
+<h2 class="sectiontitle">11.6  Compiling Packages</h2>
+
+
+<a name="ugPackagesPackages" class="label"/>
+
+
+
+<p>Once you have defined the package <span class="teletype">DrawComplex</span>,
+you need to compile and test it.
+To compile the package, issue the system command <span class="teletype">)compile drawpak</span>.
+Axiom reads the file <span style="font-weight: bold;"> drawpak.spad</span>
+and compiles its contents into machine binary.
+If all goes well, the file <span class="teletype">DRAWCX.NRLIB</span> is created in your
+local directory for the package.
+To test the package, you must load the package before trying an
+operation.
+</p>
+
+
+<p>Compile the package.
+</p>
+
+
+
+
+<div id="spadComm11-1" class="spadComm" >
+<form id="formComm11-1" action="javascript:makeRequest('11-1');" >
+<input id="comm11-1" type="text" class="command" style="width: 11em;" value=")compile drawpak" />
+</form>
+<span id="commSav11-1" class="commSav" >)compile drawpak</span>
+<div id="mathAns11-1" ></div>
+</div>
+
+
+
+<p>Expose the package.
+</p>
+
+
+
+
+<div id="spadComm11-2" class="spadComm" >
+<form id="formComm11-2" action="javascript:makeRequest('11-2');" >
+<input id="comm11-2" type="text" class="command" style="width: 10em;" value=")expose DRAWCX " />
+</form>
+<span id="commSav11-2" class="commSav" >)expose DRAWCX </span>
+<div id="mathAns11-2" ></div>
+</div>
+
+
+
+<p>Use an odd step size to avoid
+a pole at the origin.
+</p>
+
+
+
+
+<div id="spadComm11-3" class="spadComm" >
+<form id="formComm11-3" action="javascript:makeRequest('11-3');" >
+<input id="comm11-3" type="text" class="command" style="width: 11em;" value="setRealSteps 51 " />
+</form>
+<span id="commSav11-3" class="commSav" >setRealSteps 51 </span>
+<div id="mathAns11-3" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm11-4" class="spadComm" >
+<form id="formComm11-4" action="javascript:makeRequest('11-4');" >
+<input id="comm11-4" type="text" class="command" style="width: 11em;" value="setImagSteps 51 " />
+</form>
+<span id="commSav11-4" class="commSav" >setImagSteps 51 </span>
+<div id="mathAns11-4" ></div>
+</div>
+
+
+
+<p>Define <span style="font-weight: bold;"> f</span> to be the Gamma function.
+</p>
+
+
+
+
+<div id="spadComm11-5" class="spadComm" >
+<form id="formComm11-5" action="javascript:makeRequest('11-5');" >
+<input id="comm11-5" type="text" class="command" style="width: 12em;" value="f(z) == Gamma(z) " />
+</form>
+<span id="commSav11-5" class="commSav" >f(z) == Gamma(z) </span>
+<div id="mathAns11-5" ></div>
+</div>
+
+
+
+<p>Clip values of function with magnitude larger than 7.
+</p>
+
+
+
+
+<div id="spadComm11-6" class="spadComm" >
+<form id="formComm11-6" action="javascript:makeRequest('11-6');" >
+<input id="comm11-6" type="text" class="command" style="width: 10em;" value="setClipValue 7" />
+</form>
+<span id="commSav11-6" class="commSav" >setClipValue 7</span>
+<div id="mathAns11-6" ></div>
+</div>
+
+
+
+<p>Draw the <span style="font-weight: bold;"> Gamma</span> function.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 23em">
+drawComplex(f,-%pi..%pi,-%pi..%pi, false) 
+</div>
+
+
+
+<div class="image">
+<img src="ps/3Dgamma11.png" alt="picture" />
+</div>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-11.5.xhtml" style="margin-right: 10px;">Previous Section 11.5 Input Files vs. Packages</a><a href="section-11.7.xhtml" style="margin-right: 10px;">Next Section 11.7 Parameters</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.7.xhtml
new file mode 100644
index 0000000..5c02ba4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.7.xhtml
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.6.xhtml" style="margin-right: 10px;">Previous Section 11.6 Compiling Packages</a><a href="section-11.8.xhtml" style="margin-right: 10px;">Next Section 11.8 Conditionals</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.7">
+<h2 class="sectiontitle">11.7  Parameters</h2>
+
+
+<a name="ugPackagesParameters" class="label"/>
+
+
+
+<p>The power of packages becomes evident when packages have parameters.
+Usually these parameters are domains and the exported operations have types
+involving these parameters.
+</p>
+
+
+<p>In Chapter <a href="section-2.0.xhtml#ugTypes" class="ref" >ugTypes</a> , 
+you learned that categories denote classes of domains.
+Although we cover this notion in detail in the next
+chapter, we now give you a sneak preview of its usefulness.
+</p>
+
+
+<p>In <a href="section-6.15.xhtml#ugUserBlocks" class="ref" >ugUserBlocks</a> , 
+we defined functions <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>bubbleSort</mi><mo>(</mo><mi>m</mi><mo>)</mo></mrow></mstyle></math> and
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>insertionSort</mi><mo>(</mo><mi>m</mi><mo>)</mo></mrow></mstyle></math> to sort a list of integers.
+If you look at the code for these functions, you see that they may be
+used to sort <span class="italic">any</span> structure <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> with the right properties.
+Also, the functions can be used to sort lists of <span class="italic">any</span> elements---not
+just integers.
+Let us now recall the code for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>bubbleSort</mi></mstyle></math>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+bubbleSort(m)&nbsp;==<br />
+&nbsp;&nbsp;n&nbsp;:=&nbsp;#m<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;1..(n-1)&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;n..(i+1)&nbsp;by&nbsp;-1&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;m.j&nbsp;&lt;&nbsp;m.(j-1)&nbsp;then&nbsp;swap!(m,j,j-1)<br />
+&nbsp;&nbsp;m<br />
+</div>
+
+
+
+<p>What properties of ``lists of integers'' are assumed by the sorting
+algorithm?
+In the first line, the operation <span style="font-weight: bold;"> #</span> computes the maximum index of
+the list.
+The first obvious property is that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> must have a finite number of
+elements.
+In Axiom, this is done
+by your telling Axiom that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> has
+the ``attribute'' <span style="font-weight: bold;"> finiteAggregate</span>.
+An <span class="italic">attribute</span> is a property
+that a domain either has or does not have.
+As we show later in 
+<a href="section-12.9.xhtml#ugCategoriesAttributes" class="ref" >ugCategoriesAttributes</a> ,
+programs can query domains as to the presence or absence of an attribute.
+</p>
+
+
+<p>The operation <span style="font-weight: bold;"> swap</span> swaps elements of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math>.
+Using Browse, you find that <span style="font-weight: bold;"> swap</span> requires its
+elements to come from a domain of category
+<span class="teletype">IndexedAggregate</span> with attribute
+<span class="teletype">shallowlyMutable</span>.
+This attribute means that you can change the internal components
+of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> without changing its external structure.
+Shallowly-mutable data structures include lists, streams, one- and
+two-dimensional arrays, vectors, and matrices.
+</p>
+
+
+<p>The category <span class="teletype">IndexedAggregate</span> designates the class of
+aggregates whose elements can be accessed by the notation
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>m</mi><mo>.</mo><mi>s</mi></mrow></mstyle></math> for suitable selectors <math xmlns="&mathml;" mathsize="big"><mstyle><mi>s</mi></mstyle></math>.
+The category <span class="teletype">IndexedAggregate</span> takes two arguments:
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>Index</mi></mstyle></math>, a domain of selectors for the aggregate, and
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>Entry</mi></mstyle></math>, a domain of entries for the aggregate.
+Since the sort functions access elements by integers, we must
+choose <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>Index</mi><mo>=</mo></mrow></mstyle></math><span class="teletype">Integer</span>.
+The most general class of domains for which <math xmlns="&mathml;" mathsize="big"><mstyle><mi>bubbleSort</mi></mstyle></math> and
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>insertionSort</mi></mstyle></math> are defined are those of
+category <span class="teletype">IndexedAggregate(Integer,Entry)</span> with the two
+attributes <span style="font-weight: bold;"> shallowlyMutable</span> and
+<span style="font-weight: bold;"> finiteAggregate</span>.
+</p>
+
+
+<p>Using Browse, you can also discover that Axiom has many kinds of domains
+with attribute <span style="font-weight: bold;"> shallowlyMutable</span>.
+Those of class <span class="teletype">IndexedAggregate(Integer,Entry)</span> include
+<span class="teletype">Bits</span>, <span class="teletype">FlexibleArray</span>, <span class="teletype">OneDimensionalArray</span>,
+<span class="teletype">List</span>, <span class="teletype">String</span>, and <span class="teletype">Vector</span>, and also
+<span class="teletype">HashTable</span> and <span class="teletype">EqTable</span> with integer keys.
+Although you may never want to sort all such structures, we
+nonetheless demonstrate Axiom's
+ability to do so.
+</p>
+
+
+<p>Another requirement is that <span class="teletype">Entry</span> has an
+operation <span class="teletype">&lt;</span>.
+One way to get this operation is to assume that
+<span class="teletype">Entry</span> has category <span class="teletype">OrderedSet</span>.
+By definition, will then export a <span class="teletype">&lt;</span> operation.
+A more general approach is to allow any comparison function
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> to be used for sorting.
+This function will be passed as an argument to the sorting
+functions.
+</p>
+
+
+<p>Our sorting package then takes two arguments: a domain <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math>
+of objects of <span class="italic">any</span> type, and a domain <math xmlns="&mathml;" mathsize="big"><mstyle><mi>A</mi></mstyle></math>, an aggregate
+of type <span class="teletype">IndexedAggregate(Integer, S)</span> with the above
+two attributes.
+Here is its definition using what are close to the original
+definitions of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>bubbleSort</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>insertionSort</mi></mstyle></math> for
+sorting lists of integers.
+The symbol <span class="teletype">!</span> is added to the ends of the operation
+names.
+This uniform naming convention is used for Axiom operation
+names that destructively change one or more of their arguments.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+SortPackage(S,A)&nbsp;:&nbsp;Exports&nbsp;==&nbsp;Implementation&nbsp;where<br />
+&nbsp;&nbsp;S:&nbsp;Object<br />
+&nbsp;&nbsp;A:&nbsp;IndexedAggregate(Integer,S)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;(finiteAggregate;&nbsp;shallowlyMutable)<br />
+<br />
+&nbsp;&nbsp;Exports&nbsp;==&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;bubbleSort!:&nbsp;(A,(S,S)&nbsp;-&gt;&nbsp;Boolean)&nbsp;-&gt;&nbsp;A<br />
+&nbsp;&nbsp;&nbsp;&nbsp;insertionSort!:&nbsp;(A,&nbsp;(S,S)&nbsp;-&gt;&nbsp;Boolean)&nbsp;-&gt;&nbsp;A<br />
+<br />
+&nbsp;&nbsp;Implementation&nbsp;==&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;bubbleSort!(m,f)&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;:=&nbsp;#m<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;1..(n-1)&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;n..(i+1)&nbsp;by&nbsp;-1&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;f(m.j,m.(j-1))&nbsp;then&nbsp;swap!(m,j,j-1)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m<br />
+&nbsp;&nbsp;&nbsp;&nbsp;insertionSort!(m,f)&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;2..#m&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;:=&nbsp;i<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;j&nbsp;&gt;&nbsp;1&nbsp;and&nbsp;f(m.j,m.(j-1))&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap!(m,j,j-1)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;:=&nbsp;(j&nbsp;-&nbsp;1)&nbsp;pretend&nbsp;PositiveInteger<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-11.6.xhtml" style="margin-right: 10px;">Previous Section 11.6 Compiling Packages</a><a href="section-11.8.xhtml" style="margin-right: 10px;">Next Section 11.8 Conditionals</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.8.xhtml
new file mode 100644
index 0000000..ba424ff
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.8.xhtml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.7.xhtml" style="margin-right: 10px;">Previous Section 11.7 Parameters</a><a href="section-11.9.xhtml" style="margin-right: 10px;">Next Section 11.9 Testing</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.8">
+<h2 class="sectiontitle">11.8  Conditionals</h2>
+
+
+<a name="ugPackagesConds" class="label"/>
+
+
+
+<p>When packages have parameters, you can say that an operation is or is not
+<span class="index">conditional</span><a name="chapter-11-14"/>
+exported depending on the values of those parameters.
+When the domain of objects <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math> has an <span class="teletype">&lt;</span>
+operation, we can supply one-argument versions of
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>bubbleSort</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>insertionSort</mi></mstyle></math> which use this operation
+for sorting.
+The presence of the
+operation <span class="teletype">&lt;</span> is guaranteed when <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math> is an ordered set.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+Exports&nbsp;==&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;bubbleSort!:&nbsp;(A,(S,S)&nbsp;-&gt;&nbsp;Boolean)&nbsp;-&gt;&nbsp;A<br />
+&nbsp;&nbsp;&nbsp;&nbsp;insertionSort!:&nbsp;(A,&nbsp;(S,S)&nbsp;-&gt;&nbsp;Boolean)&nbsp;-&gt;&nbsp;A<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;S&nbsp;has&nbsp;OrderedSet&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bubbleSort!:&nbsp;A&nbsp;-&gt;&nbsp;A<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insertionSort!:&nbsp;A&nbsp;-&gt;&nbsp;A<br />
+</div>
+
+
+
+<p>In addition to exporting the one-argument sort operations
+<span class="index">sort:bubble</span><a name="chapter-11-15"/>
+conditionally, we must provide conditional definitions for the
+<span class="index">sort:insertion</span><a name="chapter-11-16"/>
+operations in the <span class="teletype">Implementation</span> part.
+This is easy: just have the one-argument functions call the
+corresponding two-argument functions with the operation
+<span class="teletype">&lt;</span> from <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;Implementation&nbsp;==&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;S&nbsp;has&nbsp;OrderedSet&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bubbleSort!(m)&nbsp;==&nbsp;bubbleSort!(m,&lt;&nbsp;$S)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insertionSort!(m)&nbsp;==&nbsp;insertionSort!(m,&lt;&nbsp;$S)<br />
+</div>
+
+
+
+<p>In <a href="section-6.15.xhtml#ugUserBlocks" class="ref" >ugUserBlocks</a> , 
+we give an alternative definition of
+<span style="font-weight: bold;"> bubbleSort</span> using <span class="spadfunFrom" >first</span><span class="index">first</span><a name="chapter-11-17"/><span class="index">List</span><a name="chapter-11-18"/> and
+<span class="spadfunFrom" >rest</span><span class="index">rest</span><a name="chapter-11-19"/><span class="index">List</span><a name="chapter-11-20"/> that is more efficient for a list (for
+which access to any element requires traversing the list from its
+first node).
+To implement a more efficient algorithm for lists, we need the
+operation <span style="font-weight: bold;"> setelt</span> which allows us to destructively change
+the <span style="font-weight: bold;"> first</span> and <span style="font-weight: bold;"> rest</span> of a list.
+Using Browse, you find that these operations come from category
+<span class="teletype">UnaryRecursiveAggregate</span>.
+Several aggregate types are unary recursive aggregates including
+those of <span class="teletype">List</span> and <span class="teletype">AssociationList</span>.
+We provide two different implementations for
+<span style="font-weight: bold;"> bubbleSort!</span> and <span style="font-weight: bold;"> insertionSort!</span>: one
+for list-like structures, another for array-like structures.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+Implementation&nbsp;==&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;A&nbsp;has&nbsp;UnaryRecursiveAggregate(S)&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bubbleSort!(m,fn)&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empty?&nbsp;m&nbsp;=&gt;&nbsp;m<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;:=&nbsp;m<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;not&nbsp;empty?&nbsp;(r&nbsp;:=&nbsp;l.rest)&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;bubbleSort!&nbsp;r<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;:=&nbsp;l.first<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;fn(r.first,x)&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l.first&nbsp;:=&nbsp;r.first<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r.first&nbsp;:=&nbsp;x<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l.rest&nbsp;:=&nbsp;r<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;:=&nbsp;l.rest<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insertionSort!(m,fn)&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+</div>
+
+
+
+<p>The ordering of definitions is important.
+The standard definitions come first and
+then the predicate
+</p>
+
+
+
+<div class="verbatim"><br />
+A&nbsp;has&nbsp;UnaryRecursiveAggregate(S)<br />
+</div>
+
+
+<p>is evaluated.
+If <span class="teletype">true</span>, the special definitions cover up the standard ones.
+</p>
+
+
+<p>Another equivalent way to write the capsule is to use an
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>if</mi><mo>-</mo><mi>then</mi><mo>-</mo><mi>else</mi></mrow></mstyle></math> expression:
+<span class="index">if</span><a name="chapter-11-21"/>
+</p>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;A&nbsp;has&nbsp;UnaryRecursiveAggregate(S)&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-11.7.xhtml" style="margin-right: 10px;">Previous Section 11.7 Parameters</a><a href="section-11.9.xhtml" style="margin-right: 10px;">Next Section 11.9 Testing</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-11.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-11.9.xhtml
new file mode 100644
index 0000000..71d9fe3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-11.9.xhtml
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section11.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.8.xhtml" style="margin-right: 10px;">Previous Section 11.8 Conditionals</a><a href="section-11.10.xhtml" style="margin-right: 10px;">Next Section 11.10 How Packages Work</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-11.9">
+<h2 class="sectiontitle">11.9  Testing</h2>
+
+
+<a name="ugPackagesCompiling" class="label"/>
+
+
+
+<p>Once you have written the package, embed it in a file, for example, <span style="font-weight: bold;">
+sortpak.spad</span>.
+<span class="index">testing</span><a name="chapter-11-22"/>
+Be sure to include an <span style="font-weight: bold;"> )abbrev</span> command at the top of the file:
+</p>
+
+
+
+<div class="verbatim"><br />
+)abbrev&nbsp;package&nbsp;SORTPAK&nbsp;SortPackage<br />
+</div>
+
+
+<p>Now compile the file (using <span class="teletype">)compile sortpak.spad</span>).
+</p>
+
+
+<p>Expose the constructor.
+You are then ready to begin testing.
+</p>
+
+
+
+
+<div id="spadComm11-7" class="spadComm" >
+<form id="formComm11-7" action="javascript:makeRequest('11-7');" >
+<input id="comm11-7" type="text" class="command" style="width: 10em;" value=")expose SORTPAK" />
+</form>
+<span id="commSav11-7" class="commSav" >)expose SORTPAK</span>
+<div id="mathAns11-7" ></div>
+</div>
+
+
+
+<p>Define a list.
+</p>
+
+
+
+
+<div id="spadComm11-8" class="spadComm" >
+<form id="formComm11-8" action="javascript:makeRequest('11-8');" >
+<input id="comm11-8" type="text" class="command" style="width: 16em;" value="l := [1,7,4,2,11,-7,3,2]" />
+</form>
+<span id="commSav11-8" class="commSav" >l := [1,7,4,2,11,-7,3,2]</span>
+<div id="mathAns11-8" ></div>
+</div>
+
+
+
+<p>Since the integers are an ordered set,
+a one-argument operation will do.
+</p>
+
+
+
+
+<div id="spadComm11-9" class="spadComm" >
+<form id="formComm11-9" action="javascript:makeRequest('11-9');" >
+<input id="comm11-9" type="text" class="command" style="width: 10em;" value="bubbleSort!(l)" />
+</form>
+<span id="commSav11-9" class="commSav" >bubbleSort!(l)</span>
+<div id="mathAns11-9" ></div>
+</div>
+
+
+
+<p>Re-sort it using ``greater than.''
+</p>
+
+
+
+
+<div id="spadComm11-10" class="spadComm" >
+<form id="formComm11-10" action="javascript:makeRequest('11-10');" >
+<input id="comm11-10" type="text" class="command" style="width: 20em;" value="bubbleSort!(l,(x,y) +-> x > y)" />
+</form>
+<span id="commSav11-10" class="commSav" >bubbleSort!(l,(x,y) +-> x > y)</span>
+<div id="mathAns11-10" ></div>
+</div>
+
+
+
+<p>Now sort it again using <span class="teletype">&lt;</span> on integers.
+</p>
+
+
+
+
+<div id="spadComm11-11" class="spadComm" >
+<form id="formComm11-11" action="javascript:makeRequest('11-11');" >
+<input id="comm11-11" type="text" class="command" style="width: 18em;" value="bubbleSort!(l, &lt; $Integer)" />
+</form>
+<span id="commSav11-11" class="commSav" >bubbleSort!(l, &lt; $Integer)</span>
+<div id="mathAns11-11" ></div>
+</div>
+
+
+
+<p>A string is an aggregate of characters so we can sort them as well.
+</p>
+
+
+
+
+<div id="spadComm11-12" class="spadComm" >
+<form id="formComm11-12" action="javascript:makeRequest('11-12');" >
+<input id="comm11-12" type="text" class="command" style="width: 24em;" value='bubbleSort! "Mathematical Sciences"' />
+</form>
+<span id="commSav11-12" class="commSav" >bubbleSort! "Mathematical Sciences"</span>
+<div id="mathAns11-12" ></div>
+</div>
+
+
+
+<p>Is <span class="teletype">&lt;</span> defined on booleans?
+</p>
+
+
+
+
+<div id="spadComm11-13" class="spadComm" >
+<form id="formComm11-13" action="javascript:makeRequest('11-13');" >
+<input id="comm11-13" type="text" class="command" style="width: 8em;" value="false &lt; true" />
+</form>
+<span id="commSav11-13" class="commSav" >false &lt; true</span>
+<div id="mathAns11-13" ></div>
+</div>
+
+
+
+<p>Good! Create a bit string representing ten consecutive
+boolean values <span class="teletype">true</span>.
+</p>
+
+
+
+
+<div id="spadComm11-14" class="spadComm" >
+<form id="formComm11-14" action="javascript:makeRequest('11-14');" >
+<input id="comm11-14" type="text" class="command" style="width: 16em;" value="u : Bits := new(10,true)" />
+</form>
+<span id="commSav11-14" class="commSav" >u : Bits := new(10,true)</span>
+<div id="mathAns11-14" ></div>
+</div>
+
+
+
+<p>Set bits 3 through 5 to <span class="teletype">false</span>, then display the result.
+</p>
+
+
+
+
+<div id="spadComm11-15" class="spadComm" >
+<form id="formComm11-15" action="javascript:makeRequest('11-15');" >
+<input id="comm11-15" type="text" class="command" style="width: 13em;" value="u(3..5) := false; u" />
+</form>
+<span id="commSav11-15" class="commSav" >u(3..5) := false; u</span>
+<div id="mathAns11-15" ></div>
+</div>
+
+
+
+<p>Now sort these booleans.
+</p>
+
+
+
+
+<div id="spadComm11-16" class="spadComm" >
+<form id="formComm11-16" action="javascript:makeRequest('11-16');" >
+<input id="comm11-16" type="text" class="command" style="width: 9em;" value="bubbleSort! u" />
+</form>
+<span id="commSav11-16" class="commSav" >bubbleSort! u</span>
+<div id="mathAns11-16" ></div>
+</div>
+
+
+
+<p>Create an ``eq-table'', a
+table having integers as keys
+and strings as values.
+</p>
+
+
+
+
+<div id="spadComm11-17" class="spadComm" >
+<form id="formComm11-17" action="javascript:makeRequest('11-17');" >
+<input id="comm11-17" type="text" class="command" style="width: 26em;" value="t : EqTable(Integer,String) := table()" />
+</form>
+<span id="commSav11-17" class="commSav" >t : EqTable(Integer,String) := table()</span>
+<div id="mathAns11-17" ></div>
+</div>
+
+
+
+<p>Give the table a first entry.
+</p>
+
+
+
+
+<div id="spadComm11-18" class="spadComm" >
+<form id="formComm11-18" action="javascript:makeRequest('11-18');" >
+<input id="comm11-18" type="text" class="command" style="width: 10em;" value='t.1 := "robert"' />
+</form>
+<span id="commSav11-18" class="commSav" >t.1 := "robert"</span>
+<div id="mathAns11-18" ></div>
+</div>
+
+
+
+<p>And a second.
+</p>
+
+
+
+
+<div id="spadComm11-19" class="spadComm" >
+<form id="formComm11-19" action="javascript:makeRequest('11-19');" >
+<input id="comm11-19" type="text" class="command" style="width: 11em;" value='t.2 := "richard"' />
+</form>
+<span id="commSav11-19" class="commSav" >t.2 := "richard"</span>
+<div id="mathAns11-19" ></div>
+</div>
+
+
+
+<p>What does the table look like?
+</p>
+
+
+
+
+<div id="spadComm11-20" class="spadComm" >
+<form id="formComm11-20" action="javascript:makeRequest('11-20');" >
+<input id="comm11-20" type="text" class="command" style="width: 1em;" value="t" />
+</form>
+<span id="commSav11-20" class="commSav" >t</span>
+<div id="mathAns11-20" ></div>
+</div>
+
+
+
+<p>Now sort it.
+</p>
+
+
+
+
+<div id="spadComm11-21" class="spadComm" >
+<form id="formComm11-21" action="javascript:makeRequest('11-21');" >
+<input id="comm11-21" type="text" class="command" style="width: 9em;" value="bubbleSort! t" />
+</form>
+<span id="commSav11-21" class="commSav" >bubbleSort! t</span>
+<div id="mathAns11-21" ></div>
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-11.8.xhtml" style="margin-right: 10px;">Previous Section 11.8 Conditionals</a><a href="section-11.10.xhtml" style="margin-right: 10px;">Next Section 11.10 How Packages Work</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.0.xhtml
new file mode 100644
index 0000000..0664d11
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.0.xhtml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.10.xhtml" style="margin-right: 10px;">Previous Section 11.10  How Packages Work</a><a href="section-12.1.xhtml" style="margin-right: 10px;">Next Section 12.1 Definitions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.0">
+<h2 class="sectiontitle">12.0 Categories</h2>
+<a name="ugCategories" class="label"/>
+
+<p>This chapter unravels the mysteries of categories---what
+<span class="index">category</span><a name="chapter-12-0"/>
+they are, how they are related to domains and packages,
+<span class="index">category:constructor</span><a name="chapter-12-1"/>
+how they are defined in Axiom, and how you can extend the
+<span class="index">constructor:category</span><a name="chapter-12-2"/>
+system to include new categories of your own.
+</p>
+
+
+<p>We assume that you have read the introductory material on domains
+and categories in <a href="section-2.1.xhtml#ugTypesBasicDomainCons" class="ref" >ugTypesBasicDomainCons</a> .
+There you learned that the notion of packages covered in the
+previous chapter are special cases of domains.
+While this is in fact the case, it is useful here to regard domains
+as distinct from packages.
+</p>
+
+
+<p>Think of a domain as a datatype, a collection of objects (the
+objects of the domain).
+From your ``sneak preview'' in the previous chapter, you might
+conclude that categories are simply named clusters of operations
+exported by domains.
+As it turns out, categories have a much deeper meaning.
+Categories are fundamental to the design of Axiom.
+They control the interactions between domains and algorithmic
+packages, and, in fact, between all the components of Axiom.
+</p>
+
+
+<p>Categories form hierarchies as shown on the inside cover pages of
+this book.
+The inside front-cover pages illustrate the basic
+algebraic hierarchy of the Axiom programming language.
+The inside back-cover pages show the hierarchy for data
+structures.
+</p>
+
+
+<p>Think of the category structures of Axiom as a foundation
+for a city on which superstructures (domains) are built.
+The algebraic hierarchy, for example, serves as a foundation for
+constructive mathematical algorithms embedded in the domains of
+Axiom.
+Once in place, domains can be constructed, either independently or
+from one another.
+</p>
+
+
+<p>Superstructures are built for quality---domains are compiled into
+machine code for run-time efficiency.
+You can extend the foundation in directions beyond the space
+directly beneath the superstructures, then extend selected
+superstructures to cover the space.
+Because of the compilation strategy, changing components of the
+foundation generally means that the existing superstructures
+(domains) built on the changed parts of the foundation
+(categories) have to be rebuilt---that is, recompiled.
+</p>
+
+
+<p>Before delving into some of the interesting facts about categories, let's see
+how you define them in Axiom.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-11.10.xhtml" style="margin-right: 10px;">Previous Section 11.10  How Packages Work</a><a href="section-12.1.xhtml" style="margin-right: 10px;">Next Section 12.1 Definitions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.1.xhtml
new file mode 100644
index 0000000..cbaf5db
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.1.xhtml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.0.xhtml" style="margin-right: 10px;">Previous Section 12.0 Categories</a><a href="section-12.2.xhtml" style="margin-right: 10px;">Next Section 12.2 Exports</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.1">
+<h2 class="sectiontitle">12.1  Definitions</h2>
+
+
+<a name="ugCategoriesDefs" class="label"/>
+
+
+<p>A category is defined by a function with exactly the same format as
+<span class="index">category:definition</span><a name="chapter-12-3"/>
+any other function in Axiom.
+</p>
+
+
+<p>The definition of a category has the syntax:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="italic">CategoryForm</span> : <span class="teletype">Category&nbsp; ==&nbsp; </span> <span class="italic">Extensions</span> <span class="teletype">[ with</span> <span class="italic">Exports</span> <span class="teletype">]</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>The brackets <span class="teletype">[ ]</span> here indicate optionality.
+</p>
+
+
+
+<p>The first example of a category definition is
+<span class="teletype">SetCategory</span>,
+the most basic of the algebraic categories in Axiom.
+<span class="index">SetCategory</span><a name="chapter-12-4"/>
+</p>
+
+
+
+
+<div class="verbatim"><br />
+SetCategory():&nbsp;Category&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;Join(Type,CoercibleTo&nbsp;OutputForm)&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"="&nbsp;:&nbsp;($,&nbsp;$)&nbsp;-&gt;&nbsp;Boolean<br />
+</div>
+
+
+
+<p>The definition starts off with the name of the
+category (<span class="teletype">SetCategory</span>); this is
+always in column one in the source file.
+<!-- maybe talk about naming conventions for source files? .spad or .ax? -->
+All parts of a category definition are then indented with respect to this
+<span class="index">indentation</span><a name="chapter-12-5"/>
+first line.
+</p>
+
+
+<p>In Chapter <a href="section-2.0.xhtml#ugTypes" class="ref" >ugTypes</a> , 
+we talked about <span class="teletype">Ring</span> as denoting the
+class of all domains that are rings, in short, the class of all
+rings.
+While this is the usual naming convention in Axiom, it is also
+common to use the word ``Category'' at the end of a category name for clarity.
+The interpretation of the name <span class="teletype">SetCategory</span> is, then, ``the
+category of all domains that are (mathematical) sets.''
+</p>
+
+
+<p>The name <span class="teletype">SetCategory</span> is followed in the definition by its
+formal parameters enclosed in parentheses <span class="teletype">()</span>.
+Here there are no parameters.
+As required, the type of the result of this category function is the
+distinguished name <span class="slant">Category</span>.
+</p>
+
+
+<p>Then comes the <span class="teletype">==</span>.
+As usual, what appears to the right of the <span class="teletype">==</span> is a
+definition, here, a category definition.
+A category definition always has two parts separated by the reserved word
+<span class="index">with</span><a name="chapter-12-6"/>
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>with</mi></mstyle></math>.
+<span class="footnote">Debugging hint: it is very easy to forget
+the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>with</mi></mstyle></math>!</span>
+</p>
+
+
+<p>The first part tells what categories the category extends.
+Here, the category extends two categories: <span class="teletype">Type</span>, the
+category of all domains, and
+<span class="teletype">CoercibleTo(OutputForm)</span>.
+<span class="footnote"><span class="teletype">CoercibleTo(OutputForm)</span>
+can also be written (and is written in the definition above) without
+parentheses.</span>
+The operation  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Join</mi></mstyle></math> is a system-defined operation that
+<span class="index">Join</span><a name="chapter-12-7"/>
+forms a single category from two or more other categories.
+</p>
+
+
+<p>Every category other than <span class="teletype">Type</span> is an extension of some other
+category.
+If, for example, <span class="teletype">SetCategory</span> extended only the category
+<span class="teletype">Type</span>, the definition here would read ``<span class="teletype">Type with
+...</span>''.
+In fact, the <span class="teletype">Type</span> is optional in this line; ``<span class="teletype">with
+...</span>'' suffices.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.0.xhtml" style="margin-right: 10px;">Previous Section 12.0 Categories</a><a href="section-12.2.xhtml" style="margin-right: 10px;">Next Section 12.2 Exports</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.10.xhtml
new file mode 100644
index 0000000..2e74e60
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.10.xhtml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.9.xhtml" style="margin-right: 10px;">Previous Section 12.9 Attributes</a><a href="section-12.11.xhtml" style="margin-right: 10px;">Next Section 12.11 Conditionals</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.10">
+<h2 class="sectiontitle">12.10  Parameters</h2>
+
+
+<a name="ugCategoriesParameters" class="label"/>
+
+
+<p>Like domain constructors, category constructors can also have
+parameters.
+For example, category <span class="teletype">MatrixCategory</span> is a parameterized
+category for defining matrices over a ring  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math> so that the
+matrix domains can have
+different representations and indexing schemes.
+Its definition has the form:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+MatrixCategory(R,Row,Col):&nbsp;Category&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;TwoDimensionalArrayCategory(R,Row,Col)&nbsp;with&nbsp;...<br />
+</div>
+
+
+
+<p>The category extends <span class="teletype">TwoDimensionalArrayCategory</span> with
+the same arguments.
+You cannot find <span class="teletype">TwoDimensionalArrayCategory</span> in the
+algebraic hierarchy listing.
+Rather, it is a member of the data structure hierarchy,
+given inside the back cover of this book.
+In particular, <span class="teletype">TwoDimensionalArrayCategory</span> is an extension of
+<span class="teletype">HomogeneousAggregate</span> since its elements are all one type.
+</p>
+
+
+<p>The domain <span class="teletype">Matrix(R)</span>, the class of matrices with coefficients
+from domain  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>, asserts that it is a member of category
+<span class="teletype">MatrixCategory(R, Vector(R), Vector(R))</span>.
+The parameters of a category must also have types.
+The first parameter to <span class="teletype">MatrixCategory</span>
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math> is required to be a ring.
+The second and third are required to be domains of category
+<span class="teletype">FiniteLinearAggregate(R)</span>.<span class="footnote">
+This is another extension of
+<span class="teletype">HomogeneousAggregate</span> that you can see in
+the data structure hierarchy.</span>
+In practice, examples of categories having parameters other than
+domains are rare.
+</p>
+
+
+<p>Adding the declarations for parameters to the definition for
+<span class="teletype">MatrixCategory</span>, we have:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+R:&nbsp;Ring<br />
+(Row,&nbsp;Col):&nbsp;FiniteLinearAggregate(R)<br />
+<br />
+MatrixCategory(R,&nbsp;Row,&nbsp;Col):&nbsp;Category&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;TwoDimensionalArrayCategory(R,&nbsp;Row,&nbsp;Col)&nbsp;with&nbsp;...<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.9.xhtml" style="margin-right: 10px;">Previous Section 12.9 Attributes</a><a href="section-12.11.xhtml" style="margin-right: 10px;">Next Section 12.11 Conditionals</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.11.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.11.xhtml
new file mode 100644
index 0000000..e9a6ee9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.11.xhtml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.11</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.10.xhtml" style="margin-right: 10px;">Previous Section 12.10 Parameters</a><a href="section-12.12.xhtml" style="margin-right: 10px;">Next Section 12.12 Anonymous Categories</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.11">
+<h2 class="sectiontitle">12.11  Conditionals</h2>
+
+
+<a name="ugCategoriesConditionals" class="label"/>
+
+
+<p>As categories have parameters, the actual operations exported by a
+<span class="index">conditional</span><a name="chapter-12-23"/>
+category can depend on these parameters.
+As an example, the operation <span class="spadfunFrom" >determinant</span><span class="index">determinant</span><a name="chapter-12-24"/><span class="index">MatrixCategory</span><a name="chapter-12-25"/>
+from category <span class="teletype">MatrixCategory</span> is only exported when the
+underlying domain  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math> has commutative multiplication:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+if&nbsp;R&nbsp;has&nbsp;commutative("*")&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;determinant:&nbsp;$&nbsp;-&gt;&nbsp;R<br />
+</div>
+
+
+
+<p>Conditionals can also define conditional extensions of a category.
+Here is a portion of the definition of <span class="teletype">QuotientFieldCategory</span>:
+<span class="index">QuotientFieldCategory</span><a name="chapter-12-26"/>
+</p>
+
+
+
+
+<div class="verbatim"><br />
+QuotientFieldCategory(R)&nbsp;:&nbsp;Category&nbsp;==&nbsp;...&nbsp;with&nbsp;...<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;R&nbsp;has&nbsp;OrderedSet&nbsp;then&nbsp;OrderedSet<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;R&nbsp;has&nbsp;IntegerNumberSystem&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ceiling:&nbsp;$&nbsp;-&gt;&nbsp;R<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+</div>
+
+
+
+<p>Think of category <span class="teletype">QuotientFieldCategory(R)</span> as
+denoting the domain <span class="teletype">Fraction(R)</span>, the
+class of all fractions of the form  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>/</mo><mi>b</mi></mrow></mstyle></math> for elements of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>.
+The first conditional means in English:
+``If the elements of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math> are totally ordered ( <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>
+is an <span class="teletype">OrderedSet</span>), then so are the fractions  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>/</mo><mi>b</mi></mrow></mstyle></math>''.
+<span class="index">Fraction</span><a name="chapter-12-27"/>
+</p>
+
+
+<p>The second conditional is used to conditionally export an
+operation <span style="font-weight: bold;"> ceiling</span> which returns the smallest integer
+greater than or equal to its argument.
+Clearly, ``ceiling'' makes sense for integers but not for
+polynomials and other algebraic structures.
+Because of this conditional,
+the domain <span class="teletype">Fraction(Integer)</span> exports
+an operation
+<span style="font-weight: bold;"> ceiling</span>: Fraction Integer->Integer, but
+<span class="teletype">Fraction Polynomial Integer</span> does not.
+</p>
+
+
+<p>Conditionals can also appear in the default definitions for the
+operations of a category.
+For example, a default definition for <span class="spadfunFrom" >ceiling</span><span class="index">ceiling</span><a name="chapter-12-28"/><span class="index">Field</span><a name="chapter-12-29"/>
+within the part following the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>add</mi></mstyle></math> reads:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+if&nbsp;R&nbsp;has&nbsp;IntegerNumberSystem&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;ceiling&nbsp;x&nbsp;==&nbsp;...<br />
+</div>
+
+
+
+<p>Here the predicate used is identical to the predicate in the <span class="teletype">Exports</span> part.  This need not be the case.  See <a href="section-11.8.xhtml#ugPackagesConds" class="ref" >ugPackagesConds</a>
+ for a more complicated example.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.10.xhtml" style="margin-right: 10px;">Previous Section 12.10 Parameters</a><a href="section-12.12.xhtml" style="margin-right: 10px;">Next Section 12.12 Anonymous Categories</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.12.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.12.xhtml
new file mode 100644
index 0000000..17488bd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.12.xhtml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.11.xhtml" style="margin-right: 10px;">Previous Section 12.11 Conditionals</a><a href="section-13.0.xhtml" style="margin-right: 10px;">Next Section 13.0 Domains</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.12">
+<h2 class="sectiontitle">12.12  Anonymous Categories</h2>
+
+
+<a name="ugCategoriesAndPackages" class="label"/>
+
+
+<p>The part of a category to the right of a <span class="teletype">with</span> is also regarded
+as a category---an ``anonymous category.''  Thus you have already seen
+a category definition <span class="index">category:anonymous</span><a name="chapter-12-30"/> in Chapter
+<a href="section-11.0.xhtml#ugPackages" class="ref" >ugPackages</a> .  The <span class="teletype">Exports</span> part
+of the package <span class="teletype">DrawComplex</span> (<a href="section-11.3.xhtml#ugPackagesAbstract" class="ref" >ugPackagesAbstract</a> ) is an anonymous category.  This is
+not necessary.  We could, instead, give this category a name:
+</p>
+
+
+
+
+
+<div class="verbatim"><br />
+DrawComplexCategory():&nbsp;Category&nbsp;==&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;drawComplex:&nbsp;(C&nbsp;-&gt;&nbsp;C,S,S,Boolean)&nbsp;-&gt;&nbsp;VIEW3D<br />
+&nbsp;&nbsp;&nbsp;drawComplexVectorField:&nbsp;(C&nbsp;-&gt;&nbsp;C,S,S)&nbsp;-&gt;&nbsp;VIEW3D<br />
+&nbsp;&nbsp;&nbsp;setRealSteps:&nbsp;INT&nbsp;-&gt;&nbsp;INT<br />
+&nbsp;&nbsp;&nbsp;setImagSteps:&nbsp;INT&nbsp;-&gt;&nbsp;INT<br />
+&nbsp;&nbsp;&nbsp;setClipValue:&nbsp;DFLOAT-&gt;&nbsp;DFLOAT<br />
+</div>
+
+
+
+<p>and then define <span class="teletype">DrawComplex</span> by:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+DrawComplex():&nbsp;DrawComplexCategory&nbsp;==&nbsp;Implementation<br />
+&nbsp;&nbsp;&nbsp;where<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+</div>
+
+
+
+
+<p>There is no reason, however, to give this list of exports a name
+since no other domain or package exports it.
+In fact, it is rare for a package to export a named category.
+As you will see in the next chapter, however, it is very common
+for the definition of domains to mention one or more category
+before the <span class="teletype">with</span>.
+<span class="index">with</span><a name="chapter-12-31"/>
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.11.xhtml" style="margin-right: 10px;">Previous Section 12.11 Conditionals</a><a href="section-13.0.xhtml" style="margin-right: 10px;">Next Section 13.0 Domains</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.2.xhtml
new file mode 100644
index 0000000..81e2701
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.2.xhtml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.1.xhtml" style="margin-right: 10px;">Previous Section 12.1 Definitions</a><a href="section-12.3.xhtml" style="margin-right: 10px;">Next Section 12.3 Documentation</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.2">
+<h2 class="sectiontitle">12.2  Exports</h2>
+
+
+<a name="ugCategoriesExports" class="label"/>
+
+
+
+<p>To the right of the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>with</mi></mstyle></math> is a list of
+<span class="index">with</span><a name="chapter-12-8"/>
+all the exports of the category.
+Each exported operation has a name and a type expressed by a
+<span class="italic">declaration</span> of the form
+``<span class="teletype"><span class="italic">name</span>: <span class="italic">type</span></span>''.
+</p>
+
+
+<p>Categories can export symbols, as well as
+<span class="teletype">0</span> and <span class="teletype">1</span> which denote
+domain constants.<span class="footnote">The
+numbers <span class="teletype">0</span> and <span class="teletype">1</span> are operation names in Axiom.</span>
+In the current implementation, all other exports are operations with
+types expressed as mappings with the syntax
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="italic">source&nbsp;<span class="teletype">-></span>&nbsp; target
+</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>The category <span class="teletype">SetCategory</span> has a single export: the operation
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mo>=</mo></mstyle></math> whose type is given by the mapping <span class="teletype">($, $) -> Boolean</span>.
+The <span class="teletype">$</span> in a mapping type always means ``the domain.'' Thus
+the operation  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>=</mo></mstyle></math> takes two arguments from the domain and
+returns a value of type <span class="teletype">Boolean</span>.
+</p>
+
+
+<p>The source part of the mapping here is given by a <span class="italic">tuple</span>
+<span class="index">tuple</span><a name="chapter-12-9"/>
+consisting of two or more types separated by commas and enclosed in
+parentheses.
+If an operation takes only one argument, you can drop the parentheses
+around the source type.
+If the mapping has no arguments, the source part of the mapping is either
+left blank or written as <span class="teletype">()</span>.
+Here are examples of formats of various operations with some
+contrived names.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+someIntegerConstant&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;$<br />
+aZeroArgumentOperation:&nbsp;&nbsp;&nbsp;()&nbsp;-&gt;&nbsp;Integer<br />
+aOneArgumentOperation:&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;-&gt;&nbsp;$<br />
+aTwoArgumentOperation:&nbsp;&nbsp;&nbsp;&nbsp;(Integer,$)&nbsp;-&gt;&nbsp;Void<br />
+aThreeArgumentOperation:&nbsp;&nbsp;($,Integer,$)&nbsp;-&gt;&nbsp;Fraction($)<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.1.xhtml" style="margin-right: 10px;">Previous Section 12.1 Definitions</a><a href="section-12.3.xhtml" style="margin-right: 10px;">Next Section 12.3 Documentation</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.3.xhtml
new file mode 100644
index 0000000..10dedbb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.3.xhtml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.2.xhtml" style="margin-right: 10px;">Previous Section 12.2 Exports</a><a href="section-12.4.xhtml" style="margin-right: 10px;">Next Section 12.4 Hierarchies</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.3">
+<h2 class="sectiontitle">12.3  Documentation</h2>
+
+
+<a name="ugCategoriesDoc" class="label"/>
+
+
+<p>The definition of <span class="teletype">SetCategory</span> above is  missing
+an important component: its library documentation.
+<span class="index">documentation</span><a name="chapter-12-10"/>
+Here is its definition, complete with documentation.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+++&nbsp;Description:<br />
+++&nbsp;\bs{}axiomType\{SetCategory\}&nbsp;is&nbsp;the&nbsp;basic&nbsp;category<br />
+++&nbsp;for&nbsp;describing&nbsp;a&nbsp;collection&nbsp;of&nbsp;elements&nbsp;with<br />
+++&nbsp;\bs{}axiomOp\{=\}&nbsp;(equality)&nbsp;and&nbsp;a&nbsp;\bs{}axiomFun\{coerce\}<br />
+++&nbsp;to&nbsp;\bs{}axiomType\{OutputForm\}.<br />
+<br />
+SetCategory():&nbsp;Category&nbsp;==<br />
+&nbsp;&nbsp;Join(Type,&nbsp;CoercibleTo&nbsp;OutputForm)&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;"=":&nbsp;($,&nbsp;$)&nbsp;-&gt;&nbsp;Boolean<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;\bs{}axiom\{x&nbsp;=&nbsp;y\}&nbsp;tests&nbsp;if&nbsp;\bs{}axiom\{x\}&nbsp;and<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;\bs{}axiom\{y\}&nbsp;are&nbsp;equal.<br />
+</div>
+
+
+
+<p>Documentary comments are an important part of constructor definitions.
+Documentation is given both for the category itself and for
+each export.
+A description for the category precedes the code.
+Each line of the description begins in column one with <span class="teletype">++</span>.
+The description starts with the word <span class="teletype">Description:</span>.<span class="footnote">Other
+information such as the author's name, date of creation, and so on,
+can go in this
+area as well but are currently ignored by Axiom.</span>
+All lines of the description following the initial line are
+indented by the same amount.
+</p>
+
+
+
+<p>Surround the name of any constructor (with or without parameters) with an
+{\bf }.
+Similarly, surround an
+operator name with {\tt },
+an Axiom operation with {\bf }, and a
+variable or Axiom expression with
+$$.
+Library documentation is given in a <span class="texlogo">TeX</span>-like language so that
+it can be used both for hard-copy and for Browse.
+These different wrappings cause operations and types to have
+mouse-active buttons in Browse.
+For hard-copy output, wrapped expressions appear in a different font.
+The above documentation appears in hard-copy as:
+</p>
+
+
+
+
+
+
+<div class="quotation">
+
+
+
+<p><span class="teletype">SetCategory</span> is the basic category
+for describing a collection of elements with <span class="teletype">=</span>
+(equality) and a <span style="font-weight: bold;"> coerce</span> to <span class="teletype">OutputForm</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<p>and
+</p>
+
+
+
+
+<div class="quotation">
+
+
+
+<p>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>y</mi></mrow></mstyle></math> tests if  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> are equal.
+</p>
+
+
+
+
+</div>
+
+
+
+
+<p>For our purposes in this chapter, we omit the documentation from further
+category descriptions.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.2.xhtml" style="margin-right: 10px;">Previous Section 12.2 Exports</a><a href="section-12.4.xhtml" style="margin-right: 10px;">Next Section 12.4 Hierarchies</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.4.xhtml
new file mode 100644
index 0000000..abcc721
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.4.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.3.xhtml" style="margin-right: 10px;">Previous Section 12.3 Documentation</a><a href="section-12.5.xhtml" style="margin-right: 10px;">Next Section 12.5 Membership</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.4">
+<h2 class="sectiontitle">12.4  Hierarchies</h2>
+
+
+<a name="ugCategoriesHier" class="label"/>
+
+
+<p>A second example of a category is
+<span class="teletype">SemiGroup</span>, defined by:
+<span class="index">SemiGroup</span><a name="chapter-12-11"/>
+</p>
+
+
+
+
+<div class="verbatim"><br />
+SemiGroup():&nbsp;Category&nbsp;==&nbsp;SetCategory&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"*":&nbsp;&nbsp;($,$)&nbsp;-&gt;&nbsp;$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"**":&nbsp;($,&nbsp;PositiveInteger)&nbsp;-&gt;&nbsp;$<br />
+</div>
+
+
+
+<p>This definition is as simple as that for <span class="teletype">SetCategory</span>,
+except that there are two exported operations.
+Multiple exported operations are written as a <span class="italic">pile</span>,
+that is, they all begin in the same column.
+Here you see that the category mentions another type,
+<span class="teletype">PositiveInteger</span>, in a signature.
+Any domain can be used in a signature.
+</p>
+
+
+<p>Since categories extend one another, they form hierarchies.
+Each category other than <span class="teletype">Type</span> has one or more parents given
+by the one or more categories mentioned before the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>with</mi></mstyle></math> part of
+the definition.
+<span class="teletype">SemiGroup</span> extends <span class="teletype">SetCategory</span> and
+<span class="teletype">SetCategory</span> extends both <span class="teletype">Type</span> and
+<span class="teletype">CoercibleTo (OutputForm)</span>.
+Since <span class="teletype">CoercibleTo (OutputForm)</span> also extends <span class="teletype">Type</span>,
+the mention of <span class="teletype">Type</span> in the definition is unnecessary but
+included for emphasis.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.3.xhtml" style="margin-right: 10px;">Previous Section 12.3 Documentation</a><a href="section-12.5.xhtml" style="margin-right: 10px;">Next Section 12.5 Membership</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.5.xhtml
new file mode 100644
index 0000000..7bacfc8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.5.xhtml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.4.xhtml" style="margin-right: 10px;">Previous Section 12.4 Hierarchies</a><a href="section-12.6.xhtml" style="margin-right: 10px;">Next Section 12.6 Defaults</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.5">
+<h2 class="sectiontitle">12.5  Membership</h2>
+
+
+<a name="ugCategoriesMembership" class="label"/>
+
+
+<p>We say a category designates a class of domains.
+What class of domains?
+<span class="index">category:membership</span><a name="chapter-12-12"/>
+That is, how does Axiom know what domains belong to what categories?
+The simple answer to this basic question is key to the design of
+Axiom:
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span style="font-weight: bold;"> Domains belong to categories by assertion.</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>When a domain is defined, it is asserted to belong to one or more
+categories.
+Suppose, for example, that an author of domain <span class="teletype">String</span> wishes to
+use the binary operator  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math> to denote concatenation.
+Thus  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>"</mo><mi>hello</mi><mo>"</mo><mo>*</mo><mo>"</mo><mi>there</mi><mo>"</mo></mrow></mstyle></math> would produce the string
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>"</mo><mi>hello</mi><mi>there</mi><mo>"</mo></mrow></mstyle></math><span class="footnote">. Actually, concatenation of strings in
+Axiom is done by juxtaposition or by using the operation
+<span class="spadfunFrom" >concat</span><span class="index">concat</span><a name="chapter-12-13"/><span class="index">String</span><a name="chapter-12-14"/>.
+The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>"</mo><mi>hello</mi><mo>"</mo><mo>"</mo><mi>there</mi><mo>"</mo></mrow></mstyle></math> produces the string
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>"</mo><mi>hello</mi><mi>there</mi><mo>"</mo></mrow></mstyle></math></span>.
+The author of <span class="teletype">String</span> could then assert that <span class="teletype">String</span>
+is a member of <span class="teletype">SemiGroup</span>.
+According to our definition of <span class="teletype">SemiGroup</span>, strings
+would then also have the operation  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>*</mo><mo>*</mo></mrow></mstyle></math> defined automatically.
+Then  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>"</mo><mo>-</mo><mo>-</mo><mo>"</mo><mo>*</mo><mo>*</mo><mn>4</mn></mrow></mstyle></math> would produce a string of eight dashes
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>"</mo><mo>-</mo><mo>-</mo><mo>-</mo><mo>-</mo><mo>-</mo><mo>-</mo><mo>-</mo><mo>-</mo><mo>"</mo></mrow></mstyle></math>.
+Since <span class="teletype">String</span> is a member of <span class="teletype">SemiGroup</span>, it also is
+a member of <span class="teletype">SetCategory</span> and thus has an operation
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mo>=</mo></mstyle></math> for testing that two strings are equal.
+</p>
+
+
+<p>Now turn to the algebraic category hierarchy inside the
+front cover of this book.
+Any domain that is a member of a
+category extending <span class="teletype">SemiGroup</span> is a member of
+<span class="teletype">SemiGroup</span> (that is, it <span class="italic">is</span> a semigroup).
+In particular, any domain asserted to be a <span class="teletype">Ring</span> is a
+semigroup since <span class="teletype">Ring</span> extends <span class="teletype">Monoid</span>, that,
+in turn, extends <span class="teletype">SemiGroup</span>.
+The definition of <span class="teletype">Integer</span> in Axiom asserts that
+<span class="teletype">Integer</span> is a member of category
+<span class="teletype">IntegerNumberSystem</span>, that, in turn, asserts that it is
+a member of <span class="teletype">EuclideanDomain</span>.
+Now <span class="teletype">EuclideanDomain</span> extends
+<span class="teletype">PrincipalIdealDomain</span> and so on.
+If you trace up the hierarchy, you see that
+<span class="teletype">EuclideanDomain</span> extends <span class="teletype">Ring</span>, and,
+therefore, <span class="teletype">SemiGroup</span>.
+Thus <span class="teletype">Integer</span> is a semigroup and also exports the
+operations  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>*</mo><mo>*</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.4.xhtml" style="margin-right: 10px;">Previous Section 12.4 Hierarchies</a><a href="section-12.6.xhtml" style="margin-right: 10px;">Next Section 12.6 Defaults</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.6.xhtml
new file mode 100644
index 0000000..c7bb313
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.6.xhtml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.5.xhtml" style="margin-right: 10px;">Previous Section 12.5 Membership</a><a href="section-12.7.xhtml" style="margin-right: 10px;">Next Section 12.7 Axioms</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.6">
+<h2 class="sectiontitle">12.6  Defaults</h2>
+
+
+<a name="ugCategoriesDefaults" class="label"/>
+
+
+<p>We actually omitted the last <span class="index">category:defaults</span><a name="chapter-12-15"/> part of the
+definition of <span class="index">default definitions</span><a name="chapter-12-16"/> <span class="teletype">SemiGroup</span> in
+<a href="section-12.4.xhtml#ugCategoriesHier" class="ref" >ugCategoriesHier</a> .  Here now
+is its complete Axiom definition.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+SemiGroup():&nbsp;Category&nbsp;==&nbsp;SetCategory&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"*":&nbsp;($,&nbsp;$)&nbsp;-&gt;&nbsp;$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"**":&nbsp;($,&nbsp;PositiveInteger)&nbsp;-&gt;&nbsp;$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;RepeatedSquaring($)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x:&nbsp;$&nbsp;**&nbsp;n:&nbsp;PositiveInteger&nbsp;==&nbsp;expt(x,n)<br />
+</div>
+
+
+
+<p>The  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>add</mi></mstyle></math> part at the end is used to give ``default definitions'' for
+<span class="index">add</span><a name="chapter-12-17"/>
+exported operations.
+Once you have a multiplication operation  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math>, you can
+define exponentiation
+for positive integer exponents
+using repeated multiplication:
+</p>
+
+
+<p> <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>
+</p>
+
+
+<p>This definition for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>*</mo><mo>*</mo></mrow></mstyle></math> is called a <span class="italic">default</span> definition.
+In general, a category can give default definitions for any
+operation it exports.
+Since <span class="teletype">SemiGroup</span> and all its category descendants in the hierarchy
+export  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>*</mo><mo>*</mo></mrow></mstyle></math>, any descendant category may redefine  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>*</mo><mo>*</mo></mrow></mstyle></math> as well.
+</p>
+
+
+<p>A domain of category <span class="teletype">SemiGroup</span>
+(such as <span class="teletype">Integer</span>) may or may not choose to
+define its own  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>*</mo><mo>*</mo></mrow></mstyle></math> operation.
+If it does not, a default definition that is closest (in a ``tree-distance''
+sense of the hierarchy) to the domain is chosen.
+</p>
+
+
+<p>The part of the category definition following an  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>add</mi></mstyle></math> operation
+is a <span class="italic">capsule</span>, as discussed in
+the previous chapter.
+The line
+</p>
+
+
+
+<div class="verbatim"><br />
+import&nbsp;RepeatedSquaring($)<br />
+</div>
+
+
+<p>references the package
+<span class="teletype">RepeatedSquaring($)</span>, that is, the package
+<span class="teletype">RepeatedSquaring</span> that takes ``this domain'' as its
+parameter.
+For example, if the semigroup <span class="teletype">Polynomial (Integer)</span>
+does not define its own exponentiation operation, the
+definition used may come from the package
+<span class="teletype">RepeatedSquaring (Polynomial (Integer))</span>.
+The next line gives the definition in terms of <span style="font-weight: bold;"> expt</span> from that
+package.
+</p>
+
+
+<p>The default definitions are collected to form a ``default
+package'' for the category.
+The name of the package is the same as  the category but with an
+ampersand (<span class="teletype">&amp;</span>) added at the end.
+A default package always takes an additional argument relative to the
+category.
+Here is the definition of the default package <span class="teletype">SemiGroup&amp;</span> as
+automatically generated by Axiom from the above definition of
+<span class="teletype">SemiGroup</span>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+SemiGroup_&amp;($):&nbsp;Exports&nbsp;==&nbsp;Implementation&nbsp;where<br />
+&nbsp;&nbsp;$:&nbsp;SemiGroup<br />
+&nbsp;&nbsp;Exports&nbsp;==&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;"**":&nbsp;($,&nbsp;PositiveInteger)&nbsp;-&gt;&nbsp;$<br />
+&nbsp;&nbsp;Implementation&nbsp;==&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;RepeatedSquaring($)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x:$&nbsp;**&nbsp;n:PositiveInteger&nbsp;==&nbsp;expt(x,n)<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.5.xhtml" style="margin-right: 10px;">Previous Section 12.5 Membership</a><a href="section-12.7.xhtml" style="margin-right: 10px;">Next Section 12.7 Axioms</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.7.xhtml
new file mode 100644
index 0000000..7bf68f8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.7.xhtml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.6.xhtml" style="margin-right: 10px;">Previous Section 12.6 Defaults</a><a href="section-12.8.xhtml" style="margin-right: 10px;">Next Section 12.8 Correctness</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.7">
+<h2 class="sectiontitle">12.7  Axioms</h2>
+
+
+<a name="ugCategoriesAxioms" class="label"/>
+
+
+<p>In the previous section you saw the
+complete Axiom program defining <span class="index">axiom</span><a name="chapter-12-18"/>
+<span class="teletype">SemiGroup</span>.
+According to this definition semigroups are sets with
+the operations <span class="spadopFrom" title="SemiGroup">*</span> and
+<span class="spadopFrom" title="SemiGroup">**</span>.
+<span class="index">SemiGroup</span><a name="chapter-12-19"/>
+</p>
+
+
+<p>You might ask: ``Aside from the notion of default packages, isn't
+a category just a <span class="italic">macro</span>, that is, a shorthand
+equivalent to the two operations  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>*</mo><mo>*</mo></mrow></mstyle></math> with
+their types?'' If a category were a macro, every time you saw the
+word <span class="teletype">SemiGroup</span>, you would rewrite it by its list of
+exported operations.
+Furthermore, every time you saw the exported operations of
+<span class="teletype">SemiGroup</span> among the exports of a constructor, you could
+conclude that the constructor exported <span class="teletype">SemiGroup</span>.
+</p>
+
+
+<p>A category is <span class="italic">not</span> a macro and here is why.
+The definition for <span class="teletype">SemiGroup</span> has documentation that states:
+</p>
+
+
+
+
+<div class="quotation">
+
+
+<p>    Category <span class="teletype">SemiGroup</span> denotes the class of all multiplicative
+    semigroups, that is, a set with an associative operation  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math>.
+</p>
+
+
+<p><span class="teletype">Axioms:</span>
+</p>
+<p>
+ <span class="teletype" style="padding-left: 20px;">associative("*" : ($,$)->$) -- (x*y)*z = x*(y*z)</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>According to the author's remarks, the mere
+exporting of an operation named  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>*</mo><mo>*</mo></mrow></mstyle></math> is not
+enough to qualify the domain as a <span class="teletype">SemiGroup</span>.
+In fact, a domain can be a semigroup only if it explicitly
+exports a  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>*</mo><mo>*</mo></mrow></mstyle></math> and
+a  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math> satisfying the associativity axiom.
+</p>
+
+
+<p>In general, a category name implies a set of axioms, even mathematical
+theorems.
+There are numerous axioms from <span class="teletype">Ring</span>, for example,
+that are well-understood from the literature.
+No attempt is made to list them all.
+Nonetheless, all such mathematical facts are implicit by the use of the
+name <span class="teletype">Ring</span>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.6.xhtml" style="margin-right: 10px;">Previous Section 12.6 Defaults</a><a href="section-12.8.xhtml" style="margin-right: 10px;">Next Section 12.8 Correctness</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.8.xhtml
new file mode 100644
index 0000000..d1ebc93
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.8.xhtml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.7.xhtml" style="margin-right: 10px;">Previous Section 12.7 Axioms</a><a href="section-12.9.xhtml" style="margin-right: 10px;">Next Section 12.9 Attributes</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.8">
+<h2 class="sectiontitle">12.8  Correctness</h2>
+
+
+<a name="ugCategoriesCorrectness" class="label"/>
+
+
+<p>While such statements are only comments,
+<span class="index">correctness</span><a name="chapter-12-20"/>
+Axiom can enforce their intention simply by shifting the burden of
+responsibility onto the author of a domain.
+A domain belongs to category  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Ring</mi></mstyle></math> only if the
+author asserts that the domain  belongs to <span class="teletype">Ring</span> or
+to a category that extends <span class="teletype">Ring</span>.
+</p>
+
+
+<p>This principle of assertion is important for large user-extendable
+systems.
+Axiom has a large library of operations offering facilities in
+many areas.
+Names such as <span style="font-weight: bold;"> norm</span> and <span style="font-weight: bold;"> product</span>, for example, have
+diverse meanings in diverse contexts.
+An inescapable hindrance to users would be to force those who wish to
+extend Axiom to always invent new names for operations.
+ I don't think disambiguate is really a word, though I like it
+Axiom allows you to reuse names, and then use context to disambiguate one
+from another.
+</p>
+
+
+<p>Here is another example of why this is important.
+Some languages, such as <span style="font-weight: bold;"> APL</span>,
+<span class="index">APL</span><a name="chapter-12-21"/>
+denote the <span class="teletype">Boolean</span> constants <span class="teletype">true</span> and
+<span class="teletype">false</span> by the integers  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>.
+You may want to let infix operators  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>+</mo></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math> serve as the logical
+operators <span style="font-weight: bold;"> or</span> and <span style="font-weight: bold;"> and</span>, respectively.
+But note this: <span class="teletype">Boolean</span> is not a ring.
+The <span class="italic">inverse axiom</span> for <span class="teletype">Ring</span> states:
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>Every element  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> has an additive inverse  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> such that
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+</div>
+
+
+
+<p><span class="teletype">Boolean</span> is not a ring since <span class="teletype">true</span> has
+no inverse---there is no inverse element  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> such that
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>a</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math> (in terms of booleans, <span class="teletype">(true or a) = false</span>).
+Nonetheless, Axiom <span class="italic">could</span> easily and correctly implement
+<span class="teletype">Boolean</span> this way.
+<span class="teletype">Boolean</span> simply would not assert that it is of category
+<span class="teletype">Ring</span>.
+Thus the ``<span class="teletype">+</span>'' for <span class="teletype">Boolean</span> values
+is not confused with the one for <span class="teletype">Ring</span>.
+Since the <span class="teletype">Polynomial</span> constructor requires its argument
+to be a ring, Axiom would then refuse to build the
+domain <span class="teletype">Polynomial(Boolean)</span>. Also, Axiom would refuse to
+wrongfully apply algorithms to <span class="teletype">Boolean</span> elements that  presume that the
+ring axioms for ``<span class="teletype">+</span>'' hold.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.7.xhtml" style="margin-right: 10px;">Previous Section 12.7 Axioms</a><a href="section-12.9.xhtml" style="margin-right: 10px;">Next Section 12.9 Attributes</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-12.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-12.9.xhtml
new file mode 100644
index 0000000..6a45701
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-12.9.xhtml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section12.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.8.xhtml" style="margin-right: 10px;">Previous Section 12.8 Correctness</a><a href="section-12.10.xhtml" style="margin-right: 10px;">Next Section 12.10 Parameters</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-12.9">
+<h2 class="sectiontitle">12.9  Attributes</h2>
+
+
+<a name="ugCategoriesAttributes" class="label"/>
+
+
+<p>Most axioms are not computationally useful.
+Those that are can be explicitly expressed by what Axiom calls an
+<span class="italic">attribute</span>.
+The attribute <span style="font-weight: bold;"> commutative("*")</span>, for example, is used to assert
+that a domain has commutative multiplication.
+Its definition is given by its documentation:
+</p>
+
+
+
+
+<div class="quotation">
+
+
+<p>    A domain  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math> has <span style="font-weight: bold;"> commutative("*")</span>
+    if it has an operation "*": (R,R)->R such that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mi>y</mi><mo>=</mo><mi>y</mi><mo>*</mo><mi>x</mi></mrow></mstyle></math>.
+</p>
+
+
+
+</div>
+
+
+
+<p>Just as you can test whether a domain has the category <span class="teletype">Ring</span>, you
+can test that a domain has a given attribute.
+</p>
+
+
+
+<p>Do polynomials over the integers
+have commutative multiplication?
+</p>
+
+
+
+
+<div id="spadComm12-1" class="spadComm" >
+<form id="formComm12-1" action="javascript:makeRequest('12-1');" >
+<input id="comm12-1" type="text" class="command" style="width: 26em;" value='Polynomial Integer has commutative("*")' />
+</form>
+<span id="commSav12-1" class="commSav" >Polynomial Integer has commutative("*")</span>
+<div id="mathAns12-1" ></div>
+</div>
+
+
+
+<p>Do matrices over the integers
+have commutative multiplication?
+</p>
+
+
+
+
+<div id="spadComm12-2" class="spadComm" >
+<form id="formComm12-2" action="javascript:makeRequest('12-2');" >
+<input id="comm12-2" type="text" class="command" style="width: 24em;" value='Matrix Integer has commutative("*")' />
+</form>
+<span id="commSav12-2" class="commSav" >Matrix Integer has commutative("*")</span>
+<div id="mathAns12-2" ></div>
+</div>
+
+
+
+<p>Attributes are used to conditionally export and define operations for
+a domain (see <a href="section-13.3.xhtml#ugDomainsAssertions" class="ref" >ugDomainsAssertions</a> ).  Attributes can also be asserted
+in a category definition.
+</p>
+
+
+<p>After mentioning category <span class="teletype">Ring</span> many times in this book,
+it is high time that we show you its definition:
+<span class="index">Ring</span><a name="chapter-12-22"/>
+</p>
+
+
+
+
+<div class="verbatim"><br />
+Ring():&nbsp;Category&nbsp;==<br />
+&nbsp;&nbsp;Join(Rng,Monoid,LeftModule($:&nbsp;Rng))&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;characteristic:&nbsp;-&gt;&nbsp;NonNegativeInteger<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coerce:&nbsp;Integer&nbsp;-&gt;&nbsp;$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unitsKnown<br />
+&nbsp;&nbsp;&nbsp;&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n:Integer<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coerce(n)&nbsp;==&nbsp;n&nbsp;*&nbsp;1$$<br />
+</div>
+
+
+
+<p>There are only two new things here.
+First, look at the <span class="teletype">$$</span> on the last line.
+This is not a typographic error!
+The first <span class="teletype">$</span> says that the  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> is to come from some
+domain.
+The second <span class="teletype">$</span> says that the domain is ``this domain.''
+If <span class="teletype">$</span> is <span class="teletype">Fraction(Integer)</span>, this line reads <span class="teletype">coerce(n) == n * 1$Fraction(Integer)</span>.
+</p>
+
+
+<p>The second new thing is the presence of attribute `` <math xmlns="&mathml;" mathsize="big"><mstyle><mi>unitsKnown</mi></mstyle></math>''.
+Axiom can always distinguish an attribute from an operation.
+An operation has a name and a type. An attribute has no type.
+The attribute <span style="font-weight: bold;"> unitsKnown</span> asserts a rather subtle mathematical
+fact that is normally taken for granted when working with
+rings.<span class="footnote">With this axiom, the units of a domain are the set of
+elements  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> that each have a multiplicative
+inverse  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> in the domain.
+Thus  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math> are units in domain <span class="teletype">Integer</span>.
+Also, for <span class="teletype">Fraction Integer</span>, the domain of rational numbers,
+all non-zero elements are units.</span>
+Because programs can test for this attribute, Axiom can
+correctly handle rather more complicated mathematical structures (ones
+that are similar to rings but do not have this attribute).
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-12.8.xhtml" style="margin-right: 10px;">Previous Section 12.8 Correctness</a><a href="section-12.10.xhtml" style="margin-right: 10px;">Next Section 12.10 Parameters</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.0.xhtml
new file mode 100644
index 0000000..e830e3e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.0.xhtml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.12.xhtml" style="margin-right: 10px;">Previous Section 12.12  Anonymous Categories</a><a href="section-13.1.xhtml" style="margin-right: 10px;">Next Section 13.1 Domains vs. Packages</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.0">
+<h2 class="sectiontitle">13.0 Domains</h2>
+<a name="ugDomains" class="label"/>
+
+<p>We finally come to the <span class="italic"> domain constructor</span>.
+A few subtle differences between packages and
+domains turn up some interesting issues.
+We first discuss these differences then
+describe the resulting issues by illustrating a program
+for the <span class="teletype"> QuadraticForm</span> constructor.
+After a short example of an algebraic constructor,
+<span class="teletype"> CliffordAlgebra</span>, we show how you use domain constructors to build
+a database query facility.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-12.12.xhtml" style="margin-right: 10px;">Previous Section 12.12  Anonymous Categories</a><a href="section-13.1.xhtml" style="margin-right: 10px;">Next Section 13.1 Domains vs. Packages</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.1.xhtml
new file mode 100644
index 0000000..4ae6be8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.1.xhtml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.0.xhtml" style="margin-right: 10px;">Previous Section 13.0 Domains</a><a href="section-13.2.xhtml" style="margin-right: 10px;">Next Section 13.2 Definitions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.1">
+<h2 class="sectiontitle">13.1  Domains vs. Packages</h2>
+
+
+<a name="ugPackagesDoms" class="label"/>
+
+
+<p>Packages are special cases of domains.
+What is the difference between a package and a domain that is not a
+package?
+By definition, there is only one difference: a domain that is not a package
+has the symbol <span class="teletype">  $</span> appearing
+somewhere among the types of its exported operations.
+The <span class="teletype">  $</span> denotes ``this domain.'' If the <span class="teletype">  $</span>
+appears before the <span class="teletype"> -></span> in the type of a signature, it means
+the operation takes an element from the domain as an argument.
+If it appears after the <span class="teletype"> -></span>, then the operation returns an
+element of the domain.
+</p>
+
+
+<p>If no exported operations mention <span class="teletype">  $</span>, then evidently there is
+nothing of interest to do with the objects of the domain.  You might
+then say that a package is a ``boring'' domain!  But, as you saw in
+Chapter <a href="section-11.0.xhtml#ugPackages" class="ref" >ugPackages</a>, packages are a
+very useful notion indeed.  The exported operations of a package
+depend solely on the parameters to the package constructor and other
+explicit domains.
+</p>
+
+
+<p>To summarize, domain constructors are versatile structures that serve two
+distinct practical purposes:
+Those like <span class="teletype"> Polynomial</span> and <span class="teletype"> List</span>
+describe classes of computational objects;
+others, like <span class="teletype"> SortPackage</span>, describe packages of useful
+operations.
+As in the last chapter, we focus here on the first kind.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.0.xhtml" style="margin-right: 10px;">Previous Section 13.0 Domains</a><a href="section-13.2.xhtml" style="margin-right: 10px;">Next Section 13.2 Definitions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.10.xhtml
new file mode 100644
index 0000000..9d80f24
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.10.xhtml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.9.xhtml" style="margin-right: 10px;">Previous Section 13.9 Defaults</a><a href="section-13.11.xhtml" style="margin-right: 10px;">Next Section 13.11 Short Forms</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.10">
+<h2 class="sectiontitle">13.10  Origins</h2>
+
+
+<a name="ugDomainsOrigins" class="label"/>
+
+
+
+<p>Aside from the notion of where an operation is implemented,
+<span class="index">operation:origin</span><a name="chapter-13-12"/>
+a useful notion is  the <span class="italic"> origin</span> or ``home'' of an operation.
+When an operation (such as
+<span class="spadfunFrom" style="font-weight: bold;">quadraticForm</span><span class="index">quadraticForm</span><a name="chapter-13-13"/><span class="index">QuadraticForm</span><a name="chapter-13-14"/>) is explicitly exported by
+a domain (such as <span class="teletype"> QuadraticForm</span>), you can say that the
+origin of that operation is that domain.
+If an operation is not explicitly exported from a domain, it is inherited
+from, and has as origin, the (closest) category that explicitly exports it.
+The operations <math xmlns="&mathml;" mathsize="big"><mstyle><mo>+</mo></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mo>-</mo></mstyle></math> (from AbelianMonoid) of <span class="teletype"> QuadraticForm</span>,
+for example, are inherited from <span class="teletype"> AbelianMonoid</span>.
+As it turns out, <span class="teletype"> AbelianMonoid</span> is the origin of virtually every
+<span class="teletype"> +</span> operation in Axiom!
+</p>
+
+
+<p>Again, you can use Browse to discover the origins of
+operations.
+From the Browse page on <span class="teletype"> QuadraticForm</span>, click on <span style="font-weight: bold;">
+Operations</span>, then on <span style="font-weight: bold;"> origins</span> at the bottom of the page.
+</p>
+
+
+<p>The origin of the operation is the <span class="italic"> only</span> place where on-line
+documentation is given.
+However, you can re-export an operation to give it special
+documentation.
+Suppose you have just invented the world's fastest algorithm for
+inverting matrices using a particular internal representation for
+matrices.
+If your matrix domain just declares that it exports
+<span class="teletype"> MatrixCategory</span>, it exports the <span style="font-weight: bold;"> inverse</span>
+operation, but the documentation the user gets from Browse is
+the standard one from <span class="teletype"> MatrixCategory</span>.
+To give your version of <span style="font-weight: bold;"> inverse</span> the attention it
+deserves, simply export the operation explicitly with new
+documentation.
+This redundancy gives <span style="font-weight: bold;"> inverse</span> a new origin and tells
+Browse to present your new documentation.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.9.xhtml" style="margin-right: 10px;">Previous Section 13.9 Defaults</a><a href="section-13.11.xhtml" style="margin-right: 10px;">Next Section 13.11 Short Forms</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.11.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.11.xhtml
new file mode 100644
index 0000000..dba3d45
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.11.xhtml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.11</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.10.xhtml" style="margin-right: 10px;">Previous Section 13.10 Origins</a><a href="section-13.12.xhtml" style="margin-right: 10px;">Next Section 13.12 Example 1: Clifford Algebra</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.11">
+<h2 class="sectiontitle">13.11  Short Forms</h2>
+
+
+<a name="ugDomainsShortForms" class="label"/>
+
+
+<p>In Axiom, a domain could be defined using only an add-domain
+and no capsule.
+Although we talk about rational numbers as quotients of integers,
+there is no type <span class="teletype"> RationalNumber</span> in Axiom.
+To create such a type, you could compile the following
+``short-form'' definition:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+RationalNumber()&nbsp;==&nbsp;Fraction(Integer)<br />
+</div>
+
+
+
+<p>The <span class="teletype"> Exports</span> part of this definition is missing and is taken
+to be equivalent to that of <span class="teletype"> Fraction(Integer)</span>.
+Because of the add-domain philosophy, you get precisely
+what you want.
+The effect is to create a little stub of a domain.
+When a user asks to add two rational numbers, Axiom would
+ask <span class="teletype"> RationalNumber</span> for a function implementing this
+<span class="teletype"> +</span>.
+Since the domain has no capsule, the domain then immediately
+sends its request to <span class="teletype"> Fraction (Integer)</span>.
+</p>
+
+
+<p>The short form definition for domains is used to
+define such domains as <span class="teletype"> MultivariatePolynomial</span>:
+<span class="index">MultivariatePolynomial</span><a name="chapter-13-15"/>
+</p>
+
+
+
+
+<div class="verbatim"><br />
+MultivariatePolynomial(vl:&nbsp;List&nbsp;Symbol,&nbsp;R:&nbsp;Ring)&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;SparseMultivariatePolynomial(R,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OrderedVariableList&nbsp;vl)<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.10.xhtml" style="margin-right: 10px;">Previous Section 13.10 Origins</a><a href="section-13.12.xhtml" style="margin-right: 10px;">Next Section 13.12 Example 1: Clifford Algebra</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.12.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.12.xhtml
new file mode 100644
index 0000000..31baf8d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.12.xhtml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.11.xhtml" style="margin-right: 10px;">Previous Section 13.11 Short Forms</a><a href="section-13.13.xhtml" style="margin-right: 10px;">Next Section 13.13 Example 2: Building A Query Facility</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.12">
+<h2 class="sectiontitle">13.12  Example 1: Clifford Algebra</h2>
+
+
+<a name="ugDomainsClifford" class="label"/>
+
+
+
+<p>Now that we have <span class="teletype"> QuadraticForm</span> available,
+let's put it to use.
+Given some quadratic form <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Q</mi></mstyle></math> described by an
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> by <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> matrix over a field <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math>, the domain
+<span class="teletype"> CliffordAlgebra(n, K, Q)</span> defines a vector space of
+dimension <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>2</mn><mi>n</mi></msup></mrow></mstyle></math> over <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math>.
+This is an interesting domain since complex numbers, quaternions,
+exterior algebras and spin algebras are all examples of Clifford
+algebras.
+</p>
+
+
+<p>The basic idea is this:
+the quadratic form <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Q</mi></mstyle></math> defines a basis
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>e</mi><mn>1</mn></msub><mo>,</mo><msub><mi>e</mi><mn>2</mn></msub><mo>&#x2026;</mo><mo>,</mo><msub><mi>e</mi><mi>n</mi></msub></mrow></mstyle></math> for the
+vector space <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>K</mi><mi>n</mi></msup></mrow></mstyle></math>, the direct product of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math>
+with itself <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> times.
+From this, the Clifford algebra generates a basis of
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>2</mn><mi>n</mi></msup></mrow></mstyle></math> elements given by all the possible products
+of the <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>e</mi><mi>i</mi></msub></mrow></mstyle></math> in order without duplicates, that is,
+</p>
+
+
+<p>1,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mstyle></math>,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mstyle></math>,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>e</mi><mn>1</mn></msub><msub><mi>e</mi><mn>2</mn></msub></mrow></mstyle></math>,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>e</mi><mn>3</mn></msub></mrow></mstyle></math>,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>e</mi><mn>1</mn></msub><msub><mi>e</mi><mn>3</mn></msub></mrow></mstyle></math>,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>e</mi><mn>2</mn></msub><msub><mi>e</mi><mn>3</mn></msub></mrow></mstyle></math>,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>e</mi><mn>1</mn></msub><msub><mi>e</mi><mn>2</mn></msub><msub><mi>e</mi><mn>3</mn></msub></mrow></mstyle></math>,
+and so on.
+</p>
+
+
+<p>The algebra is defined by the relations
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><msub><mi>e</mi><mi>i</mi></msub><mo></mo><msub><mi>e</mi><mi>i</mi></msub></mtd><mtd><mo>=</mo></mtd><mtd><mi>Q</mi><mo>(</mo><msub><mi>e</mi><mi>i</mi></msub><mo>)</mo></mtd></mtr><mtr><mtd><msub><mi>e</mi><mi>i</mi></msub><mo></mo><msub><mi>e</mi><mi>j</mi></msub></mtd><mtd><mo>=</mo></mtd><mtd><mo>-</mo><msub><mi>e</mi><mi>j</mi></msub><mo></mo><msub><mi>e</mi><mi>i</mi></msub></mtd><mtd><mtext><mi>for</mi></mtext><mi>i</mi><mo>&#x02260;</mo><mi>j</mi></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+<p>Now look at the snapshot of its definition given below.
+Lines 9-10 show part of the definitions of the
+<span class="teletype"> Exports</span>.  A Clifford algebra over a field <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> is asserted to be
+a ring, an algebra over <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math>, and a vector space over <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math>.  Its
+explicit exports include <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>e</mi><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo></mrow></mstyle></math> which returns the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th unit
+element.
+</p>
+
+
+<a name="figclifalg" class="label"/>
+
+
+
+
+<div class="verbatim"><br />
+NNI&nbsp;==&gt;&nbsp;NonNegativeInteger<br />
+PI&nbsp;&nbsp;==&gt;&nbsp;PositiveInteger<br />
+<br />
+CliffordAlgebra(n,K,q):&nbsp;Exports&nbsp;==&nbsp;Implementation&nbsp;where<br />
+&nbsp;&nbsp;&nbsp;&nbsp;n:&nbsp;PI<br />
+&nbsp;&nbsp;&nbsp;&nbsp;K:&nbsp;Field<br />
+&nbsp;&nbsp;&nbsp;&nbsp;q:&nbsp;QuadraticForm(n,&nbsp;K)<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;Exports&nbsp;==&nbsp;Join(Ring,Algebra(K),VectorSpace(K))&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e:&nbsp;PI&nbsp;-&gt;&nbsp;$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;Implementation&nbsp;==&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Qeelist&nbsp;:=&nbsp;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[q.unitVector(i::PI)&nbsp;for&nbsp;i&nbsp;in&nbsp;1..n]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dim&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;2**n<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:=&nbsp;PrimitiveArray&nbsp;K<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;New&nbsp;==&gt;&nbsp;new(dim,&nbsp;0$K)$Rep<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;+&nbsp;y&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;:=&nbsp;New<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;0..dim-1&nbsp;repeat&nbsp;z.i&nbsp;:=&nbsp;x.i&nbsp;+&nbsp;y.i<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addMonomProd:&nbsp;(K,&nbsp;NNI,&nbsp;K,&nbsp;NNI,&nbsp;$)&nbsp;-&gt;&nbsp;$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addMonomProd(c1,&nbsp;b1,&nbsp;c2,&nbsp;b2,&nbsp;z)&nbsp;==&nbsp;&nbsp;...<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;*&nbsp;y&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;:=&nbsp;New<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;ix&nbsp;in&nbsp;0..dim-1&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;x.ix&nbsp;\notequal{}&nbsp;0&nbsp;then&nbsp;for&nbsp;iy&nbsp;in&nbsp;0..dim-1&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;y.iy&nbsp;\notequal{}&nbsp;0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then&nbsp;addMonomProd(x.ix,ix,y.iy,iy,z)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+</div>
+
+
+<p><div class="caption">Part of the <span class="teletype"> CliffordAlgebra</span> domain.</div>
+</p>
+
+
+
+<p>The <span class="teletype"> Implementation</span> part begins by defining a local variable
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>Qeelist</mi></mstyle></math> to hold the list of all <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>q</mi><mo>.</mo><mi>v</mi></mrow></mstyle></math> where <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math>
+runs over the unit vectors from 1 to the dimension <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>.
+Another local variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>dim</mi></mstyle></math> is set to <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>2</mn><mi>n</mi></msup></mrow></mstyle></math>,
+computed once and for all.
+The representation for the domain is
+<span class="teletype"> PrimitiveArray(K)</span>,
+which is a basic array of elements from domain <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math>.
+Line 18 defines <math xmlns="&mathml;" mathsize="big"><mstyle><mi>New</mi></mstyle></math> as shorthand for the more lengthy
+expression <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>new</mi><mo>(</mo><mi>dim</mi><mo>,</mo><mn>0</mn><mi>$</mi><mi>K</mi><mo>)</mo><mi>$</mi><mi>Rep</mi></mrow></mstyle></math>, which computes a primitive
+array of length <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>2</mn><mi>n</mi></msup></mrow></mstyle></math> filled with <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>'s from
+domain <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math>.
+</p>
+
+
+<p>Lines 19-22 define the sum of two elements <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>
+straightforwardly.
+First, a new array of all <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>'s is created, then filled with
+the sum of the corresponding elements.
+Indexing for primitive arrays starts at 0.
+The definition of the product of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> first requires
+the definition of a local function <span style="font-weight: bold;"> addMonomProd</span>.
+Axiom knows it is local since it is not an exported function.
+The types of all local functions must be declared.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.11.xhtml" style="margin-right: 10px;">Previous Section 13.11 Short Forms</a><a href="section-13.13.xhtml" style="margin-right: 10px;">Next Section 13.13 Example 2: Building A Query Facility</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.13.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.13.xhtml
new file mode 100644
index 0000000..47c82c6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.13.xhtml
@@ -0,0 +1,957 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.13</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.12.xhtml" style="margin-right: 10px;">Previous Section 13.12 Example 1: Clifford Algebra</a><a href="section-14.0.xhtml" style="margin-right: 10px;">Next Section 14.0  Browse</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.13">
+<h2 class="sectiontitle">13.13  Example 2: Building A Query Facility</h2>
+
+
+<a name="ugDomsinsDatabase" class="label"/>
+
+
+<p>We now turn to an entirely different kind of application,
+building a query language for a database.
+</p>
+
+
+<p>Here is the practical problem to solve.
+The Browse facility of Axiom has a
+database for all operations and constructors which is
+stored on disk and accessed by HyperDoc.
+For our purposes here, we regard each line of this file as having
+eight fields:
+<span class="teletype"> class, name, type, nargs, exposed, kind, origin,</span> and <span class="teletype"> condition.</span>
+Here is an example entry:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+o`determinant`$-&gt;R`1`x`d`Matrix(R)`has(R,commutative("*"))<br />
+</div>
+
+
+
+<p>In English, the entry means:
+</p>
+
+
+
+<div class="quotation">
+The operation <span style="font-weight: bold;"> determinant</span>:  $->R with <span class="italic"> 1</span> argument, is
+<span class="italic"> exposed</span> and is exported by <span class="italic"> domain</span> <span class="teletype"> Matrix(R)</span>
+if <span class="teletype"> R has commutative("*")</span>.
+</div>
+
+
+
+<p>Our task is to create a little query language that allows us
+to get useful information from this database.
+</p>
+
+
+
+<a name="subsec-13.13.1"/>
+<div class="subsection"  id="subsec-13.13.1">
+<h3 class="subsectitle">13.13.1  A Little Query Language</h3>
+
+
+<a name="ugDomainsQueryLanguage" class="label"/>
+
+
+<p>First we design a simple language for accessing information from
+the database.
+We have the following simple model in mind for its design.
+Think of the database as a box of index cards.
+There is only one search operation---it
+takes the name of a field and a predicate
+<span class="index">predicate</span><a name="chapter-13-16"/>
+(a boolean-valued function) defined on the fields of the
+index cards.
+When applied, the search operation goes through the entire box
+selecting only those index cards for which the predicate is <span class="teletype"> true</span>.
+The result of a search is a new box of index cards.
+This process can be repeated again and again.
+</p>
+
+
+<p>The predicates all have a particularly simple form: <span class="italic"> symbol</span>
+<span class="teletype"> =</span> <span class="italic"> pattern</span>, where <span class="italic"> symbol</span> designates one of the
+fields, and <span class="italic"> pattern</span> is a ``search string''---a string
+that may contain a ``<span class="teletype"> *</span>'' as a
+wildcard.
+Wildcards match any substring, including the empty string.
+Thus the pattern ``<span class="teletype"> "*ma*t</span>'' matches
+``<span class="teletype"> "mat"</span>,''<span class="teletype"> doormat</span>'' and ``<span class="teletype"> smart</span>''.
+</p>
+
+
+<p>To illustrate how queries are given, we give you a sneak preview
+of the facility we are about to create.
+</p>
+
+
+<p>Extract the database of all Axiom operations.
+</p>
+
+
+
+
+<div id="spadComm13-8">
+<form action="javascript:makeRequest('13-8');" >
+<input id="comm13-8" type="text" name="command" style="width: 12em;" value='ops := getDatabase("o")' />
+</form>
+<div id="mathAns13-8" >
+</div>
+</div>
+
+
+
+<p>How many exposed three-argument <span style="font-weight: bold;"> map</span> operations involving streams?
+</p>
+
+
+
+
+<div id="spadComm13-9">
+<form action="javascript:makeRequest('13-9');" >
+<input id="comm13-9" type="text" name="command" style="width: 23em;" value='ops.(name="map").(nargs="3").(type="*Stream*")' />
+</form>
+<div id="mathAns13-9" >
+</div>
+</div>
+
+
+
+<p>As usual, the arguments of <span style="font-weight: bold;"> elt</span> (<span class="teletype"> .</span>)
+associate to the left.
+The first <span style="font-weight: bold;"> elt</span> produces the set of all operations with
+name <span class="teletype"> map</span>.
+The second <span style="font-weight: bold;"> elt</span> produces the set of all map operations
+with three arguments.
+The third <span style="font-weight: bold;"> elt</span> produces the set of all three-argument map
+operations having a type mentioning <span class="teletype"> Stream</span>.
+</p>
+
+
+<p>Another thing we'd like to do is to extract one field from each of
+the index cards in the box and look at the result.
+Here is an example of that kind of request.
+</p>
+
+
+<p>What constructors explicitly export a <span style="font-weight: bold;"> determinant</span> operation?
+</p>
+
+
+
+
+<div id="spadComm13-10">
+<form action="javascript:makeRequest('13-10');" >
+<input id="comm13-10" type="text" name="command" style="width: 31em;" value='elt(elt(elt(elt(ops,name="determinant"),origin),sort),unique)' />
+</form>
+<div id="mathAns13-10" >
+</div>
+</div>
+
+
+
+<p>The first <span style="font-weight: bold;"> elt</span> produces the set of all index cards with
+name <span class="teletype"> determinant</span>.
+The second <span style="font-weight: bold;"> elt</span> extracts the <span class="teletype"> origin</span> component from
+each index card. Each origin component
+is the name of a constructor which directly
+exports the operation represented by the index card.
+Extracting a component from each index card produces what we call
+a <span class="italic"> datalist</span>.
+The third <span style="font-weight: bold;"> elt</span>, <span class="teletype"> sort</span>, causes the datalist of
+origins to be sorted in alphabetic
+order.
+The fourth, <span class="teletype"> unique</span>, causes duplicates to be removed.
+</p>
+
+
+<p>Before giving you a more extensive demo of this facility,
+we now build the necessary domains and packages to implement it.
+We will introduce a few of our minor conveniences.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-13.13.2"/>
+<div class="subsection"  id="subsec-13.13.2">
+<h3 class="subsectitle">13.13.2  The Database Constructor</h3>
+
+
+<a name="ugDomainsDatabaseConstructor" class="label"/>
+
+
+<p>We work from the top down. First, we define a database,
+our box of index cards, as an abstract datatype.
+For sake of illustration and generality,
+we assume that an index card is some type <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math>, and
+that a database is a box of objects of type <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math>.
+Here is the Axiom program defining the <span class="teletype"> Database</span>
+domain.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+PI&nbsp;==&gt;&nbsp;PositiveInteger<br />
+Database(S):&nbsp;Exports&nbsp;==&nbsp;Implementation&nbsp;where<br />
+&nbsp;&nbsp;S:&nbsp;Object&nbsp;with&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt:&nbsp;(&nbsp;$,&nbsp;Symbol)&nbsp;-&gt;&nbsp;String<br />
+&nbsp;&nbsp;&nbsp;&nbsp;display:&nbsp;&nbsp;$&nbsp;-&gt;&nbsp;Void<br />
+&nbsp;&nbsp;&nbsp;&nbsp;fullDisplay:&nbsp;&nbsp;$&nbsp;-&gt;&nbsp;Void<br />
+<br />
+&nbsp;&nbsp;Exports&nbsp;==&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt:&nbsp;(&nbsp;$,QueryEquation)&nbsp;-&gt;&nbsp;&nbsp;$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select&nbsp;by&nbsp;an&nbsp;equation<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt:&nbsp;(&nbsp;$,&nbsp;Symbol)&nbsp;-&gt;&nbsp;DataList&nbsp;String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select&nbsp;by&nbsp;a&nbsp;field&nbsp;name<br />
+&nbsp;&nbsp;&nbsp;&nbsp;"+":&nbsp;(&nbsp;$,&nbsp;$)&nbsp;-&gt;&nbsp;&nbsp;$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Combine&nbsp;two&nbsp;databases<br />
+&nbsp;&nbsp;&nbsp;&nbsp;"-":&nbsp;(&nbsp;$,&nbsp;$)&nbsp;-&gt;&nbsp;&nbsp;$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subtract&nbsp;one&nbsp;from&nbsp;another<br />
+&nbsp;&nbsp;&nbsp;&nbsp;display:&nbsp;&nbsp;$&nbsp;-&gt;&nbsp;Void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;brief&nbsp;database&nbsp;display<br />
+&nbsp;&nbsp;&nbsp;&nbsp;fullDisplay:&nbsp;&nbsp;$&nbsp;-&gt;&nbsp;Void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;full&nbsp;database&nbsp;display<br />
+&nbsp;&nbsp;&nbsp;&nbsp;fullDisplay:&nbsp;(&nbsp;$,PI,PI)&nbsp;-&gt;&nbsp;Void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;selective&nbsp;display<br />
+&nbsp;&nbsp;&nbsp;&nbsp;coerce:&nbsp;&nbsp;$&nbsp;-&gt;&nbsp;OutputForm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display&nbsp;a&nbsp;database<br />
+&nbsp;&nbsp;Implementation&nbsp;==&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+</div>
+
+
+
+<p>The domain constructor takes a parameter <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math>, which
+stands for the class of index cards.
+We describe an index card later.
+Here think of an index card as a string which has
+the eight fields mentioned above.
+</p>
+
+
+<p>First we tell Axiom what operations we are going to require
+from index cards.
+We need an <span style="font-weight: bold;"> elt</span> to extract the contents of a field
+(such as <span class="teletype"> name</span> and <span class="teletype"> type</span>) as a string.
+For example,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>c</mi><mo>.</mo><mi>name</mi></mrow></mstyle></math> returns a string that is the content of the
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>name</mi></mstyle></math> field on the index card <math xmlns="&mathml;" mathsize="big"><mstyle><mi>c</mi></mstyle></math>.
+We need to display an index card in two ways:
+<span style="font-weight: bold;"> display</span> shows only the name and type of an
+operation;
+<span style="font-weight: bold;"> fullDisplay</span> displays all fields.
+The display operations return no useful information and thus have
+return type <span class="teletype"> Void</span>.
+</p>
+
+
+<p>Next we tell Axiom what operations the user can apply
+to the database.
+This part defines our little query language.
+The most important operation is
+<span class="teletype"> db . field = pattern</span> which
+returns a new database, consisting of all index
+cards of <span class="teletype"> db</span> such that the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>field</mi></mstyle></math> part of the index
+card is matched by the string pattern called <math xmlns="&mathml;" mathsize="big"><mstyle><mi>pattern</mi></mstyle></math>.
+The expression <span class="teletype"> field = pattern</span> is an object of type
+<span class="teletype"> QueryEquation</span> (defined in the next section).
+</p>
+
+
+<p>Another <span style="font-weight: bold;"> elt</span> is needed to produce a <span class="teletype"> DataList</span>
+object.
+Operation <span class="teletype"> +</span> is to merge two databases together;
+<span class="teletype"> -</span> is used to subtract away common entries in a second
+database from an initial database.
+There are three display functions.
+The <span style="font-weight: bold;"> fullDisplay</span> function has two versions: one
+that prints all the records, the other that prints only a fixed
+number of records.
+A <span style="font-weight: bold;"> coerce</span> to <span class="teletype"> OutputForm</span> creates a display
+object.
+</p>
+
+
+<p>The <span class="teletype"> Implementation</span> part of <span class="teletype"> Database</span> is straightforward.
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;Implementation&nbsp;==&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;s:&nbsp;Symbol<br />
+&nbsp;&nbsp;&nbsp;&nbsp;Rep&nbsp;:=&nbsp;List&nbsp;S<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt(db,equation)&nbsp;==&nbsp;...<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt(db,key)&nbsp;==&nbsp;[x.key&nbsp;for&nbsp;x&nbsp;in&nbsp;db]::DataList(String)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;display(db)&nbsp;==&nbsp;&nbsp;for&nbsp;x&nbsp;in&nbsp;db&nbsp;repeat&nbsp;display&nbsp;x<br />
+&nbsp;&nbsp;&nbsp;&nbsp;fullDisplay(db)&nbsp;==&nbsp;for&nbsp;x&nbsp;in&nbsp;db&nbsp;repeat&nbsp;fullDisplay&nbsp;x<br />
+&nbsp;&nbsp;&nbsp;&nbsp;fullDisplay(db,&nbsp;n,&nbsp;m)&nbsp;==&nbsp;for&nbsp;x&nbsp;in&nbsp;db&nbsp;for&nbsp;i&nbsp;in&nbsp;1..m<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;=&nbsp;n&nbsp;then&nbsp;fullDisplay&nbsp;x<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x+y&nbsp;==&nbsp;removeDuplicates!&nbsp;merge(x,y)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x-y&nbsp;==&nbsp;mergeDifference(copy(x::Rep),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y::Rep)$MergeThing(S)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;coerce(db):&nbsp;OutputForm&nbsp;==&nbsp;(#db)::&nbsp;OutputForm<br />
+</div>
+
+
+
+<p>The database is represented by a list of elements of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math> (index cards).
+We leave the definition of the first <span style="font-weight: bold;"> elt</span> operation
+(on line 4) until the next section.
+The second <span style="font-weight: bold;"> elt</span> collects all the strings with field name
+<span class="italic"> key</span> into a list.
+The <span style="font-weight: bold;"> display</span> function and first <span style="font-weight: bold;"> fullDisplay</span> function
+simply call the corresponding functions from <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math>.
+The second <span style="font-weight: bold;"> fullDisplay</span> function provides an efficient way of
+printing out a portion of a large list.
+The <span class="teletype"> +</span> is defined by using the existing
+<span class="spadfunFrom" style="font-weight: bold;">merge</span><span class="index">merge</span><a name="chapter-13-17"/><span class="index">List</span><a name="chapter-13-18"/> operation defined on lists, then
+removing duplicates from the result.
+The <span class="teletype"> -</span> operation requires writing a corresponding
+subtraction operation.
+A package <span class="teletype"> MergeThing</span> (not shown) provides this.
+</p>
+
+
+<p>The <span style="font-weight: bold;"> coerce</span> function converts the database to an
+<span class="teletype"> OutputForm</span> by computing the number of index cards.
+This is a good example of the independence of
+the representation of an Axiom object from how it presents
+itself to the user. We usually do not want to look at a database---but
+do care how many ``hits'' we get for a given query.
+So we define the output representation of a database to be simply
+the number of index cards our query finds.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-13.13.3"/>
+<div class="subsection"  id="subsec-13.13.3">
+<h3 class="subsectitle">13.13.3  Query Equations</h3>
+
+
+<a name="ugDomainsQueryEquations" class="label"/>
+
+
+<p>The predicate for our search is given by an object of type
+<span class="teletype"> QueryEquation</span>.
+Axiom does not have such an object yet so we
+have to invent it.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+QueryEquation():&nbsp;Exports&nbsp;==&nbsp;Implementation&nbsp;where<br />
+&nbsp;&nbsp;Exports&nbsp;==&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;equation:&nbsp;(Symbol,&nbsp;String)&nbsp;-&gt;&nbsp;&nbsp;$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;variable:&nbsp;&nbsp;$&nbsp;-&gt;&nbsp;Symbol<br />
+&nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$&nbsp;-&gt;&nbsp;String<br />
+<br />
+&nbsp;&nbsp;Implementation&nbsp;==&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;Rep&nbsp;:=&nbsp;Record(var:Symbol,&nbsp;val:String)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;equation(x,&nbsp;s)&nbsp;==&nbsp;[x,&nbsp;s]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;variable&nbsp;q&nbsp;==&nbsp;q.var<br />
+&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;&nbsp;&nbsp;&nbsp;q&nbsp;==&nbsp;q.val<br />
+</div>
+
+
+
+<p>Axiom converts an input expression of the form
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mrow><mtext mathvariant='sans-serif-italic'>a</mtext></mrow><mo>=</mo><mrow><mtext mathvariant='sans-serif-italic'>b</mtext></mrow></mrow></mstyle></math> to <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>equation</mi><mo>(</mo><mrow><mtext mathvariant='sans-serif-italic'>a,b</mtext></mrow><mo>)</mo></mrow></mstyle></math>.
+Our equations always have a symbol on the left and a string
+on the right.
+The <span class="teletype"> Exports</span> part thus specifies an operation
+<span style="font-weight: bold;"> equation</span> to create a query equation, and
+<span style="font-weight: bold;"> variable</span> and <span style="font-weight: bold;"> value</span> to select the left- and
+right-hand sides.
+The <span class="teletype"> Implementation</span> part uses <span class="teletype"> Record</span> for a
+space-efficient representation of an equation.
+</p>
+
+
+<p>Here is the missing definition for the <span style="font-weight: bold;"> elt</span> function of
+<span class="teletype"> Database</span> in the last section:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt(db,eq)&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field&nbsp;&nbsp;:=&nbsp;variable&nbsp;eq<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;:=&nbsp;value&nbsp;eq<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[x&nbsp;for&nbsp;x&nbsp;in&nbsp;db&nbsp;|&nbsp;matches?(value,x.field)]<br />
+</div>
+
+
+
+<p>Recall that a database is represented by a list.
+Line 4 simply runs over that list collecting all elements
+such that the pattern (that is, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>value</mi></mstyle></math>)
+matches the selected field of the element.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-13.13.4"/>
+<div class="subsection"  id="subsec-13.13.4">
+<h3 class="subsectitle">13.13.4  DataLists</h3>
+
+
+<a name="ugDomainsDataLists" class="label"/>
+
+
+<p>Type <span class="teletype"> DataList</span> is a new type invented to hold the result
+of selecting one field from each of the index cards in the box.
+It is useful to make datalists extensions of lists---lists that
+have special <span style="font-weight: bold;"> elt</span> operations defined on them for
+sorting and removing duplicates.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+DataList(S:OrderedSet)&nbsp;:&nbsp;Exports&nbsp;==&nbsp;Implementation&nbsp;where<br />
+&nbsp;&nbsp;Exports&nbsp;==&nbsp;ListAggregate(S)&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt:&nbsp;($,"unique")&nbsp;-&gt;&nbsp;$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt:&nbsp;($,"sort")&nbsp;-&gt;&nbsp;$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt:&nbsp;($,"count")&nbsp;-&gt;&nbsp;NonNegativeInteger<br />
+&nbsp;&nbsp;&nbsp;&nbsp;coerce:&nbsp;List&nbsp;S&nbsp;-&gt;&nbsp;$<br />
+<br />
+&nbsp;&nbsp;Implementation&nbsp;==&nbsp;&nbsp;List(S)&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;Rep&nbsp;:=&nbsp;List&nbsp;S<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt(x,"unique")&nbsp;==&nbsp;removeDuplicates(x)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt(x,"sort")&nbsp;==&nbsp;sort(x)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt(x,"count")&nbsp;==&nbsp;#x<br />
+&nbsp;&nbsp;&nbsp;&nbsp;coerce(x:List&nbsp;S)&nbsp;==&nbsp;x&nbsp;::&nbsp;$<br />
+</div>
+
+
+
+<p>The <span class="teletype"> Exports</span> part asserts that datalists belong to the
+category <span class="teletype"> ListAggregate</span>.
+Therefore, you can use all the usual list operations on datalists,
+such as <span class="spadfunFrom" style="font-weight: bold;">first</span><span class="index">first</span><a name="chapter-13-19"/><span class="index">List</span><a name="chapter-13-20"/>, <span class="spadfunFrom" style="font-weight: bold;">rest</span><span class="index">rest</span><a name="chapter-13-21"/><span class="index">List</span><a name="chapter-13-22"/>, and
+<span class="spadfunFrom" style="font-weight: bold;">concat</span><span class="index">concat</span><a name="chapter-13-23"/><span class="index">List</span><a name="chapter-13-24"/>.
+In addition, datalists have four explicit operations.
+Besides the three <span style="font-weight: bold;"> elt</span> operations, there is a
+<span style="font-weight: bold;"> coerce</span> operation that creates datalists from lists.
+</p>
+
+
+<p>The <span class="teletype"> Implementation</span> part needs only to define four functions.
+All the rest are obtained from <span class="teletype"> List(S)</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-13.13.5"/>
+<div class="subsection"  id="subsec-13.13.5">
+<h3 class="subsectitle">13.13.5  Index Cards</h3>
+
+
+<a name="ugDomainsDatabase" class="label"/>
+
+
+<p>An index card comes from a file as one long string.
+We define functions that extract substrings from the long
+string.
+Each field has a name that
+is passed as a second argument to <span style="font-weight: bold;"> elt</span>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+IndexCard()&nbsp;==&nbsp;Implementation&nbsp;where<br />
+&nbsp;&nbsp;Exports&nbsp;==&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;elt:&nbsp;($,&nbsp;Symbol)&nbsp;-&gt;&nbsp;String<br />
+&nbsp;&nbsp;&nbsp;&nbsp;display:&nbsp;$&nbsp;-&gt;&nbsp;Void<br />
+&nbsp;&nbsp;&nbsp;&nbsp;fullDisplay:&nbsp;$&nbsp;-&gt;&nbsp;Void<br />
+&nbsp;&nbsp;&nbsp;&nbsp;coerce:&nbsp;String&nbsp;-&gt;&nbsp;$<br />
+&nbsp;&nbsp;Implementation&nbsp;==&nbsp;String&nbsp;add&nbsp;...<br />
+</div>
+
+
+
+<p>We leave the <span class="teletype"> Implementation</span> part to the reader.
+All operations involve straightforward string manipulations.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-13.13.6"/>
+<div class="subsection"  id="subsec-13.13.6">
+<h3 class="subsectitle">13.13.6  Creating a Database</h3>
+
+
+<a name="ugDomainsCreating" class="label"/>
+
+
+<p>We must not forget one important operation: one that builds the database in the
+first place!
+We'll name it <span style="font-weight: bold;"> getDatabase</span> and put it in a package.
+This function is implemented by calling the Common Lisp function
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>getBrowseDatabase</mi><mo>(</mo><mi>s</mi><mo>)</mo></mrow></mstyle></math> to get appropriate information from
+Browse.
+This operation takes a string indicating which lines you
+want from the database: ``<span class="teletype"> o</span>'' gives you all operation
+lines, and ``<span class="teletype"> k</span>'', all constructor lines.
+Similarly, ``<span class="teletype"> c</span>'', ``<span class="teletype"> d</span>'', and ``<span class="teletype"> p</span>'' give
+you all category, domain and package lines respectively.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+OperationsQuery():&nbsp;Exports&nbsp;==&nbsp;Implementation&nbsp;where<br />
+&nbsp;&nbsp;Exports&nbsp;==&nbsp;with<br />
+&nbsp;&nbsp;&nbsp;&nbsp;getDatabase:&nbsp;String&nbsp;-&gt;&nbsp;Database(IndexCard)<br />
+<br />
+&nbsp;&nbsp;Implementation&nbsp;==&nbsp;add<br />
+&nbsp;&nbsp;&nbsp;&nbsp;getDatabase(s)&nbsp;==&nbsp;getBrowseDatabase(s)$Lisp<br />
+</div>
+
+
+
+<p>We do not bother creating a special name for databases of index
+cards.
+<span class="teletype"> Database (IndexCard)</span> will do.
+Notice that we used the package <span class="teletype"> OperationsQuery</span> to
+create, in effect,
+a new kind of domain: <span class="teletype"> Database(IndexCard)</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-13.13.7"/>
+<div class="subsection"  id="subsec-13.13.7">
+<h3 class="subsectitle">13.13.7  Putting It All Together</h3>
+
+
+<a name="ugDomainsPutting" class="label"/>
+
+
+<p>To create the database facility, you put all these constructors
+into one file.<span class="footnote">You could use separate files, but we
+are putting them all together because, organizationally, that is
+the logical thing to do.</span>
+At the top of the file put <span class="teletype"> )abbrev</span> commands, giving the
+constructor abbreviations you created.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)abbrev&nbsp;domain&nbsp;&nbsp;ICARD&nbsp;&nbsp;&nbsp;IndexCard<br />
+)abbrev&nbsp;domain&nbsp;&nbsp;QEQUAT&nbsp;&nbsp;QueryEquation<br />
+)abbrev&nbsp;domain&nbsp;&nbsp;MTHING&nbsp;&nbsp;MergeThing<br />
+)abbrev&nbsp;domain&nbsp;&nbsp;DLIST&nbsp;&nbsp;&nbsp;DataList<br />
+)abbrev&nbsp;domain&nbsp;&nbsp;DBASE&nbsp;&nbsp;&nbsp;Database<br />
+)abbrev&nbsp;package&nbsp;OPQUERY&nbsp;OperationsQuery<br />
+</div>
+
+
+
+<p>With all this in <span style="font-weight: bold;"> alql.spad</span>, for example, compile it using
+<span class="index">compile</span><a name="chapter-13-25"/>
+</p>
+
+
+
+<div class="verbatim"><br />
+)compile&nbsp;alql<br />
+</div>
+
+
+<p>and then load each of the constructors:
+</p>
+
+
+
+<div class="verbatim"><br />
+)load&nbsp;ICARD&nbsp;QEQUAT&nbsp;MTHING&nbsp;DLIST&nbsp;DBASE&nbsp;OPQUERY<br />
+</div>
+
+
+<p><span class="index">load</span><a name="chapter-13-26"/>
+You are ready to try some sample queries.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-13.13.8"/>
+<div class="subsection"  id="subsec-13.13.8">
+<h3 class="subsectitle">13.13.8  Example Queries</h3>
+
+
+<a name="ugDomainsExamples" class="label"/>
+
+
+<p>Our first set of queries give some statistics on constructors in
+the current Axiom system.
+</p>
+
+
+<p>How many constructors does Axiom have?
+</p>
+
+
+
+
+<div id="spadComm13-11">
+<form action="javascript:makeRequest('13-11');" >
+<input id="comm13-11" type="text" name="command" style="width: 11em;" value='ks := getDatabase "k"' />
+</form>
+<div id="mathAns13-11" >
+</div>
+</div>
+
+
+
+<p>Break this down into the number of categories, domains, and packages.
+</p>
+
+
+
+
+<div id="spadComm13-12">
+<form action="javascript:makeRequest('13-12');" >
+<input id="comm13-12" type="text" name="command" style="width: 19em;" value='[ks.(kind=k) for k in ["c","d","p"] ]' />
+</form>
+<div id="mathAns13-12" >
+</div>
+</div>
+
+
+
+<p>What are all the domain constructors that take no parameters?
+</p>
+
+
+
+
+<div id="spadComm13-13">
+<form action="javascript:makeRequest('13-13');" >
+<input id="comm13-13" type="text" name="command" style="width: 18em;" value='elt(ks.(kind="d").(nargs="0"),name)' />
+</form>
+<div id="mathAns13-13" >
+</div>
+</div>
+
+
+
+<p>How many constructors have ``Matrix'' in their name?
+</p>
+
+
+
+
+<div id="spadComm13-14">
+<form action="javascript:makeRequest('13-14');" >
+<input id="comm13-14" type="text" name="command" style="width: 13em;" value='mk := ks.(name="*Matrix*")' />
+</form>
+<div id="mathAns13-14" >
+</div>
+</div>
+
+
+
+<p>What are the names of those that are domains?
+</p>
+
+
+
+
+<div id="spadComm13-15">
+<form action="javascript:makeRequest('13-15');" >
+<input id="comm13-15" type="text" name="command" style="width: 12em;" value='elt(mk.(kind="d"),name)' />
+</form>
+<div id="mathAns13-15" >
+</div>
+</div>
+
+
+
+<p>How many operations are there in the library?
+</p>
+
+
+
+
+<div id="spadComm13-16">
+<form action="javascript:makeRequest('13-16');" >
+<input id="comm13-16" type="text" name="command" style="width: 10em;" value='o := getDatabase "o"' />
+</form>
+<div id="mathAns13-16" >
+</div>
+</div>
+
+
+
+<p>Break this down into categories, domains, and packages.
+</p>
+
+
+
+
+<div id="spadComm13-17">
+<form action="javascript:makeRequest('13-17');" >
+<input id="comm13-17" type="text" name="command" style="width: 18em;" value='[o.(kind=k) for k in ["c","d","p"] ]' />
+</form>
+<div id="mathAns13-17" >
+</div>
+</div>
+
+
+
+
+<p>The query language is helpful in getting information about a
+particular operation you might like to apply.
+While this information can be obtained with
+Browse, the use of the query database gives you data that you
+can manipulate in the workspace.
+</p>
+
+
+<p>How many operations have ``eigen'' in the name?
+</p>
+
+
+
+
+<div id="spadComm13-18">
+<form action="javascript:makeRequest('13-18');" >
+<input id="comm13-18" type="text" name="command" style="width: 14em;" value='eigens := o.(name="*eigen*")' />
+</form>
+<div id="mathAns13-18" >
+</div>
+</div>
+
+
+
+<p>What are their names?
+</p>
+
+
+
+
+<div id="spadComm13-19">
+<form action="javascript:makeRequest('13-19');" >
+<input id="comm13-19" type="text" name="command" style="width: 8em;" value='elt(eigens,name)' />
+</form>
+<div id="mathAns13-19" >
+</div>
+</div>
+
+
+
+<p>Where do they come from?
+</p>
+
+
+
+
+<div id="spadComm13-20">
+<form action="javascript:makeRequest('13-20');" >
+<input id="comm13-20" type="text" name="command" style="width: 21em;" value='elt(elt(elt(eigens,origin),sort),unique) ' />
+</form>
+<div id="mathAns13-20" >
+</div>
+</div>
+
+
+
+<p>The operations <span class="teletype"> +</span> and <span class="teletype"> -</span> are useful for
+constructing small databases and combining them.
+However, remember that the only matching you can do is string
+matching.
+Thus a pattern such as <span class="teletype"> "*Matrix*"</span> on the type field
+matches
+any type containing <span class="teletype"> Matrix</span>, <span class="teletype"> MatrixCategory</span>,
+<span class="teletype"> SquareMatrix</span>, and so on.
+</p>
+
+
+<p>How many operations mention ``Matrix'' in their type?
+</p>
+
+
+
+
+<div id="spadComm13-21">
+<form action="javascript:makeRequest('13-21');" >
+<input id="comm13-21" type="text" name="command" style="width: 13em;" value='tm := o.(type="*Matrix*")' />
+</form>
+<div id="mathAns13-21" >
+</div>
+</div>
+
+
+
+<p>How many operations come from constructors with ``Matrix'' in
+their name?
+</p>
+
+
+
+
+<div id="spadComm13-22">
+<form action="javascript:makeRequest('13-22');" >
+<input id="comm13-22" type="text" name="command" style="width: 14em;" value='fm := o.(origin="*Matrix*")' />
+</form>
+<div id="mathAns13-22" >
+</div>
+</div>
+
+
+
+<p>How many operations are in <math xmlns="&mathml;" mathsize="big"><mstyle><mi>fm</mi></mstyle></math> but not in <math xmlns="&mathml;" mathsize="big"><mstyle><mi>tm</mi></mstyle></math>?
+</p>
+
+
+
+
+<div id="spadComm13-23">
+<form action="javascript:makeRequest('13-23');" >
+<input id="comm13-23" type="text" name="command" style="width: 3em;" value='fm-tm ' />
+</form>
+<div id="mathAns13-23" >
+</div>
+</div>
+
+
+
+<p>Display the operations that both mention ``Matrix'' in their type
+and come from a constructor having ``Matrix'' in their name.
+</p>
+
+
+
+
+<div id="spadComm13-24">
+<form action="javascript:makeRequest('13-24');" >
+<input id="comm13-24" type="text" name="command" style="width: 10em;" value='fullDisplay(fm-%) ' />
+</form>
+<div id="mathAns13-24" >
+</div>
+</div>
+
+
+
+<p>How many operations involve matrices?
+</p>
+
+
+
+
+<div id="spadComm13-25">
+<form action="javascript:makeRequest('13-25');" >
+<input id="comm13-25" type="text" name="command" style="width: 6em;" value='m := tm+fm ' />
+</form>
+<div id="mathAns13-25" >
+</div>
+</div>
+
+
+
+<p>Display 4 of them.
+</p>
+
+
+
+
+<div id="spadComm13-26">
+<form action="javascript:makeRequest('13-26');" >
+<input id="comm13-26" type="text" name="command" style="width: 13em;" value='fullDisplay(m, 202, 205) ' />
+</form>
+<div id="mathAns13-26" >
+</div>
+</div>
+
+
+
+<p>How many distinct names of operations involving matrices are there?
+</p>
+
+
+
+
+<div id="spadComm13-27">
+<form action="javascript:makeRequest('13-27');" >
+<input id="comm13-27" type="text" name="command" style="width: 18em;" value='elt(elt(elt(m,name),unique),count) ' />
+</form>
+<div id="mathAns13-27" >
+</div>
+</div>
+
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.12.xhtml" style="margin-right: 10px;">Previous Section 13.12 Example 1: Clifford Algebra</a><a href="section-14.0.xhtml" style="margin-right: 10px;">Next Section 14.0  Browse</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.2.xhtml
new file mode 100644
index 0000000..915a140
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.2.xhtml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.1.xhtml" style="margin-right: 10px;">Previous Section 13.1 Domains vs. Packages</a><a href="section-13.3.xhtml" style="margin-right: 10px;">Next Section 13.3 Category Assertions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.2">
+<h2 class="sectiontitle">13.2  Definitions</h2>
+
+
+<a name="ugDomainsDefs" class="label"/>
+
+
+
+<p>The syntax for defining a domain constructor is the same as for any
+function in Axiom:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+<span class="teletype"> <span class="italic"> DomainForm</span> : <span class="italic"> Exports</span> == <span class="italic"> Implementation</span></span>
+</div>
+
+
+<p>As this definition usually extends over many lines, a
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>where</mi></mstyle></math> expression is generally used instead.
+<span class="index">where</span><a name="chapter-13-0"/>
+</p>
+
+
+<p>A recommended format for the definition of a domain is:<br />
+</p>
+
+
+
+<p><span class="teletype">
+<span class="italic"> DomainForm</span> : Exports  ==  Implementation where <br />
+<span class="hspace75pc"><span class="italic"> optional type declarations</span></span> <br />
+<span class="hspace75pc">Exports  ==  [<span class="italic"> Category Assertions</span>] with</span> <br />
+<span class="hspace200pc"><span class="italic"> list of exported operations</span></span> <br />
+<span class="hspace75pc">Implementation  ==  [<span class="italic"> Add Domain</span>] add</span> <br />
+<span class="hspace200pc">[Rep := <span class="italic"> Representation</span>]</span> <br />
+<span class="hspace200pc"><span class="italic"> list of function definitions for exported operations</span></span><br />
+</span>
+</p>
+
+
+
+<p>Note: The brackets <span class="teletype"> [ ]</span> here denote optionality.
+</p>
+
+
+<p>A complete domain constructor definition for <span class="teletype"> QuadraticForm</span> is
+shown below.
+Interestingly, this little domain illustrates all the new concepts you
+need to learn.
+</p>
+
+
+<a name="figquadform" class="label"/>
+
+
+
+
+<div class="verbatim"><br />
+)abbrev&nbsp;domain&nbsp;QFORM&nbsp;QuadraticForm<br />
+<br />
+++&nbsp;Description:<br />
+++&nbsp;&nbsp;&nbsp;This&nbsp;domain&nbsp;provides&nbsp;modest&nbsp;support&nbsp;for<br />
+++&nbsp;&nbsp;&nbsp;quadratic&nbsp;forms.<br />
+QuadraticForm(n,&nbsp;K):&nbsp;Exports&nbsp;==&nbsp;Implementation&nbsp;where<br />
+&nbsp;&nbsp;&nbsp;&nbsp;n:&nbsp;PositiveInteger<br />
+&nbsp;&nbsp;&nbsp;&nbsp;K:&nbsp;Field<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;Exports&nbsp;==&nbsp;AbelianGroup&nbsp;with&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--The&nbsp;exports<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quadraticForm:&nbsp;SquareMatrix(n,K)&nbsp;-&gt;&nbsp;$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--export&nbsp;this<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;\bs{}axiom\{quadraticForm(m)\}&nbsp;creates&nbsp;a&nbsp;quadratic<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;quadratic&nbsp;form&nbsp;from&nbsp;a&nbsp;symmetric,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;square&nbsp;matrix&nbsp;\bs{}axiom\{m\}.<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matrix:&nbsp;&nbsp;$&nbsp;-&gt;&nbsp;SquareMatrix(n,K)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;export&nbsp;matrix<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;\bs{}axiom\{matrix(qf)\}&nbsp;creates&nbsp;a&nbsp;square&nbsp;matrix<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;from&nbsp;the&nbsp;quadratic&nbsp;form&nbsp;\bs{}axiom\{qf\}.<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elt:&nbsp;(&nbsp;$,&nbsp;DirectProduct(n,K))&nbsp;-&gt;&nbsp;K&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;export&nbsp;elt<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;\bs{}axiom\{qf(v)\}&nbsp;evaluates&nbsp;the&nbsp;quadratic&nbsp;form<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;\bs{}axiom\{qf\}&nbsp;on&nbsp;the&nbsp;vector&nbsp;\bs{}axiom\{v\},<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;producing&nbsp;a&nbsp;scalar.<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;Implementation&nbsp;==&nbsp;SquareMatrix(n,K)&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--The&nbsp;exports<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rep&nbsp;:=&nbsp;SquareMatrix(n,K)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--representation<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quadraticForm&nbsp;m&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--definition&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not&nbsp;symmetric?&nbsp;m&nbsp;=&gt;&nbsp;error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"quadraticForm&nbsp;requires&nbsp;a&nbsp;symmetric&nbsp;matrix"<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;::&nbsp;$<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;q&nbsp;==&nbsp;q&nbsp;::&nbsp;Rep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--definition&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elt(q,v)&nbsp;==&nbsp;dot(v,&nbsp;(matrix&nbsp;q&nbsp;*&nbsp;v))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--definition&nbsp;<br />
+<br />
+</div>
+
+
+<p><div class="caption">The <span class="teletype"> QuadraticForm</span> domain.</div>
+</p>
+
+
+
+<p>A domain constructor can take any number and type of parameters.
+<span class="teletype"> QuadraticForm</span> takes a positive integer <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> and a field
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> as arguments.
+Like a package, a domain has a set of explicit exports and an
+implementation described by a capsule.
+Domain constructors are documented in the same way as package constructors.
+</p>
+
+
+<p>Domain <span class="teletype"> QuadraticForm(n, K)</span>, for a given positive integer
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> and domain <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math>, explicitly exports three operations:
+</p>
+
+
+
+
+<ul>
+<li>
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>quadraticForm</mi><mo>(</mo><mi>A</mi><mo>)</mo></mrow></mstyle></math> creates a quadratic form from a matrix
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>A</mi></mstyle></math>.
+</li>
+<li><math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>matrix</mi><mo>(</mo><mi>q</mi><mo>)</mo></mrow></mstyle></math> returns the matrix <math xmlns="&mathml;" mathsize="big"><mstyle><mi>A</mi></mstyle></math> used to create
+the quadratic form <math xmlns="&mathml;" mathsize="big"><mstyle><mi>q</mi></mstyle></math>.
+</li>
+<li><math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>q</mi><mo>.</mo><mi>v</mi></mrow></mstyle></math> computes the scalar <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>v</mi><mi>T</mi></msup><mi>Av</mi></mrow></mstyle></math>
+for a given vector <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math>.
+</li>
+</ul>
+
+
+
+<p>Compared with the corresponding syntax given for the definition of a
+package, you see that a domain constructor has three optional parts to
+its definition: <span class="italic"> Category Assertions</span>, <span class="italic"> Add Domain</span>, and
+<span class="italic"> Representation</span>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.1.xhtml" style="margin-right: 10px;">Previous Section 13.1 Domains vs. Packages</a><a href="section-13.3.xhtml" style="margin-right: 10px;">Next Section 13.3 Category Assertions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.3.xhtml
new file mode 100644
index 0000000..0656302
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.3.xhtml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.2.xhtml" style="margin-right: 10px;">Previous Section 13.2 Definitions</a><a href="section-13.4.xhtml" style="margin-right: 10px;">Next Section 13.4 A Demo</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.3">
+<h2 class="sectiontitle">13.3  Category Assertions</h2>
+
+
+<a name="ugDomainsAssertions" class="label"/>
+
+
+
+<p>The <span class="italic"> Category Assertions</span> part of your domain constructor
+definition lists those categories of which all domains created by the
+constructor are unconditionally members.  The word ``unconditionally''
+means that membership in a category does not depend on the values of
+the parameters to the domain constructor.  This part thus defines the
+link between the domains and the category hierarchies given on the
+inside covers of this book.  As described in
+<a href="section-12.8.xhtml#ugCategoriesCorrectness" class="ref" >ugCategoriesCorrectness</a> it is this link that makes it
+possible for you to pass objects of the domains as arguments to other
+operations in Axiom.
+</p>
+
+
+<p>Every <span class="teletype"> QuadraticForm</span> domain is declared
+to be unconditionally a member of category <span class="teletype"> AbelianGroup</span>.
+An abelian group is a collection of elements closed under
+addition.
+Every object <span class="italic"> x</span> of an abelian group has an additive inverse
+<span class="italic"> y</span> such that <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+The exports of an abelian group include <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>,
+<span class="teletype"> +</span>, <span class="teletype"> -</span>, and scalar multiplication by an integer.
+After asserting that <span class="teletype"> QuadraticForm</span> domains are abelian
+groups, it is possible to pass quadratic forms to algorithms that
+only assume arguments to have these abelian group
+properties.
+</p>
+
+
+<p>In <a href="section-12.11.xhtml#ugCategoriesConditionals" class="ref" >ugCategoriesConditionals</a> you saw that <span class="teletype">
+Fraction(R)</span>, a member of <span class="teletype"> QuotientFieldCategory(R)</span>, is a member
+of <span class="teletype"> OrderedSet</span> if <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math> is a member of <span class="teletype"> OrderedSet</span>.  Likewise,
+from the <span class="teletype"> Exports</span> part of the definition of <span class="teletype"> ModMonic(R, S)</span>,
+</p>
+
+
+
+
+<div class="verbatim"><br />
+UnivariatePolynomialCategory(R)&nbsp;with<br />
+&nbsp;&nbsp;if&nbsp;R&nbsp;has&nbsp;Finite&nbsp;then&nbsp;Finite<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+</div>
+
+
+<p>you see that <span class="teletype"> ModMonic(R, S)</span> is a member of
+<span class="teletype"> Finite</span> if <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math> is.
+</p>
+
+
+<p>The <span class="teletype"> Exports</span> part of a domain definition is
+the same kind of
+expression that can appear to the right of an
+<span class="teletype"> ==</span> in a category definition.
+If a domain constructor is unconditionally a member of two or more
+categories, a <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Join</mi></mstyle></math> form is used.
+<span class="index">Join</span><a name="chapter-13-1"/>
+The <span class="teletype"> Exports</span> part of the definition of
+<span class="teletype"> FlexibleArray(S)</span> reads, for example:
+</p>
+
+
+
+<div class="verbatim"><br />
+Join(ExtensibleLinearAggregate(S),&nbsp;OneDimensionalArrayAggregate(S))&nbsp;with...<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.2.xhtml" style="margin-right: 10px;">Previous Section 13.2 Definitions</a><a href="section-13.4.xhtml" style="margin-right: 10px;">Next Section 13.4 A Demo</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.4.xhtml
new file mode 100644
index 0000000..c4049f8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.4.xhtml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.3.xhtml" style="margin-right: 10px;">Previous Section 13.3 Category Assertions</a><a href="section-13.5.xhtml" style="margin-right: 10px;">Next Section 13.5 Browse</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.4">
+<h2 class="sectiontitle">13.4  A Demo</h2>
+
+
+<a name="ugDomainsDemo" class="label"/>
+
+
+<p>Before looking at the <span class="italic"> Implementation</span> part of <span class="teletype"> QuadraticForm</span>,
+let's try some examples.
+</p>
+
+
+
+
+<p>Build a domain <math xmlns="&mathml;" mathsize="big"><mstyle><mi>QF</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm13-1">
+<form action="javascript:makeRequest('13-1');" >
+<input id="comm13-1" type="text" name="command" style="width: 20em;" value='QF := QuadraticForm(2,Fraction Integer)' />
+</form>
+<div id="mathAns13-1" >
+</div>
+</div>
+
+
+
+<p>Define a matrix to be used to construct
+a quadratic form.
+</p>
+
+
+
+
+<div id="spadComm13-2">
+<form action="javascript:makeRequest('13-2');" >
+<input id="comm13-2" type="text" name="command" style="width: 16em;" value='A := matrix [ [-1,1/2],[1/2,1] ]' />
+</form>
+<div id="mathAns13-2" >
+</div>
+</div>
+
+
+
+<p>Construct the quadratic form.
+A package call <span class="teletype">  $QF</span> is necessary since there
+are other <span class="teletype"> QuadraticForm</span> domains.
+</p>
+
+
+
+
+<div id="spadComm13-3">
+<form action="javascript:makeRequest('13-3');" >
+<input id="comm13-3" type="text" name="command" style="width: 13em;" value='q : QF := quadraticForm(A)' />
+</form>
+<div id="mathAns13-3" >
+</div>
+</div>
+
+
+
+<p>Looks like a matrix. Try computing
+the number of rows.
+Axiom won't let you.
+</p>
+
+
+
+
+<div id="spadComm13-4">
+<form action="javascript:makeRequest('13-4');" >
+<input id="comm13-4" type="text" name="command" style="width: 4em;" value='nrows q' />
+</form>
+<div id="mathAns13-4" >
+</div>
+</div>
+
+
+
+<p>Create a direct product element <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math>.
+A package call is again necessary, but Axiom
+understands your list as denoting a vector.
+</p>
+
+
+
+
+<div id="spadComm13-5">
+<form action="javascript:makeRequest('13-5');" >
+<input id="comm13-5" type="text" name="command" style="width: 31em;" value='v := directProduct([2,-1]) $DirectProduct(2,Fraction Integer)' />
+</form>
+<div id="mathAns13-5" >
+</div>
+</div>
+
+
+
+<p>Compute the product <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>v</mi><mi>T</mi></msup><mi>Av</mi></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm13-6">
+<form action="javascript:makeRequest('13-6');" >
+<input id="comm13-6" type="text" name="command" style="width: 2em;" value='q.v' />
+</form>
+<div id="mathAns13-6" >
+</div>
+</div>
+
+
+
+<p>What is 3 times <math xmlns="&mathml;" mathsize="big"><mstyle><mi>q</mi></mstyle></math> minus <math xmlns="&mathml;" mathsize="big"><mstyle><mi>q</mi></mstyle></math> plus <math xmlns="&mathml;" mathsize="big"><mstyle><mi>q</mi></mstyle></math>?
+</p>
+
+
+
+
+<div id="spadComm13-7">
+<form action="javascript:makeRequest('13-7');" >
+<input id="comm13-7" type="text" name="command" style="width: 4em;" value='3*q-q+q' />
+</form>
+<div id="mathAns13-7" >
+</div>
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.3.xhtml" style="margin-right: 10px;">Previous Section 13.3 Category Assertions</a><a href="section-13.5.xhtml" style="margin-right: 10px;">Next Section 13.5 Browse</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.5.xhtml
new file mode 100644
index 0000000..aa0ba23
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.5.xhtml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.4.xhtml" style="margin-right: 10px;">Previous Section 13.4 A Demo</a><a href="section-13.6.xhtml" style="margin-right: 10px;">Next Section 13.6 Representation</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.5">
+<h2 class="sectiontitle">13.5  Browse</h2>
+
+
+<a name="ugDomainsBrowse" class="label"/>
+
+
+<p>The Browse facility of HyperDoc is useful for
+investigating
+the properties of domains, packages, and categories.
+From the main HyperDoc menu, move your mouse to <span style="font-weight: bold;"> Browse</span> and
+click on the left mouse button.
+This brings up the Browse first page.
+Now, with your mouse pointer somewhere in this window, enter the
+string ``quadraticform'' into the input area (all lower case
+letters will do).
+Move your mouse to <span style="font-weight: bold;"> Constructors</span> and click.
+Up comes a page describing <span class="teletype"> QuadraticForm</span>.
+</p>
+
+
+<p>From here, click on <span style="font-weight: bold;"> Description</span>.
+This gives you a page that includes a part labeled by ``<span class="italic">
+Description:</span>''.
+You also see the types for arguments <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math>
+displayed as well as the fact that <span class="teletype"> QuadraticForm</span>
+returns an <span class="teletype"> AbelianGroup</span>.
+You can go and experiment a bit by selecting <span class="teletype"> Field</span> with
+your mouse.
+Eventually, use the ``UP'' button
+several times to return to the first page on
+<span class="teletype"> QuadraticForm</span>.
+</p>
+
+
+<p>Select <span style="font-weight: bold;"> Operations</span> to get a list of operations for
+<span class="teletype"> QuadraticForm</span>.
+You can select an operation by clicking on it
+to get an individual page with information about that operation.
+Or you can select the buttons along the bottom to see alternative
+views or get additional information on the operations.
+Then return to the page on <span class="teletype"> QuadraticForm</span>.
+</p>
+
+
+<p>Select <span style="font-weight: bold;"> Cross Reference</span> to get another menu.
+This menu has buttons for <span style="font-weight: bold;"> Parents</span>, <span style="font-weight: bold;"> Ancestors</span>, and
+others.
+Clicking on <span style="font-weight: bold;"> Parents</span>, you see that <span class="teletype"> QuadraticForm</span>
+has one parent <span class="teletype"> AbelianMonoid</span>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.4.xhtml" style="margin-right: 10px;">Previous Section 13.4 A Demo</a><a href="section-13.6.xhtml" style="margin-right: 10px;">Next Section 13.6 Representation</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.6.xhtml
new file mode 100644
index 0000000..be8ae0f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.6.xhtml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.5.xhtml" style="margin-right: 10px;">Previous Section 13.5 Browse</a><a href="section-13.7.xhtml" style="margin-right: 10px;">Next Section 13.7 Multiple Representations</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.6">
+<h2 class="sectiontitle">13.6  Representation</h2>
+
+
+<a name="ugDomainsRep" class="label"/>
+
+
+<p>The <span class="teletype"> Implementation</span> part of an Axiom capsule for a
+domain constructor uses the special variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Rep</mi></mstyle></math> to
+<span class="index">Rep @ <span class="teletype"> Rep</span><a name="chapter-13-2"/></span>
+identify the lower level data type used to represent the objects
+<span class="index">representation:of a domain</span><a name="chapter-13-3"/>
+of the domain.
+<span class="index">domain:representation</span><a name="chapter-13-4"/>
+The <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Rep</mi></mstyle></math> for quadratic forms is <span class="teletype"> SquareMatrix(n, K)</span>.
+This means that all objects of the domain are required to be
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> by <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> matrices with elements from <span style="font-weight: bold;"> K</span>.
+</p>
+
+
+<p>The code for <span class="teletype"> quadraticForm</span> in Figure <a href="section-13.2.xhtml#figquadform" class="ref" >figquadform</a>
+checks that the matrix is symmetric and then converts it to
+<span class="teletype">  $</span>, which means, as usual, ``this domain.'' Such explicit
+conversions <span class="index">conversion</span><a name="chapter-13-5"/> are generally required by the
+compiler.
+Aside from checking that the matrix is symmetric, the code for
+this function essentially does nothing.
+The <span class="teletype"> m ::  $</span> on line 28 coerces <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> to a
+quadratic form.
+In fact, the quadratic form you created in step (3) of
+<a href="section-13.4.xhtml#ugDomainsDemo" class="ref" >ugDomainsDemo</a>
+is just the matrix you passed it in
+disguise!
+Without seeing this definition, you would not know that.
+Nor can you take advantage of this fact now that you do know!
+When we try in the next step of <a href="section-13.4.xhtml#ugDomainsDemo" class="ref" >ugDomainsDemo</a> to regard
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>q</mi></mstyle></math> as a matrix by asking for <span style="font-weight: bold;"> nrows</span>, the number of
+its rows, Axiom gives you an error message saying, in
+effect, ``Good try, but this won't work!''
+</p>
+
+
+<p>The definition for the <span class="spadfunFrom" style="font-weight: bold;">matrix</span><span class="index">matrix</span><a name="chapter-13-6"/><span class="index">QuadraticForm</span><a name="chapter-13-7"/>
+function could hardly be simpler:
+it just returns its argument after explicitly
+coercing its argument to a matrix.
+Since the argument is already a matrix, this coercion does no computation.
+</p>
+
+
+<p>Within the context of a capsule, an object of <span class="teletype">  $</span> is
+regarded both as a quadratic form <span class="italic"> and</span> as a
+matrix.<span class="footnote">In case each of <span class="teletype">  $</span> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>Rep</mi></mstyle></math>
+have the same named operation available,
+the one from  $ takes precedence.
+Thus, if you want the one from <span class="teletype"> Rep</span>, you must
+package call it using a <span class="teletype">  $Rep</span> suffix.</span>
+This makes the definition of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>q</mi><mo>.</mo><mi>v</mi></mrow></mstyle></math> easy---it
+just calls the <span class="spadfunFrom" style="font-weight: bold;">dot</span><span class="index">dot</span><a name="chapter-13-8"/><span class="index">DirectProduct</span><a name="chapter-13-9"/> product from
+<span class="teletype"> DirectProduct</span> to perform the indicated operation.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.5.xhtml" style="margin-right: 10px;">Previous Section 13.5 Browse</a><a href="section-13.7.xhtml" style="margin-right: 10px;">Next Section 13.7 Multiple Representations</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.7.xhtml
new file mode 100644
index 0000000..fb1ef66
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.7.xhtml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.6.xhtml" style="margin-right: 10px;">Previous Section 13.6 Representation</a><a href="section-13.8.xhtml" style="margin-right: 10px;">Next Section 13.8 Add Domain</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.7">
+<h2 class="sectiontitle">13.7  Multiple Representations</h2>
+
+
+<a name="ugDomainsMultipleReps" class="label"/>
+
+
+
+<p>To write functions that implement the operations of a domain, you
+want to choose the most computationally efficient
+data structure to represent the elements of your domain.
+</p>
+
+
+<p>A classic problem in computer algebra is the optimal choice for an
+internal representation of polynomials.
+If you create a polynomial, say <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>3</mn><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><mn>5</mn></mrow></mstyle></math>, how
+does Axiom hold this value internally?
+There are many ways.
+Axiom has nearly a dozen different representations of
+polynomials, one to suit almost any purpose.
+Algorithms for solving polynomial equations work most
+efficiently with polynomials represented one way, whereas those for
+factoring polynomials are most efficient using another.
+One often-used representation is  a list of terms, each term
+consisting of exponent-coefficient records written in the order
+of decreasing exponents.
+For example, the polynomial <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>3</mn><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><mn>5</mn></mrow></mstyle></math> is
+<!-- I changed the k's in next line to e's as I thought that was
+ clearer. -->
+represented by the list <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mo>[</mo><mi>e</mi><mo>:</mo><mn>2</mn><mo>,</mo><mi>c</mi><mo>:</mo><mn>3</mn><mo>]</mo><mo>,</mo><mo>[</mo><mi>e</mi><mo>:</mo><mn>0</mn><mo>,</mo><mi>c</mi><mo>:</mo><mn>5</mn><mo>]</mo><mo>]</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>What is the optimal data structure for a matrix?
+It depends on the application.
+For large sparse matrices, a linked-list structure of records
+holding only the non-zero elements may be optimal.
+If the elements can be defined by a simple formula
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></mstyle></math>, then a compiled function for
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> may be optimal.
+Some programmers prefer to represent ordinary matrices as vectors
+of vectors.
+Others prefer to represent matrices by one big linear array where
+elements are accessed with linearly computable indexes.
+</p>
+
+
+<p>While all these simultaneous structures tend to be confusing,
+Axiom provides a helpful organizational tool for such a purpose:
+categories.
+<span class="teletype"> PolynomialCategory</span>, for example, provides a uniform user
+interface across all polynomial types.
+Each kind of polynomial implements functions for
+all these operations, each in its own way.
+If you use only the top-level operations in
+<span class="teletype"> PolynomialCategory</span> you usually do not care what kind
+of polynomial implementation is used.
+</p>
+
+
+<p><!-- I've often thought, though, that it would be nice to be
+ be able to use conditionals for representations. -->
+Within a given domain, however, you define (at most) one
+representation.<span class="footnote">You can make that representation a
+<span class="teletype"> Union</span> type, however.
+See <a href="section-2.5.xhtml#ugTypesUnions" class="ref" >ugTypesUnions</a> 
+for examples of unions.</span>
+If you want to have multiple representations (that is, several
+domains, each with its own representation), use a category to
+describe the <span class="teletype"> Exports</span>, then define separate domains for each
+representation.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.6.xhtml" style="margin-right: 10px;">Previous Section 13.6 Representation</a><a href="section-13.8.xhtml" style="margin-right: 10px;">Next Section 13.8 Add Domain</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.8.xhtml
new file mode 100644
index 0000000..bf8cf3b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.8.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.7.xhtml" style="margin-right: 10px;">Previous Section 13.7 Multiple Representations</a><a href="section-13.9.xhtml" style="margin-right: 10px;">Next Section 13.9 Defaults</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.8">
+<h2 class="sectiontitle">13.8  Add Domain</h2>
+
+
+<a name="ugDomainsAddDomain" class="label"/>
+
+
+
+<p>The capsule part of <span class="teletype"> Implementation</span> defines functions that
+implement the operations exported by the domain---usually only
+some of the operations.
+In our demo in <a href="section-13.4.xhtml#ugDomainsDemo" class="ref" >ugDomainsDemo</a> 
+we asked for the value of
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>3</mn><mo>*</mo><mi>q</mi><mo>-</mo><mi>q</mi><mo>+</mo><mi>q</mi></mrow></mstyle></math>.
+Where do the operations <span class="teletype"> *</span>, <span class="teletype"> +</span>, and
+<span class="teletype"> -</span> come from?
+There is no definition for them in the capsule!
+</p>
+
+
+<p>The <span class="teletype"> Implementation</span> part of a definition can
+<span class="index">domain:add</span><a name="chapter-13-10"/>
+optionally specify an ``add-domain'' to the left of an <span class="teletype"> add</span>
+<span class="index">add</span><a name="chapter-13-11"/>
+(for <span class="teletype"> QuadraticForm</span>, defines
+<span class="teletype"> SquareMatrix(n,K)</span> is the add-domain).
+The meaning of an add-domain is simply this: if the capsule part
+of the <span class="teletype"> Implementation</span> does not supply a function for an
+operation, Axiom goes to the add-domain to find the
+function.
+So do <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mo>+</mo></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mo>-</mo></mstyle></math> (from QuadraticForm) come from
+<span class="teletype"> SquareMatrix(n,K)</span>?
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.7.xhtml" style="margin-right: 10px;">Previous Section 13.7 Multiple Representations</a><a href="section-13.9.xhtml" style="margin-right: 10px;">Next Section 13.9 Defaults</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-13.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-13.9.xhtml
new file mode 100644
index 0000000..c6c2a90
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-13.9.xhtml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section13.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.8.xhtml" style="margin-right: 10px;">Previous Section 13.8 Add Domain</a><a href="section-13.10.xhtml" style="margin-right: 10px;">Next Section 13.10 Origins</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-13.9">
+<h2 class="sectiontitle">13.9  Defaults</h2>
+
+
+<a name="ugDomainsDefaults" class="label"/>
+
+
+<p>In Chapter <a href="section-11.0.xhtml#ugPackages" class="ref" >ugPackages</a> 
+we saw that categories can provide
+default implementations for their operations.
+How and when are they used?
+When Axiom finds that <span class="teletype"> QuadraticForm(2, Fraction
+Integer)</span> does not implement the operations <span class="teletype"> *</span>,
+<span class="teletype"> +</span>, and <span class="teletype"> -</span>, it goes to
+<span class="teletype"> SquareMatrix(2,Fraction Integer)</span> to find it.
+As it turns out, <span class="teletype"> SquareMatrix(2, Fraction Integer)</span> does
+not implement <span class="italic"> any</span> of these operations!
+</p>
+
+
+<p>What does Axiom do then?
+Here is its overall strategy.
+First, Axiom looks for a function in the capsule for the domain.
+If it is not there, Axiom looks in the add-domain for the
+operation.
+If that fails, Axiom searches the add-domain of the add-domain,
+and so on.
+If all those fail, it then searches the default packages for the
+categories of which the domain is a member.
+In the case of <span class="teletype"> QuadraticForm</span>, it searches
+<span class="teletype"> AbelianGroup</span>, then its parents, grandparents, and
+so on.
+If this fails, it then searches the default packages of the
+add-domain.
+Whenever a function is found, the search stops immediately and the
+function is returned.
+When all fails, the system calls <span style="font-weight: bold;"> error</span> to report this
+unfortunate news to you.
+To find out the actual order of constructors searched for
+<span class="teletype"> QuadraticForm</span>, consult Browse: from the
+<span class="teletype"> QuadraticForm</span>, click on <span class="teletype"> Cross Reference</span>, then on
+<span class="teletype"> Lineage</span>.
+</p>
+
+
+<p>Let's apply this search strategy for our example <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>3</mn><mo>*</mo><mi>q</mi><mo>-</mo><mi>q</mi><mo>+</mo><mi>q</mi></mrow></mstyle></math>.
+The scalar multiplication comes first.
+Axiom finds a default implementation in
+<span class="teletype"> AbelianGroup&amp;</span>.
+Remember from <a href="section-12.6.xhtml#ugCategoriesDefaults" class="ref" >ugCategoriesDefaults</a> that
+<span class="teletype"> SemiGroup</span> provides a default definition for
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>n</mi></msup></mrow></mstyle></math> by repeated squaring.
+<span class="teletype"> AbelianGroup</span> similarly provides a definition for
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mi>x</mi></mrow></mstyle></math> by repeated doubling.
+</p>
+
+
+<p>But the search of the defaults for <span class="teletype"> QuadraticForm</span> fails
+to find any <span class="teletype"> +</span> or <span class="teletype"> *</span> in the default packages for
+the ancestors of <span class="teletype"> QuadraticForm</span>.
+So it now searches among those for <span class="teletype"> SquareMatrix</span>.
+Category <span class="teletype"> MatrixCategory</span>, which provides a uniform interface
+for all matrix domains,
+is a grandparent of <span class="teletype"> SquareMatrix</span> and
+has a capsule defining many functions for matrices, including
+matrix addition, subtraction, and scalar multiplication.
+The default package <span class="teletype"> MatrixCategory&amp;</span> is where the
+functions for <math xmlns="&mathml;" mathsize="big"><mstyle><mo>+</mo></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mo>-</mo></mstyle></math> (from QuadraticForm) come from.
+</p>
+
+
+<p>You can use Browse to discover where the operations for
+<span class="teletype"> QuadraticForm</span> are implemented.
+First, get the page describing <span class="teletype"> QuadraticForm</span>.
+With your mouse somewhere in this window, type a ``2'', press the
+<span style="font-weight: bold;"> Tab</span> key, and then enter ``Fraction
+Integer'' to indicate that you want the domain
+<span class="teletype"> QuadraticForm(2, Fraction Integer)</span>.
+Now click on <span style="font-weight: bold;"> Operations</span> to get a table of operations and on
+<span class="teletype"> *</span> to get a page describing the <span class="teletype"> *</span> operation.
+Finally, click on <span style="font-weight: bold;"> implementation</span> at the bottom.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-13.8.xhtml" style="margin-right: 10px;">Previous Section 13.8 Add Domain</a><a href="section-13.10.xhtml" style="margin-right: 10px;">Next Section 13.10 Origins</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-14.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-14.0.xhtml
new file mode 100644
index 0000000..c838890
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-14.0.xhtml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section14.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.13.xhtml" style="margin-right: 10px;">Previous Section 13.13  Example 2: Building A Query Facility</a><a href="section-14.1.xhtml" style="margin-right: 10px;">Next Section 14.1 The Front Page: Searching the Library</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-14.0">
+<h2 class="sectiontitle">14.0  Browse</h2>
+<a name="ugBrowse" class="label"/>
+
+<p>This chapter discusses the Browse
+<span class="index">Browse@Browse</span><a name="chapter-14-0"/>
+component of HyperDoc.
+<span class="index">HyperDoc@{HyperDoc}</span><a name="chapter-14-1"/>
+We suggest you invoke Axiom and work through this
+chapter, section by section, following our examples to gain some
+familiarity with Browse.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-13.13.xhtml" style="margin-right: 10px;">Previous Section 13.13  Example 2: Building A Query Facility</a><a href="section-14.1.xhtml" style="margin-right: 10px;">Next Section 14.1 The Front Page: Searching the Library</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-14.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-14.1.xhtml
new file mode 100644
index 0000000..e394897
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-14.1.xhtml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section14.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-14.0.xhtml" style="margin-right: 10px;">Previous Section 14.0 Browse</a><a href="section-14.2.xhtml" style="margin-right: 10px;">Next Section 14.2 The Constructor Page</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-14.1">
+<h2 class="sectiontitle">14.1  The Front Page: Searching the Library</h2>
+
+
+<a name="ugBrowseStart" class="label"/>
+
+<p>To enter Browse, click on <span style="font-weight: bold;"> Browse</span> on the top level page
+of HyperDoc to get the <span class="italic">front page</span> of Browse.
+</p>
+
+
+<p><!--
+324pt is 4.5",180pt is 2.5",432pt is 6"=textwidth,54=(432-324)/2
+ps files are 4.5"x2.5" except source 4.5"x2.5"
+-->
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-brfront.png" alt="picture"/>
+<div class="figcaption">The Browse front page.</div>
+</div>
+
+<p>To use this page, you first enter a <span class="italic">search string</span> into
+the input area at the top, then click on one of the buttons below.
+We show the use of each of the buttons by example.
+</p>
+
+<a name="subsec-14.1.1"/>
+<div class="subsection" id="subsec-14.1.1">
+<h3 class="subsectitle">14.1.1 Constructors</h3>
+
+
+
+<p>First enter the search string <span class="teletype">Matrix</span> into the input area and
+click on <span style="font-weight: bold;"> Constructors</span>.
+What you get is the <span class="italic">constructor page</span> for <span class="teletype">Matrix</span>.
+We show and describe this page in detail in
+<a href="section-14.2.xhtml#ugBrowseDomain" class="ref" >ugBrowseDomain</a> .
+By convention, Axiom does a case-insensitive search for a
+match.
+Thus <span class="teletype">matrix</span> is just as good as <span class="teletype">Matrix</span>, has the same
+effect as <span class="teletype">MaTrix</span>, and so on.
+We recommend that you generally use small letters for names
+however.
+A search string with only capital letters has a special meaning
+(see <a href="section-14.3.xhtml#ugBrowseCapitalizationConvention" class="ref" >ugBrowseCapitalizationConvention</a> ).
+</p>
+
+
+
+<p>Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the Browse front page.
+</p>
+
+
+<p>Use the symbol ``<span class="teletype">*</span>'' in search strings as a <span class="italic">wild
+card</span>.
+A wild card matches any substring, including the empty string.
+For example, enter the search string <span class="teletype">*matrix*</span> into the input
+area and click on <span style="font-weight: bold;"> Constructors</span>.<span class="footnote">To get only
+categories, domains, or packages, rather than all constructors,
+you can click on the corresponding button to the right of <span style="font-weight: bold;">
+Constructors</span>.</span>
+What you get is a table of all constructors whose names contain
+the string ``<span class="teletype">matrix</span>.''
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-consearch.png" alt="picture"/>
+<div class="figcaption">Table of exposed constructors matching <span class="teletype">*matrix*</span> .</div>
+</div>
+
+<p><!--
+ Following para replaced 1995oct30 MGR
+These are all the exposed constructors in
+Axiom.
+To see how to get all exposed and unexposed constructors in
+Axiom, skip to the section entitled <span style="font-weight: bold;"> Exposure</span> in
+<a href="section-14.3.xhtml#ugBrowseOptions" class="ref" >ugBrowseOptions</a> .
+-->
+</p>
+
+
+<p>All constructors containing the string are listed, whether
+exposed or unexposed.
+You can hide the names of the unexposed constructors by clicking
+on the <span class="italic">*=</span><span style="font-weight: bold;"> unexposed</span> button in the <span class="italic">Views</span> panel at
+the bottom of the window.
+(The button will change to <span style="font-weight: bold;"> exposed</span> <span class="italic">only</span>.)
+</p>
+
+
+<p>One of the names in this table is <span class="teletype">Matrix</span>.
+Click on <span class="teletype">Matrix</span>.
+What you get is again the constructor page for <span class="teletype">Matrix</span>.
+As you see, Browse gives you a large network of
+information in which there are many ways to reach the same
+pages.
+<span class="index">Matrix</span><a name="chapter-14-2"/>
+</p>
+
+
+<p>Again click on the <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the table of constructors
+whose names contain <span class="teletype">matrix</span>.
+</p>
+
+
+<p>Below the table is a <span class="italic">Views</span> panel.
+This panel contains buttons that let you view constructors in different
+ways.
+To learn about views of constructors, skip to
+<a href="section-14.2.xhtml#ugBrowseViewsOfConstructors" class="ref" >ugBrowseViewsOfConstructors</a> .
+</p>
+
+
+<p>Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the Browse front page.
+</p>
+
+
+
+
+</div>
+
+<a name="subsec-14.1.2"/>
+<div class="subsection" id="subsec-14.1.2">
+<h3 class="subsectitle">14.1.2 Operations</h3>
+
+
+<p>Enter <span class="teletype">*matrix</span> into the input area and click on <span style="font-weight: bold;">
+Operations</span>.
+This time you get a table of <span class="italic">operations</span> whose names end with <span class="teletype">matrix</span> or <span class="teletype">Matrix</span>.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matrixops.png" alt="picture"/>
+<div class="figcaption">Table of operations matching <span class="teletype">*matrix</span> .</div>
+</div>
+
+<p>If you select an operation name, you go to a page describing all
+the operations in Axiom of that name.
+At the bottom of an operation page is another kind of <span class="italic">Views</span> panel,
+one for operation pages.
+To learn more about these views, skip to
+<a href="section-14.3.xhtml#ugBrowseViewsOfOperations" class="ref" >ugBrowseViewsOfOperations</a> .
+</p>
+
+
+<p>Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the Browse front page.
+</p>
+
+
+
+
+</div>
+
+<a name="subsec-14.1.3"/>
+<div class="subsection" id="subsec-14.1.3">
+<h3 class="subsectitle">14.1.3 Attributes</h3>
+
+
+<p>This button gives you a table of attribute names that match the
+search string. Enter the search string <span class="teletype">*</span> and click on
+<span style="font-weight: bold;"> Attributes</span> to get a list
+of all system attributes.
+</p>
+
+
+<p>Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the Browse front page.
+</p>
+
+
+
+
+<div class="image">
+<img src="ps/h-atsearch.png" alt="picture"/>
+<div class="figcaption">Table of Axiom attributes.</div>
+</div>
+
+<p>Again there is a <span class="italic">Views</span> panel at the bottom with buttons that let
+you view the attributes in different ways.
+</p>
+
+
+
+
+</div>
+
+<a name="subsec-14.1.4"/>
+<div class="subsection" id="subsec-14.1.4">
+<h3 class="subsectitle">14.1.4 General</h3>
+
+
+<p>This button does a general search for all constructor, operation, and
+attribute names matching the search string.
+Enter the search string 
+<span class="teletype">*matrix*</span> into the input area.
+Click on <span style="font-weight: bold;"> General</span> to find all constructs that have <span class="teletype">matrix</span> as a part of their name.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-gensearch.png" alt="picture"/>
+<div class="figcaption">Table of all constructs matching <span class="teletype">*matrix*</span> .</div>
+</div>
+
+<p>The summary gives you all the names under a heading when the number of
+entries is less than 10. 
+</p>
+
+
+<p><!--
+ "less than 10." replaces the following:
+			  sufficiently small<span class="footnote">See
+<a href="section-14.3.xhtml#ugBrowseOptions" class="ref" >ugBrowseOptions</a> to see how you can change this.</span>.
+ MGR 1995oct31
+-->
+</p>
+
+
+<p>Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the Browse front page.
+</p>
+
+
+
+
+</div>
+
+<a name="subsec-14.1.5"/>
+<div class="subsection" id="subsec-14.1.5">
+<h3 class="subsectitle">14.1.5 Documentation</h3>
+
+
+<p>Again enter the search key <span class="teletype">*matrix*</span> and this time click on
+<span style="font-weight: bold;"> Documentation</span>.
+This search matches any constructor, operation, or attribute
+name whose documentation contains a substring matching <span class="teletype">matrix</span>.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-docsearch.png" alt="picture"/>
+<div class="figcaption">Table of constructs with documentation matching <span class="teletype">*matrix*</span> .</div>
+</div>
+
+<p>Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the Browse front page.
+</p>
+
+
+
+
+</div>
+
+<a name="subsec-14.1.6"/>
+<div class="subsection" id="subsec-14.1.6">
+<h3 class="subsectitle">14.1.6 Complete</h3>
+
+
+<p>This search combines both <span style="font-weight: bold;"> General</span> and <span style="font-weight: bold;"> Documentation</span>.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-comsearch.png" alt="picture"/>
+<div class="figcaption">Table summarizing complete search for pattern <span class="teletype">*matrix*</span> .</div>
+</div>
+
+
+
+</div>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-14.0.xhtml" style="margin-right: 10px;">Previous Section 14.0 Browse</a><a href="section-14.2.xhtml" style="margin-right: 10px;">Next Section 14.2 The Constructor Page</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-14.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-14.2.xhtml
new file mode 100644
index 0000000..4baa95d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-14.2.xhtml
@@ -0,0 +1,982 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section14.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-14.1.xhtml" style="margin-right: 10px;">Previous Section 14.1 The Front Page: Searching the Library</a><a href="section-14.3.xhtml" style="margin-right: 10px;">Next Section 14.3 Miscellaneous Features of Browse</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-14.2">
+<h2 class="sectiontitle">14.2  The Constructor Page</h2>
+
+
+<a name="ugBrowseDomain" class="label"/>
+
+
+<p>In this section we look in detail at a constructor page for domain
+<span class="teletype">Matrix</span>.
+Enter <span class="teletype">matrix</span> into the input area on the main Browse page
+and click on <span style="font-weight: bold;"> Constructors</span>.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matpage.png" alt="picture"/>
+<div class="figcaption">Constructor page for <span class="teletype">Matrix</span>.</div>
+</div>
+
+<p>The header part tells you that <span class="teletype">Matrix</span> has abbreviation
+<span class="teletype">MATRIX</span> and one argument called <span class="teletype">R</span> that must be a
+domain of category <span class="teletype">Ring</span>.
+Just what domains can be arguments of <span class="teletype">Matrix</span>?
+To find this out, click on the <span class="teletype">R</span> on the second line of the
+heading.
+What you get is a table of all acceptable domain parameter values
+of <span class="teletype">R</span>, or a table of <span class="italic">rings</span> in Axiom.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matargs.png" alt="picture"/>
+<div class="figcaption">Table of acceptable domain parameters to <span class="teletype">Matrix</span>.</div>
+</div>
+
+<p>Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the constructor page for
+<span class="teletype">Matrix</span>.
+
+</p>
+
+
+<p>If you have access to the source code of Axiom, the third
+<span class="index">source code</span><a name="chapter-14-3"/>
+line of the heading gives you the name of the source file
+containing the definition of <span class="teletype">Matrix</span>.
+Click on it to pop up an editor window containing the source code
+of <span class="teletype">Matrix</span>.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matsource.png" alt="picture"/>
+<div class="figcaption">Source code for <span class="teletype">Matrix</span>.</div>
+</div>
+
+<p>We recommend that you leave the editor window up while working
+through this chapter as you occasionally may want to refer to it.
+
+</p>
+
+
+
+<a name="subsec-14.2.1"/>
+<div class="subsection"  id="subsec-14.2.1">
+<h3 class="subsectitle">14.2.1  Constructor Page Buttons</h3>
+
+
+<a name="ugBrowseDomainButtons" class="label"/>
+
+
+<p>We examine each button on this page in order.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.1.1"/>
+<div class="subsubsection"  id="subsubsec-14.2.1.1">
+<h3 class="subsubsectitle">14.2.1.1  Description</h3>
+
+
+
+<p>Click here to bring up a page with a brief description of
+constructor <span class="teletype">Matrix</span>.
+If you have access to system source code, note that these comments
+can be found directly over the constructor definition.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matdesc.png" alt="picture"/>
+<div class="figcaption">Description page for <span class="teletype">Matrix</span>.</div>
+</div>
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.1.2"/>
+<div class="subsubsection"  id="subsubsec-14.2.1.2">
+<h3 class="subsubsectitle">14.2.1.2  Operations</h3>
+
+
+
+<p>Click here to get a table of operations exported by
+<span class="teletype">Matrix</span>.
+You may wish to widen the window to have multiple columns as
+below.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matops.png" alt="picture"/>
+<div class="figcaption">Table of operations from <span class="teletype">Matrix</span>.</div>
+</div>
+
+<p>If you click on an operation name, you bring up a description
+page for the operations.
+For a detailed description of these pages, skip to
+<a href="section-14.3.xhtml#ugBrowseViewsOfOperations" class="ref" >ugBrowseViewsOfOperations</a> .
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.1.3"/>
+<div class="subsubsection"  id="subsubsec-14.2.1.3">
+<h3 class="subsubsectitle">14.2.1.3  Attributes</h3>
+
+
+
+<p>Click here to get a table of the two attributes exported by
+<span class="teletype">Matrix</span>:
+<span class="index">attribute</span><a name="chapter-14-4"/>
+<span style="font-weight: bold;"> finiteAggregate</span> and <span style="font-weight: bold;"> shallowlyMutable</span>.
+These are two computational properties that result from
+<span class="teletype">Matrix</span> being regarded as a data structure.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matats.png" alt="picture"/>
+<div class="figcaption">Attributes from <span class="teletype">Matrix</span>.</div>
+</div>
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.1.4"/>
+<div class="subsubsection"  id="subsubsec-14.2.1.4">
+<h3 class="subsubsectitle">14.2.1.4  Examples</h3>
+
+
+
+<p>Click here to get an <span class="italic">examples page</span> with examples of operations to
+create and manipulate matrices.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matexamp.png" alt="picture"/>
+<div class="figcaption">Example page for <span class="teletype">Matrix</span>.</div>
+</div>
+
+<p>Read through this section.
+Try selecting the various buttons.
+Notice that if you click on an operation name, such as
+<span class="spadfunFrom" >new</span><span class="index">new</span><a name="chapter-14-5"/><span class="index">Matrix</span><a name="chapter-14-6"/>, you bring up a description page for that
+operation from <span class="teletype">Matrix</span>.
+</p>
+
+
+<p>Example pages have several examples of Axiom commands.
+Each example has an active button to its left.
+Click on it!
+A pre-computed answer is pasted into the page immediately following the
+command.
+If you click on the button a second time, the answer disappears.
+This button thus acts as a toggle:
+``now you see it; now you don't.''
+</p>
+
+
+<p>Note also that the Axiom commands themselves are active.
+If you want to see Axiom execute the command, then click on it!
+A new Axiom window appears on your screen and the command is
+executed.
+</p>
+
+
+<p>At the end of the page is generally a menu of buttons that lead
+you to further sections.
+Select one of these topics to explore its contents.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.1.5"/>
+<div class="subsubsection"  id="subsubsec-14.2.1.5">
+<h3 class="subsubsectitle">14.2.1.5  Exports</h3>
+
+
+
+<p>Click here to see a page describing the exports of <span class="teletype">Matrix</span>
+exactly as described by the source code.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matexports.png" alt="picture"/>
+<div class="figcaption">Exports of <span class="teletype">Matrix</span>.</div>
+</div>
+
+<p>As you see, <span class="teletype">Matrix</span> declares that it exports all the operations
+and attributes exported by category
+<span class="teletype">MatrixCategory(R, Row, Col)</span>.
+In addition, two operations, <span style="font-weight: bold;"> diagonalMatrix</span> and
+<span style="font-weight: bold;"> inverse</span>, are explicitly exported.
+</p>
+
+
+<p>To learn a little about the structure of Axiom, we suggest you do
+the following exercise.
+</p>
+
+
+<p>Otherwise, go on to the next section.
+</p>
+
+
+<p><span class="teletype">Matrix</span> explicitly exports only two operations.
+The other operations are thus exports of <span class="teletype">MatrixCategory</span>.
+In general, operations are usually not explicitly exported by a domain.
+Typically they are inherited from several
+different categories.
+Let's find out from where the operations of <span class="teletype">Matrix</span> come.
+</p>
+
+
+
+
+<ol>
+<li>
+ Click on <span class="teletype">MatrixCategory</span>, then on <span style="font-weight: bold;"> Exports</span>.
+Here you see that <span class="teletype">MatrixCategory</span> explicitly exports many matrix
+operations.
+Also, it inherits its operations from
+<span class="teletype">TwoDimensionalArrayCategory</span>.
+
+</li>
+<li> Click on <span class="teletype">TwoDimensionalArrayCategory</span>, then on <span style="font-weight: bold;"> Exports</span>.
+Here you see explicit operations dealing with rows and columns.
+In addition, it inherits operations from
+<span class="teletype">HomogeneousAggregate</span>.
+</li>
+<!--
+
+<li> Click on <span class="teletype">HomogeneousAggregate</span>, then on <span style="font-weight: bold;"> Exports</span>.
+And so on.
+If you continue doing this, eventually you will
+
+
+</li>
+-->
+<li> Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> and then
+click on <span class="teletype">Object</span>, then on <span style="font-weight: bold;"> Exports</span>, where you see
+there are no exports.
+
+</li>
+<li> Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> repeatedly to return to the constructor page
+for <span class="teletype">Matrix</span>.
+
+</li>
+</ol>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.1.6"/>
+<div class="subsubsection"  id="subsubsec-14.2.1.6">
+<h3 class="subsubsectitle">14.2.1.6  Related Operations</h3>
+
+
+
+<p>Click here bringing up a table of operations that are exported by
+packages but not by <span class="teletype">Matrix</span> itself.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matrelops.png" alt="picture"/>
+<div class="figcaption">Related operations of <span class="teletype">Matrix</span>.</div>
+</div>
+
+<p>To see a table of such packages, use the <span style="font-weight: bold;"> Relatives</span> button on the
+<span style="font-weight: bold;"> Cross Reference</span> page described next.
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-14.2.2"/>
+<div class="subsection"  id="subsec-14.2.2">
+<h3 class="subsectitle">14.2.2  Cross Reference</h3>
+
+
+<a name="ugBrowseCrossReference" class="label"/>
+
+<p>Click on the <span style="font-weight: bold;"> Cross Reference</span> button on the main constructor page
+for <span class="teletype">Matrix</span>.
+This gives you a page having various cross reference information stored
+under the respective buttons.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matxref.png" alt="picture"/>
+<div class="figcaption">Cross-reference page for <span class="teletype">Matrix</span>.</div>
+</div>
+
+
+<a name="subsubsec-14.2.2.1"/>
+<div class="subsubsection"  id="subsubsec-14.2.2.1">
+<h3 class="subsubsectitle">14.2.2.1  Parents</h3>
+
+
+
+<p>The parents of a domain are the same as the categories mentioned under
+the <span style="font-weight: bold;"> Exports</span> button on the first page.
+Domain <span class="teletype">Matrix</span> has only one parent but in general a domain can
+have any number.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.2.2"/>
+<div class="subsubsection"  id="subsubsec-14.2.2.2">
+<h3 class="subsubsectitle">14.2.2.2  Ancestors</h3>
+
+
+
+<p>The ancestors of a constructor consist of its parents, the
+parents of its parents, and so on.
+Did you perform the exercise in the last section under <span style="font-weight: bold;"> Exports</span>?
+If so, you  see here all the categories you found while ascending the
+<span style="font-weight: bold;"> Exports</span> chain for <span class="teletype">Matrix</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.2.3"/>
+<div class="subsubsection"  id="subsubsec-14.2.2.3">
+<h3 class="subsubsectitle">14.2.2.3  Relatives</h3>
+
+
+
+<p>The relatives of a domain constructor are package
+constructors that provide operations in addition to those
+exported by the domain.
+</p>
+
+
+<p>Try this exercise.
+</p>
+
+
+
+<ol>
+<li>
+ Click on <span style="font-weight: bold;"> Relatives</span>, bringing up a list of
+packages.
+
+</li>
+<li> Click on <span class="teletype">LinearSystemMatrixPackage</span> bringing up its
+constructor page.<span class="footnote">You may want to widen your HyperDoc
+window to make what follows more legible.</span>
+
+</li>
+<li> Click on <span style="font-weight: bold;"> Operations</span>.
+Here you see <span style="font-weight: bold;"> rank</span>, an operation also exported by
+<span class="teletype">Matrix</span> itself.
+
+</li>
+<li> Click on <span style="font-weight: bold;"> rank</span>.
+This <span class="spadfunFrom" >rank</span><span class="index">rank</span><a name="chapter-14-7"/><span class="index">LinearSystemMatrixPackage</span><a name="chapter-14-8"/> has two arguments and
+thus is different from the <span class="spadfunFrom" >rank</span><span class="index">rank</span><a name="chapter-14-9"/><span class="index">Matrix</span><a name="chapter-14-10"/> from
+<span class="teletype">Matrix</span>.
+
+</li>
+<li> Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the list of operations for the
+package <span style="font-weight: bold;"> LinearSystemMatrixPackage</span>.
+
+</li>
+<li> Click on <span style="font-weight: bold;"> solve</span> to bring up a
+<span class="spadfunFrom" >solve</span><span class="index">solve</span><a name="chapter-14-11"/><span class="index">LinearSystemMatrixPackage</span><a name="chapter-14-12"/> for linear systems of
+equations.
+
+</li>
+<li> Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> several times to return to the cross
+reference page for <span class="teletype">Matrix</span>.
+</li>
+</ol>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.2.4"/>
+<div class="subsubsection"  id="subsubsec-14.2.2.4">
+<h3 class="subsubsectitle">14.2.2.4  Dependents</h3>
+
+
+
+<p>The dependents of a constructor are those
+domains or packages
+that mention that
+constructor either as an argument or in its exports.
+</p>
+
+
+<p>If you click on <span style="font-weight: bold;"> Dependents</span> two entries may surprise you:
+<span class="teletype">RectangularMatrix</span> and <span class="teletype">SquareMatrix</span>.
+This happens because <span class="teletype">Matrix</span>, as it turns out, appears in
+signatures of operations exported by these domains.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.2.5"/>
+<div class="subsubsection"  id="subsubsec-14.2.2.5">
+<h3 class="subsubsectitle">14.2.2.5  Lineage</h3>
+
+
+
+<p>The term <span class="italic">lineage</span> refers to the <span class="italic">search order</span> for
+functions.
+If you are an expert user or curious about how the Axiom system
+works, try the following exercise.
+Otherwise, you best skip this button and go on to <span style="font-weight: bold;"> Clients</span>.
+</p>
+
+
+<p>Clicking on <span style="font-weight: bold;"> Lineage</span> gives you a
+list of domain constructors:
+<span class="teletype">InnerIndexedTwoDimensionalArray</span>,
+<span class="aliascon" name="MATCAT-" >MatrixCategory&amp;</span>,
+<span class="aliascon" name="ARR2CAT-" >TwoDimensionalArrayCategory&amp;</span>,
+<span class="aliascon" name="HOAGG-" >HomogeneousAggregate&amp;</span>,
+<span class="aliascon" name="AGG-" >Aggregate&amp;</span>.
+What are these constructors and how are they used?
+</p>
+
+
+<p>We explain by an example.
+Suppose you create a matrix using the interpreter, then ask for its
+<span style="font-weight: bold;"> rank</span>.
+Axiom must then find a function implementing the <span style="font-weight: bold;"> rank</span>
+operation for matrices.
+The first place Axiom looks for <span style="font-weight: bold;"> rank</span> is in the <span class="teletype">Matrix</span>
+domain.
+</p>
+
+
+<p>If not there, the lineage of <span class="teletype">Matrix</span> tells Axiom where
+else to look.
+Associated with the matrix domain are five other lineage domains.
+Their order is important.
+Axiom first searches the first one,
+<span class="teletype">InnerIndexedTwoDimensionalArray</span>.
+If not there, it searches the second <span class="aliascon" name="MATCAT-" >MatrixCategory&amp;</span>.
+And so on.
+</p>
+
+
+<p>Where do these <span class="italic">lineage constructors</span> come from?
+The source code for <span class="teletype">Matrix</span> contains this syntax for the
+<span class="italic">function body</span> of
+<span class="teletype">Matrix</span>:<span class="footnote"><span class="teletype">InnerIndexedTwoDimensionalArray</span>
+is a special domain implemented for matrix-like domains to provide
+efficient implementations of two-dimensional arrays.
+For example, domains of category <span class="teletype">TwoDimensionalArrayCategory</span>
+can have any integer as their  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>minIndex</mi></mstyle></math>.
+Matrices and other members of this special ``inner'' array have their
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>minIndex</mi></mstyle></math> defined as  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.</span>
+</p>
+
+
+
+<div class="verbatim"><br />
+InnerIndexedTwoDimensionalArray(R,mnRow,mnCol,Row,Col)<br />
+&nbsp;&nbsp;&nbsp;add&nbsp;...<br />
+</div>
+
+
+<p>where the ``<span class="teletype">...</span>'' denotes all the code that follows.
+In English, this means:
+``The functions for matrices are defined as those from
+<span class="teletype">InnerIndexedTwoDimensionalArray</span> domain augmented by those
+defined in `<span class="teletype">...</span>','' where the latter take precedence.
+</p>
+
+
+<p>This explains <span class="teletype">InnerIndexedTwoDimensionalArray</span>.
+The other names, those with names ending with an ampersand <span class="teletype">&amp;</span> are
+default packages
+for categories to which <span class="teletype">Matrix</span> belongs.
+Default packages are ordered by the notion of ``closest ancestor.''
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.2.6"/>
+<div class="subsubsection"  id="subsubsec-14.2.2.6">
+<h3 class="subsubsectitle">14.2.2.6  Clients</h3>
+
+
+
+<p>A client of <span class="teletype">Matrix</span> is any constructor that uses
+<span class="teletype">Matrix</span> in its implementation.
+For example, <span class="teletype">Complex</span> is a client of <span class="teletype">Matrix</span>; it
+exports several operations that take matrices as arguments or return
+matrices as values.<span class="footnote">A constructor is a client of
+<span class="teletype">Matrix</span> if it handles any matrix.
+For example, a constructor having internal (unexported) operations
+dealing with matrices is also a client.</span>
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.2.7"/>
+<div class="subsubsection"  id="subsubsec-14.2.2.7">
+<h3 class="subsubsectitle">14.2.2.7  Benefactors</h3>
+
+
+
+<p>A <span class="italic">benefactor</span> of <span class="teletype">Matrix</span> is any constructor that
+<span class="teletype">Matrix</span> uses in its implementation.
+This information, like that for clients, is gathered from run-time
+structures.<span class="footnote">The benefactors exclude constructors such as
+<span class="teletype">PrimitiveArray</span> whose operations macro-expand and so vanish
+from sight!</span>
+</p>
+
+
+<p>Cross reference pages for categories have some different buttons on
+them.
+Starting with the constructor page of <span class="teletype">Matrix</span>, click on
+<span class="teletype">Ring</span> producing its constructor page.
+Click on <span style="font-weight: bold;"> Cross Reference</span>,
+producing the cross-reference page for <span class="teletype">Ring</span>.
+Here are buttons <span style="font-weight: bold;"> Parents</span> and <span style="font-weight: bold;"> Ancestors</span> similar to the notion
+for domains, except for categories the relationship between parent and
+child is defined through <span class="italic">category extension</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.2.8"/>
+<div class="subsubsection"  id="subsubsec-14.2.2.8">
+<h3 class="subsubsectitle">14.2.2.8  Children</h3>
+
+
+
+<p>Category hierarchies go both ways.
+There are children as well as parents.
+A child can have any number of parents, but always at least one.
+Every category is therefore a descendant of exactly one category:
+<span class="teletype">Object</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.2.9"/>
+<div class="subsubsection"  id="subsubsec-14.2.2.9">
+<h3 class="subsubsectitle">14.2.2.9  Descendants</h3>
+
+
+
+<p>These are children, children of children, and so on.
+</p>
+
+
+<p>Category hierarchies are complicated by the fact that categories take
+parameters.
+Where a parameterized category fits into a hierarchy <span class="italic">may</span> depend on
+values of its parameters.
+In general, the set of categories in Axiom forms a <span class="italic">directed
+acyclic graph</span>, that is, a graph with directed arcs and no cycles.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.2.10"/>
+<div class="subsubsection"  id="subsubsec-14.2.2.10">
+<h3 class="subsubsectitle">14.2.2.10  Domains</h3>
+
+
+
+<p>This produces a table of all domain constructors that can possibly be
+rings (members of category <span class="teletype">Ring</span>).
+Some domains are unconditional rings.
+Others are rings for some parameters and not for others.
+To find out which, select the <span style="font-weight: bold;"> conditions</span> button in the views
+panel.
+For example, <span class="teletype">DirectProduct(n, R)</span> is a ring if <span class="teletype">R</span> is a
+ring.
+</p>
+
+
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-14.2.3"/>
+<div class="subsection"  id="subsec-14.2.3">
+<h3 class="subsectitle">14.2.3  Views Of Constructors</h3>
+
+
+<a name="ugBrowseViewsOfConstructors" class="label"/>
+
+
+<p>Below every constructor table page is a <span class="italic">Views</span> panel.
+As an example, click on <span style="font-weight: bold;"> Cross Reference</span> from
+the constructor page of <span class="teletype">Matrix</span>,
+then on <span style="font-weight: bold;"> Benefactors</span> to produce a
+short table of constructor names.
+</p>
+
+
+<p>The <span class="italic">Views</span> panel is at the bottom of the page.
+Two items, <span class="italic">names</span> and <span class="italic">conditions,</span> are in italics.
+Others are active buttons.
+The active buttons are those that give you useful alternative views
+on this table of constructors.
+Once you select a view, you notice that the button turns
+off (becomes italicized) so that you cannot reselect it.
+</p>
+
+
+
+<a name="subsubsec-14.2.3.1"/>
+<div class="subsubsection"  id="subsubsec-14.2.3.1">
+<h3 class="subsubsectitle">14.2.3.1  names</h3>
+
+
+
+<p>This view gives you a table of names.
+Selecting any of these names brings up the constructor page for that
+constructor.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.3.2"/>
+<div class="subsubsection"  id="subsubsec-14.2.3.2">
+<h3 class="subsubsectitle">14.2.3.2  abbrs</h3>
+
+
+
+<p>This view gives you a table of abbreviations, in the same order as the
+original constructor names.
+Abbreviations are in capitals and are limited to 7 characters.
+They can be used interchangeably with constructor names in input areas.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.3.3"/>
+<div class="subsubsection"  id="subsubsec-14.2.3.3">
+<h3 class="subsubsectitle">14.2.3.3  kinds</h3>
+
+
+
+<p>This view organizes constructor names into
+the three kinds: categories, domains and packages.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.3.4"/>
+<div class="subsubsection"  id="subsubsec-14.2.3.4">
+<h3 class="subsubsectitle">14.2.3.4  files</h3>
+
+
+
+<p>This view gives a table of file names for the source
+code of the constructors in alphabetic order after removing
+duplicates.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.3.5"/>
+<div class="subsubsection"  id="subsubsec-14.2.3.5">
+<h3 class="subsubsectitle">14.2.3.5  parameters</h3>
+
+
+
+<p>This view presents constructors with the arguments.
+This view of the benefactors of <span class="teletype">Matrix</span> shows that
+<span class="teletype">Matrix</span> uses as many as five different <span class="teletype">List</span> domains
+in its implementation.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.3.6"/>
+<div class="subsubsection"  id="subsubsec-14.2.3.6">
+<h3 class="subsubsectitle">14.2.3.6  filter</h3>
+
+
+
+<p>This button is used to refine the list of names or abbreviations.
+Starting with the <span class="italic">names</span> view, enter <span class="teletype">m*</span> into the input area
+and click on <span class="teletype">filter</span>.
+You then get a shorter table with only the names beginning with <span class="teletype">m</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.3.7"/>
+<div class="subsubsection"  id="subsubsec-14.2.3.7">
+<h3 class="subsubsectitle">14.2.3.7  documentation</h3>
+
+
+
+<p>This gives you documentation for each of the constructors.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.2.3.8"/>
+<div class="subsubsection"  id="subsubsec-14.2.3.8">
+<h3 class="subsubsectitle">14.2.3.8  conditions</h3>
+
+
+
+<p>This page organizes the constructors according to predicates.
+The view is not available for your example page since all constructors
+are unconditional.
+For a table with conditions, return to the <span style="font-weight: bold;"> Cross Reference</span> page
+for <span class="teletype">Matrix</span>, click on <span style="font-weight: bold;"> Ancestors</span>, then on <span style="font-weight: bold;">
+conditions</span> in the view panel.
+This page shows you that <span class="teletype">CoercibleTo(OutputForm)</span> and
+<span class="teletype">SetCategory</span> are ancestors of <span class="teletype">Matrix(R)</span> only if <span class="teletype">R</span>
+belongs to category <span class="teletype">SetCategory</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-14.2.4"/>
+<div class="subsection"  id="subsec-14.2.4">
+<h3 class="subsectitle">14.2.4  Giving Parameters to Constructors</h3>
+
+
+<a name="ugBrowseGivingParameters" class="label"/>
+
+
+<p>Notice the input area at the bottom of the constructor page.
+If you leave this blank, then the information you get is for the
+domain constructor <span class="teletype">Matrix(R)</span>, that is, <span class="teletype">Matrix</span> for an
+arbitrary underlying domain <span class="teletype">R</span>.
+</p>
+
+
+<p>In general, however, the exports and other information <span class="italic">do</span> usually
+depend on the actual value of <span class="teletype">R</span>.
+For example, <span class="teletype">Matrix</span> exports the <span style="font-weight: bold;"> inverse</span> operation
+only if the domain <span class="teletype">R</span> is a <span class="teletype">Field</span>.
+To see this, try this from the main constructor page:
+</p>
+
+
+
+
+<ol>
+<li>
+ Enter <span class="teletype">Integer</span> into the input area at the bottom of the page.
+
+</li>
+<li> Click on <span style="font-weight: bold;"> Operations</span>, producing a table of operations.
+Note the number of operation names that appear at the top of the
+page.
+
+</li>
+<li> Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the constructor page.
+
+</li>
+<li> Use the
+<span style="font-weight: bold;"> Delete</span>
+or
+<span style="font-weight: bold;"> Backspace</span>
+keys to erase <span class="teletype">Integer</span> from the input area.
+
+</li>
+<li> Click on <span style="font-weight: bold;"> Operations</span> to produce a new table of operations.
+Look at the number of operations you get.
+This number is greater than what you had before.
+Find, for example, the operation <span style="font-weight: bold;"> inverse</span>.
+
+</li>
+<li> Click on <span style="font-weight: bold;"> inverse</span> to produce a page describing the operation
+<span style="font-weight: bold;"> inverse</span>.
+At the bottom of the description, you notice that the <span style="font-weight: bold;">
+Conditions</span> line says ``<span class="teletype">R</span> has <span class="teletype">Field</span>.''
+This operation is <span class="italic">not</span> exported by <span class="teletype">Matrix(Integer)</span> since
+<span class="teletype">Integer</span> is not a <span class="italic">field</span>.
+
+Try putting the name of a domain such as <span class="teletype">Fraction Integer</span>
+(which is a field) into the input area, then clicking on <span style="font-weight: bold;"> Operations</span>.
+As you see, the operation <span style="font-weight: bold;"> inverse</span> is exported.
+</li>
+</ol>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-14.1.xhtml" style="margin-right: 10px;">Previous Section 14.1 The Front Page: Searching the Library</a><a href="section-14.3.xhtml" style="margin-right: 10px;">Next Section 14.3 Miscellaneous Features of Browse</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-14.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-14.3.xhtml
new file mode 100644
index 0000000..496079a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-14.3.xhtml
@@ -0,0 +1,682 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section14.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-14.2.xhtml" style="margin-right: 10px;">Previous Section 14.2 The Constructor Page</a><a href="section-15.0.xhtml" style="margin-right: 10px;">Next Section 15.0  Axiom Packages</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-14.3">
+<h2 class="sectiontitle">14.3  Miscellaneous Features of Browse</h2>
+
+
+<a name="ugBrowseMiscellaneousFeatures" class="label"/>
+
+
+
+<a name="subsec-14.3.1"/>
+<div class="subsection"  id="subsec-14.3.1">
+<h3 class="subsectitle">14.3.1  The Description Page for Operations</h3>
+
+
+<a name="ugBrowseDescriptionPage" class="label"/>
+
+
+<p>From the constructor page of <span class="teletype">Matrix</span>,
+click on <span style="font-weight: bold;"> Operations</span> to bring up the table of operations
+for <span class="teletype">Matrix</span>.
+</p>
+
+
+<p>Find the operation <span style="font-weight: bold;"> inverse</span> in the table and click on it.
+This takes you to a page showing the documentation for this operation.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matinv.png" alt="picture"/>
+<div class="figcaption">Operation <span class="spadfunFrom" >inverse</span><span class="index">inverse</span><a name="chapter-14-13"/><span class="index">Matrix</span><a name="chapter-14-14"/> from <span class="teletype">Matrix</span>.</div>
+</div>
+
+<p>Here is the significance of the headings you see.
+</p>
+
+
+
+<a name="subsubsec-14.3.1.1"/>
+<div class="subsubsection"  id="subsubsec-14.3.1.1">
+<h3 class="subsubsectitle">14.3.1.1  Arguments</h3>
+
+
+
+<p>This lists each of the arguments of the operation in turn, paraphrasing
+the <span class="italic">signature</span> of the operation.
+As for signatures, a <span class="teletype">$</span> is used to designate <span class="em">this domain</span>,
+that is, <span class="teletype">Matrix(R)</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.1.2"/>
+<div class="subsubsection"  id="subsubsec-14.3.1.2">
+<h3 class="subsubsectitle">14.3.1.2  Returns</h3>
+
+
+
+<p>This describes the return value for the operation, analogous to the <span style="font-weight: bold;">
+Arguments</span> part.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.1.3"/>
+<div class="subsubsection"  id="subsubsec-14.3.1.3">
+<h3 class="subsubsectitle">14.3.1.3  Origin</h3>
+
+
+
+<p>This tells you which domain or category explicitly exports the
+operation.
+In this example, the domain itself is the <span class="italic">Origin</span>.
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.1.4"/>
+<div class="subsubsection"  id="subsubsec-14.3.1.4">
+<h3 class="subsubsectitle">14.3.1.4  Conditions</h3>
+
+
+
+<p>This tells you that the operation is exported by <span class="teletype">Matrix(R)</span> only if
+``<span class="teletype">R</span> has <span class="teletype">Field</span>,'' that is, ``<span class="teletype">R</span> is a member of
+category <span class="teletype">Field</span>.''
+When no <span style="font-weight: bold;"> Conditions</span> part is given, the operation is exported for
+all values of <span class="teletype">R</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.1.5"/>
+<div class="subsubsection"  id="subsubsec-14.3.1.5">
+<h3 class="subsubsectitle">14.3.1.5  Description</h3>
+
+
+
+<p>Here are the <span class="teletype">++</span> comments
+that appear in the source code of its <span class="italic">Origin</span>, here <span class="teletype">Matrix</span>.
+You find these comments in the source code for <span class="teletype">Matrix</span>.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matmap.png" alt="picture"/>
+<div class="figcaption">Operations <span style="font-weight: bold;"> map</span> from <span class="teletype">Matrix</span>.</div>
+</div>
+
+<p>Click on <img src="ps/up.png" alt="up button" class="upbitmap" /> to return to the table of operations.
+Click on <span style="font-weight: bold;"> map</span>.
+Here you find three different operations named <span style="font-weight: bold;"> map</span>.
+This should not surprise you.
+Operations are identified by name and <span class="italic">signature</span>.
+There are three operations named <span style="font-weight: bold;"> map</span>, each with
+different signatures.
+What you see is the <span class="italic">descriptions</span> view of the operations.
+If you like, select the button in the heading of one of these
+descriptions to get <span class="italic">only</span> that operation.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.1.6"/>
+<div class="subsubsection"  id="subsubsec-14.3.1.6">
+<h3 class="subsubsectitle">14.3.1.6  Where</h3>
+
+
+
+<p>This part qualifies domain parameters mentioned in the arguments to the
+operation.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-14.3.2"/>
+<div class="subsection"  id="subsec-14.3.2">
+<h3 class="subsectitle">14.3.2  Views of Operations</h3>
+
+
+<a name="ugBrowseViewsOfOperations" class="label"/>
+
+
+<p>We suggest that you go to the constructor page for <span class="teletype">Matrix</span>
+and click on <span style="font-weight: bold;"> Operations</span> to bring up a table of operations
+with a <span class="italic">Views</span> panel at the bottom.
+</p>
+
+
+
+<a name="subsubsec-14.3.2.1"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.1">
+<h3 class="subsubsectitle">14.3.2.1  names</h3>
+
+
+
+<p>This view lists the names of the operations.
+Unlike constructors, however, there may be several operations with the
+same name.
+The heading for the page tells you the number of unique names and the
+number of distinct operations when these numbers are different.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.2.2"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.2">
+<h3 class="subsubsectitle">14.3.2.2  filter</h3>
+
+
+
+<p>As for constructors, you can use this button to cut down the list of
+operations you are looking at.
+Enter, for example, <span class="teletype">m*</span> into the input area to the right of <span style="font-weight: bold;">
+filter</span> then click on <span style="font-weight: bold;"> filter</span>.
+As usual, any logical expression is permitted.
+For example, use
+</p>
+
+
+
+<div class="verbatim"><br />
+*!&nbsp;or&nbsp;*?<br />
+</div>
+
+
+<p>to get a list of destructive operations and predicates.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.2.3"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.3">
+<h3 class="subsubsectitle">14.3.2.3  documentation</h3>
+
+
+
+<p>This gives you the most information:
+a detailed description of all the operations in the form you have seen
+before.
+Every other button summarizes these operations in some form.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.2.4"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.4">
+<h3 class="subsubsectitle">14.3.2.4  signatures</h3>
+
+
+
+<p>This views the operations by showing their signatures.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.2.5"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.5">
+<h3 class="subsubsectitle">14.3.2.5  parameters</h3>
+
+
+
+<p>This views the operations by their distinct syntactic forms with
+parameters.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.2.6"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.6">
+<h3 class="subsubsectitle">14.3.2.6  origins</h3>
+
+
+
+<p>This organizes the operations according to the constructor that
+explicitly exports them.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.2.7"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.7">
+<h3 class="subsubsectitle">14.3.2.7  conditions</h3>
+
+
+
+<p>This view organizes the operations into conditional and unconditional
+operations.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.2.8"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.8">
+<h3 class="subsubsectitle">14.3.2.8  usage</h3>
+
+
+
+<p>This button is only available if your user-level is set to <span class="italic"><span class="index">user-level</span><a name="chapter-14-15"/>
+development</span>.
+The <span style="font-weight: bold;"> usage</span> button produces a table of constructors that reference this
+operation.<span class="footnote">Axiom requires an especially long time to
+produce this table, so anticipate this when requesting this
+information.</span>
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.2.9"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.9">
+<h3 class="subsubsectitle">14.3.2.9  implementation</h3>
+
+
+
+<p>This button is only available if your user-level is set to <span class="italic">development</span>.
+<span class="index">user-level</span><a name="chapter-14-16"/>
+If you enter values for all domain parameters on the constructor page,
+then the <span style="font-weight: bold;"> implementation</span> button appears in place of the <span style="font-weight: bold;">
+conditions</span> button.
+This button tells you what domains or packages actually implement the
+various operations.<span class="footnote">This button often takes a long time; expect
+a delay while you wait for an answer.</span>
+</p>
+
+
+<p>With your user-level set to <span class="italic">development</span>, we suggest you try this
+exercise.
+Return to the main constructor page for <span class="teletype">Matrix</span>, then enter
+<span class="teletype">Integer</span> into the input area at the bottom as the value of <span class="teletype">R</span>.
+Then click on <span style="font-weight: bold;"> Operations</span> to produce a table of operations.
+Note that the <span style="font-weight: bold;"> conditions</span> part of the <span class="italic">Views</span> table is
+replaced by <span style="font-weight: bold;"> implementation</span>.
+Click on <span style="font-weight: bold;"> implementation</span>.
+After some delay, you get a page describing what implements each of
+the matrix operations, organized by the various domains and packages.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-matimp.png" alt="picture"/>
+<div class="figcaption">Implementation domains for <span class="teletype">Matrix</span>.</div>
+</div>
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.2.10"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.10">
+<h3 class="subsubsectitle">14.3.2.10  generalize</h3>
+
+
+
+<p>This button only appears for an operation page of a constructor
+involving a unique operation name.
+</p>
+
+
+<p>From an operations page for <span class="teletype">Matrix</span>, select any
+operation name, say <span style="font-weight: bold;"> rank</span>.
+In the views panel, the <span style="font-weight: bold;"> filter</span> button is  replaced by
+<span style="font-weight: bold;"> generalize</span>.
+Click on it!
+<!-- Replaced <span style="font-weight: bold;"> threshold</span> with 10 below.  MGR 1995oct31 -->
+What you get is a description of all Axiom operations
+named <span style="font-weight: bold;"> rank</span>.<span class="footnote">If there were more than 10
+operations of the name, you get instead a page
+with a <span class="italic">Views</span> panel at the bottom and the message to <span style="font-weight: bold;">
+Select a view below</span>.
+To get the descriptions of all these operations as mentioned
+above, select the <span style="font-weight: bold;"> description</span> button.</span>
+<!--See the discussion of <span style="font-weight: bold;"> threshold</span> in
+<a href="section-14.3.xhtml#ugBrowseOptions" class="ref" >ugBrowseOptions</a>.} %% Removed MGR 1995oct31
+-->
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-allrank.png" alt="picture"/>
+<div class="figcaption">All operations named <span style="font-weight: bold;"> rank</span> in Axiom.</div>
+</div>
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.2.11"/>
+<div class="subsubsection"  id="subsubsec-14.3.2.11">
+<h3 class="subsubsectitle">14.3.2.11  all domains</h3>
+
+
+
+<p>This button only appears on an operation page resulting from a
+search from the front page of Browse or from selecting
+<span style="font-weight: bold;"> generalize</span> from an operation page for a constructor.
+</p>
+
+
+<p>Note that the <span style="font-weight: bold;"> filter</span> button in the <span class="italic">Views</span> panel is
+replaced by <span style="font-weight: bold;"> all domains</span>.
+Click on it to produce a table of <span class="italic">all</span> domains or packages that
+export a <span style="font-weight: bold;"> rank</span> operation.
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-alldoms.png" alt="picture"/>
+<div class="figcaption">Table of all domains that export <span style="font-weight: bold;"> rank</span>.</div>
+</div>
+
+<p>We note that this table specifically refers to all the <span style="font-weight: bold;"> rank</span>
+operations shown in the preceding page.
+Return to the descriptions of all the <span style="font-weight: bold;"> rank</span> operations and
+select one of them by clicking on the button in its heading.
+Select <span style="font-weight: bold;"> all domains</span>.
+As you see, you have a smaller table of constructors.
+When there is only one constructor, you get the
+constructor page for that constructor.
+
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-14.3.3"/>
+<div class="subsection"  id="subsec-14.3.3">
+<h3 class="subsectitle">14.3.3  Capitalization Convention</h3>
+
+
+<a name="ugBrowseCapitalizationConvention" class="label"/>
+
+
+<p>When entering search keys for constructors, you can use capital
+letters to search for abbreviations.
+For example, enter <span class="teletype">UTS</span> into the input area and click on <span style="font-weight: bold;">
+Constructors</span>.
+Up comes a page describing <span class="teletype">UnivariateTaylorSeries</span>
+whose abbreviation is <span class="teletype">UTS</span>.
+</p>
+
+
+<p>Constructor abbreviations always have three or more capital
+letters.
+For short constructor names (six letters or less), abbreviations
+are not generally helpful as their abbreviation is typically the
+constructor name in capitals.
+For example, the abbreviation for <span class="teletype">Matrix</span> is
+<span class="teletype">MATRIX</span>.
+</p>
+
+
+<p>Abbreviations can also contain numbers.
+For example, <span class="teletype">POLY2</span> is the abbreviation for constructor
+<span class="teletype">PolynomialFunctions2</span>.
+For default packages, the abbreviation is the same as the
+abbreviation for the corresponding category with the ``&amp;''
+replaced by ``-''.
+For example, for the category default package
+<span class="aliascon" name="MATCAT-" >MatrixCategory&amp;</span> the abbreviation is
+<span class="teletype">MATCAT-</span> since the corresponding category
+<span class="teletype">MatrixCategory</span> has abbreviation <span class="teletype">MATCAT</span>.
+</p>
+
+</div>
+
+<!--
+ *********************************************************************
+
+
+
+
+
+
+
+
+<a name="subsec-14.3.4"/>
+<div class="subsection"  id="subsec-14.3.4">
+<h3 class="subsectitle">14.3.4  Browse Options</h3>
+
+
+<a name="ugBrowseOptions" class="label"/>
+
+<p> *********************************************************************
+</p>
+
+
+<p>You can set two options for using Browse: exposure and threshold.
+</p>
+
+
+<p> *********************************************************************
+</p>
+
+
+<a name="subsubsec-14.3.4.1"/>
+<div class="subsubsection"  id="subsubsec-14.3.4.1">
+<h3 class="subsubsectitle">14.3.4.1  Exposure</h3>
+
+
+<p> *********************************************************************
+</p>
+
+
+<p>By default, the only constructors, operations, and attributes
+shown by Browse are those from exposed constructors.
+To change this, you can issue
+<span class="index">set hyperdoc browse exposure</span><a name="chapter-14-17"/>
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;hyperdoc&nbsp;browse&nbsp;exposure&nbsp;on<br />
+</div>
+
+
+<p>After you make this setting, you will see
+both exposed and unexposed constructs.
+By definition, an operation or attribute is exposed only if it is
+exported from an exposed constructor.
+Unexposed items are generally marked by Browse with an asterisk.
+For more information on exposure, see <a href="section-2.11.xhtml#ugTypesExpose" class="ref" >ugTypesExpose</a>.
+</p>
+
+
+<p>With this setting, try the following experiment.
+Starting with the main Browse page, enter <span class="teletype">*matrix*</span> into the
+input area and click on <span style="font-weight: bold;"> Constructors</span>.
+The result is the following table.  This line  should be texonly. MGR
+</p>
+
+
+
+<div class="image">
+<img src="ps/h-consearch2.png" alt="picture"/>
+<div class="figcaption">Table of all constructors matching <span class="teletype">*matrix*</span> .</div>
+</div>
+
+
+<p> *********************************************************************
+</p>
+
+
+
+</div>
+
+
+
+<a name="subsubsec-14.3.4.2"/>
+<div class="subsubsection"  id="subsubsec-14.3.4.2">
+<h3 class="subsubsectitle">14.3.4.2  Threshold</h3>
+
+
+<p> *********************************************************************
+</p>
+
+
+<p>For General, Documentation or Complete searches, a summary is presented
+of all matches.
+When the number of items of a given kind is less than a number called
+<span style="font-weight: bold;"> threshold</span>, Axiom presents a table of names with the heading
+for that kind.
+</p>
+
+
+<p>Also, when an operation name is chosen and there are less than <span style="font-weight: bold;">
+threshold</span> distinct operations, the operations are initially shown in
+<span style="font-weight: bold;"> description</span> mode.
+</p>
+
+
+<p>The default value of <span style="font-weight: bold;"> threshold</span> is 10.
+To change its value to say 5, issue
+<span class="index">set hyperdoc browse threshold</span><a name="chapter-14-18"/>
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;hyperdoc&nbsp;browse&nbsp;threshold&nbsp;5<br />
+</div>
+
+
+<p>Notice that the headings in
+the summary are active.
+If you click on a heading, you bring up a separate page for those
+entries.
+</p>
+
+
+<p> Above section removed by MGR, 1995oct30, as these two options do
+ not exist.
+
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+-->
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-14.2.xhtml" style="margin-right: 10px;">Previous Section 14.2 The Constructor Page</a><a href="section-15.0.xhtml" style="margin-right: 10px;">Next Section 15.0  Axiom Packages</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-15.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-15.0.xhtml
new file mode 100644
index 0000000..6075a4c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-15.0.xhtml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section15.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-14.3.xhtml" style="margin-right: 10px;">Previous Section 14.3  Miscellaneous Features of Browse</a><a href="section-15.1.xhtml" style="margin-right: 10px;">Next Section 15.1 Important Things to Read First</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-15.0">
+<h2 class="sectiontitle">15.0  Axiom Packages</h2>
+<a name="ugWhatsNew" class="label"/>
+
+<p>Many things have changed in this new version of Axiom and
+we describe many of the more important topics here.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-14.3.xhtml" style="margin-right: 10px;">Previous Section 14.3  Miscellaneous Features of Browse</a><a href="section-15.1.xhtml" style="margin-right: 10px;">Next Section 15.1 Important Things to Read First</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-15.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-15.1.xhtml
new file mode 100644
index 0000000..6425a6b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-15.1.xhtml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section15.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-15.0.xhtml" style="margin-right: 10px;">Previous Section 15.0 Axiom Packages</a><a href="section-15.2.xhtml" style="margin-right: 10px;">Next Section 15.2 The New Axiom Library Compiler</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-15.1">
+<h2 class="sectiontitle">15.1  Important Things to Read First</h2>
+
+
+<p><span class="index">ugWhatsNewImportant</span><a name="chapter-15-0"/>
+</p>
+
+
+
+<p>If you have any private <span class="teletype">.spad</span> files (that is, library files
+which were not shipped with Axiom) you will need to
+recompile them.  For example, if you wrote the file <span class="teletype">regress.spad</span> then you should issue <span class="teletype">)compile regress.spad</span>
+before trying to use it.
+</p>
+
+
+<p>The internal representation of <span class="teletype">Union</span>  has changed. 
+This means that  Axiom data saved 
+with Release 1.x may not
+be readable by this Release. If you cannot recreate the saved data      
+by recomputing in Release 2.0, please contact NAG for assistance.       
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-15.0.xhtml" style="margin-right: 10px;">Previous Section 15.0 Axiom Packages</a><a href="section-15.2.xhtml" style="margin-right: 10px;">Next Section 15.2 The New Axiom Library Compiler</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-15.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-15.2.xhtml
new file mode 100644
index 0000000..b03a41b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-15.2.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section15.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-15.1.xhtml" style="margin-right: 10px;">Previous Section 15.1 Important Things to Read First</a><a href="section-15.3.xhtml" style="margin-right: 10px;">Next Section 15.3 The NAG Library Link</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-15.2">
+<h2 class="sectiontitle">15.2  The New Axiom Library Compiler</h2>
+
+
+<p><span class="index">ugWhatsNewAsharp</span><a name="chapter-15-1"/>
+</p>
+
+
+
+<p>A new compiler is now available for Axiom.
+The programming language is referred to as the Aldor, and
+improves upon the old Axiom language in many ways.
+The <span class="teletype">)compile</span> command has been upgraded to be able to
+invoke the new or old compilers.
+The language and the compiler are described in the hard-copy
+documentation which came with your Axiom system.
+</p>
+
+
+<p>To ease the chore of upgrading your <span class="italic">.spad</span> files (old
+compiler) to <span class="italic">.as</span> files (new compiler), the
+<span class="teletype">)compile</span> command has been given a <span class="teletype">)translate</span>
+option. This invokes a special version of the old compiler which
+parses and analyzes your old code and produces augmented code
+using the new syntax.
+Please be aware that the translation is not necessarily one
+hundred percent complete or correct.
+You should attempt to compile the output with the Aldor compiler
+and make any necessary corrections.
+</p>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-15.1.xhtml" style="margin-right: 10px;">Previous Section 15.1 Important Things to Read First</a><a href="section-15.3.xhtml" style="margin-right: 10px;">Next Section 15.3 The NAG Library Link</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-15.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-15.3.xhtml
new file mode 100644
index 0000000..9f63010
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-15.3.xhtml
@@ -0,0 +1,1793 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section15.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-15.2.xhtml" style="margin-right: 10px;">Previous Section 15.2 The New Axiom Library Compiler</a><a href="section-15.4.xhtml" style="margin-right: 10px;">Next Section 15.4 Interactive Front-end and Language</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-15.3">
+<h2 class="sectiontitle">15.3  The NAG Library Link</h2>
+
+
+<p><span class="index">nagLinkIntro</span><a name="chapter-15-2"/>
+</p>
+
+
+
+<p>The Nag Library link allows you to call NAG Fortran
+routines from within Axiom, passing Axiom objects as parameters
+and getting them back as results.
+</p>
+
+
+<p>The Nag Library and, consequently, the link are divided into <span class="em">chapters</span>,
+which cover different areas of numerical analysis.  The statistical
+and sorting <span class="em">chapters</span> of the Library, however, are not included in the
+link and various support and utility routines (mainly the F06 and X
+<span class="em">chapters</span>) have been omitted.
+</p>
+
+
+<p>Each <span class="em">chapter</span> has a short (at most three-letter) name;
+for example, the <span class="em">chapter</span> devoted to the
+solution of ordinary differential equations is called D02.  When
+using the link via the HyperDoc interface.
+you will be presented with a complete menu of these <span class="em">chapters</span>. The
+names of individual routines within each <span class="em">chapter</span> are formed by
+adding three letters to the <span class="em">chapter</span> name, so for example the routine
+for solving ODEs by Adams method is called
+<span class="spadfunFrom" >d02cjf</span><span class="index">d02cjf</span><a name="chapter-15-3"/><span class="index">NagOrdinaryDifferentialEquationsPackage</span><a name="chapter-15-4"/>.
+</p>
+
+
+
+
+<a name="subsec-15.3.1"/>
+<div class="subsection"  id="subsec-15.3.1">
+<h3 class="subsectitle">15.3.1  Interpreting NAG Documentation</h3>
+
+
+<p><span class="index">nagDocumentation</span><a name="chapter-15-5"/>
+</p>
+
+
+
+<p>Information about using the Nag Library in general, and about using
+individual routines in particular, can be accessed via HyperDoc.
+This documentation refers to the Fortran routines directly; the
+purpose of this subsection is to explain how this corresponds to the
+Axiom routines.
+</p>
+
+
+<p>For general information about the Nag Library users should consult
+Essential Introduction to the NAG Foundation Library
+<span class="index">manpageXXintro</span><a name="chapter-15-6"/>.
+The documentation is in ASCII format, and a description of the conventions
+used to represent mathematical symbols is given in
+Introduction to NAG On-Line Documentation
+<span class="index">manpageXXonline</span><a name="chapter-15-7"/>.
+Advice about choosing a routine from a particular <span class="em">chapter</span> can be found in
+the Chapter Documents <span class="index">FoundationLibraryDocPage</span><a name="chapter-15-8"/>.
+</p>
+
+
+
+
+<a name="subsubsec-15.3.1.1"/>
+<div class="subsubsection"  id="subsubsec-15.3.1.1">
+<h3 class="subsubsectitle">15.3.1.1  Correspondence Between Fortran and Axiom types</h3>
+
+
+
+
+<p>The NAG documentation refers to the Fortran types of objects; in
+general, the correspondence to Axiom types is as follows.
+</p>
+
+
+
+<ul>
+<li>
+ Fortran INTEGER corresponds to Axiom <span class="teletype">Integer</span>.
+</li>
+<li> Fortran DOUBLE PRECISION corresponds to Axiom <span class="teletype">DoubleFloat</span>.
+</li>
+<li> Fortran COMPLEX corresponds to Axiom <span class="teletype">Complex DoubleFloat</span>.
+</li>
+<li> Fortran LOGICAL corresponds to Axiom <span class="teletype">Boolean</span>.
+</li>
+<li> Fortran CHARACTER*(*) corresponds to Axiom <span class="teletype">String</span>.
+</li>
+</ul>
+
+
+<p>(Exceptionally, for NAG EXTERNAL parameters -- ASPs in link parlance
+-- REAL and COMPLEX correspond to <span class="teletype">MachineFloat</span> and <span class="teletype">MachineComplex</span>,
+respectively; see <a href="aspSection" class="ref" >aspSection</a> .)
+</p>
+
+
+<p>The correspondence for aggregates is as follows.
+</p>
+
+
+
+<ul>
+<li>
+ A one-dimensional Fortran array corresponds to an Axiom 
+      <span class="teletype">Matrix</span> with one column.
+</li>
+<li> A two-dimensional Fortran ARRAY corresponds to an Axiom 
+      <span class="teletype">Matrix</span>.
+</li>
+<li> A three-dimensional Fortran ARRAY corresponds to an Axiom 
+      <span class="teletype">ThreeDimensionalMatrix</span>.
+</li>
+</ul>
+
+
+<p>Higher-dimensional arrays are not currently needed for the Nag Library.
+</p>
+
+
+<p>Arguments which are Fortran FUNCTIONs or SUBROUTINEs correspond
+to special ASP domains in Axiom. See <a href="aspSection" class="ref" >aspSection</a> .
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.1.2"/>
+<div class="subsubsection"  id="subsubsec-15.3.1.2">
+<h3 class="subsubsectitle">15.3.1.2  Classification of NAG parameters</h3>
+
+
+
+
+<p>NAG parameters are classified as belonging to one (or more)
+of the following categories: <span class="teletype">Input</span>, <span class="teletype">Output</span>, <span class="teletype">Workspace</span> or <span class="teletype">External</span> procedure.
+Within <span class="teletype">External</span> procedures a similar classification is used, and parameters
+may also be <span class="teletype">Dummies</span>, or <span class="teletype">User Workspace</span> (data structures not used by the
+NAG routine but provided for the convenience of the user).
+</p>
+
+
+<p>When calling a NAG routine via the link the user only provides values
+for <span class="teletype">Input</span> and <span class="teletype">External</span> parameters.
+</p>
+
+
+<p>The order of the parameters is, in general, different from  the order
+specified in the Nag Library documentation. The Browser description
+for each routine helps in determining the correspondence. As a rule of
+thumb, <span class="teletype">Input</span> parameters come first followed by <span class="teletype">Input/Output</span>
+parameters. The <span class="teletype">External</span> parameters are always found at the end.
+</p>
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.1.3"/>
+<div class="subsubsection"  id="subsubsec-15.3.1.3">
+<h3 class="subsubsectitle">15.3.1.3  IFAIL</h3>
+
+
+
+
+<p>NAG routines often return diagnostic information through a parameter called
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>ifail</mi></mstyle></math>.  With a few exceptions, the principle is that on input
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>ifail</mi></mstyle></math> takes
+one of the values  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>1</mn></mrow></mstyle></math>.  This determines how the routine behaves when
+it encounters an error:
+</p>
+
+
+
+<ul>
+<li>
+ a value of 1 causes the NAG routine to return without printing an error
+message;
+</li>
+<li> a value of 0 causes the NAG routine to print an error message and abort;
+</li>
+<li> a value of -1 causes the NAG routine to return and print an error message.
+</li>
+</ul>
+
+
+
+<p>The user is STRONGLY ADVISED to set  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>ifail</mi></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math> when using the link.
+If  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>ifail</mi></mstyle></math> has been set to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> or  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math> on input, then its value on output
+will determine the possible cause of any error.  A value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> indicates
+successful completion, otherwise it provides an index into a table of
+diagnostics provided as part of the routine documentation (accessible via
+Browse).
+</p>
+
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-15.3.2"/>
+<div class="subsection"  id="subsec-15.3.2">
+<h3 class="subsectitle">15.3.2  Using the Link</h3>
+
+
+<p><span class="index">nagLinkUsage</span><a name="chapter-15-9"/>
+</p>
+
+
+
+<p>The easiest way to use the link is via the
+HyperDoc interface <span class="index">htxl1</span><a name="chapter-15-10"/>.
+You will be presented with a set of fill-in forms where
+you can specify the parameters for each call.  Initially, the forms
+contain example values, demonstrating the use of each routine (these,
+in fact, correspond to the standard NAG example program for the
+routine in question).  For some parameters, these values can provide
+reasonable defaults; others, of course, represent data.  When you
+change a parameter which controls the size of an array, the data in
+that array are reset to a ``neutral'' value -- usually zero.
+</p>
+
+
+<p>When you are satisfied with the values entered, clicking on the
+``Continue'' button will display the Axiom command needed to
+run the chosen NAG routine with these values.  Clicking on the
+``Do It'' button will then cause Axiom to execute this command
+and return the result in the parent Axiom session, as described
+below.  Note that, for some routines, multiple HyperDoc ``pages'' are
+required, due to the structure of the data.  For these, returning to
+an earlier page causes HyperDoc to reset the later pages (this is a
+general feature of HyperDoc); in such a case, the simplest way to
+repeat a call, varying a parameter on an earlier page, is probably to
+modify the call displayed in the parent session.
+</p>
+
+
+<p>An alternative approach is to call NAG routines directly in your
+normal Axiom session (that is, using the Axiom
+interpreter).  Such calls return an
+object of type <span style="font-weight: bold;"> Result</span>.  As not
+all parameters in the underlying NAG routine are required in the
+AXIOM call (and the parameter ordering may be different), before
+calling a NAG routine you should consult the description of the
+Axiom operation in the Browser.  (The quickest route to this
+is to type the routine name, in lower case, into the Browser's
+input area, then click on <span class="teletype">Operations</span>.)  The parameter names
+used coincide with NAG's, although they will appear here in lower
+case.  Of course, it is also possible to become familiar with the
+Axiom form of a routine by first using it through the
+HyperDoc interface <span class="index">htxl1</span><a name="chapter-15-11"/>.
+</p>
+
+
+<p>As an example of this mode of working, we can find a zero
+of a function, lying between 3 and 4, as follows:
+</p>
+
+
+
+
+<div id="spadComm15-1" class="spadComm" >
+<form id="formComm15-1" action="javascript:makeRequest('15-1');" >
+<input id="comm15-1" type="text" class="command" style="width: 36em;" value="answer:=c05adf(3.0,4.0,1.0e-5,0.0,-1,sin(X)::ASP1(F)) " />
+</form>
+<span id="commSav15-1" class="commSav" >answer:=c05adf(3.0,4.0,1.0e-5,0.0,-1,sin(X)::ASP1(F)) </span>
+<div id="mathAns15-1" ></div>
+</div>
+
+
+
+<p>By default, <span style="font-weight: bold;"> Result</span> only displays the type of returned values,
+since the amount of information returned can be quite large.  Individual
+components can be examined as follows:
+</p>
+
+
+
+
+<div id="spadComm15-2" class="spadComm" >
+<form id="formComm15-2" action="javascript:makeRequest('15-2');" >
+<input id="comm15-2" type="text" class="command" style="width: 7em;" value="answer . x" />
+</form>
+<span id="commSav15-2" class="commSav" >answer . x</span>
+<div id="mathAns15-2" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-3" class="spadComm" >
+<form id="formComm15-3" action="javascript:makeRequest('15-3');" >
+<input id="comm15-3" type="text" class="command" style="width: 10em;" value="answer . ifail" />
+</form>
+<span id="commSav15-3" class="commSav" >answer . ifail</span>
+<div id="mathAns15-3" ></div>
+</div>
+
+
+
+<p>In order to avoid conflict with names defined in the workspace, you can also
+get the values by using the <span class="teletype">String</span> type (the interpreter automatically
+coerces them to <span class="teletype">Symbol</span>)
+</p>
+
+
+
+
+<div id="spadComm15-4" class="spadComm" >
+<form id="formComm15-4" action="javascript:makeRequest('15-4');" >
+<input id="comm15-4" type="text" class="command" style="width: 7em;" value='answer "x"' />
+</form>
+<span id="commSav15-4" class="commSav" >answer "x"</span>
+<div id="mathAns15-4" ></div>
+</div>
+
+
+
+<p>It is possible to have Axiom display the values of scalar or array
+results automatically.  For more details, see the commands  
+<span class="spadfunFrom" >showScalarValues</span><span class="index">showScalarValues</span><a name="chapter-15-12"/><span class="index">Result</span><a name="chapter-15-13"/>
+and <span class="spadfunFrom" >showArrayValues</span><span class="index">showArrayValues</span><a name="chapter-15-14"/><span class="index">Result</span><a name="chapter-15-15"/>.
+</p>
+
+
+<p>There is also a <span style="font-weight: bold;"> .input</span> file for each NAG routine, containing
+Axiom interpreter commands to set up and run the standard NAG
+example for that routine.
+</p>
+
+
+
+
+<div id="spadComm15-5" class="spadComm" >
+<form id="formComm15-5" action="javascript:makeRequest('15-5');" >
+<input id="comm15-5" type="text" class="command" style="width: 12em;" value=")read c05adf.input" />
+</form>
+<span id="commSav15-5" class="commSav" >)read c05adf.input</span>
+<div id="mathAns15-5" ></div>
+</div>
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-15.3.3"/>
+<div class="subsection"  id="subsec-15.3.3">
+<h3 class="subsectitle">15.3.3  Providing values for Argument Subprograms</h3>
+
+
+<p><span class="index">aspSection</span><a name="chapter-15-16"/>
+</p>
+
+
+
+<p>There are a number of ways in which users can provide values for argument
+subprograms (ASPs).  At the top level the user will see that NAG routines
+require
+an object from the <span class="teletype">Union</span> of a <span class="teletype">Filename</span> and an ASP.
+</p>
+
+
+<p>For example <span style="font-weight: bold;"> c05adf</span> requires an object of type 
+<span class="teletype">Union</span>(fn: <span class="teletype">FileName</span>,fp: <span class="teletype">Asp1 F</span>)
+</p>
+
+
+
+
+<div id="spadComm15-6" class="spadComm" >
+<form id="formComm15-6" action="javascript:makeRequest('15-6');" >
+<input id="comm15-6" type="text" class="command" style="width: 17em;" value=")display operation c05adf" />
+</form>
+<span id="commSav15-6" class="commSav" >)display operation c05adf</span>
+<div id="mathAns15-6" ></div>
+</div>
+
+
+
+
+<p>The user thus has a choice of providing the name of a file containing
+Fortran source code, or of somehow generating the ASP within Axiom.
+If a filename is specified, it is searched for in the <span class="italic">local</span> 
+machine, i.e., the machine that Axiom is running on.
+</p>
+
+
+
+
+<a name="subsubsec-15.3.3.1"/>
+<div class="subsubsection"  id="subsubsec-15.3.3.1">
+<h3 class="subsubsectitle">15.3.3.1  Providing ASPs via <span class="teletype">FortranExpression</span></h3>
+
+
+
+
+<p>The <span class="teletype">FortranExpression</span> domain is used to represent expressions
+which can be translated into Fortran under certain circumstances.    It is
+very similar to <span class="teletype">Expression</span> except that only operators which exist
+in Fortran can be used, and only certain variables can occur.
+For
+example the instantiation <span class="teletype">FortranExpression([X],[M],MachineFloat)</span>
+is the domain of expressions containing the scalar  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>X</mi></mstyle></math> and the array
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>M</mi></mstyle></math>.
+</p>
+
+
+<p>This allows us to create expressions like:
+</p>
+
+
+
+
+<div id="spadComm15-7" class="spadComm" >
+<form id="formComm15-7" action="javascript:makeRequest('15-7');" >
+<input id="comm15-7" type="text" class="command" style="width: 40em;" value="f : FortranExpression([X],[M],MachineFloat) := sin(X)+M[3,1]" />
+</form>
+<span id="commSav15-7" class="commSav" >f : FortranExpression([X],[M],MachineFloat) := sin(X)+M[3,1]</span>
+<div id="mathAns15-7" ></div>
+</div>
+
+
+
+<p>but not
+</p>
+
+
+
+
+<div id="spadComm15-8" class="spadComm" >
+<form id="formComm15-8" action="javascript:makeRequest('15-8');" >
+<input id="comm15-8" type="text" class="command" style="width: 37em;" value="f : FortranExpression([X],[M],MachineFloat) := sin(M)+Y" />
+</form>
+<span id="commSav15-8" class="commSav" >f : FortranExpression([X],[M],MachineFloat) := sin(M)+Y</span>
+<div id="mathAns15-8" ></div>
+</div>
+
+
+
+<p>Those ASPs which represent expressions usually export a <span style="font-weight: bold;"> coerce</span> from
+an appropriate instantiation of <span class="teletype">FortranExpression</span> (or perhaps
+<span class="teletype">Vector FortranExpression</span> etc.).  For convenience there are also
+retractions from appropriate instantiations of <span class="teletype">Expression</span>,
+<span class="teletype">Polynomial</span> and <span class="teletype">Fraction Polynomial</span>.
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.3.2"/>
+<div class="subsubsection"  id="subsubsec-15.3.3.2">
+<h3 class="subsubsectitle">15.3.3.2  Providing ASPs via <span class="teletype">FortranCode</span></h3>
+
+
+
+
+<p><span class="index">FortranCode</span><a name="chapter-15-17"/>
+<span class="teletype">FortranCode</span> allows us to build arbitrarily complex ASPs via a
+kind of pseudo-code.  It is described fully in
+<a href="generalFortran" class="ref" >generalFortran</a> .
+</p>
+
+
+<p>Every ASP exports two <span style="font-weight: bold;"> coerce</span> functions: one from
+<span class="teletype">FortranCode</span> and one from <span class="teletype">List FortranCode</span>.  There
+is also a <span style="font-weight: bold;"> coerce</span> from 
+<span class="teletype">Record( localSymbols: SymbolTable, code: List FortranCode)</span>
+which is used for passing extra symbol information about the ASP.
+</p>
+
+
+<p>So for example, to integrate the function abs(x) we could use the built-in
+<span style="font-weight: bold;"> abs</span> function.  But suppose we want to get back to basics and define
+it directly, then we could do the following:
+</p>
+
+
+
+
+<div id="spadComm15-9" class="spadComm" >
+<form id="formComm15-9" action="javascript:makeRequest('15-9');" >
+<input id="comm15-9" type="text" class="command" style="width: 63em;" value="d01ajf(-1.0, 1.0, 0.0, 1.0e-5, 800, 200, -1, cond(LT(X,0), assign(F,-X), assign(F,X))) result " />
+</form>
+<span id="commSav15-9" class="commSav" >d01ajf(-1.0, 1.0, 0.0, 1.0e-5, 800, 200, -1, cond(LT(X,0), assign(F,-X), assign(F,X))) result </span>
+<div id="mathAns15-9" ></div>
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >cond</span><span class="index">cond</span><a name="chapter-15-18"/><span class="index">FortranCode</span><a name="chapter-15-19"/> operation creates a conditional clause
+and the <span class="spadfunFrom" >assign</span><span class="index">assign</span><a name="chapter-15-20"/><span class="index">FortranCode</span><a name="chapter-15-21"/> an assignment statement.
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.3.3"/>
+<div class="subsubsection"  id="subsubsec-15.3.3.3">
+<h3 class="subsubsectitle">15.3.3.3  Providing ASPs via <span class="teletype">FileName</span></h3>
+
+
+
+
+<p>Suppose we have created the file ``asp.f'' as follows:
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOUBLE&nbsp;PRECISION&nbsp;FUNCTION&nbsp;F(X)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOUBLE&nbsp;PRECISION&nbsp;X<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F=4.0D0/(X*X+1.0D0)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<br />
+</div>
+
+
+<p>and wish to pass it to the NAG
+routine <span style="font-weight: bold;"> d01ajf</span> which performs one-dimensional quadrature.
+We can do this as follows:
+</p>
+
+
+
+<div class="verbatim"><br />
+d01ajf(0.0&nbsp;,1.0,&nbsp;0.0,&nbsp;1.0e-5,&nbsp;800,&nbsp;200,&nbsp;-1,&nbsp;"asp.f")<br />
+</div>
+
+
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-15.3.4"/>
+<div class="subsection"  id="subsec-15.3.4">
+<h3 class="subsectitle">15.3.4  General Fortran-generation utilities in Axiom</h3>
+
+
+<p><span class="index">generalFortran</span><a name="chapter-15-22"/>
+</p>
+
+
+
+<p>This section describes more advanced facilities which are available to users
+who wish to generate Fortran code from within Axiom.  There are
+facilities to manipulate templates, store type information, and generate
+code fragments or complete programs.
+</p>
+
+
+
+
+<a name="subsubsec-15.3.4.1"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.1">
+<h3 class="subsubsectitle">15.3.4.1  Template Manipulation</h3>
+
+
+
+
+<p>A template is a skeletal program which is ``fleshed out'' with data when
+it is processed.  It is a sequence of <span class="em">active</span> and <span class="em">passive</span> parts:
+active parts are sequences of Axiom commands which are processed as if they
+had been typed into the interpreter; passive parts are simply echoed
+verbatim on the Fortran output stream.
+</p>
+
+
+<p>Suppose, for example, that we have the following template, stored in
+the file ``test.tem'':
+</p>
+
+
+
+<div class="verbatim"><br />
+--&nbsp;A&nbsp;simple&nbsp;template<br />
+beginVerbatim<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOUBLE&nbsp;PRECISION&nbsp;FUNCTION&nbsp;F(X)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOUBLE&nbsp;PRECISION&nbsp;X<br />
+endVerbatim<br />
+outputAsFortran("F",f)<br />
+beginVerbatim<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<br />
+endVerbatim<br />
+</div>
+
+
+<p>The passive parts lie between the two
+tokens <span class="teletype">beginVerbatim</span> and  <span class="teletype">endVerbatim</span>.  There
+are two active statements: one which is simply an Axiom (
+\verb+--+)
+comment, and one which produces an assignment to the current value
+of <span class="teletype">f</span>.  We could use it as follows:
+</p>
+
+
+
+<div class="verbatim"><br />
+(4)&nbsp;-&gt;f&nbsp;:=&nbsp;4.0/(1+X**2)<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4<br />
+&nbsp;&nbsp;&nbsp;(4)&nbsp;&nbsp;&nbsp;------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X&nbsp;&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+(5)&nbsp;-&gt;processTemplate&nbsp;"test.tem"<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOUBLE&nbsp;PRECISION&nbsp;FUNCTION&nbsp;F(X)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOUBLE&nbsp;PRECISION&nbsp;X<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F=4.0D0/(X*X+1.0D0)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<br />
+<br />
+&nbsp;&nbsp;&nbsp;(5)&nbsp;&nbsp;"CONSOLE"<br />
+</div>
+
+
+
+<p>(A more reliable method of specifying the filename will be introduced
+below.)  Note that the Fortran assignment <span class="teletype">F=4.0D0/(X*X+1.0D0)</span>
+automatically converted 4.0 and 1 into DOUBLE PRECISION numbers; in
+general, the Axiom Fortran generation facility will convert
+anything which should be a floating point object into either
+a Fortran REAL or DOUBLE PRECISION object.
+</p>
+
+
+<p>Which alternative is used is determined by the command
+</p>
+
+
+
+
+<div id="spadComm15-10" class="spadComm" >
+<form id="formComm15-10" action="javascript:makeRequest('15-10');" >
+<input id="comm15-10" type="text" class="command" style="width: 15em;" value=")set fortran precision" />
+</form>
+<span id="commSav15-10" class="commSav" >)set fortran precision</span>
+<div id="mathAns15-10" ></div>
+</div>
+
+
+
+<p>It is sometimes useful to end a template before the file itself ends (e.g. to
+allow the template to be tested incrementally or so that a piece of text
+describing how the template works can be included).  It is of course possible
+to ``comment-out'' the remainder of the file.  Alternatively, the single token
+<span class="teletype">endInput</span> as part of an active portion of the template will cause
+processing to be ended prematurely at that point.
+</p>
+
+
+<p>The <span style="font-weight: bold;"> processTemplate</span> command comes in two flavours.  In the first case,
+illustrated above, it takes one argument of domain <span class="teletype">FileName</span>,
+the name of the template to be processed, and writes its output on the
+current Fortran output stream.  In general, a filename can be generated
+from <span class="em">directory</span>, <span class="em">name</span> and <span class="em">extension</span> components, using
+the operation <span style="font-weight: bold;"> filename</span>, as in
+</p>
+
+
+
+<div class="verbatim"><br />
+processTemplate&nbsp;filename("","test","tem")<br />
+</div>
+
+
+<p>There is an alternative version of <span style="font-weight: bold;"> processTemplate</span>, which
+takes two arguments (both of domain <span class="teletype">FileName</span>).  In this case the
+first argument is the name of the template to be processed, and the
+second is the file in which to write the results.  Both versions return
+the location of the generated Fortran code as their result
+(``<span class="teletype">CONSOLE</span>'' in the above example).
+</p>
+
+
+<p>It is sometimes useful to be able to mix active and passive parts of a
+line or statement.  For example you might want to generate a Fortran
+Comment describing your data set.  For this kind of application we
+provide three functions as follows:
+<table class="begintabular">
+<tr><td><span style="font-weight: bold;"> fortranLiteral</span> </td><td> writes a string on the Fortran output stream </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> fortranCarriageReturn</span> </td><td> writes a carriage return on the Fortran output stream </td></tr>
+<tr><td></td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> fortranLiteralLine</span> </td><td> writes a string followed by a return
+on the Fortran output stream </td></tr>
+</table>
+</p>
+
+
+<p>So we could create our comment as follows:
+</p>
+
+
+
+<div id="spadComm15-11" class="spadComm" >
+<form id="formComm15-11" action="javascript:makeRequest('15-11');" >
+<input id="comm15-11" type="text" class="command" style="width: 21em;" value="m := matrix [ [1,2,3],[4,5,6] ]" />
+</form>
+<span id="commSav15-11" class="commSav" >m := matrix [ [1,2,3],[4,5,6] ]</span>
+<div id="mathAns15-11" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-12" class="spadComm" >
+<form id="formComm15-12" action="javascript:makeRequest('15-12');" >
+<input id="comm15-12" type="text" class="command" style="width: 120em;" value='fortranLiteralLine concat ["C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Matrix&nbsp;has&nbsp;", nrows(m)::String, "&nbsp;rows&nbsp;and&nbsp;", ncols(m)::String, "&nbsp;columns"]' />
+</form>
+<span id="commSav15-12" class="commSav" >fortranLiteralLine concat ["C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Matrix&nbsp;has&nbsp;", nrows(m)::String, "&nbsp;rows&nbsp;and&nbsp;", ncols(m)::String, "&nbsp;columns"]</span>
+<div id="mathAns15-12" ></div>
+</div>
+
+
+
+<p>or, alternatively:
+</p>
+
+
+
+<div id="spadComm15-13" class="spadComm" >
+<form id="formComm15-13" action="javascript:makeRequest('15-13');" >
+<input id="comm15-13" type="text" class="command" style="width: 56em;" value='fortranLiteral "C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Matrix&nbsp;has&nbsp;"' />
+</form>
+<span id="commSav15-13" class="commSav" >fortranLiteral "C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Matrix&nbsp;has&nbsp;"</span>
+<div id="mathAns15-13" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-14" class="spadComm" >
+<form id="formComm15-14" action="javascript:makeRequest('15-14');" >
+<input id="comm15-14" type="text" class="command" style="width: 22em;" value="fortranLiteral(nrows(m)::String)" />
+</form>
+<span id="commSav15-14" class="commSav" >fortranLiteral(nrows(m)::String)</span>
+<div id="mathAns15-14" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-15" class="spadComm" >
+<form id="formComm15-15" action="javascript:makeRequest('15-15');" >
+<input id="comm15-15" type="text" class="command" style="width: 28em;" value='fortranLiteral "&nbsp;rows&nbsp;and&nbsp;"' />
+</form>
+<span id="commSav15-15" class="commSav" >fortranLiteral "&nbsp;rows&nbsp;and&nbsp;"</span>
+<div id="mathAns15-15" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-16" class="spadComm" >
+<form id="formComm15-16" action="javascript:makeRequest('15-16');" >
+<input id="comm15-16" type="text" class="command" style="width: 22em;" value="fortranLiteral(ncols(m)::String)" />
+</form>
+<span id="commSav15-16" class="commSav" >fortranLiteral(ncols(m)::String)</span>
+<div id="mathAns15-16" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-17" class="spadComm" >
+<form id="formComm15-17" action="javascript:makeRequest('15-17');" >
+<input id="comm15-17" type="text" class="command" style="width: 20em;" value='fortranLiteral "&nbsp;columns"' />
+</form>
+<span id="commSav15-17" class="commSav" >fortranLiteral "&nbsp;columns"</span>
+<div id="mathAns15-17" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-18" class="spadComm" >
+<form id="formComm15-18" action="javascript:makeRequest('15-18');" >
+<input id="comm15-18" type="text" class="command" style="width: 16em;" value="fortranCarriageReturn()" />
+</form>
+<span id="commSav15-18" class="commSav" >fortranCarriageReturn()</span>
+<div id="mathAns15-18" ></div>
+</div>
+
+
+
+<p>We should stress that these functions, together with the <span style="font-weight: bold;"> outputAsFortran</span>
+function are the <span class="em">only</span> sure ways
+of getting output to appear on the Fortran output stream.  Attempts to use
+Axiom commands such as <span style="font-weight: bold;"> output</span> or <span style="font-weight: bold;"> writeline</span> may appear to give
+the required result when displayed on the console, but will give the wrong
+result when Fortran and algebraic output are sent to differing locations.  On
+the other hand, these functions can be used to send helpful messages to the
+user, without interfering with the generated Fortran.
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.4.2"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.2">
+<h3 class="subsubsectitle">15.3.4.2  Manipulating the Fortran Output Stream</h3>
+
+
+
+<p><span class="index">FortranOutputStackPackage</span><a name="chapter-15-23"/>
+</p>
+
+
+<p>Sometimes it is useful to manipulate the Fortran output stream in a program,
+possibly without being aware of its current value.  The main use of this is
+for gathering type declarations (see ``Fortran Types'' below) but it can be useful
+in other contexts as well.  Thus we provide a set of commands to manipulate
+a stack of (open) output streams.  Only one stream can be written to at
+any given time.  The stack is never empty---its initial value is the
+console or the current value of the Fortran output stream, and can be
+determined using
+</p>
+
+
+
+
+<div id="spadComm15-19" class="spadComm" >
+<form id="formComm15-19" action="javascript:makeRequest('15-19');" >
+<input id="comm15-19" type="text" class="command" style="width: 16em;" value="topFortranOutputStack()" />
+</form>
+<span id="commSav15-19" class="commSav" >topFortranOutputStack()</span>
+<div id="mathAns15-19" ></div>
+</div>
+
+
+
+<p>(see below).
+The commands available to manipulate the stack are:
+</p>
+
+
+<p><table class="begintabular">
+<tr><td><span style="font-weight: bold;"> clearFortranOutputStack</span> </td><td> resets the stack to the console </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> pushFortranOutputStack</span> </td><td> pushes a <span class="teletype">FileName</span> onto the stack </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> popFortranOutputStack</span> </td><td> pops the stack </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> showFortranOutputStack</span> </td><td> returns the current stack </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> topFortranOutputStack</span> </td><td> returns the top element of the stack </td></tr>
+</table>
+</p>
+
+
+<p>These commands are all part of <span class="teletype">FortranOutputStackPackage</span>.
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.4.3"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.3">
+<h3 class="subsubsectitle">15.3.4.3  Fortran Types</h3>
+
+
+
+
+<p>When generating code it is important to keep track of the Fortran types of
+the objects which we are generating.  This is useful for a number of reasons,
+not least to ensure that we are actually generating legal Fortran code.  The
+current type system is built up in several layers, and we shall describe each
+in turn.
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.4.4"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.4">
+<h3 class="subsubsectitle">15.3.4.4  FortranScalarType</h3>
+
+
+
+<p><span class="index">FortranScalarType</span><a name="chapter-15-24"/>
+</p>
+
+
+<p>This domain represents the simple Fortran datatypes: REAL, DOUBLE PRECISION,
+COMPLEX, LOGICAL, INTEGER, and CHARACTER.
+It is possible to <span style="font-weight: bold;"> coerce</span> a <span class="teletype">String</span> or <span class="teletype">Symbol</span>
+into the domain, test whether two objects are equal, and also apply
+the predicate functions <span class="spadfunFrom" >real?</span><span class="index">real?</span><a name="chapter-15-25"/><span class="index">FortranScalarType</span><a name="chapter-15-26"/> etc.
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.4.5"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.5">
+<h3 class="subsubsectitle">15.3.4.5  FortranType</h3>
+
+
+
+<p><span class="index">FortranType</span><a name="chapter-15-27"/>
+</p>
+
+
+<p>This domain represents ``full'' types: i.e., datatype plus array dimensions
+(where appropriate) plus whether or not the parameter is an external
+subprogram.  It is possible to <span style="font-weight: bold;"> coerce</span> an object of
+<span class="teletype">FortranScalarType</span> into the domain or <span style="font-weight: bold;"> construct</span> one
+from an element of <span class="teletype">FortranScalarType</span>, a list of
+<span class="teletype">Polynomial Integer</span>s (which can of course be simple integers or
+symbols) representing its dimensions, and
+a <span class="teletype">Boolean</span> declaring whether it is external or not.  The list
+of dimensions must be empty if the <span class="teletype">Boolean</span> is <span class="teletype">true</span>.
+The functions <span style="font-weight: bold;"> scalarTypeOf</span>, <span style="font-weight: bold;"> dimensionsOf</span> and
+<span style="font-weight: bold;"> external?</span> return the appropriate
+parts, and it is possible to get the various basic Fortran Types via
+functions like <span style="font-weight: bold;"> fortranReal</span>.
+</p>
+
+
+<p>For example:
+</p>
+
+
+
+<div id="spadComm15-20" class="spadComm" >
+<form id="formComm15-20" action="javascript:makeRequest('15-20');" >
+<input id="comm15-20" type="text" class="command" style="width: 31em;" value="type:=construct(real,[i,10],false)$FortranType" />
+</form>
+<span id="commSav15-20" class="commSav" >type:=construct(real,[i,10],false)$FortranType</span>
+<div id="mathAns15-20" ></div>
+</div>
+
+
+
+<p>or
+</p>
+
+
+
+<div id="spadComm15-21" class="spadComm" >
+<form id="formComm15-21" action="javascript:makeRequest('15-21');" >
+<input id="comm15-21" type="text" class="command" style="width: 25em;" value="type:=[real,[i,10],false]$FortranType" />
+</form>
+<span id="commSav15-21" class="commSav" >type:=[real,[i,10],false]$FortranType</span>
+<div id="mathAns15-21" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-22" class="spadComm" >
+<form id="formComm15-22" action="javascript:makeRequest('15-22');" >
+<input id="comm15-22" type="text" class="command" style="width: 12em;" value="scalarTypeOf type" />
+</form>
+<span id="commSav15-22" class="commSav" >scalarTypeOf type</span>
+<div id="mathAns15-22" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-23" class="spadComm" >
+<form id="formComm15-23" action="javascript:makeRequest('15-23');" >
+<input id="comm15-23" type="text" class="command" style="width: 12em;" value="dimensionsOf type" />
+</form>
+<span id="commSav15-23" class="commSav" >dimensionsOf type</span>
+<div id="mathAns15-23" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-24" class="spadComm" >
+<form id="formComm15-24" action="javascript:makeRequest('15-24');" >
+<input id="comm15-24" type="text" class="command" style="width: 10em;" value="external?  type" />
+</form>
+<span id="commSav15-24" class="commSav" >external?  type</span>
+<div id="mathAns15-24" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-25" class="spadComm" >
+<form id="formComm15-25" action="javascript:makeRequest('15-25');" >
+<input id="comm15-25" type="text" class="command" style="width: 11em;" value="fortranLogical()" />
+</form>
+<span id="commSav15-25" class="commSav" >fortranLogical()</span>
+<div id="mathAns15-25" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-26" class="spadComm" >
+<form id="formComm15-26" action="javascript:makeRequest('15-26');" >
+<input id="comm15-26" type="text" class="command" style="width: 26em;" value="construct(integer,[],true)$FortranType" />
+</form>
+<span id="commSav15-26" class="commSav" >construct(integer,[],true)$FortranType</span>
+<div id="mathAns15-26" ></div>
+</div>
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.4.6"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.6">
+<h3 class="subsubsectitle">15.3.4.6  SymbolTable</h3>
+
+
+
+<p><span class="index">SymbolTable</span><a name="chapter-15-28"/>
+</p>
+
+
+<p>This domain creates and manipulates a symbol table for generated Fortran code.
+This is used by <span class="teletype">FortranProgram</span> to represent the types of objects in
+a subprogram.  The commands available are:
+</p>
+
+
+<p><table class="begintabular">
+<tr><td><span style="font-weight: bold;"> empty</span> </td><td> creates a new <span class="teletype">SymbolTable</span> </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> declare</span> </td><td> creates a new entry in a table </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> fortranTypeOf</span> </td><td> returns the type of an object in a table </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> parametersOf</span> </td><td> returns a list of all the symbols in the table </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> typeList</span> </td><td> returns a list of all objects of a given type </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> typeLists</span> </td><td> returns a list of lists of all objects sorted by type </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> externalList</span> </td><td> returns a list of all <span class="teletype">EXTERNAL</span> objects </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> printTypes</span> </td><td> produces Fortran type declarations from a table</td></tr>
+</table>
+</p>
+
+
+
+
+<div id="spadComm15-27" class="spadComm" >
+<form id="formComm15-27" action="javascript:makeRequest('15-27');" >
+<input id="comm15-27" type="text" class="command" style="width: 20em;" value="symbols := empty()$SymbolTable" />
+</form>
+<span id="commSav15-27" class="commSav" >symbols := empty()$SymbolTable</span>
+<div id="mathAns15-27" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-28" class="spadComm" >
+<form id="formComm15-28" action="javascript:makeRequest('15-28');" >
+<input id="comm15-28" type="text" class="command" style="width: 22em;" value="declare!(X,fortranReal(),symbols)" />
+</form>
+<span id="commSav15-28" class="commSav" >declare!(X,fortranReal(),symbols)</span>
+<div id="mathAns15-28" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-29" class="spadComm" >
+<form id="formComm15-29" action="javascript:makeRequest('15-29');" >
+<input id="comm15-29" type="text" class="command" style="width: 40em;" value="declare!(M,construct(real,[i,j],false)$FortranType,symbols)" />
+</form>
+<span id="commSav15-29" class="commSav" >declare!(M,construct(real,[i,j],false)$FortranType,symbols)</span>
+<div id="mathAns15-29" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-30" class="spadComm" >
+<form id="formComm15-30" action="javascript:makeRequest('15-30');" >
+<input id="comm15-30" type="text" class="command" style="width: 27em;" value="declare!([i,j],fortranInteger(),symbols)" />
+</form>
+<span id="commSav15-30" class="commSav" >declare!([i,j],fortranInteger(),symbols)</span>
+<div id="mathAns15-30" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-31" class="spadComm" >
+<form id="formComm15-31" action="javascript:makeRequest('15-31');" >
+<input id="comm15-31" type="text" class="command" style="width: 5em;" value="symbols" />
+</form>
+<span id="commSav15-31" class="commSav" >symbols</span>
+<div id="mathAns15-31" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-32" class="spadComm" >
+<form id="formComm15-32" action="javascript:makeRequest('15-32');" >
+<input id="comm15-32" type="text" class="command" style="width: 16em;" value="fortranTypeOf(i,symbols)" />
+</form>
+<span id="commSav15-32" class="commSav" >fortranTypeOf(i,symbols)</span>
+<div id="mathAns15-32" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-33" class="spadComm" >
+<form id="formComm15-33" action="javascript:makeRequest('15-33');" >
+<input id="comm15-33" type="text" class="command" style="width: 15em;" value="typeList(real,symbols)" />
+</form>
+<span id="commSav15-33" class="commSav" >typeList(real,symbols)</span>
+<div id="mathAns15-33" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-34" class="spadComm" >
+<form id="formComm15-34" action="javascript:makeRequest('15-34');" >
+<input id="comm15-34" type="text" class="command" style="width: 12em;" value="printTypes symbols" />
+</form>
+<span id="commSav15-34" class="commSav" >printTypes symbols</span>
+<div id="mathAns15-34" ></div>
+</div>
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.4.7"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.7">
+<h3 class="subsubsectitle">15.3.4.7  TheSymbolTable</h3>
+
+
+
+<p><span class="index">TheSymbolTable</span><a name="chapter-15-29"/>
+</p>
+
+
+<p>This domain creates and manipulates one global symbol table to be used, for
+example, during template processing. It is
+also used when
+linking to external Fortran routines. The
+information stored for each subprogram (and the main program segment, where
+relevant) is:
+</p>
+
+
+
+<ul>
+<li>
+ its name;
+</li>
+<li> its return type;
+</li>
+<li> its argument list;
+</li>
+<li> and its argument types.
+</li>
+</ul>
+
+
+<p>Initially, any information provided is deemed to be for the main program
+segment.
+</p>
+
+
+<p>Issuing the following command indicates that from now on all information
+refers to the subprogram  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>F</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm15-35" class="spadComm" >
+<form id="formComm15-35" action="javascript:makeRequest('15-35');" >
+<input id="comm15-35" type="text" class="command" style="width: 10em;" value="newSubProgram F" />
+</form>
+<span id="commSav15-35" class="commSav" >newSubProgram F</span>
+<div id="mathAns15-35" ></div>
+</div>
+
+
+
+<p>It is possible to return to processing the main program segment by issuing
+the command:
+</p>
+
+
+
+
+<div id="spadComm15-36" class="spadComm" >
+<form id="formComm15-36" action="javascript:makeRequest('15-36');" >
+<input id="comm15-36" type="text" class="command" style="width: 10em;" value="endSubProgram()" />
+</form>
+<span id="commSav15-36" class="commSav" >endSubProgram()</span>
+<div id="mathAns15-36" ></div>
+</div>
+
+
+
+<p>The following commands exist:
+</p>
+
+
+<p><table class="begintabular">
+<tr><td><span style="font-weight: bold;"> returnType</span> </td><td> declares the return type of the current subprogram </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> returnTypeOf</span> </td><td> returns the return type of a subprogram </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> argumentList</span> </td><td>  declares the argument list of the current subprogram </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> argumentListOf</span> </td><td>  returns the argument list of a subprogram </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> declare</span> </td><td> provides type declarations for parameters of the current subprogram </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> symbolTableOf</span> </td><td> returns the symbol table  of a subprogram </td></tr>
+<tr><td> </td><td> </td></tr>
+<tr><td><span style="font-weight: bold;"> printHeader</span> </td><td> produces the Fortran header for the current subprogram </td></tr>
+</table>
+</p>
+
+
+<p>In addition there are versions of these commands which are parameterised by
+the name of a subprogram, and others parameterised by both the name of a
+subprogram and by an instance of <span class="teletype">TheSymbolTable</span>.
+</p>
+
+
+
+
+<div id="spadComm15-37" class="spadComm" >
+<form id="formComm15-37" action="javascript:makeRequest('15-37');" >
+<input id="comm15-37" type="text" class="command" style="width: 10em;" value="newSubProgram F" />
+</form>
+<span id="commSav15-37" class="commSav" >newSubProgram F</span>
+<div id="mathAns15-37" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-38" class="spadComm" >
+<form id="formComm15-38" action="javascript:makeRequest('15-38');" >
+<input id="comm15-38" type="text" class="command" style="width: 14em;" value="argumentList!(F,[X])" />
+</form>
+<span id="commSav15-38" class="commSav" >argumentList!(F,[X])</span>
+<div id="mathAns15-38" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-39" class="spadComm" >
+<form id="formComm15-39" action="javascript:makeRequest('15-39');" >
+<input id="comm15-39" type="text" class="command" style="width: 13em;" value="returnType!(F,real)" />
+</form>
+<span id="commSav15-39" class="commSav" >returnType!(F,real)</span>
+<div id="mathAns15-39" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-40" class="spadComm" >
+<form id="formComm15-40" action="javascript:makeRequest('15-40');" >
+<input id="comm15-40" type="text" class="command" style="width: 18em;" value="declare!(X,fortranReal(),F)" />
+</form>
+<span id="commSav15-40" class="commSav" >declare!(X,fortranReal(),F)</span>
+<div id="mathAns15-40" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-41" class="spadComm" >
+<form id="formComm15-41" action="javascript:makeRequest('15-41');" >
+<input id="comm15-41" type="text" class="command" style="width: 9em;" value="printHeader F" />
+</form>
+<span id="commSav15-41" class="commSav" >printHeader F</span>
+<div id="mathAns15-41" ></div>
+</div>
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.4.8"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.8">
+<h3 class="subsubsectitle">15.3.4.8  Advanced Fortran Code Generation</h3>
+
+
+
+
+<p>This section describes facilities for representing Fortran statements, and
+building up complete subprograms from them.
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.4.9"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.9">
+<h3 class="subsubsectitle">15.3.4.9  Switch</h3>
+
+
+
+<p><span class="index">Switch</span><a name="chapter-15-30"/>
+</p>
+
+
+<p>This domain is used to represent statements like <span class="teletype">x &lt; y</span>.  Although
+these can be represented directly in Axiom, it is a little cumbersome,
+since Axiom evaluates the last statement, for example, to <span class="teletype">true</span>
+(since  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is  lexicographically less than  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>).
+</p>
+
+
+<p>Instead we have a set of operations, such as <span style="font-weight: bold;"> LT</span> to represent  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&lt;</mo></mstyle></math>,
+to let us build such statements.  The available constructors are:
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><table class="begintabular">
+<tr><td><span style="font-weight: bold;"> LT</span> </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&lt;</mo></mstyle></math> </td></tr>
+<tr><td><span style="font-weight: bold;"> GT</span> </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&gt;</mo></mstyle></math> </td></tr>
+<tr><td><span style="font-weight: bold;"> LE</span> </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2264;</mo></mstyle></math> </td></tr>
+<tr><td><span style="font-weight: bold;"> GE</span> </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2264;</mo></mstyle></math> </td></tr>
+<tr><td><span style="font-weight: bold;"> EQ</span> </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>=</mo></mstyle></math> </td></tr>
+<tr><td><span style="font-weight: bold;"> AND</span> </td><td> <span class="teletype">and</span></td></tr>
+<tr><td><span style="font-weight: bold;"> OR</span> </td><td> <span class="teletype">or</span> </td></tr>
+<tr><td><span style="font-weight: bold;"> NOT</span> </td><td> <span class="teletype">not</span> </td></tr>
+</table>
+</p>
+
+
+
+</div>
+
+
+
+<p>So for example:
+</p>
+
+
+
+<div id="spadComm15-42" class="spadComm" >
+<form id="formComm15-42" action="javascript:makeRequest('15-42');" >
+<input id="comm15-42" type="text" class="command" style="width: 5em;" value="LT(x,y)" />
+</form>
+<span id="commSav15-42" class="commSav" >LT(x,y)</span>
+<div id="mathAns15-42" ></div>
+</div>
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.4.10"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.10">
+<h3 class="subsubsectitle">15.3.4.10  FortranCode</h3>
+
+
+
+
+<p>This domain represents code segments or operations: currently assignments,
+conditionals, blocks, comments, gotos, continues, various kinds of loops,
+and return statements.
+</p>
+
+
+<p>For example we can create quite a complicated conditional statement using
+assignments, and then turn it into Fortran code:
+</p>
+
+
+
+
+<div id="spadComm15-43" class="spadComm" >
+<form id="formComm15-43" action="javascript:makeRequest('15-43');" >
+<input id="comm15-43" type="text" class="command" style="width: 46em;" value="c := cond(LT(X,Y),assign(F,X),cond(GT(Y,Z),assign(F,Y),assign(F,Z)))" />
+</form>
+<span id="commSav15-43" class="commSav" >c := cond(LT(X,Y),assign(F,X),cond(GT(Y,Z),assign(F,Y),assign(F,Z)))</span>
+<div id="mathAns15-43" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm15-44" class="spadComm" >
+<form id="formComm15-44" action="javascript:makeRequest('15-44');" >
+<input id="comm15-44" type="text" class="command" style="width: 8em;" value="printCode c" />
+</form>
+<span id="commSav15-44" class="commSav" >printCode c</span>
+<div id="mathAns15-44" ></div>
+</div>
+
+
+
+<p>The Fortran code is printed
+on the current Fortran output stream.
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-15.3.4.11"/>
+<div class="subsubsection"  id="subsubsec-15.3.4.11">
+<h3 class="subsubsectitle">15.3.4.11  FortranProgram</h3>
+
+
+
+<p><span class="index">FortranProgram</span><a name="chapter-15-31"/>
+</p>
+
+
+<p>This domain is used to construct complete Fortran subprograms out of
+elements of <span class="teletype">FortranCode</span>.  It is parameterised by the name of the
+target subprogram (a <span class="teletype">Symbol</span>), its return type (from
+<span class="teletype">Union</span>(<span class="teletype">FortranScalarType</span>,``void'')),
+its arguments (from <span class="teletype">List Symbol</span>), and
+its symbol table (from <span class="teletype">SymbolTable</span>).  One can
+<span style="font-weight: bold;"> coerce</span> elements of either <span class="teletype">FortranCode</span>
+or <span class="teletype">Expression</span> into it.
+</p>
+
+
+
+<p>First of all we create a symbol table:
+</p>
+
+
+
+
+<div id="spadComm15-45" class="spadComm" >
+<form id="formComm15-45" action="javascript:makeRequest('15-45');" >
+<input id="comm15-45" type="text" class="command" style="width: 20em;" value="symbols := empty()$SymbolTable" />
+</form>
+<span id="commSav15-45" class="commSav" >symbols := empty()$SymbolTable</span>
+<div id="mathAns15-45" ></div>
+</div>
+
+
+
+<p>Now put some type declarations into it:
+</p>
+
+
+
+
+<div id="spadComm15-46" class="spadComm" >
+<form id="formComm15-46" action="javascript:makeRequest('15-46');" >
+<input id="comm15-46" type="text" class="command" style="width: 25em;" value="declare!([X,Y],fortranReal(),symbols)" />
+</form>
+<span id="commSav15-46" class="commSav" >declare!([X,Y],fortranReal(),symbols)</span>
+<div id="mathAns15-46" ></div>
+</div>
+
+
+
+<p>Then (for convenience)
+we set up the particular instantiation of <span class="teletype">FortranProgram</span>
+</p>
+
+
+
+
+<div id="spadComm15-47" class="spadComm" >
+<form id="formComm15-47" action="javascript:makeRequest('15-47');" >
+<input id="comm15-47" type="text" class="command" style="width: 28em;" value="FP := FortranProgram(F,real,[X,Y],symbols)" />
+</form>
+<span id="commSav15-47" class="commSav" >FP := FortranProgram(F,real,[X,Y],symbols)</span>
+<div id="mathAns15-47" ></div>
+</div>
+
+
+
+<p>Create an object of type <span class="teletype">Expression(Integer)</span>:
+</p>
+
+
+
+
+<div id="spadComm15-48" class="spadComm" >
+<form id="formComm15-48" action="javascript:makeRequest('15-48');" >
+<input id="comm15-48" type="text" class="command" style="width: 10em;" value="asp := X*sin(Y)" />
+</form>
+<span id="commSav15-48" class="commSav" >asp := X*sin(Y)</span>
+<div id="mathAns15-48" ></div>
+</div>
+
+
+
+<p>Now <span style="font-weight: bold;"> coerce</span> it into <span class="teletype">FP</span>, and print its Fortran form:
+</p>
+
+
+
+
+<div id="spadComm15-49" class="spadComm" >
+<form id="formComm15-49" action="javascript:makeRequest('15-49');" >
+<input id="comm15-49" type="text" class="command" style="width: 16em;" value="outputAsFortran(asp::FP)" />
+</form>
+<span id="commSav15-49" class="commSav" >outputAsFortran(asp::FP)</span>
+<div id="mathAns15-49" ></div>
+</div>
+
+
+
+<p>We can generate a <span class="teletype">FortranProgram</span> using  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>FortranCode</mi></mstyle></math>.  For
+example:
+</p>
+
+
+<p>Augment our symbol table:
+</p>
+
+
+
+
+<div id="spadComm15-50" class="spadComm" >
+<form id="formComm15-50" action="javascript:makeRequest('15-50');" >
+<input id="comm15-50" type="text" class="command" style="width: 22em;" value="declare!(Z,fortranReal(),symbols)" />
+</form>
+<span id="commSav15-50" class="commSav" >declare!(Z,fortranReal(),symbols)</span>
+<div id="mathAns15-50" ></div>
+</div>
+
+
+
+<p>and transform the conditional expression we prepared earlier:
+</p>
+
+
+
+
+<div id="spadComm15-51" class="spadComm" >
+<form id="formComm15-51" action="javascript:makeRequest('15-51');" >
+<input id="comm15-51" type="text" class="command" style="width: 23em;" value="outputAsFortran([c,returns()]::FP)" />
+</form>
+<span id="commSav15-51" class="commSav" >outputAsFortran([c,returns()]::FP)</span>
+<div id="mathAns15-51" ></div>
+</div>
+
+
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-15.3.5"/>
+<div class="subsection"  id="subsec-15.3.5">
+<h3 class="subsectitle">15.3.5  Some technical information</h3>
+
+
+<p><span class="index">nagTechnical</span><a name="chapter-15-32"/>
+</p>
+
+
+
+<p>The model adopted for the link is a server-client configuration
+-- Axiom acting as a client via a local agent
+(a process called <span class="teletype">nagman</span>). The server side is implemented
+by the <span class="teletype">nagd</span> daemon process which may run on a different host.
+The <span class="teletype">nagman</span> local agent is started by default whenever you
+start Axiom. The <span class="teletype">nagd</span> server must be started separately.
+Instructions for installing and running the server are supplied
+in <a href="nugNagd" class="ref" >nugNagd</a> . 
+Use the <span class="teletype">)set naglink host</span> system command
+to point your local agent to a server in your network.
+</p>
+
+
+
+
+<p>On the Axiom side, one sees a set of <span class="em">packages</span>
+(ask Browse for <span class="em">Nag*</span>) for each chapter, each exporting
+operations with the same name as a routine in the Nag Library.
+The arguments and return value of each operation belong to
+standard Axiom types.
+</p>
+
+
+<p>The <span class="teletype">man</span> pages for the Nag Library are accessible via the description
+of each operation in Browse (among other places).
+</p>
+
+
+<p>In the implementation of each operation, the set of inputs is passed
+to the local agent <span class="teletype">nagman</span>, which makes a
+Remote Procedure Call (RPC) to the
+remote <span class="teletype">nagd</span> daemon process.  The local agent receives the RPC
+results and forwards them to the Axiom workspace where they
+are interpreted appropriately.
+</p>
+
+
+<p>How are Fortran subroutines turned into RPC calls?
+For each Fortran routine in the Nag Library, a C main() routine
+is supplied.
+Its job is to assemble the RPC input (numeric) data stream into
+the appropriate Fortran data structures for the routine, call the Fortran
+routine from C and serialize the results into an RPC output data stream.
+</p>
+
+
+<p>Many Nag Library routines accept ASPs (Argument Subprogram Parameters).
+These specify user-supplied Fortran routines (e.g. a routine to
+supply values of a function is required for numerical integration).
+How are they handled? There are new facilities in Axiom to help.
+A set of Axiom domains has been provided to turn values in standard
+ Axiom types (such as Expression Integer) into the appropriate
+piece of Fortran for each case (a filename pointing to Fortran source
+for the ASP can always be supplied instead).
+Ask Browse for <span class="em">Asp*</span> to see these domains. The Fortran fragments
+are included in the outgoing RPC stream, but <span class="teletype">nagd</span> intercepts them,
+compiles them, and links them with the main() C program before executing
+the resulting program on the numeric part of the RPC stream.
+</p>
+
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-15.2.xhtml" style="margin-right: 10px;">Previous Section 15.2 The New Axiom Library Compiler</a><a href="section-15.4.xhtml" style="margin-right: 10px;">Next Section 15.4 Interactive Front-end and Language</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-15.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-15.4.xhtml
new file mode 100644
index 0000000..7b714cb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-15.4.xhtml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section15.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-15.3.xhtml" style="margin-right: 10px;">Previous Section 15.3 The NAG Library Link</a><a href="section-15.5.xhtml" style="margin-right: 10px;">Next Section 15.5 Library</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-15.4">
+<h2 class="sectiontitle">15.4  Interactive Front-end and Language</h2>
+
+
+<p><span class="index">ugWhatsNewLanguage</span><a name="chapter-15-33"/>
+</p>
+
+
+
+<p>The <span class="teletype">leave</span> keyword has been replaced by the
+<span class="teletype">break</span> keyword for compatibility with the new Axiom
+extension language.
+See section <a href="section-5.4.xhtml#ugLangLoopsBreak" class="ref" >ugLangLoopsBreak</a> 
+for more information.
+</p>
+
+
+<p>Curly braces are no longer used to create sets. Instead, use
+<span style="font-weight: bold;"> set</span> followed by a bracketed expression. For example,
+</p>
+
+
+
+
+<div id="spadComm15-52" class="spadComm" >
+<form id="formComm15-52" action="javascript:makeRequest('15-52');" >
+<input id="comm15-52" type="text" class="command" style="width: 9em;" value="set [1,2,3,4]" />
+</form>
+<span id="commSav15-52" class="commSav" >set [1,2,3,4]</span>
+<div id="mathAns15-52" ></div>
+</div>
+
+
+
+<p>Curly braces are now used to enclose a block (see section
+<a href="section-5.2.xhtml#ugLangBlocks" class="ref" >ugLangBlocks</a> 
+for more information). For compatibility, a block can still be 
+enclosed by parentheses as well.
+</p>
+
+
+<p>``Free functions'' created by the Aldor compiler can now be
+loaded and used within the Axiom interpreter. A <span class="italic">free
+function</span> is a library function that is implemented outside a
+domain or category constructor.
+</p>
+
+
+<p>New coercions to and from type <span class="teletype">Expression</span> have been
+added. For example, it is now possible to map a polynomial
+represented as an expression to an appropriate polynomial type.
+</p>
+
+
+<p>Various messages have been added or rewritten for clarity.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-15.3.xhtml" style="margin-right: 10px;">Previous Section 15.3 The NAG Library Link</a><a href="section-15.5.xhtml" style="margin-right: 10px;">Next Section 15.5 Library</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-15.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-15.5.xhtml
new file mode 100644
index 0000000..11797cd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-15.5.xhtml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section15.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-15.4.xhtml" style="margin-right: 10px;">Previous Section 15.4 Interactive Front-end and Language</a><a href="section-15.6.xhtml" style="margin-right: 10px;">Next Section 15.6 HyperTex</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-15.5">
+<h2 class="sectiontitle">15.5  Library</h2>
+
+
+<p><span class="index">ugWhatsNewLibrary</span><a name="chapter-15-34"/>
+</p>
+
+
+
+<p>The <span class="teletype">FullPartialFractionExpansion</span>
+domain has been added. This domain computes factor-free full
+partial fraction expansions.
+See section
+FullPartialFractionExpansion
+for examples.
+</p>
+
+
+<p>We have implemented the Bertrand/Cantor algorithm for integrals of
+hyperelliptic functions. This brings a major speedup for some
+classes of algebraic integrals.
+</p>
+
+
+<p>We have implemented a new (direct) algorithm for integrating trigonometric
+functions. This brings a speedup and an improvement in the answer
+quality.
+</p>
+
+
+<p>The <span class="slant">SmallFloat</span> domain has been renamed
+<span class="teletype">DoubleFloat</span> and <span class="slant">SmallInteger</span> has been renamed
+<span class="teletype">SingleInteger</span>. The new abbreviations as
+<span class="teletype">DFLOAT</span> and <span class="teletype">SINT</span>, respectively.
+We have defined the macro <span class="slant">SF</span>, the old abbreviation for {\sf
+SmallFloat}, to expand to <span class="teletype">DoubleFloat</span> and modified
+the documentation and input file examples to use the new names
+and abbreviations. You should do the same in any private Axiom
+files you have.
+</p>
+
+
+<p>There are many new categories, domains and packages related to the
+NAG Library Link facility. See the file
+</p>
+
+
+<p>src/algebra/exposed.lsp
+</p>
+
+
+<p>for a list of constructors in the <span style="font-weight: bold;"> naglink</span> Axiom exposure group.
+</p>
+
+
+<p>We have made improvements to the differential equation solvers
+and there is a new facility for solving systems of first-order 
+linear differential equations.
+In particular, an important fix was made to the solver for
+inhomogeneous linear ordinary differential equations that
+corrected the calculation of particular solutions.
+We also made improvements to the polynomial
+and transcendental equation solvers including the
+ability to solve some classes of systems of transcendental
+equations.
+</p>
+
+
+<p>The efficiency of power series have been improved and left and right
+expansions of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>tan</mi><mo>(</mo><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>)</mo></mrow></mstyle></math> at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo></mrow></mstyle></math> a pole of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>
+can now be computed.
+A number of power series bugs were fixed and the <span class="teletype">GeneralUnivariatePowerSeries</span>
+domain was added.
+The power series variable can appear in the coefficients and when this
+happens, you cannot differentiate or integrate the series.  Differentiation
+and integration with respect to other variables is supported.
+</p>
+
+
+<p>A domain was added for representing asymptotic expansions of a
+function at an exponential singularity.
+</p>
+
+
+<p>For limits, the main new feature is the exponential expansion domain used
+to treat certain exponential singularities.  Previously, such singularities
+were treated in an <span class="italic">ad hoc</span> way and only a few cases were covered.  Now
+Axiom can do things like
+</p>
+
+
+
+
+<div class="verbatim"><br />
+limit(&nbsp;(x+1)**(x+1)/x**x&nbsp;-&nbsp;x**x/(x-1)**(x-1),&nbsp;x&nbsp;=&nbsp;%plusInfinity)<br />
+</div>
+
+
+
+<p>in a systematic way.  It only does one level of nesting, though.  In other
+words, we can handle  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>exp</mi><mo>(</mo><mi>some</mi><mi>function</mi><mi>with</mi><mi>a</mi><mi>pole</mi><mo>)</mo></mrow></mstyle></math>, but not
+  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>exp</mi><mo>(</mo><mi>exp</mi><mo>(</mo><mi>some</mi><mi>function</mi><mi>with</mi><mi>a</mi><mi>pole</mi><mo>)</mo><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>The computation of integral bases has been improved through careful
+use of Hermite row reduction. A P-adic algorithm
+for function fields of algebraic curves in finite characteristic has also
+been developed.
+</p>
+
+
+<p>Miscellaneous:
+There is improved conversion of definite and indefinite integrals to
+<span class="teletype">InputForm</span>;
+binomial coefficients are displayed in a new way;
+some new simplifications of radicals have been implemented;
+the operation <span style="font-weight: bold;"> complexForm</span> for converting to rectangular coordinates
+has been added;
+symmetric product operations have been added to <span class="teletype">LinearOrdinaryDifferentialOperator</span>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-15.4.xhtml" style="margin-right: 10px;">Previous Section 15.4 Interactive Front-end and Language</a><a href="section-15.6.xhtml" style="margin-right: 10px;">Next Section 15.6 HyperTex</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-15.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-15.6.xhtml
new file mode 100644
index 0000000..8db4180
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-15.6.xhtml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section15.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-15.5.xhtml" style="margin-right: 10px;">Previous Section 15.5 Library</a><a href="section-15.7.xhtml" style="margin-right: 10px;">Next Section 15.7 Documentation</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-15.6">
+<h2 class="sectiontitle">15.6  HyperTex</h2>
+
+
+<p><span class="index">ugWhatsNewHyperDoc</span><a name="chapter-15-35"/>
+</p>
+
+
+
+<p>The buttons on the titlebar and scrollbar have been replaced
+with ones which have a 3D effect. You can change the foreground and
+background colors of these ``controls'' by including and modifying
+the following lines in your <span style="font-weight: bold;"> .Xdefaults</span> file.
+</p>
+
+
+
+<div class="verbatim"><br />
+Axiom.hyperdoc.ControlBackground:&nbsp;White<br />
+Axiom.hyperdoc.ControlForeground:&nbsp;Black<br />
+</div>
+
+
+
+<p>For various reasons, HyperDoc sometimes displays a
+secondary window. You can control the size and placement of this
+window by including and modifying
+the following line in your <span style="font-weight: bold;"> .Xdefaults</span> file.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+Axiom.hyperdoc.FormGeometry:&nbsp;=950x450+100+0<br />
+</div>
+
+
+
+<p>This setting is a standard X Window System geometry specification:
+you are requesting a window 950 pixels wide by 450 deep and placed in
+the upper left corner.
+</p>
+
+
+<p>Some key definitions have been changed to conform more closely
+with the CUA guidelines. Press
+F9
+to see the current definitions.
+</p>
+
+
+<p>Input boxes (for example, in the Browser) now accept paste-ins from
+the X Window System. Use the second button to paste in something
+you have previously copied or cut. An example of how you can use this
+is that you can paste the type from an Axiom computation
+into the main Browser input box.
+</p>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-15.5.xhtml" style="margin-right: 10px;">Previous Section 15.5 Library</a><a href="section-15.7.xhtml" style="margin-right: 10px;">Next Section 15.7 Documentation</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-15.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-15.7.xhtml
new file mode 100644
index 0000000..caa18c4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-15.7.xhtml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section15.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-15.6.xhtml" style="margin-right: 10px;">Previous Section 15.6 HyperTex</a><a href="section-16.0.xhtml" style="margin-right: 10px;">Next Section 16.0  Axiom System Commands</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-15.7">
+<h2 class="sectiontitle">15.7  Documentation</h2>
+
+
+<p><span class="index">ugWhatsNewDocumentation</span><a name="chapter-15-36"/>
+</p>
+
+
+
+<p>We describe here a few additions to the on-line
+version of the AXIOM book which you can read with
+HyperDoc.
+</p>
+
+
+
+<p>A section has been added to the graphics chapter, describing
+how to build two-dimensional graphs from lists of points. An example is
+given showing how to read the points from a file.
+See section <a href="section-7.1.xhtml#ugGraphTwoDbuild" class="ref" >ugGraphTwoDbuild</a> 
+for details.
+</p>
+
+
+<p>A further section has been added to that same chapter, describing
+how to add a two-dimensional graph to a viewport which already
+contains other graphs.
+See section
+<a href="section-7.1.xhtml#ugGraphTwoDappend" class="ref" >ugGraphTwoDappend</a> 
+for details.
+</p>
+
+
+<p>Chapter 3 
+and the on-line HyperDoc help have been unified.
+</p>
+
+
+<p>An explanation of operation names ending in ``?'' and ``!'' has
+been added to the first chapter. 
+See the
+end of the section
+<a href="section-1.3.xhtml#ugIntroCallFun" class="ref" >ugIntroCallFun</a> 
+for details.
+</p>
+
+
+<p>An expanded explanation of using predicates has
+been added to the sixth chapter. See the
+example involving <span style="font-weight: bold;"> evenRule</span> in the middle of the section
+<a href="section-6.21.xhtml#ugUserRules" class="ref" >ugUserRules</a> 
+for details.
+</p>
+
+
+<p>Documentation for the <span class="teletype">)compile</span>, <span class="teletype">)library</span> and
+<span class="teletype">)load</span> commands has been greatly changed. This reflects
+the ability of the <span class="teletype">)compile</span> to now invoke the Aldor
+compiler, the impending deletion of the <span class="teletype">)load</span> command
+and the new <span class="teletype">)library</span> command.
+The <span class="teletype">)library</span> command replaces <span class="teletype">)load</span> and is
+compatible with the compiled output from both the old and new
+compilers.
+</p>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-15.6.xhtml" style="margin-right: 10px;">Previous Section 15.6 HyperTex</a><a href="section-16.0.xhtml" style="margin-right: 10px;">Next Section 16.0  Axiom System Commands</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.0.xhtml
new file mode 100644
index 0000000..3b650ab
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.0.xhtml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-15.7.xhtml" style="margin-right: 10px;">Previous Section 15.7  Documentation</a><a href="section-16.1.xhtml" style="margin-right: 10px;">Next Section 16.1 Introduction</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.0">
+<h2 class="sectiontitle">16.0  Axiom System Commands</h2>
+<a name="ugSysCmd" class="label"/>
+
+<p>This chapter describes system commands, the command-line
+facilities used to control the Axiom environment.
+The first section is an introduction and discusses the common
+syntax of the commands available.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-15.7.xhtml" style="margin-right: 10px;">Previous Section 15.7  Documentation</a><a href="section-16.1.xhtml" style="margin-right: 10px;">Next Section 16.1 Introduction</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.1.xhtml
new file mode 100644
index 0000000..d53b279
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.1.xhtml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.0.xhtml" style="margin-right: 10px;">Previous Section 16.0 Axiom System Commands</a><a href="section-16.2.xhtml" style="margin-right: 10px;">Next Section 16.2 )abbreviation</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.1">
+<h2 class="sectiontitle">16.1  Introduction</h2>
+
+
+<a name="ugSysCmdOverview" class="label"/>
+
+
+<p>System commands are used to perform Axiom environment
+management.
+Among the commands are those that display what has been defined or
+computed, set up multiple logical Axiom environments
+(frames), clear definitions, read files of expressions and
+commands, show what functions are available, and terminate
+Axiom.
+</p>
+
+
+<p>Some commands are restricted: the commands
+<span class="index">set userlevel interpreter</span><a name="chapter-16-0"/>
+<span class="index">set userlevel compiler</span><a name="chapter-16-1"/>
+<span class="index">set userlevel development</span><a name="chapter-16-2"/>
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;userlevel&nbsp;interpreter<br />
+)set&nbsp;userlevel&nbsp;compiler<br />
+)set&nbsp;userlevel&nbsp;development<br />
+</div>
+
+
+<p>set the user-access level to the three possible choices.
+All commands are available at <span class="teletype">development</span> level and the fewest
+are available at <span class="teletype">interpreter</span> level.
+The default user-level is <span class="teletype">interpreter</span>.
+<span class="index">user-level</span><a name="chapter-16-3"/>
+In addition to the <span class="teletype">)set</span> command (discussed in 
+<a href="ugSysCmdset" class="ref" >ugSysCmdset</a> )
+you can use the HyperDoc settings facility to change the <span class="italic">user-level.</span>
+</p>
+
+
+
+<p>Each command listing begins with one or more syntax pattern descriptions
+plus examples of related commands.
+The syntax descriptions are intended to be easy to read and do not
+necessarily represent the most compact way of specifying all
+possible arguments and options; the descriptions may occasionally
+be redundant.
+</p>
+
+
+<p>All system commands begin with a right parenthesis which should be in
+the first available column of the input line (that is, immediately
+after the input prompt, if any).
+System commands may be issued directly to Axiom or be
+included in <span style="font-weight: bold;"> .input</span> files.
+<span class="index">file:input</span><a name="chapter-16-4"/>
+</p>
+
+
+<p>A system command <span class="italic">argument</span> is a word that directly
+follows the command name and is not followed or preceded by a
+right parenthesis.
+A system command <span class="italic">option</span> follows the system command and
+is directly preceded by a right parenthesis.
+Options may have arguments: they directly follow the option.
+This example may make it easier to remember what is an option and
+what is an argument:
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">)syscmd <span class="italic">arg1 arg2</span> )opt1 <span class="italic">opt1arg1 opt1arg2</span> )opt2 <span class="italic">opt2arg1</span> ...</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>In the system command descriptions, optional arguments and options are
+enclosed in brackets (``['' and ``]'').
+If an argument or option name is in italics, it is
+meant to be a variable and must have some actual value substituted
+for it when the system command call is made.
+For example, the syntax pattern description
+</p>
+
+
+
+<p><span class="teletype">)read</span> <span class="italic">fileName</span> <span class="teletype">[)quietly]</span>
+</p>
+
+
+
+<p>would imply that you must provide an actual file name for
+<span class="italic">fileName</span> but need not use the <span class="teletype">)quietly</span> option.
+Thus
+</p>
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;matrix.input<br />
+</div>
+
+
+<p>is a valid instance of the above pattern.
+</p>
+
+
+<p>System command names and options may be abbreviated and may be in
+upper or lower case.
+The case of actual arguments may be significant, depending on the
+particular situation (such as in file names).
+System command names and options may be abbreviated to the minimum
+number of starting letters so that the name or option is unique.
+Thus
+</p>
+
+
+
+<div class="verbatim"><br />
+)s&nbsp;Integer<br />
+</div>
+
+
+<p>is not a valid abbreviation for the <span class="teletype">)set</span> command,
+because both <span class="teletype">)set</span> and <span class="teletype">)show</span>
+begin with the letter ``s''.
+Typically, two or three letters are sufficient for disambiguating names.
+In our descriptions of the commands, we have used no abbreviations for
+either command names or options.
+</p>
+
+
+<p>In some syntax descriptions we use a vertical line ``|''
+to indicate that you must specify one of the listed choices.
+For example, in
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;output&nbsp;fortran&nbsp;on&nbsp;|&nbsp;off<br />
+</div>
+
+
+<p>only <span class="teletype">on</span> and <span class="teletype">off</span> are acceptable words for following
+<span class="teletype">boot</span>.
+We also sometimes use ``...'' to indicate that additional arguments
+or options of the listed form are allowed.
+Finally, in the syntax descriptions we may also list the syntax of
+related commands.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.0.xhtml" style="margin-right: 10px;">Previous Section 16.0 Axiom System Commands</a><a href="section-16.2.xhtml" style="margin-right: 10px;">Next Section 16.2 )abbreviation</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.10.xhtml
new file mode 100644
index 0000000..4806490
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.10.xhtml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.9.xhtml" style="margin-right: 10px;">Previous Section 16.9 )edit</a><a href="section-16.11.xhtml" style="margin-right: 10px;">Next Section 16.11 )frame</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.10">
+<h2 class="sectiontitle">16.10  )fin</h2>
+
+
+<p><span class="index">ugSysCmdfin</span><a name="chapter-16-68"/>
+</p>
+
+
+<p><span class="index">fin</span><a name="chapter-16-69"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> development
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">)fin</span>
+</div>
+</div>
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used by Axiom
+developers to leave the Axiom system and return
+to the underlying Common Lisp system.
+To return to Axiom, issue the
+``<span class="teletype">(|spad|)</span>''
+function call to Common Lisp.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)pquit</span> <span class="index">ugSysCmdpquit</span><a name="chapter-16-70"/> and
+<span class="teletype">)quit</span> <span class="index">ugSysCmdquit</span><a name="chapter-16-71"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.9.xhtml" style="margin-right: 10px;">Previous Section 16.9 )edit</a><a href="section-16.11.xhtml" style="margin-right: 10px;">Next Section 16.11 )frame</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.11.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.11.xhtml
new file mode 100644
index 0000000..604d3a6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.11.xhtml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.11</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.10.xhtml" style="margin-right: 10px;">Previous Section 16.10 )fin</a><a href="section-16.12.xhtml" style="margin-right: 10px;">Next Section 16.12 )help</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.11">
+<h2 class="sectiontitle">16.11  )frame</h2>
+
+
+<a name="ugSysCmdframe" class="label"/>
+
+<p><span class="index">ugSysCmdframe</span><a name="chapter-16-72"/>
+</p>
+
+
+<p><span class="index">frame</span><a name="chapter-16-73"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)frame  new  <span class="italic">frameName</span></span>
+</div>
+<div class="item"><span class="teletype">)frame  drop  <span class="italic">[frameName]</span></span>
+</div>
+<div class="item"><span class="teletype">)frame  next</span>
+</div>
+<div class="item"><span class="teletype">)frame  last</span>
+</div>
+<div class="item"><span class="teletype">)frame  names</span>
+</div>
+<div class="item"><span class="teletype">)frame  import <span class="italic">frameName</span> <span class="italic">[objectName1 [objectName2 ...]]</span></span>
+</div>
+<div class="item"><span class="teletype">)set message frame on | off</span>
+</div>
+<div class="item"><span class="teletype">)set message prompt frame</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>A <span class="italic">frame</span> can be thought of as a logical session within the
+physical session that you get when you start the system.  You can
+have as many frames as you want, within the limits of your computer's
+storage, paging space, and so on.
+Each frame has its own <span class="italic">step number</span>, <span class="italic">environment</span> and <span class="italic">history.</span>
+You can have a variable named <span class="teletype">a</span> in one frame and it will
+have nothing to do with anything that might be called <span class="teletype">a</span> in
+any other frame.
+</p>
+
+
+<p>Some frames are created by the HyperDoc program and these can
+have pretty strange names, since they are generated automatically.
+<span class="index">frame names</span><a name="chapter-16-74"/>
+To find out the names
+of all frames, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)frame&nbsp;names<br />
+</div>
+
+
+<p>It will indicate the name of the current frame.
+</p>
+
+
+<p>You create a new frame
+<span class="index">frame new</span><a name="chapter-16-75"/>
+``<span style="font-weight: bold;"> quark</span>'' by issuing
+</p>
+
+
+
+<div class="verbatim"><br />
+)frame&nbsp;new&nbsp;quark<br />
+</div>
+
+
+<p>The history facility can be turned on by issuing either
+<span class="teletype">)set history on</span> or <span class="teletype">)history )on</span>.
+If the history facility is on and you are saving history information
+in a file rather than in the Axiom environment
+then a history file with filename <span style="font-weight: bold;"> quark.axh</span> will
+be created as you enter commands.
+If you wish to go back to what
+you were doing in the
+<span class="index">frame next</span><a name="chapter-16-76"/>
+``<span style="font-weight: bold;"> initial</span>'' frame, use
+<span class="index">frame last</span><a name="chapter-16-77"/>
+</p>
+
+
+
+<div class="verbatim"><br />
+)frame&nbsp;next<br />
+</div>
+
+
+<p>or
+</p>
+
+
+
+<div class="verbatim"><br />
+)frame&nbsp;last<br />
+</div>
+
+
+<p>to cycle through the ring of available frames to get back to
+``<span style="font-weight: bold;"> initial</span>''.
+</p>
+
+
+<p>If you want to throw
+away a frame (say ``<span style="font-weight: bold;"> quark</span>''), issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)frame&nbsp;drop&nbsp;quark<br />
+</div>
+
+
+<p>If you omit the name, the current frame is dropped.
+<span class="index">frame drop</span><a name="chapter-16-78"/>
+</p>
+
+
+<p>If you do use frames with the history facility on and writing to a file,
+you may want to delete some of the older history files.
+<span class="index">file:history</span><a name="chapter-16-79"/>
+These are directories, so you may want to issue a command like
+<span class="teletype">rm -r quark.axh</span> to the operating system.
+</p>
+
+
+<p>You can bring things from another frame by using
+<span class="index">frame import</span><a name="chapter-16-80"/>
+<span class="teletype">)frame import</span>.
+For example, to bring the <span class="teletype">f</span> and <span class="teletype">g</span> from the frame ``<span style="font-weight: bold;"> quark</span>''
+to the current frame, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)frame&nbsp;import&nbsp;quark&nbsp;f&nbsp;g<br />
+</div>
+
+
+<p>If you want everything from the frame ``<span style="font-weight: bold;"> quark</span>'', issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)frame&nbsp;import&nbsp;quark<br />
+</div>
+
+
+<p>You will be asked to verify that you really want everything.
+</p>
+
+
+<p>There are two <span class="teletype">)set</span> flags
+<span class="index">set message frame</span><a name="chapter-16-81"/>
+to make it easier to tell where you are.
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;message&nbsp;frame&nbsp;on&nbsp;|&nbsp;off<br />
+</div>
+
+
+<p>will print more messages about frames when it is set on.
+By default, it is off.
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;message&nbsp;prompt&nbsp;frame<br />
+</div>
+
+
+<p>will give a prompt
+<span class="index">set message prompt frame</span><a name="chapter-16-82"/>
+that looks like
+</p>
+
+
+
+<div class="verbatim"><br />
+initial&nbsp;(1)&nbsp;-&gt;<br />
+</div>
+
+
+<p><span class="index">prompt:with frame name</span><a name="chapter-16-83"/>
+when you start up. In this case, the frame name and step make up the
+prompt.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)history</span> <span class="index">ugSysCmdhistory</span><a name="chapter-16-84"/> and
+<span class="teletype">)set</span> <span class="index">ugSysCmdset</span><a name="chapter-16-85"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.10.xhtml" style="margin-right: 10px;">Previous Section 16.10 )fin</a><a href="section-16.12.xhtml" style="margin-right: 10px;">Next Section 16.12 )help</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.12.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.12.xhtml
new file mode 100644
index 0000000..74bd420
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.12.xhtml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.11.xhtml" style="margin-right: 10px;">Previous Section 16.11 )frame</a><a href="section-16.13.xhtml" style="margin-right: 10px;">Next Section 16.13 )history</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.12">
+<h2 class="sectiontitle">16.12  )help</h2>
+
+
+<p><span class="index">ugSysCmdhelp</span><a name="chapter-16-86"/>
+</p>
+
+
+<p><span class="index">help</span><a name="chapter-16-87"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)help</span>
+</div>
+<div class="item"><span class="teletype">)help</span> <span class="italic">commandName</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command displays help information about system commands.
+If you issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)help<br />
+</div>
+
+
+<p>then this very text will be shown.
+You can also give the name or abbreviation of a system command
+to display information about it.
+For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)help&nbsp;clear<br />
+</div>
+
+
+<p>will display the description of the <span class="teletype">)clear</span> system command.
+</p>
+
+
+<p>All this material is available in the Axiom User Guide
+and in HyperDoc.
+In HyperDoc, choose the <span style="font-weight: bold;"> Commands</span> item from the
+<span style="font-weight: bold;"> Reference</span> menu.
+</p>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.11.xhtml" style="margin-right: 10px;">Previous Section 16.11 )frame</a><a href="section-16.13.xhtml" style="margin-right: 10px;">Next Section 16.13 )history</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.13.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.13.xhtml
new file mode 100644
index 0000000..d4c990e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.13.xhtml
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.13</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.12.xhtml" style="margin-right: 10px;">Previous Section 16.12 )help</a><a href="section-16.14.xhtml" style="margin-right: 10px;">Next Section 16.14 )library</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.13">
+<h2 class="sectiontitle">16.13  )history</h2>
+
+
+<p><span class="index">ugSysCmdhistory</span><a name="chapter-16-88"/>
+</p>
+
+
+<p><span class="index">history</span><a name="chapter-16-89"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)history )on</span>
+</div>
+<div class="item"><span class="teletype">)history )off</span>
+</div>
+<div class="item"><span class="teletype">)history )write</span> <span class="italic">historyInputFileName</span>
+</div>
+<div class="item"><span class="teletype">)history )show [<span class="italic">n</span>] [both]</span>
+</div>
+<div class="item"><span class="teletype">)history )save</span> <span class="italic">savedHistoryName</span>
+</div>
+<div class="item"><span class="teletype">)history )restore</span> [<span class="italic">savedHistoryName</span>]
+</div>
+<div class="item"><span class="teletype">)history )reset</span>
+</div>
+<div class="item"><span class="teletype">)history )change</span> <span class="italic">n</span>
+</div>
+<div class="item"><span class="teletype">)history )memory</span>
+</div>
+<div class="item"><span class="teletype">)history )file</span>
+</div>
+<div class="item"><span class="teletype">%</span>
+</div>
+<div class="item"><span class="teletype">%%(<span class="italic">n</span>)</span>
+</div>
+<div class="item"><span class="teletype">)set history on | off</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>The <span class="italic">history</span> facility within Axiom allows you to restore your
+environment to that of another session and recall previous
+computational results.
+Additional commands allow you to review previous
+input lines and to create an <span style="font-weight: bold;"> .input</span> file of the lines typed to
+<span class="index">file:input</span><a name="chapter-16-90"/>
+Axiom.
+</p>
+
+
+<p>Axiom saves your input and output if the history facility is
+turned on (which is the default).
+This information is saved if either of
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;history&nbsp;on<br />
+)history&nbsp;)on<br />
+</div>
+
+
+<p>has been issued.
+Issuing either
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;history&nbsp;off<br />
+)history&nbsp;)off<br />
+</div>
+
+
+<p>will discontinue the recording of information.
+<span class="index">history )on</span><a name="chapter-16-91"/>
+<span class="index">set history on</span><a name="chapter-16-92"/>
+<span class="index">set history off</span><a name="chapter-16-93"/>
+<span class="index">history )off</span><a name="chapter-16-94"/>
+</p>
+
+
+<p>Whether the facility is disabled or not,
+the value of <span class="teletype">%</span> in Axiom always
+refers to the result of the last computation.
+If you have not yet entered anything,
+<span class="teletype">%</span> evaluates to an object of type
+<span class="teletype">Variable('%)</span>.
+The function <span class="teletype">%%</span> may be  used to refer
+to other previous results if the history facility is enabled.
+In that case,
+<span class="teletype">%%(n)</span> is  the output from step <span class="teletype">n</span> if <span class="teletype">n > 0</span>.
+If <span class="teletype">n &lt; 0</span>, the step is computed relative to the current step.
+Thus <span class="teletype">%%(-1)</span> is also the previous step,
+<span class="teletype">%%(-2)</span>, is the  step before that, and so on.
+If an invalid step number is given, Axiom will signal an error.
+</p>
+
+
+<p>The <span class="italic">environment</span> information can either be saved in a file or entirely in
+memory (the default).
+Each frame 
+(<a href="section-16.11.xhtml#ugSysCmdframe" class="ref" >ugSysCmdframe</a> )
+has its own history database.
+When it is kept in a file, some of it may also be kept in memory for
+efficiency.
+When the information is saved in a file, the name of the file is
+of the form <span style="font-weight: bold;"> FRAME.axh</span> where ``<span style="font-weight: bold;"> FRAME</span>'' is the name of the
+current frame.
+The history file is placed in the current working directory
+(see <a href="ugSysCmdcd" class="ref" >ugSysCmdcd</a> ).
+Note that these history database files are not text files (in fact,
+they are directories themselves), and so are not in human-readable
+format.
+</p>
+
+
+<p>The options to the <span class="teletype">)history</span> command are as follows:
+</p>
+
+
+
+<dl>
+<dt><span class="teletype">)change</span> <span class="italic">n</span></dt>
+<dd>
+will set the number of steps that are saved in memory to <span class="italic">n</span>.
+This option only has effect when the history data is maintained in a
+file.
+If you have issued <span class="teletype">)history )memory</span> (or not changed the default)
+there is no need to use <span class="teletype">)history )change</span>.
+<span class="index">history )change</span><a name="chapter-16-95"/>
+</dd>
+<dt><span class="teletype">)on</span></dt>
+<dd>
+will start the recording of information.
+If the workspace is not empty, you will be asked to confirm this
+request.
+If you do so, the workspace will be cleared and history data will begin
+being saved.
+You can also turn the facility on by issuing <span class="teletype">)set history on</span>.
+</dd>
+<dt><span class="teletype">)off</span></dt>
+<dd>
+will stop the recording of information.
+The <span class="teletype">)history )show</span> command will not work after issuing this
+command.
+Note that this command may be issued to save time, as there is some
+performance penalty paid for saving the environment data.
+You can also turn the facility off by issuing <span class="teletype">)set history off</span>.
+</dd>
+<dt><span class="teletype">)file</span></dt>
+<dd>
+indicates that history data should be saved in an external file on disk.
+</dd>
+<dt><span class="teletype">)memory</span></dt>
+<dd>
+indicates that all history data should be kept in memory rather than
+saved in a file.
+Note that if you are computing with very large objects it may not be
+practical to kept this data in memory.
+</dd>
+<dt><span class="teletype">)reset</span></dt>
+<dd>
+will flush the internal list of the most recent workspace calculations
+so that the data structures may be garbage collected by the underlying
+Common Lisp system.
+Like <span class="teletype">)history )change</span>, this option only has real effect when
+history data is being saved in a file.
+</dd>
+<dt><span class="teletype">)restore</span> [<span class="italic">savedHistoryName</span>]</dt>
+<dd>
+completely clears the environment and restores it to a saved session, if
+possible.
+The <span class="teletype">)save</span> option below allows you to save a session to a file
+with a given name. If you had issued
+<span class="teletype">)history )save jacobi</span>
+the command
+<span class="teletype">)history )restore jacobi</span>
+would clear the current workspace and load the contents of the named
+saved session. If no saved session name is specified, the system looks
+for a file called <span style="font-weight: bold;"> last.axh</span>.
+</dd>
+<dt><span class="teletype">)save</span> <span class="italic">savedHistoryName</span></dt>
+<dd>
+is used to save  a snapshot of the environment in a file.
+This file is placed in the current working directory
+(see <a href="ugSysCmdcd" class="ref" >ugSysCmdcd</a> ).
+Use <span class="teletype">)history )restore</span> to restore the environment to the state
+preserved in the file.
+This option also creates an input file containing all the lines of input
+since you created the workspace frame (for example, by starting your
+Axiom session) or last did a <span class="teletype">)clear all</span> or
+<span class="teletype">)clear completely</span>.
+</dd>
+<dt><span class="teletype">)show</span> [<span class="italic">n</span>] [<span class="teletype">both</span>]</dt>
+<dd>
+can show previous input lines and output results.
+<span class="teletype">)show</span> will display up to twenty of the last input lines
+(fewer if you haven't typed in twenty lines).
+<span class="teletype">)show</span> <span class="italic">n</span> will display up to <span class="italic">n</span> of the last input lines.
+<span class="teletype">)show both</span> will display up to five of the last input lines and
+output results.
+<span class="teletype">)show</span> <span class="italic">n</span> <span class="teletype">both</span> will display up to <span class="italic">n</span> of the last
+input lines and output results.
+</dd>
+<dt><span class="teletype">)write</span> <span class="italic">historyInputFile</span></dt>
+<dd>
+creates an <span style="font-weight: bold;"> .input</span> file with the input lines typed since the start
+of the session/frame or the last <span class="teletype">)clear all</span> or <span class="teletype">)clear
+completely</span>.
+If <span class="italic">historyInputFileName</span> does not contain a period (``.'') in the filename,
+<span style="font-weight: bold;"> .input</span> is appended to it.
+For example,
+<span class="teletype">)history )write chaos</span>
+and
+<span class="teletype">)history )write chaos.input</span>
+both write the input lines to a file called <span style="font-weight: bold;"> chaos.input</span> in your
+current working directory.
+If you issued one or more <span class="teletype">)undo</span> commands,
+<span class="teletype">)history )write</span>
+eliminates all
+input lines backtracked over as a result of <span class="teletype">)undo</span>.
+You can edit this file and then use <span class="teletype">)read</span> to have Axiom process
+the contents.
+</dd>
+</dl>
+
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)frame</span> <span class="index">ugSysCmdframe</span><a name="chapter-16-96"/>,
+<span class="teletype">)read</span> <span class="index">ugSysCmdread</span><a name="chapter-16-97"/>,
+<span class="teletype">)set</span> <span class="index">ugSysCmdset</span><a name="chapter-16-98"/>, and
+<span class="teletype">)undo</span> <span class="index">ugSysCmdundo</span><a name="chapter-16-99"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.12.xhtml" style="margin-right: 10px;">Previous Section 16.12 )help</a><a href="section-16.14.xhtml" style="margin-right: 10px;">Next Section 16.14 )library</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.14.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.14.xhtml
new file mode 100644
index 0000000..d0aa2ae
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.14.xhtml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.14</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.13.xhtml" style="margin-right: 10px;">Previous Section 16.13 )history</a><a href="section-16.15.xhtml" style="margin-right: 10px;">Next Section 16.15 )lisp</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.14">
+<h2 class="sectiontitle">16.14  )library</h2>
+
+
+<p><span class="index">ugSysCmdlibrary</span><a name="chapter-16-100"/>
+</p>
+
+
+<p><span class="index">library</span><a name="chapter-16-101"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)library <span class="italic">libName1  [libName2 ...]</span></span>
+</div>
+<div class="item"><span class="teletype">)library )dir <span class="italic">dirName</span></span>
+</div>
+<div class="item"><span class="teletype">)library )only <span class="italic">objName1  [objlib2 ...]</span></span>
+</div>
+<div class="item"><span class="teletype">)library )noexpose</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command replaces the <span class="teletype">)load</span> system command that
+was available in Axiom releases before version 2.0.
+The <span class="teletype">)library</span> command makes available to Axiom the compiled
+objects in the libraries listed.
+</p>
+
+
+<p>For example, if you <span class="teletype">)compile dopler.as</span> in your home
+directory, issue <span class="teletype">)library dopler</span> to have Axiom look
+at the library, determine the category and domain constructors present,
+update the internal database with various properties of the
+constructors, and arrange for the constructors to be
+automatically loaded when needed.
+If the <span class="teletype">)noexpose</span> option has not been given, the
+constructors will be exposed (that is, available) in the current
+frame.
+</p>
+
+
+<p>If you compiled a file with the old system compiler, you will
+have an <span class="italic">NRLIB</span> present, for example, <span class="italic">DOPLER.NRLIB,</span>
+where <span class="teletype">DOPLER</span> is a constructor abbreviation.
+The command <span class="teletype">)library DOPLER</span> will then do the analysis and
+database updates as above.
+</p>
+
+
+<p>To tell the system about all libraries in a directory, use
+<span class="teletype">)library )dir dirName</span> where <span class="teletype">dirName</span> is an explicit
+directory.
+You may specify ``.'' as the directory, which means the current
+directory from which you started the system or the one you set
+via the <span class="teletype">)cd</span> command. The directory name is required.
+</p>
+
+
+<p>You may only want to tell the system about particular
+constructors within a library. In this case, use the <span class="teletype">)only</span>
+option. The command <span class="teletype">)library dopler )only Test1</span> will only
+cause the <span class="slant">Test1</span> constructor to be analyzed, autoloaded,
+etc..
+</p>
+
+
+<p>Finally, each constructor in a library  are usually automatically exposed when the
+<span class="teletype">)library</span> command is used. Use the <span class="teletype">)noexpose</span>
+option if you not want them exposed. At a later time you can use
+<span class="teletype">)set expose add constructor</span> to expose any hidden
+constructors.
+</p>
+
+
+<p><span style="font-weight: bold;"> Note for Axiom beta testers:</span> At various times this
+command was called <span class="teletype">)local</span> and <span class="teletype">)with</span> before the name
+<span class="teletype">)library</span> became the official name.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)cd</span> <span class="index">ugSysCmdcd</span><a name="chapter-16-102"/>,
+<span class="teletype">)compile</span> <span class="index">ugSysCmdcompile</span><a name="chapter-16-103"/>,
+<span class="teletype">)frame</span> <span class="index">ugSysCmdframe</span><a name="chapter-16-104"/>, and
+<span class="teletype">)set</span> <span class="index">ugSysCmdset</span><a name="chapter-16-105"/>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.13.xhtml" style="margin-right: 10px;">Previous Section 16.13 )history</a><a href="section-16.15.xhtml" style="margin-right: 10px;">Next Section 16.15 )lisp</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.15.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.15.xhtml
new file mode 100644
index 0000000..ee3a60e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.15.xhtml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.15</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.14.xhtml" style="margin-right: 10px;">Previous Section 16.14 )library</a><a href="section-16.16.xhtml" style="margin-right: 10px;">Next Section 16.16 )load</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.15">
+<h2 class="sectiontitle">16.15  )lisp</h2>
+
+
+<p><span class="index">ugSysCmdlisp</span><a name="chapter-16-106"/>
+</p>
+
+
+<p><span class="index">lisp</span><a name="chapter-16-107"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> development
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">)lisp</span> {\it[lispExpression]}
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used by Axiom system developers to have single
+expressions evaluated by the Common Lisp system on which
+Axiom is built.
+The <span class="italic">lispExpression</span> is read by the Common Lisp reader and
+evaluated.
+If this expression is not complete (unbalanced parentheses, say), the reader
+will wait until a complete expression is entered.
+</p>
+
+
+<p>Since this command is only useful  for evaluating single expressions, the
+<span class="teletype">)fin</span>
+command may be used to  drop out  of Axiom  into Common Lisp.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)system</span> <span class="index">ugSysCmdsystem</span><a name="chapter-16-108"/>,
+<span class="teletype">)boot</span> <span class="index">ugSysCmdboot</span><a name="chapter-16-109"/>, and
+<span class="teletype">)fin</span> <span class="index">ugSysCmdfin</span><a name="chapter-16-110"/>.
+</p>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.14.xhtml" style="margin-right: 10px;">Previous Section 16.14 )library</a><a href="section-16.16.xhtml" style="margin-right: 10px;">Next Section 16.16 )load</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.16.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.16.xhtml
new file mode 100644
index 0000000..610b7a2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.16.xhtml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.16</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.15.xhtml" style="margin-right: 10px;">Previous Section 16.15 )lisp</a><a href="section-16.17.xhtml" style="margin-right: 10px;">Next Section 16.17 )trace</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.16">
+<h2 class="sectiontitle">16.16  )load</h2>
+
+
+<p><span class="index">ugSysCmdload</span><a name="chapter-16-111"/>
+</p>
+
+
+<p><span class="index">load</span><a name="chapter-16-112"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><!--
+ BEGIN OBSOLETE
+</p>
+
+
+<p> <span style="font-weight: bold;"> Command Syntax:</span>
+ 
+</p>
+
+
+<div class="beginlist">
+ <div class="item">
+<span class="teletype">)load <span class="italic">libName1  [libName2 ...]</span> [)update]</span>
+ </div>
+<div class="item"><span class="teletype">)load <span class="italic">libName1  [libName2 ...]</span> )cond [)update]</span>
+ </div>
+<div class="item"><span class="teletype">)load <span class="italic">libName1  [libName2 ...]</span> )query</span>
+ </div>
+<div class="item"><span class="teletype">)load <span class="italic">libName1  [libName2 ...]</span> )noexpose</span>
+ </div>
+</div>
+
+
+
+<p> END OBSOLETE
+-->
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is obsolete. Use <span class="teletype">)library</span> instead.
+</p>
+
+
+<p><!--BEGIN OBSOLETE
+ The <span class="teletype">)load</span> command is used to bring in the compiled library code
+ for constructors and update internal system tables with information
+ about the constructors.
+ This command is usually only used by Axiom library developers.
+</p>
+
+
+<p> The abbreviation of a constructor serves as part of the name of the
+ directory in which the compiled code is stored (see
+ <a href="ugSysCmdabbreviation" class="ref" >ugSysCmdabbreviation</a> for a discussion of defining and querying
+ abbreviations).
+ The abbreviation is used in the <span class="teletype">)load</span> command.
+ For example, to load the constructors <span class="teletype">Integer</span>,
+ <span class="teletype">NonNegativeInteger</span> and <span class="teletype">List</span> which have
+ abbreviations <span class="teletype">INT</span>, <span class="teletype">NNI</span> and <span class="teletype">LIST</span>,
+ respectively, issue the command
+ 
+</p>
+
+
+<div class="verbatim"><br />
+&nbsp;)load&nbsp;INT&nbsp;NNI&nbsp;LIST<br />
+&nbsp;</div>
+
+
+<p> To load constructors only if they have not already been
+ loaded (that is., load <span class="italic">conditionally</span>), use the <span class="teletype">)cond</span>
+ option:
+ 
+</p>
+
+
+<div class="verbatim"><br />
+&nbsp;)load&nbsp;INT&nbsp;NNI&nbsp;LIST&nbsp;)cond<br />
+&nbsp;</div>
+
+
+<p> To query whether particular constructors have been loaded, use the
+ <span class="teletype">)query</span> option:
+ 
+</p>
+
+
+<div class="verbatim"><br />
+&nbsp;)load&nbsp;I&nbsp;NNI&nbsp;L&nbsp;)query<br />
+&nbsp;</div>
+
+
+<p> When constructors are loaded from Axiom system directories, some
+ checks and updates are not performed because it is assumed that the system
+ knows about these constructors.
+ To force these checks and updates to occur, add the <span class="teletype">)update</span>
+ option to the command:
+ 
+</p>
+
+
+<div class="verbatim"><br />
+&nbsp;)load&nbsp;INT&nbsp;NNI&nbsp;LIST&nbsp;)update<br />
+&nbsp;)load&nbsp;INT&nbsp;NNI&nbsp;LIST&nbsp;)cond&nbsp;)update<br />
+&nbsp;</div>
+
+
+<p> The only time it is really necessary to use the <span class="teletype">)load</span> command is
+ when a new constructor has been compiled or an existing constructor has
+ been modified and then compiled.
+ If an <span class="teletype">)abbreviate</span> command has been issued for a constructor, it
+ will be automatically loaded when needed.
+ In particular, any constructor that comes with the Axiom system
+ will be automatically loaded.
+</p>
+
+
+<p> If you write several interdependent constructors it is important that
+ they all get loaded when needed.
+ To accomplish this, either load them manually or issue
+ <span class="teletype">)abbreviate</span> commands for each of the constructors so that they
+ will be automatically loaded when needed.
+</p>
+
+
+<p> Constructors are automatically exposed in the frame in which you load
+ them unless you use the <span class="teletype">)noexpose</span> option.
+ 
+</p>
+
+
+<div class="verbatim"><br />
+&nbsp;)load&nbsp;MATCAT-&nbsp;)noexpose<br />
+&nbsp;</div>
+
+
+<p> See <a href="section-2.11.xhtml#ugTypesExpose" class="ref" >ugTypesExpose</a>
+ for more information about constructor exposure.
+</p>
+
+
+<p> <span style="font-weight: bold;"> Also See:</span>
+ <span class="teletype">)abbreviation</span> <span class="index">ugSysCmdabbreviation</span><a name="chapter-16-113"/> and
+ <span class="teletype">)compile</span> <span class="index">ugSysCmdcompile</span><a name="chapter-16-114"/>.
+ END OBSOLETE -->
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.15.xhtml" style="margin-right: 10px;">Previous Section 16.15 )lisp</a><a href="section-16.17.xhtml" style="margin-right: 10px;">Next Section 16.17 )trace</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.17.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.17.xhtml
new file mode 100644
index 0000000..d454737
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.17.xhtml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.17</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.16.xhtml" style="margin-right: 10px;">Previous Section 16.16 )load</a><a href="section-16.18.xhtml" style="margin-right: 10px;">Next Section 16.18 )pquit</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.17">
+<h2 class="sectiontitle">16.17  )trace</h2>
+
+
+<p><span class="index">ugSysCmdltrace</span><a name="chapter-16-115"/>
+</p>
+
+
+<p><span class="index">ltrace</span><a name="chapter-16-116"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> development
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+<p>This command has the same arguments as options as the
+<span class="teletype">)trace</span> command.
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used by Axiom system developers to trace
+Common Lisp or
+BOOT functions.
+It is not supported for general use.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)boot</span> <span class="index">ugSysCmdboot</span><a name="chapter-16-117"/>,
+<span class="teletype">)lisp</span> <span class="index">ugSysCmdlisp</span><a name="chapter-16-118"/>, and
+<span class="teletype">)trace</span> <span class="index">ugSysCmdtrace</span><a name="chapter-16-119"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.16.xhtml" style="margin-right: 10px;">Previous Section 16.16 )load</a><a href="section-16.18.xhtml" style="margin-right: 10px;">Next Section 16.18 )pquit</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.18.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.18.xhtml
new file mode 100644
index 0000000..aee416c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.18.xhtml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.18</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.17.xhtml" style="margin-right: 10px;">Previous Section 16.17 )trace</a><a href="section-16.19.xhtml" style="margin-right: 10px;">Next Section 16.19 )quit</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.18">
+<h2 class="sectiontitle">16.18  )pquit</h2>
+
+
+<p><span class="index">ugSysCmdpquit</span><a name="chapter-16-120"/>
+</p>
+
+
+<p><span class="index">pquit</span><a name="chapter-16-121"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)pquit</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to terminate Axiom  and return to the
+operating system.
+Other than by redoing all your computations or by
+using the <span class="teletype">)history )restore</span>
+command to try to restore your working environment,
+you cannot return to Axiom in the same state.
+</p>
+
+
+<p><span class="teletype">)pquit</span> differs from the <span class="teletype">)quit</span> in that it always asks for
+confirmation that you want to terminate Axiom (the ``p'' is for
+``protected'').
+<span class="index">quit</span><a name="chapter-16-122"/>
+When you enter the <span class="teletype">)pquit</span> command, Axiom responds
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>Please enter <span style="font-weight: bold;"> y</span> or <span style="font-weight: bold;"> yes</span> if you really want to leave the interactive <br/>
+environment and return to the operating system:
+</p>
+
+
+
+</div>
+
+
+
+<p>If you respond with <span class="teletype">y</span> or <span class="teletype">yes</span>, you will see the message
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>You are now leaving the Axiom interactive environment. <br/>
+Issue the command <span style="font-weight: bold;"> axiom</span> to the operating system to start a new session.
+</p>
+
+
+
+</div>
+
+
+
+<p>and Axiom will terminate and return you to the operating
+system (or the environment from which you invoked the system).
+If you responded with something other than <span class="teletype">y</span> or <span class="teletype">yes</span>, then
+the message
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>You have chosen to remain in the Axiom interactive environment.
+</p>
+
+
+
+</div>
+
+
+
+<p>will be displayed and, indeed, Axiom would still be running.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)fin</span> <span class="index">ugSysCmdfin</span><a name="chapter-16-123"/>,
+<span class="teletype">)history</span> <span class="index">ugSysCmdhistory</span><a name="chapter-16-124"/>,
+<span class="teletype">)close</span> <span class="index">ugSysCmdclose</span><a name="chapter-16-125"/>,
+<span class="teletype">)quit</span> <span class="index">ugSysCmdquit</span><a name="chapter-16-126"/>, and
+<span class="teletype">)system</span> <span class="index">ugSysCmdsystem</span><a name="chapter-16-127"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.17.xhtml" style="margin-right: 10px;">Previous Section 16.17 )trace</a><a href="section-16.19.xhtml" style="margin-right: 10px;">Next Section 16.19 )quit</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.19.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.19.xhtml
new file mode 100644
index 0000000..2c8e6bb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.19.xhtml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.19</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.18.xhtml" style="margin-right: 10px;">Previous Section 16.18 )pquit</a><a href="section-16.20.xhtml" style="margin-right: 10px;">Next Section 16.20 )read</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.19">
+<h2 class="sectiontitle">16.19  )quit</h2>
+
+
+<p><span class="index">ugSysCmdquit</span><a name="chapter-16-128"/>
+</p>
+
+
+<p><span class="index">quit</span><a name="chapter-16-129"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)quit</span>
+</div>
+<div class="item"><span class="teletype">)set quit protected | unprotected</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to terminate Axiom  and return to the
+operating system.
+Other than by redoing all your computations or by
+using the <span class="teletype">)history )restore</span>
+command to try to restore your working environment,
+you cannot return to Axiom in the same state.
+</p>
+
+
+<p><span class="teletype">)quit</span> differs from the <span class="teletype">)pquit</span> in that it asks for
+<span class="index">pquit</span><a name="chapter-16-130"/>
+confirmation only if the command
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;quit&nbsp;protected<br />
+</div>
+
+
+<p>has been issued.
+<span class="index">set quit protected</span><a name="chapter-16-131"/>
+Otherwise, <span class="teletype">)quit</span> will make Axiom terminate and return you
+to the operating system (or the environment from which you invoked the
+system).
+</p>
+
+
+<p>The default setting is <span class="teletype">)set quit protected</span> so that <span class="teletype">)quit</span>
+and <span class="teletype">)pquit</span> behave in the same way.
+If you do issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;quit&nbsp;unprotected<br />
+</div>
+
+
+<p>we
+<span class="index">set quit unprotected</span><a name="chapter-16-132"/>
+suggest that you do not (somehow) assign <span class="teletype">)quit</span> to be
+executed when you press, say, a function key.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)fin</span> <span class="index">ugSysCmdfin</span><a name="chapter-16-133"/>,
+<span class="teletype">)history</span> <span class="index">ugSysCmdhistory</span><a name="chapter-16-134"/>,
+<span class="teletype">)close</span> <span class="index">ugSysCmdclose</span><a name="chapter-16-135"/>,
+<span class="teletype">)pquit</span> <span class="index">ugSysCmdpquit</span><a name="chapter-16-136"/>, and
+<span class="teletype">)system</span> <span class="index">ugSysCmdsystem</span><a name="chapter-16-137"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.18.xhtml" style="margin-right: 10px;">Previous Section 16.18 )pquit</a><a href="section-16.20.xhtml" style="margin-right: 10px;">Next Section 16.20 )read</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.2.xhtml
new file mode 100644
index 0000000..5a614bb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.2.xhtml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.1.xhtml" style="margin-right: 10px;">Previous Section 16.1 Introduction</a><a href="section-16.3.xhtml" style="margin-right: 10px;">Next Section 16.3 )boot</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.2">
+<h2 class="sectiontitle">16.2  )abbreviation</h2>
+
+
+
+<p><span class="index">abbreviation</span><a name="chapter-16-5"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> compiler
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">)abbreviation query  [<span class="italic">nameOrAbbrev</span>]</span>
+</div>
+<div class="item"> <span class="teletype">)abbreviation category  <span class="italic">abbrev  fullname</span> [)quiet]</span>
+</div>
+<div class="item"> <span class="teletype">)abbreviation domain  <span class="italic">abbrev  fullname</span>   [)quiet]</span>
+</div>
+<div class="item"> <span class="teletype">)abbreviation package  <span class="italic">abbrev  fullname</span>  [)quiet]</span>
+</div>
+<div class="item"> <span class="teletype">)abbreviation remove  <span class="italic">nameOrAbbrev</span></span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to query, set and remove abbreviations for category,
+domain and package constructors.
+Every constructor must have a unique abbreviation.
+This abbreviation is part of the name of the subdirectory
+under which the components of the compiled constructor are
+stored.
+</p>
+
+
+
+<p><!-- BEGIN OBSOLETE
+ It is this abbreviation that is used to bring compiled code into
+ Axiom with the <span class="teletype">)load</span> command.
+ END OBSOLETE -->
+</p>
+
+
+
+<p>Furthermore, by issuing this command you
+let the system know what file to load automatically if you use a new
+constructor.
+Abbreviations must start with a letter and then be followed by
+up to seven letters or digits.
+Any letters appearing in the abbreviation must be in uppercase.
+</p>
+
+
+<p>When used with the <span class="teletype">query</span> argument,
+<span class="index">abbreviation query</span><a name="chapter-16-6"/>
+this command may be used to list the name
+associated with a  particular abbreviation or the  abbreviation for a
+constructor.
+If no abbreviation or name is given, the names and corresponding
+abbreviations for <span class="italic">all</span> constructors are listed.
+</p>
+
+
+<p>The following shows the abbreviation for the constructor <span class="teletype">List</span>:
+</p>
+
+
+
+<div class="verbatim"><br />
+)abbreviation&nbsp;query&nbsp;List<br />
+</div>
+
+
+<p>The following shows the constructor name corresponding to the
+abbreviation <span class="teletype">NNI</span>:
+</p>
+
+
+
+<div class="verbatim"><br />
+)abbreviation&nbsp;query&nbsp;NNI<br />
+</div>
+
+
+<p>The following lists all constructor names and their abbreviations.
+</p>
+
+
+
+<div class="verbatim"><br />
+)abbreviation&nbsp;query<br />
+</div>
+
+
+
+<p>To add an abbreviation for a constructor, use this command with
+<span class="teletype">category</span>, <span class="teletype">domain</span> or <span class="teletype">package</span>.
+<span class="index">abbreviation package</span><a name="chapter-16-7"/>
+<span class="index">abbreviation domain</span><a name="chapter-16-8"/>
+<span class="index">abbreviation category</span><a name="chapter-16-9"/>
+The following add abbreviations to the system for a
+category, domain and package, respectively:
+</p>
+
+
+
+<div class="verbatim"><br />
+)abbreviation&nbsp;domain&nbsp;&nbsp;&nbsp;SET&nbsp;Set<br />
+)abbreviation&nbsp;category&nbsp;COMPCAT&nbsp;&nbsp;ComplexCategory<br />
+)abbreviation&nbsp;package&nbsp;&nbsp;LIST2MAP&nbsp;ListToMap<br />
+</div>
+
+
+
+<p>If the <span class="teletype">)quiet</span> option is used,
+no output is displayed from this command.
+You would normally only define an abbreviation in a library source file.
+If this command is issued for a constructor that has already been loaded, the
+constructor will be reloaded next time it is referenced.  In particular, you
+can use this command to force the automatic reloading of constructors.
+</p>
+
+
+<p>To remove an abbreviation, the <span class="teletype">remove</span> argument is used.
+<span class="index">abbreviation remove</span><a name="chapter-16-10"/>
+This is usually
+only used to correct a previous command that set an abbreviation for a
+constructor name.
+If, in fact, the abbreviation does exist, you are prompted
+for confirmation of the removal request.
+Either of the following commands
+will remove the abbreviation <span class="teletype">VECTOR2</span> and the
+constructor name <span class="teletype">VectorFunctions2</span> from the system:
+</p>
+
+
+
+<div class="verbatim"><br />
+)abbreviation&nbsp;remove&nbsp;VECTOR2<br />
+)abbreviation&nbsp;remove&nbsp;VectorFunctions2<br />
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)compile</span> <span class="index">ugSysCmdcompile</span><a name="chapter-16-11"/> 
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.1.xhtml" style="margin-right: 10px;">Previous Section 16.1 Introduction</a><a href="section-16.3.xhtml" style="margin-right: 10px;">Next Section 16.3 )boot</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.20.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.20.xhtml
new file mode 100644
index 0000000..90a472d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.20.xhtml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.20</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.19.xhtml" style="margin-right: 10px;">Previous Section 16.19 )quit</a><a href="section-16.21.xhtml" style="margin-right: 10px;">Next Section 16.21 )set</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.20">
+<h2 class="sectiontitle">16.20  )read</h2>
+
+
+<p><span class="index">ugSysCmdread</span><a name="chapter-16-138"/>
+</p>
+
+
+<p><span class="index">read</span><a name="chapter-16-139"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">)read</span> <span class="italic">[fileName]</span>
+</div>
+<div class="item"> <span class="teletype">)read</span> <span class="italic">[fileName]</span> [<span class="teletype">)quiet</span>] [<span class="teletype">)ifthere</span>]
+</div>
+</div>
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to read <span style="font-weight: bold;"> .input</span> files into Axiom.
+<span class="index">file:input</span><a name="chapter-16-140"/>
+The command
+</p>
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;matrix.input<br />
+</div>
+
+
+<p>will read the contents of the file <span style="font-weight: bold;"> matrix.input</span> into
+Axiom.
+The ``.input'' file extension is optional.
+See <a href="section-4.1.xhtml#ugInOutIn" class="ref" >ugInOutIn</a>  
+for more information about <span style="font-weight: bold;"> .input</span> files.
+</p>
+
+
+<p>This command remembers the previous file you edited, read or compiled.
+If you do not specify a file name, the previous file will be read.
+</p>
+
+
+<p>The <span class="teletype">)ifthere</span> option checks to see whether the <span style="font-weight: bold;"> .input</span> file
+exists.
+If it does not, the  <span class="teletype">)read</span> command does nothing.
+If you do not use this option and the file does not exist,
+you are asked to give the name of an existing <span style="font-weight: bold;"> .input</span> file.
+</p>
+
+
+<p>The <span class="teletype">)quiet</span> option suppresses output while the file is being read.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)compile</span> <span class="index">ugSysCmdcompile</span><a name="chapter-16-141"/>,
+<span class="teletype">)edit</span> <span class="index">ugSysCmdedit</span><a name="chapter-16-142"/>, and
+<span class="teletype">)history</span> <span class="index">ugSysCmdhistory</span><a name="chapter-16-143"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.19.xhtml" style="margin-right: 10px;">Previous Section 16.19 )quit</a><a href="section-16.21.xhtml" style="margin-right: 10px;">Next Section 16.21 )set</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.21.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.21.xhtml
new file mode 100644
index 0000000..e26c8ab
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.21.xhtml
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.21</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.20.xhtml" style="margin-right: 10px;">Previous Section 16.20 )read</a><a href="section-16.22.xhtml" style="margin-right: 10px;">Next Section 16.22 )show</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.21">
+<h2 class="sectiontitle">16.21  )set</h2>
+
+
+<p><span class="index">ugSysCmdset</span><a name="chapter-16-144"/>
+</p>
+
+
+<p><span class="index">set</span><a name="chapter-16-145"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">)set</span>
+</div>
+<div class="item"> <span class="teletype">)set</span> <span class="italic">label1 [... labelN]</span>
+</div>
+<div class="item"> <span class="teletype">)set</span> <span class="italic">label1 [... labelN] newValue</span>
+</div>
+</div>
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>The <span class="teletype">)set</span> command is used to view or set system variables that
+control what messages are displayed, the type of output desired, the
+status of the history facility, the way Axiom user functions are
+cached, and so on.
+Since this collection is very large, we will not discuss them here.
+Rather, we will show how the facility is used.
+We urge you to explore the <span class="teletype">)set</span> options to familiarize yourself
+with how you can modify your Axiom working environment.
+There is a HyperDoc version of this same facility available from the
+main HyperDoc menu.
+</p>
+
+
+
+<p>The <span class="teletype">)set</span> command is command-driven with a menu display.
+It is tree-structured.
+To see all top-level nodes, issue <span class="teletype">)set</span> by itself.
+</p>
+
+
+
+<div class="verbatim"><br />
+)set<br />
+</div>
+
+
+<p>Variables with values have them displayed near the right margin.
+Subtrees of selections have ``<span class="teletype">...</span>''
+displayed in the value field.
+For example, there are many kinds of messages, so issue
+<span class="teletype">)set message</span> to see the choices.
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;message<br />
+</div>
+
+
+<p>The current setting  for the variable that displays
+<span class="index">computation timings:displaying</span><a name="chapter-16-146"/>
+whether computation times
+<span class="index">timings:displaying</span><a name="chapter-16-147"/>
+are displayed is visible in the menu displayed by the last command.
+To see more information, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;message&nbsp;time<br />
+</div>
+
+
+<p>This shows that time printing is on now.
+To turn it off, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;message&nbsp;time&nbsp;off<br />
+</div>
+
+
+<p><span class="index">set message time</span><a name="chapter-16-148"/>
+</p>
+
+
+<p>As noted above, not all settings have so many qualifiers.
+For example, to change the <span class="teletype">)quit</span> command to being unprotected
+(that is, you will not be prompted for verification), you need only issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;quit&nbsp;unprotected<br />
+</div>
+
+
+<p><span class="index">set quit unprotected</span><a name="chapter-16-149"/>
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)quit</span> <span class="index">ugSysCmdquit</span><a name="chapter-16-150"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.20.xhtml" style="margin-right: 10px;">Previous Section 16.20 )read</a><a href="section-16.22.xhtml" style="margin-right: 10px;">Next Section 16.22 )show</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.22.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.22.xhtml
new file mode 100644
index 0000000..4972cb4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.22.xhtml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.22</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.21.xhtml" style="margin-right: 10px;">Previous Section 16.21 )set</a><a href="section-16.23.xhtml" style="margin-right: 10px;">Next Section 16.23 )spool</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.22">
+<h2 class="sectiontitle">16.22  )show</h2>
+
+
+<p><span class="index">ugSysCmdshow</span><a name="chapter-16-151"/>
+</p>
+
+
+<p><span class="index">show</span><a name="chapter-16-152"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">)show <span class="italic">nameOrAbbrev</span></span>
+</div>
+<div class="item"> <span class="teletype">)show <span class="italic">nameOrAbbrev</span> )operations</span>
+</div>
+<div class="item"> <span class="teletype">)show <span class="italic">nameOrAbbrev</span> )attributes</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+This command displays information about Axiom
+domain, package and category <span class="italic">constructors</span>.
+If no options are given, the <span class="teletype">)operations</span> option is assumed.
+For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)show&nbsp;POLY<br />
+)show&nbsp;POLY&nbsp;)operations<br />
+)show&nbsp;Polynomial<br />
+)show&nbsp;Polynomial&nbsp;)operations<br />
+</div>
+
+
+<p>each display basic information about the
+<span class="teletype">Polynomial</span> domain constructor and then provide a
+listing of operations.
+Since <span class="teletype">Polynomial</span> requires a <span class="teletype">Ring</span> (for example,
+<span class="teletype">Integer</span>) as argument, the above commands all refer
+to a unspecified ring <span class="teletype">R</span>.
+In the list of operations, <span class="teletype">$</span> means
+<span class="teletype">Polynomial(R)</span>.
+</p>
+
+
+<p>The basic information displayed includes the <span class="italic">signature</span>
+of the constructor (the name and arguments), the constructor
+<span class="italic">abbreviation</span>, the <span class="italic">exposure status</span> of the constructor, and the
+name of the <span class="italic">library source file</span> for the constructor.
+</p>
+
+
+<p>If operation information about a specific domain is wanted,
+the full or abbreviated domain name may be used.
+For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)show&nbsp;POLY&nbsp;INT<br />
+)show&nbsp;POLY&nbsp;INT&nbsp;)operations<br />
+)show&nbsp;Polynomial&nbsp;Integer<br />
+)show&nbsp;Polynomial&nbsp;Integer&nbsp;)operations<br />
+</div>
+
+
+<p>are among  the combinations that will
+display the operations exported  by the
+domain <span class="teletype">Polynomial(Integer)</span> (as opposed to the general
+<span class="italic">domain constructor</span> <span class="teletype">Polynomial</span>).
+Attributes may be listed by using the <span class="teletype">)attributes</span> option.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)display</span> <span class="index">ugSysCmddisplay</span><a name="chapter-16-153"/>,
+<span class="teletype">)set</span> <span class="index">ugSysCmdset</span><a name="chapter-16-154"/>, and
+<span class="teletype">)what</span> <span class="index">ugSysCmdwhat</span><a name="chapter-16-155"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.21.xhtml" style="margin-right: 10px;">Previous Section 16.21 )set</a><a href="section-16.23.xhtml" style="margin-right: 10px;">Next Section 16.23 )spool</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.23.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.23.xhtml
new file mode 100644
index 0000000..c45d223
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.23.xhtml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.23</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.22.xhtml" style="margin-right: 10px;">Previous Section 16.22 )show</a><a href="section-16.24.xhtml" style="margin-right: 10px;">Next Section 16.24 )synonym</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.23">
+<h2 class="sectiontitle">16.23  )spool</h2>
+
+
+<p><span class="index">ugSysCmdspool</span><a name="chapter-16-156"/>
+</p>
+
+
+<p><span class="index">spool</span><a name="chapter-16-157"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)spool</span> [<span class="italic">fileName</span>]
+</div>
+<div class="item"><span class="teletype">)spool</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to save <span class="italic">(spool)</span> all Axiom input and output
+<span class="index">file:spool</span><a name="chapter-16-158"/>
+into a file, called a <span class="italic">spool file.</span>
+You can only have one spool file active at a time.
+To start spool, issue this command with a filename. For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)spool&nbsp;integrate.out<br />
+</div>
+
+
+<p>To stop spooling, issue <span class="teletype">)spool</span> with no filename.
+</p>
+
+
+<p>If the filename is qualified with a directory, then the output will
+be placed in that directory.
+If no directory information is given, the spool file will be placed in the
+<span class="index">directory:for spool files</span><a name="chapter-16-159"/>
+<span class="italic">current directory.</span>
+The current directory is the directory from which you started
+Axiom or is the directory you specified using the
+<span class="teletype">)cd</span> command.
+<span class="index">cd</span><a name="chapter-16-160"/>
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)cd</span> <span class="index">ugSysCmdcd</span><a name="chapter-16-161"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.22.xhtml" style="margin-right: 10px;">Previous Section 16.22 )show</a><a href="section-16.24.xhtml" style="margin-right: 10px;">Next Section 16.24 )synonym</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.24.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.24.xhtml
new file mode 100644
index 0000000..d37d180
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.24.xhtml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.24</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.23.xhtml" style="margin-right: 10px;">Previous Section 16.23 )spool</a><a href="section-16.25.xhtml" style="margin-right: 10px;">Next Section 16.25 )system</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.24">
+<h2 class="sectiontitle">16.24  )synonym</h2>
+
+
+<p><span class="index">ugSysCmdsynonym</span><a name="chapter-16-162"/>
+</p>
+
+
+<p><span class="index">synonym</span><a name="chapter-16-163"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)synonym</span>
+</div>
+<div class="item"><span class="teletype">)synonym</span> <span class="italic">synonym fullCommand</span>
+</div>
+<div class="item"><span class="teletype">)what synonyms</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to create short synonyms for system command expressions.
+For example, the following synonyms  might simplify commands you often
+use.
+</p>
+
+
+
+<div class="verbatim"><br />
+)synonym&nbsp;save&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;history&nbsp;)save<br />
+)synonym&nbsp;restore&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;history&nbsp;)restore<br />
+)synonym&nbsp;mail&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system&nbsp;mail<br />
+)synonym&nbsp;ls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system&nbsp;ls<br />
+)synonym&nbsp;fortran&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;output&nbsp;fortran<br />
+</div>
+
+
+<p>Once defined, synonyms can be
+used in place of the longer  command expressions.
+Thus
+</p>
+
+
+
+<div class="verbatim"><br />
+)fortran&nbsp;on<br />
+</div>
+
+
+<p>is the same as the longer
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;fortran&nbsp;output&nbsp;on<br />
+</div>
+
+
+<p>To list all defined synonyms, issue either of
+</p>
+
+
+
+<div class="verbatim"><br />
+)synonyms<br />
+)what&nbsp;synonyms<br />
+</div>
+
+
+<p>To list, say, all synonyms that contain the substring
+``<span class="teletype">ap</span>'', issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)what&nbsp;synonyms&nbsp;ap<br />
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)set</span> <span class="index">ugSysCmdset</span><a name="chapter-16-164"/> and
+<span class="teletype">)what</span> <span class="index">ugSysCmdwhat</span><a name="chapter-16-165"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.23.xhtml" style="margin-right: 10px;">Previous Section 16.23 )spool</a><a href="section-16.25.xhtml" style="margin-right: 10px;">Next Section 16.25 )system</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.25.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.25.xhtml
new file mode 100644
index 0000000..df3438a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.25.xhtml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.25</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.24.xhtml" style="margin-right: 10px;">Previous Section 16.24 )synonym</a><a href="section-16.26.xhtml" style="margin-right: 10px;">Next Section 16.26 )trace</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.25">
+<h2 class="sectiontitle">16.25  )system</h2>
+
+
+<p><span class="index">ugSysCmdsystem</span><a name="chapter-16-166"/>
+</p>
+
+
+<p><span class="index">system</span><a name="chapter-16-167"/>
+</p>
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)system</span> <span class="italic">cmdExpression</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command may be used to issue commands to the operating system while
+remaining in Axiom.
+The <span class="italic">cmdExpression</span> is passed to the operating system for
+execution.
+</p>
+
+
+<p>To get an operating system shell, issue, for example,
+<span class="teletype">)system sh</span>.
+When you enter the key combination,
+<span style="font-weight: bold;"> Ctrl</span>--<span style="font-weight: bold;"> D</span>
+(pressing and holding the
+<span style="font-weight: bold;"> Ctrl</span> key and then pressing the
+<span style="font-weight: bold;"> D</span> key)
+the shell will terminate and you will return to Axiom.
+We do not recommend this way of creating a shell because
+Common Lisp may field some interrupts instead of the shell.
+If possible, use a shell running in another window.
+</p>
+
+
+<p>If you execute programs that misbehave you may not be able to return to
+Axiom.
+If this happens, you may have no other choice than to restart
+Axiom and restore the environment via <span class="teletype">)history )restore</span>, if
+possible.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)boot</span> <span class="index">ugSysCmdboot</span><a name="chapter-16-168"/>,
+<span class="teletype">)fin</span> <span class="index">ugSysCmdfin</span><a name="chapter-16-169"/>,
+<span class="teletype">)lisp</span> <span class="index">ugSysCmdlisp</span><a name="chapter-16-170"/>,
+<span class="teletype">)pquit</span> <span class="index">ugSysCmdpquit</span><a name="chapter-16-171"/>, and
+<span class="teletype">)quit</span> <span class="index">ugSysCmdquit</span><a name="chapter-16-172"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.24.xhtml" style="margin-right: 10px;">Previous Section 16.24 )synonym</a><a href="section-16.26.xhtml" style="margin-right: 10px;">Next Section 16.26 )trace</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.26.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.26.xhtml
new file mode 100644
index 0000000..4da97d4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.26.xhtml
@@ -0,0 +1,491 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.26</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.25.xhtml" style="margin-right: 10px;">Previous Section 16.25 )system</a><a href="section-16.27.xhtml" style="margin-right: 10px;">Next Section 16.27 )undo</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.26">
+<h2 class="sectiontitle">16.26  )trace</h2>
+
+
+<p><span class="index">ugSysCmdtrace</span><a name="chapter-16-173"/>
+</p>
+
+
+<p><span class="index">trace</span><a name="chapter-16-174"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)trace</span>
+</div>
+<div class="item"><span class="teletype">)trace )off</span>
+</div>
+<div class="item"><span class="teletype">)trace</span> <span class="italic">function [options]</span>
+</div>
+<div class="item"><span class="teletype">)trace</span> <span class="italic">constructor [options]</span>
+</div>
+<div class="item"><span class="teletype">)trace</span> <span class="italic">domainOrPackage [options]</span>
+</div>
+</div>
+
+
+
+<p>where options can be one or more of
+</p>
+
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)after</span> <span class="italic">S-expression</span>
+</div>
+<div class="item"><span class="teletype">)before</span> <span class="italic">S-expression</span>
+</div>
+<div class="item"><span class="teletype">)break after</span>
+</div>
+<div class="item"><span class="teletype">)break before</span>
+</div>
+<div class="item"><span class="teletype">)cond</span> <span class="italic">S-expression</span>
+</div>
+<div class="item"><span class="teletype">)count</span>
+</div>
+<div class="item"><span class="teletype">)count</span> <span class="italic">n</span>
+</div>
+<div class="item"><span class="teletype">)depth</span> <span class="italic">n</span>
+</div>
+<div class="item"><span class="teletype">)local</span> <span class="italic">op1 [... opN]</span>
+</div>
+<div class="item"><span class="teletype">)nonquietly</span>
+</div>
+<div class="item"><span class="teletype">)nt</span>
+</div>
+<div class="item"><span class="teletype">)off</span>
+</div>
+<div class="item"><span class="teletype">)only</span> <span class="italic">listOfDataToDisplay</span>
+</div>
+<div class="item"><span class="teletype">)ops</span>
+</div>
+<div class="item"><span class="teletype">)ops</span> <span class="italic">op1 [... opN ]</span>
+</div>
+<div class="item"><span class="teletype">)restore</span>
+</div>
+<div class="item"><span class="teletype">)stats</span>
+</div>
+<div class="item"><span class="teletype">)stats reset</span>
+</div>
+<div class="item"><span class="teletype">)timer</span>
+</div>
+<div class="item"><span class="teletype">)varbreak</span>
+</div>
+<div class="item"><span class="teletype">)varbreak</span> <span class="italic">var1 [... varN ]</span>
+</div>
+<div class="item"><span class="teletype">)vars</span>
+</div>
+<div class="item"><span class="teletype">)vars</span> <span class="italic">var1 [... varN ]</span>
+</div>
+<div class="item"><span class="teletype">)within</span> <span class="italic">executingFunction</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to trace the execution of functions that make
+up the Axiom system, functions defined by users,
+and functions from the system library.
+Almost all options are available for each type of function but
+exceptions will be noted below.
+</p>
+
+
+<p>To list all functions, constructors, domains and packages that are
+traced, simply issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)trace<br />
+</div>
+
+
+<p>To untrace everything that is traced, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)trace&nbsp;)off<br />
+</div>
+
+
+<p>When a function is traced, the default system action is to display
+the arguments to the function and the return value when the
+function is exited.
+Note that if a function is left via an action such as a <span class="teletype">THROW</span>, no
+return value will be displayed.
+Also, optimization of tail recursion may decrease the number of
+times a function is actually invoked and so may cause less trace
+information to be displayed.
+Other information can be displayed or collected when a function is
+traced and this is controlled by the various options.
+Most options will be of interest only to Axiom system
+developers.
+If a domain or package is traced, the default action is to trace
+all functions exported.
+</p>
+
+
+<p>Individual interpreter, lisp or boot
+functions can be traced by listing their names after
+<span class="teletype">)trace</span>.
+Any options that are present must follow the functions to be
+traced.
+</p>
+
+
+
+<div class="verbatim"><br />
+)trace&nbsp;f<br />
+</div>
+
+
+<p>traces the function <span class="teletype">f</span>.
+To untrace <span class="teletype">f</span>, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)trace&nbsp;f&nbsp;)off<br />
+</div>
+
+
+<p>Note that if a function name contains a special character, it will
+be necessary to escape the character with an underscore
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)trace&nbsp;_/D_,1<br />
+</div>
+
+
+
+<p>To trace all domains or packages that are or will be created from a particular
+constructor, give the constructor name or abbreviation after
+<span class="teletype">)trace</span>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)trace&nbsp;MATRIX<br />
+)trace&nbsp;List&nbsp;Integer<br />
+</div>
+
+
+
+<p>The first command traces all domains currently instantiated with
+<span class="teletype">Matrix</span>.
+If additional domains are instantiated with this constructor
+(for example, if you have used <span class="teletype">Matrix(Integer)</span> and
+<span class="teletype">Matrix(Float)</span>), they will be automatically traced.
+The second command traces <span class="teletype">List(Integer)</span>.
+It is possible to trace individual functions in a domain or
+package.
+See the <span class="teletype">)ops</span> option below.
+</p>
+
+
+<p>The following are the general options for the <span class="teletype">)trace</span>
+command.
+</p>
+
+
+<p><!--
+!! system command parser doesn't treat general s-expressions correctly,
+!! I recommand not documenting )after )before and )cond
+-->
+</p>
+
+
+<dl>
+<!--
+<dt><span class="teletype">)after</span> <span class="italic">S-expression</span></dt>
+<dd>
+causes the given Common Lisp <span class="italic">S-expression</span> to be
+executed after exiting the traced function.
+</dd>
+<dt><span class="teletype">)before</span> <span class="italic">S-expression</span></dt>
+<dd>
+causes the given Common Lisp <span class="italic">S-expression</span> to be
+executed before entering the traced function.
+</dd>
+-->
+<dt><span class="teletype">)break after</span></dt>
+<dd>
+causes a Common Lisp break loop to be entered after
+exiting the traced function.
+</dd>
+<dt><span class="teletype">)break before</span></dt>
+<dd>
+causes a Common Lisp break loop to be entered before
+entering the traced function.
+</dd>
+<dt><span class="teletype">)break</span></dt>
+<dd>
+is the same as <span class="teletype">)break before</span>.
+<!--
+</dd>
+<dt><span class="teletype">)cond</span> <span class="italic">S-expression</span></dt>
+<dd>
+causes trace information to be shown only if the given
+Common Lisp <span class="italic">S-expression</span> evaluates to non-NIL.  For
+example, the following command causes the system function
+<span class="teletype">resolveTT</span> to be traced but to have the information
+displayed only if the value of the variable
+<span class="teletype">$reportBottomUpFlag</span> is non-NIL.
+</p>
+
+
+
+<div class="verbatim"><br />
+)trace&nbsp;resolveTT&nbsp;)cond&nbsp;_$reportBottomUpFlag}<br />
+</div>
+
+
+<p>-->
+</dd>
+<dt><span class="teletype">)count</span></dt>
+<dd>
+causes the system to keep a count of the number of times the
+traced function is entered.  The total can be displayed with
+<span class="teletype">)trace )stats</span> and cleared with <span class="teletype">)trace )stats reset</span>.
+</dd>
+<dt><span class="teletype">)count</span> <span class="italic">n</span></dt>
+<dd>
+causes information about the traced function to be displayed for
+the first <span class="italic">n</span> executions.  After the <span class="italic">n</span>-th execution, the
+function is untraced.
+</dd>
+<dt><span class="teletype">)depth</span> <span class="italic">n</span></dt>
+<dd>
+causes trace information to be shown for only <span class="italic">n</span> levels of
+recursion of the traced function.  The command
+
+
+
+
+<div class="verbatim"><br />
+)trace&nbsp;fib&nbsp;)depth&nbsp;10<br />
+</div>
+
+
+will cause the display of only 10 levels of trace information for
+the recursive execution of a user function <span style="font-weight: bold;"> fib</span>.
+</dd>
+<dt><span class="teletype">)math</span></dt>
+<dd>
+causes the function arguments and return value to be displayed in the
+Axiom monospace two-dimensional math format.
+</dd>
+<dt><span class="teletype">)nonquietly</span></dt>
+<dd>
+causes the display of additional messages when a function is
+traced.
+</dd>
+<dt><span class="teletype">)nt</span></dt>
+<dd>
+This suppresses all normal trace information.  This option is
+useful if the <span class="teletype">)count</span> or <span class="teletype">)timer</span> options are used and
+you are interested in the statistics but not the function calling
+information.
+</dd>
+<dt><span class="teletype">)off</span></dt>
+<dd>
+causes untracing of all or specific functions.  Without an
+argument, all functions, constructors, domains and packages are
+untraced.  Otherwise, the given functions and other objects
+are untraced.  To
+immediately retrace the untraced functions, issue <span class="teletype">)trace
+)restore</span>.
+</dd>
+<dt><span class="teletype">)only</span> <span class="italic">listOfDataToDisplay</span></dt>
+<dd>
+causes only specific trace information to be shown.  The items are
+listed by using the following abbreviations:
+<dl>
+<dt>a</dt>
+<dd>        display all arguments
+</dd>
+<dt>v</dt>
+<dd>        display return value
+</dd>
+<dt>1</dt>
+<dd>        display first argument
+</dd>
+<dt>2</dt>
+<dd>        display second argument
+</dd>
+<dt>15</dt>
+<dd>       display the 15th argument, and so on
+</dd>
+</dl>
+</dd>
+</dl>
+<dl>
+<dt><span class="teletype">)restore</span></dt>
+<dd>
+causes the last untraced functions to be retraced.  If additional
+options are present, they are added to those previously in effect.
+</dd>
+<dt><span class="teletype">)stats</span></dt>
+<dd>
+causes the display of statistics collected by the use of the
+<span class="teletype">)count</span> and <span class="teletype">)timer</span> options.
+</dd>
+<dt><span class="teletype">)stats reset</span></dt>
+<dd>
+resets to 0 the statistics collected by the use of the
+<span class="teletype">)count</span> and <span class="teletype">)timer</span> options.
+</dd>
+<dt><span class="teletype">)timer</span></dt>
+<dd>
+causes the system to keep a count of execution times for the
+traced function.  The total can be displayed with <span class="teletype">)trace
+)stats</span> and cleared with <span class="teletype">)trace )stats reset</span>.
+<!--
+!! only for lisp, boot, may not work in any case, recommend removing
+</dd>
+<dt><span class="teletype">)varbreak</span></dt>
+<dd>
+causes a Common Lisp break loop to be entered after
+the assignment to any variable in the traced function.
+-->
+</dd>
+<dt><span class="teletype">)varbreak</span> <span class="italic">var1 [... varN]</span></dt>
+<dd>
+causes a Common Lisp break loop to be entered after
+the assignment to any of the listed variables in the traced
+function.
+</dd>
+<dt><span class="teletype">)vars</span></dt>
+<dd>
+causes the display of the value of any variable after it is
+assigned in the traced function.
+Note that library code must
+have been compiled (see <a href="ugSysCmdcompile" class="ref" >ugSysCmdcompile</a> )
+using the <span class="teletype">)vartrace</span> option in order
+to support this option.
+</dd>
+<dt><span class="teletype">)vars</span> <span class="italic">var1 [... varN]</span></dt>
+<dd>
+causes the display of the value of any of the specified variables
+after they are assigned in the traced function.
+Note that library code must
+have been compiled (see <a href="ugSysCmdcompile" class="ref" >ugSysCmdcompile</a> )
+using the <span class="teletype">)vartrace</span> option in order
+to support this option.
+</dd>
+<dt><span class="teletype">)within</span> <span class="italic">executingFunction</span></dt>
+<dd>
+causes the display of trace information only if the traced
+function is called when the given <span class="italic">executingFunction</span> is running.
+</dd>
+</dl>
+
+
+
+<p>The following are the options for tracing constructors, domains
+and packages.
+</p>
+
+
+<dl>
+<dt><span class="teletype">)local</span> <span class="italic">[op1 [... opN]]</span></dt>
+<dd>
+causes local functions of the constructor to be traced.  Note that
+to untrace an individual local function, you must use the fully
+qualified internal name, using the escape character
+<span class="teletype">_</span> before the semicolon.
+
+
+
+
+<div class="verbatim"><br />
+)trace&nbsp;FRAC&nbsp;)local<br />
+)trace&nbsp;FRAC_;cancelGcd&nbsp;)off<br />
+</div>
+
+
+</dd>
+<dt><span class="teletype">)ops</span> <span class="italic">op1 [... opN]</span></dt>
+<dd>
+By default, all operations from a domain or package are traced
+when the domain or package is traced.  This option allows you to
+specify that only particular operations should be traced.  The
+command
+
+
+
+
+<div class="verbatim"><br />
+)trace&nbsp;Integer&nbsp;)ops&nbsp;min&nbsp;max&nbsp;_+&nbsp;_-<br />
+</div>
+
+
+traces four operations from the domain <span class="teletype">Integer</span>.  Since
+<span class="teletype">+</span> and <span class="teletype">-</span> are special
+characters, it is necessary
+to escape them with an underscore.
+</dd>
+</dl>
+
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)boot</span> <span class="index">ugSysCmdboot</span><a name="chapter-16-175"/>,
+<span class="teletype">)lisp</span> <span class="index">ugSysCmdlisp</span><a name="chapter-16-176"/>, and
+<span class="teletype">)ltrace</span> <span class="index">ugSysCmdltrace</span><a name="chapter-16-177"/>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.25.xhtml" style="margin-right: 10px;">Previous Section 16.25 )system</a><a href="section-16.27.xhtml" style="margin-right: 10px;">Next Section 16.27 )undo</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.27.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.27.xhtml
new file mode 100644
index 0000000..a1408a4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.27.xhtml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.27</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.26.xhtml" style="margin-right: 10px;">Previous Section 16.26 )trace</a><a href="section-16.28.xhtml" style="margin-right: 10px;">Next Section 16.28 )what</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.27">
+<h2 class="sectiontitle">16.27  )undo</h2>
+
+
+<p><span class="index">ugSysCmdundo</span><a name="chapter-16-178"/>
+</p>
+
+
+<p><span class="index">undo</span><a name="chapter-16-179"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)undo</span>
+</div>
+<div class="item"><span class="teletype">)undo</span> <span class="italic">integer</span>
+</div>
+<div class="item"><span class="teletype">)undo</span> <span class="italic">integer [option]</span>
+</div>
+<div class="item"><span class="teletype">)undo</span> <span class="teletype">)redo</span>
+</div>
+</div>
+
+
+
+<p>where <span class="italic">option</span> is one of
+</p>
+
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)after</span>
+</div>
+<div class="item"><span class="teletype">)before</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to
+restore the state of the user environment to an earlier
+point in the interactive session.
+The argument of an <span class="teletype">)undo</span> is an integer which must designate some
+step number in the interactive session.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)undo&nbsp;n<br />
+)undo&nbsp;n&nbsp;)after<br />
+</div>
+
+
+<p>These commands return the state of the interactive
+environment to that immediately after step <span class="teletype">n</span>.
+If <span class="teletype">n</span> is a positive number, then <span class="teletype">n</span> refers to step nummber
+<span class="teletype">n</span>. If <span class="teletype">n</span> is a negative number, it refers to the \tt n-th
+previous command (that is, undoes the effects of the last  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mi>n</mi></mrow></mstyle></math>
+commands).
+</p>
+
+
+<p>A <span class="teletype">)clear all</span> resets the <span class="teletype">)undo</span> facility.
+Otherwise, an <span class="teletype">)undo</span> undoes the effect of <span class="teletype">)clear</span> with
+options <span class="teletype">properties</span>, <span class="teletype">value</span>, and <span class="teletype">mode</span>, and
+that of a previous <span class="teletype">undo</span>.
+If any such system commands are given between steps  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math> ( <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>&gt;</mo><mn>0</mn></mrow></mstyle></math>), their effect is undone
+for <span class="teletype">)undo m</span> for any  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>&lt;</mo><mi>m</mi><mo>&#x2264;</mo><mi>n</mi></mrow></mstyle></math>..
+</p>
+
+
+<p>The command <span class="teletype">)undo</span> is equivalent to <span class="teletype">)undo -1</span> (it undoes
+the effect of the previous user expression).
+The command <span class="teletype">)undo 0</span> undoes any of the above system commands
+issued since the last user expression.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)undo&nbsp;n&nbsp;)before<br />
+</div>
+
+
+<p>This command returns the state of the interactive
+environment to that immediately before step <span class="teletype">n</span>.
+Any <span class="teletype">)undo</span> or <span class="teletype">)clear</span> system commands
+given before step <span class="teletype">n</span> will not be undone.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)undo&nbsp;)redo<br />
+</div>
+
+
+<p>This command reads the file <span class="teletype">redo.input</span>.
+created by the last <span class="teletype">)undo</span> command.
+This file consists of all user input lines, excluding those
+backtracked over due to a previous <span class="teletype">)undo</span>.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)history</span> <span class="index">ugSysCmdhistory</span><a name="chapter-16-180"/>.
+The command <span class="teletype">)history )write</span> will eliminate the ``undone'' command
+lines of your program.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.26.xhtml" style="margin-right: 10px;">Previous Section 16.26 )trace</a><a href="section-16.28.xhtml" style="margin-right: 10px;">Next Section 16.28 )what</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.28.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.28.xhtml
new file mode 100644
index 0000000..280e3e4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.28.xhtml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.28</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.27.xhtml" style="margin-right: 10px;">Previous Section 16.27 )undo</a><a href="section-17.1.xhtml" style="margin-right: 10px;">Next Section 17.1  Axiom Categories</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.28">
+<h2 class="sectiontitle">16.28  )what</h2>
+
+
+<p><span class="index">ugSysCmdwhat</span><a name="chapter-16-181"/>
+</p>
+
+
+<p><span class="index">what</span><a name="chapter-16-182"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)what categories</span> <span class="italic">pattern1</span> [<span class="italic">pattern2 ...</span>]
+</div>
+<div class="item"><span class="teletype">)what commands  </span> <span class="italic">pattern1</span> [<span class="italic">pattern2 ...</span>]
+</div>
+<div class="item"><span class="teletype">)what domains   </span> <span class="italic">pattern1</span> [<span class="italic">pattern2 ...</span>]
+</div>
+<div class="item"><span class="teletype">)what operations</span> <span class="italic">pattern1</span> [<span class="italic">pattern2 ...</span>]
+</div>
+<div class="item"><span class="teletype">)what packages  </span> <span class="italic">pattern1</span> [<span class="italic">pattern2 ...</span>]
+</div>
+<div class="item"><span class="teletype">)what synonym   </span> <span class="italic">pattern1</span> [<span class="italic">pattern2 ...</span>]
+</div>
+<div class="item"><span class="teletype">)what things    </span> <span class="italic">pattern1</span> [<span class="italic">pattern2 ...</span>]
+</div>
+<div class="item"><span class="teletype">)apropos        </span> <span class="italic">pattern1</span> [<span class="italic">pattern2 ...</span>]
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to display lists of things in the system.  The
+patterns are all strings and, if present, restrict the contents of the
+lists.  Only those items that contain one or more of the strings as
+substrings are displayed.  For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)what&nbsp;synonym<br />
+</div>
+
+
+<p>displays all command synonyms,
+</p>
+
+
+
+<div class="verbatim"><br />
+)what&nbsp;synonym&nbsp;ver<br />
+</div>
+
+
+<p>displays all command synonyms containing the substring ``<span class="teletype">ver</span>'',
+</p>
+
+
+
+<div class="verbatim"><br />
+)what&nbsp;synonym&nbsp;ver&nbsp;pr<br />
+</div>
+
+
+<p>displays all command synonyms
+containing the substring  ``<span class="teletype">ver</span>'' or  the substring
+``<span class="teletype">pr</span>''.
+Output similar to the following will be displayed
+</p>
+
+
+
+<div class="verbatim"><br />
+----------------&nbsp;System&nbsp;Command&nbsp;Synonyms&nbsp;-----------------<br />
+<br />
+user-defined&nbsp;synonyms&nbsp;satisfying&nbsp;patterns:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ver&nbsp;pr<br />
+<br />
+&nbsp;&nbsp;)apr&nbsp;...........................&nbsp;)what&nbsp;things<br />
+&nbsp;&nbsp;)apropos&nbsp;.......................&nbsp;)what&nbsp;things<br />
+&nbsp;&nbsp;)prompt&nbsp;........................&nbsp;)set&nbsp;message&nbsp;prompt<br />
+&nbsp;&nbsp;)version&nbsp;.......................&nbsp;)lisp&nbsp;*yearweek*<br />
+</div>
+
+
+
+<p>Several other things can be listed with the <span class="teletype">)what</span> command:
+</p>
+
+
+<dl>
+<dt><span class="teletype">categories</span></dt>
+<dd> displays a list of category constructors.
+<span class="index">what categories</span><a name="chapter-16-183"/>
+</dd>
+<dt><span class="teletype">commands</span></dt>
+<dd>  displays a list of  system commands available  at your
+user-level.
+<span class="index">what commands</span><a name="chapter-16-184"/>
+Your user-level
+<span class="index">user-level</span><a name="chapter-16-185"/>
+is set via the  <span class="teletype">)set userlevel</span> command.
+<span class="index">set userlevel</span><a name="chapter-16-186"/>
+To get a description of a particular command, such as ``<span class="teletype">)what</span>'', issue
+<span class="teletype">)help what</span>.
+</dd>
+<dt><span class="teletype">domains</span></dt>
+<dd>   displays a list of domain constructors.
+<span class="index">what domains</span><a name="chapter-16-187"/>
+</dd>
+<dt><span class="teletype">operations</span></dt>
+<dd> displays a list of operations in  the system library.
+<span class="index">what operations</span><a name="chapter-16-188"/>
+It  is recommended that you  qualify this command with one or
+more patterns, as there are thousands of operations available.  For
+example, say you are looking for functions that involve computation of
+eigenvalues.  To find their names, try <span class="teletype">)what operations eig</span>.
+A rather large list of operations  is loaded into the workspace when
+this command  is first issued.  This  list will be deleted  when you
+clear the workspace  via <span class="teletype">)clear all</span> or <span class="teletype">)clear completely</span>.
+It will be re-created if it is needed again.
+</dd>
+<dt><span class="teletype">packages</span></dt>
+<dd>  displays a list of package constructors.
+<span class="index">what packages</span><a name="chapter-16-189"/>
+</dd>
+<dt><span class="teletype">synonym</span></dt>
+<dd>  lists system command synonyms.
+<span class="index">what synonym</span><a name="chapter-16-190"/>
+</dd>
+<dt><span class="teletype">things</span></dt>
+<dd>    displays all  of the  above types for  items containing
+<span class="index">what things</span><a name="chapter-16-191"/>
+the pattern strings as  substrings.
+The command synonym  <span class="teletype">)apropos</span> is equivalent to
+<span class="index">apropos</span><a name="chapter-16-192"/>
+<span class="teletype">)what things</span>.
+</dd>
+</dl>
+
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)display</span> <span class="index">ugSysCmddisplay</span><a name="chapter-16-193"/>,
+<span class="teletype">)set</span> <span class="index">ugSysCmdset</span><a name="chapter-16-194"/>, and
+<span class="teletype">)show</span> <span class="index">ugSysCmdshow</span><a name="chapter-16-195"/>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.27.xhtml" style="margin-right: 10px;">Previous Section 16.27 )undo</a><a href="section-17.1.xhtml" style="margin-right: 10px;">Next Section 17.1  Axiom Categories</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.3.xhtml
new file mode 100644
index 0000000..8a003c5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.3.xhtml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.2.xhtml" style="margin-right: 10px;">Previous Section 16.2 )abbreviation</a><a href="section-16.4.xhtml" style="margin-right: 10px;">Next Section 16.4 )cd</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.3">
+<h2 class="sectiontitle">16.3  )boot</h2>
+
+
+<p><span class="index">ugSysCmdboot</span><a name="chapter-16-12"/>
+</p>
+
+
+<p><span class="index">boot</span><a name="chapter-16-13"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> development
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">)boot</span> <span class="italic">bootExpression</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used by Axiom system developers to execute
+expressions written in the BOOT language.
+For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)boot&nbsp;times3(x)&nbsp;==&nbsp;3*x<br />
+</div>
+
+
+<p>creates and compiles the Common Lisp function ``times3''
+obtained by translating the BOOT code.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)fin</span> <span class="index">ugSysCmdfin</span><a name="chapter-16-14"/>,
+<span class="teletype">)lisp</span> <span class="index">ugSysCmdlisp</span><a name="chapter-16-15"/>,
+<span class="teletype">)set</span> <span class="index">ugSysCmdset</span><a name="chapter-16-16"/>, and
+<span class="teletype">)system</span> <span class="index">ugSysCmdsystem</span><a name="chapter-16-17"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.2.xhtml" style="margin-right: 10px;">Previous Section 16.2 )abbreviation</a><a href="section-16.4.xhtml" style="margin-right: 10px;">Next Section 16.4 )cd</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.4.xhtml
new file mode 100644
index 0000000..1a4bd35
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.4.xhtml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.3.xhtml" style="margin-right: 10px;">Previous Section 16.3 )boot</a><a href="section-16.5.xhtml" style="margin-right: 10px;">Next Section 16.5 )close</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.4">
+<h2 class="sectiontitle">16.4  )cd</h2>
+
+
+<p><span class="index">ugSysCmdcd</span><a name="chapter-16-18"/>
+</p>
+
+
+<p><span class="index">cd</span><a name="chapter-16-19"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">)cd</span> <span class="italic">directory</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command sets the Axiom working current directory.
+The current directory is used for looking for
+input files (for <span class="teletype">)read</span>),
+Axiom library source files (for <span class="teletype">)compile</span>),
+saved history environment files (for <span class="teletype">)history )restore</span>),
+compiled Axiom library files (for <span class="teletype">)library</span>), and
+files to edit (for <span class="teletype">)edit</span>).
+It is also used for writing
+spool files (via <span class="teletype">)spool</span>),
+writing history input files (via <span class="teletype">)history )write</span>) and
+history environment files (via <span class="teletype">)history )save</span>),and
+compiled Axiom library files (via <span class="teletype">)compile</span>).
+<span class="index">read</span><a name="chapter-16-20"/>
+<span class="index">compile</span><a name="chapter-16-21"/>
+<span class="index">history )restore</span><a name="chapter-16-22"/>
+<span class="index">edit</span><a name="chapter-16-23"/>
+<span class="index">spool</span><a name="chapter-16-24"/>
+<span class="index">history )write</span><a name="chapter-16-25"/>
+<span class="index">history )save</span><a name="chapter-16-26"/>
+</p>
+
+
+<p>If issued with no argument, this command sets the Axiom
+current directory to your home directory.
+If an argument is used, it must be a valid directory name.
+Except for the ``<span class="teletype">)</span>'' at the beginning of the command,
+this has the same syntax as the operating system <span class="teletype">cd</span> command.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)compile</span> <span class="index">ugSysCmdcompile</span><a name="chapter-16-27"/>,
+<span class="teletype">)edit</span> <span class="index">ugSysCmdedit</span><a name="chapter-16-28"/>,
+<span class="teletype">)history</span> <span class="index">ugSysCmdhistory</span><a name="chapter-16-29"/>,
+<span class="teletype">)library</span> <span class="index">ugSysCmdlibrary</span><a name="chapter-16-30"/>,
+<span class="teletype">)read</span> <span class="index">ugSysCmdread</span><a name="chapter-16-31"/>, and
+<span class="teletype">)spool</span> <span class="index">ugSysCmdspool</span><a name="chapter-16-32"/>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.3.xhtml" style="margin-right: 10px;">Previous Section 16.3 )boot</a><a href="section-16.5.xhtml" style="margin-right: 10px;">Next Section 16.5 )close</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.5.xhtml
new file mode 100644
index 0000000..2d3ee5a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.5.xhtml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.4.xhtml" style="margin-right: 10px;">Previous Section 16.4 )cd</a><a href="section-16.6.xhtml" style="margin-right: 10px;">Next Section 16.6 )clear</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.5">
+<h2 class="sectiontitle">16.5  )close</h2>
+
+
+<p><span class="index">ugSysCmdclose</span><a name="chapter-16-33"/>
+</p>
+
+
+<p><span class="index">close</span><a name="chapter-16-34"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)close</span>
+</div>
+<div class="item"><span class="teletype">)close )quietly</span>
+</div>
+</div>
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to close down interpreter client processes.
+Such processes are started by HyperDoc to run Axiom examples
+when you click on their text. When you have finished examining or modifying the
+example and you do not want the extra window around anymore, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)close<br />
+</div>
+
+
+<p>to the Axiom prompt in the window.
+</p>
+
+
+<p>If you try to close down the last remaining interpreter client
+process, Axiom will offer to close down the entire Axiom
+session and return you to the operating system by displaying something
+like
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;the&nbsp;last&nbsp;AXIOM&nbsp;session.&nbsp;Do&nbsp;you&nbsp;want&nbsp;to&nbsp;kill&nbsp;AXIOM?<br />
+</div>
+
+
+<p>Type ``<span class="teletype">y</span>'' (followed by the Return key) if this is what you had in mind.
+Type ``<span class="teletype">n</span>'' (followed by the Return key) to cancel the command.
+</p>
+
+
+<p>You can use the <span class="teletype">)quietly</span> option to force Axiom to
+close down the interpreter client process without closing down
+the entire Axiom session.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)quit</span> <span class="index">ugSysCmdquit</span><a name="chapter-16-35"/> and
+<span class="teletype">)pquit</span> <span class="index">ugSysCmdpquit</span><a name="chapter-16-36"/>.
+</p>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.4.xhtml" style="margin-right: 10px;">Previous Section 16.4 )cd</a><a href="section-16.6.xhtml" style="margin-right: 10px;">Next Section 16.6 )clear</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.6.xhtml
new file mode 100644
index 0000000..45ab095
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.6.xhtml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.5.xhtml" style="margin-right: 10px;">Previous Section 16.5 )close</a><a href="section-16.7.xhtml" style="margin-right: 10px;">Next Section 16.7 )compile</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.6">
+<h2 class="sectiontitle">16.6  )clear</h2>
+
+
+<p><span class="index">ugSysCmdclear</span><a name="chapter-16-37"/>
+</p>
+
+
+<p><span class="index">clear</span><a name="chapter-16-38"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)clear all</span>
+</div>
+<div class="item"><span class="teletype">)clear completely</span>
+</div>
+<div class="item"><span class="teletype">)clear properties all</span>
+</div>
+<div class="item"><span class="teletype">)clear properties</span>  <span class="italic">obj1 [obj2 ...]</span>
+</div>
+<div class="item"><span class="teletype">)clear value      all</span>
+</div>
+<div class="item"><span class="teletype">)clear value</span>     <span class="italic">obj1 [obj2 ...]</span>
+</div>
+<div class="item"><span class="teletype">)clear mode       all</span>
+</div>
+<div class="item"><span class="teletype">)clear mode</span>      <span class="italic">obj1 [obj2 ...]</span>
+</div>
+</div>
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is used to remove function and variable declarations, definitions
+and values  from the workspace.
+To  empty the entire workspace  and reset the
+step counter to 1, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)clear&nbsp;all<br />
+</div>
+
+
+<p>To remove everything in the workspace but not reset the step counter, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)clear&nbsp;properties&nbsp;all<br />
+</div>
+
+
+<p>To remove everything about the object <span class="teletype">x</span>, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)clear&nbsp;properties&nbsp;x<br />
+</div>
+
+
+<p>To remove everything about the objects <span class="teletype">x, y</span> and <span class="teletype">f</span>, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)clear&nbsp;properties&nbsp;x&nbsp;y&nbsp;f<br />
+</div>
+
+
+
+<p>The word <span class="teletype">properties</span> may be abbreviated to the single letter
+``<span class="teletype">p</span>''.
+</p>
+
+
+
+<div class="verbatim"><br />
+)clear&nbsp;p&nbsp;all<br />
+)clear&nbsp;p&nbsp;x<br />
+)clear&nbsp;p&nbsp;x&nbsp;y&nbsp;f<br />
+</div>
+
+
+<p>All definitions of functions and values of variables may be removed by either
+</p>
+
+
+
+<div class="verbatim"><br />
+)clear&nbsp;value&nbsp;all<br />
+)clear&nbsp;v&nbsp;all<br />
+</div>
+
+
+<p>This retains whatever declarations the objects had.  To remove definitions and
+values for the specific objects <span class="teletype">x, y</span> and <span class="teletype">f</span>, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)clear&nbsp;value&nbsp;x&nbsp;y&nbsp;f<br />
+)clear&nbsp;v&nbsp;x&nbsp;y&nbsp;f<br />
+</div>
+
+
+<p>To remove  the declarations  of everything while  leaving the  definitions and
+values, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)clear&nbsp;mode&nbsp;&nbsp;all<br />
+)clear&nbsp;m&nbsp;all<br />
+</div>
+
+
+<p>To remove declarations for the specific objects <span class="teletype">x, y</span> and <span class="teletype">f</span>, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)clear&nbsp;mode&nbsp;x&nbsp;y&nbsp;f<br />
+)clear&nbsp;m&nbsp;x&nbsp;y&nbsp;f<br />
+</div>
+
+
+<p>The <span class="teletype">)display names</span> and <span class="teletype">)display properties</span> commands  may be used
+to see what is currently in the workspace.
+</p>
+
+
+<p>The command
+</p>
+
+
+
+<div class="verbatim"><br />
+)clear&nbsp;completely<br />
+</div>
+
+
+<p>does everything that <span class="teletype">)clear all</span> does, and also clears the internal
+system function and constructor caches.
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)display</span> <span class="index">ugSysCmddisplay</span><a name="chapter-16-39"/>,
+<span class="teletype">)history</span> <span class="index">ugSysCmdhistory</span><a name="chapter-16-40"/>, and
+<span class="teletype">)undo</span> <span class="index">ugSysCmdundo</span><a name="chapter-16-41"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.5.xhtml" style="margin-right: 10px;">Previous Section 16.5 )close</a><a href="section-16.7.xhtml" style="margin-right: 10px;">Next Section 16.7 )compile</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.7.xhtml
new file mode 100644
index 0000000..0c5bf88
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.7.xhtml
@@ -0,0 +1,538 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.6.xhtml" style="margin-right: 10px;">Previous Section 16.6 )clear</a><a href="section-16.8.xhtml" style="margin-right: 10px;">Next Section 16.8 )display</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.7">
+<h2 class="sectiontitle">16.7  )compile</h2>
+
+
+<p><span class="index">ugSysCmdcompile</span><a name="chapter-16-42"/>
+</p>
+
+
+<p><span class="index">compile</span><a name="chapter-16-43"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> compiler
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">)compile</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span></span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span>.as</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">directory/fileName</span>.as</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span>.ao</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">directory/fileName</span>.ao</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span>.al</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">directory/fileName</span>.al</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span>.lsp</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">directory/fileName</span>.lsp</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span>.spad</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">directory/fileName</span>.spad</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )new</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )old</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )translate</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )quiet</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )noquiet</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )moreargs</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )onlyargs</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )break</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )nobreak</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )library</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )nolibrary</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )vartrace</span>
+</div>
+<div class="item"> <span class="teletype">)compile <span class="italic">fileName</span> )constructor</span> <span class="italic">nameOrAbbrev</span>
+</div>
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>You use this command to invoke the new Axiom library compiler or
+the old Axiom system compiler.
+The <span class="teletype">)compile</span> system command is actually a combination of
+Axiom processing and a call to the Aldor compiler.
+It is performing double-duty, acting as a front-end to
+both the Aldor compiler and the old Axiom system
+compiler.
+(The old Axiom system compiler was written in Lisp and was
+an integral part of the Axiom environment.
+The Aldor compiler is written in C and executed by the operating system
+when called from within Axiom.)
+</p>
+
+
+<p>The command compiles files with file extensions <span class="italic">.as, .ao</span>
+and <span class="italic">.al</span> with the
+Aldor compiler and files with file extension <span class="italic">.spad</span> with the
+old Axiom system compiler.
+It also can compile files with file extension <span class="italic">.lsp</span>. These
+are assumed to be Lisp files genererated by the Aldor
+compiler.
+If you omit the file extension, the command looks to see if you
+have specified the <span class="teletype">)new</span> or <span class="teletype">)old</span> option.
+If you have given one of these options, the corresponding compiler
+is used.
+Otherwise, the command first looks in the standard system
+directories for files with extension <span class="italic">.as, .ao</span> and <span class="italic">.al</span> and then files with extension <span class="italic">.spad</span>.
+The first file found has the appropriate compiler invoked on it.
+If the command cannot find a matching file, an error message is
+displayed and the command terminates.
+</p>
+
+
+<p>The <span class="teletype">)translate</span> option is used to invoke a special version
+of the old system compiler that will translate a <span class="italic">.spad</span> file
+to a <span class="italic">.as</span> file. That is, the <span class="italic">.spad</span> file will be parsed and
+analyzed and a file using the new syntax will be created. By default,
+the <span class="italic">.as</span> file is created in the same directory as the
+<span class="italic">.spad</span> file. If that directory is not writable, the current
+directory is used. If the current directory is not writable, an
+error message is given and the command terminates.
+Note that <span class="teletype">)translate</span> implies the <span class="teletype">)old</span> option so the
+file extension can safely be omitted. If <span class="teletype">)translate</span> is
+given, all other options are ignored.
+Please be aware that the translation is not necessarily one
+hundred percent complete or correct.
+You should attempt to compile the output with the Aldor compiler
+and make any necessary corrections.
+</p>
+
+
+<p>We now describe the options for the new Aldor compiler.
+</p>
+
+
+<p>The first thing <span class="teletype">)compile</span> does is look for a source code
+filename among its arguments.
+Thus
+</p>
+
+
+
+<div class="verbatim"><br />
+)compile&nbsp;mycode.as<br />
+)compile&nbsp;/u/jones/as/mycode.as<br />
+)compile&nbsp;mycode<br />
+</div>
+
+
+<p>all invoke <span class="teletype">)compiler</span> on the file <span class="teletype">/u/jones/as/mycode.as</span> if the current Axiom working
+directory is <span class="teletype">/u/jones/as.</span> (Recall that you can set the
+working directory via the <span class="teletype">)cd</span> command. If you don't set it
+explicitly, it is the directory from which you started
+Axiom.)
+</p>
+
+
+<p>This is frequently all you need to compile your file.
+This simple command:
+</p>
+
+
+
+<ol>
+<li>
+ Invokes the Aldor compiler and produces Lisp output.
+</li>
+<li> Calls the Lisp compiler if the Aldor compilation was
+successful.
+</li>
+<li> Uses the <span class="teletype">)library</span> command to tell Axiom about
+the contents of your compiled file and arrange to have those
+contents loaded on demand.
+</li>
+</ol>
+
+
+
+<p>Should you not want the <span class="teletype">)library</span> command automatically
+invoked, call <span class="teletype">)compile</span> with the <span class="teletype">)nolibrary</span> option.
+For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)compile&nbsp;mycode.as&nbsp;)nolibrary<br />
+</div>
+
+
+
+<p>The general description of Aldor command line arguments is in
+the Aldor documentation.
+The default options used by the <span class="teletype">)compile</span> command can be
+viewed and set using the <span class="teletype">)set compiler args</span> Axiom
+system command.
+The current defaults are
+</p>
+
+
+
+<div class="verbatim"><br />
+-O&nbsp;-Fasy&nbsp;-Fao&nbsp;-Flsp&nbsp;-laxiom&nbsp;-Mno-AXL_W_WillObsolete&nbsp;-DAxiom<br />
+</div>
+
+
+<p>These options mean:
+</p>
+
+
+
+<ul>
+<li>
+ <span class="teletype">-O</span>: perform all optimizations,
+</li>
+<li> <span class="teletype">-Fasy</span>: generate a <span class="teletype">.asy</span> file,
+</li>
+<li> <span class="teletype">-Fao</span>: generate a <span class="teletype">.ao</span> file,
+</li>
+<li> <span class="teletype">-Flsp</span>: generate a <span class="teletype">.lsp</span> (Lisp)
+file,
+<span class="index">Lisp:code generation</span><a name="chapter-16-44"/>
+</li>
+<li> <span class="teletype">-laxiom</span>: use the <span class="teletype">axiom</span> library <span class="teletype">libaxiom.al</span>,
+</li>
+<li> <span class="teletype">-Mno-AXL_W_WillObsolete</span>: do not display messages
+about older generated files becoming obsolete, and
+</li>
+<li> <span class="teletype">-DAxiom</span>: define the global assertion <span class="teletype">Axiom</span> so that the
+Aldor libraries for generating stand-alone code
+are not accidentally used with Axiom.
+</li>
+</ul>
+
+
+
+<p>To supplement these default arguments, use the <span class="teletype">)moreargs</span> option on
+<span class="teletype">)compile.</span>
+For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)compile&nbsp;mycode.as&nbsp;)moreargs&nbsp;"-v"<br />
+</div>
+
+
+<p>uses the default arguments and appends the <span class="teletype">-v</span> (verbose)
+argument flag.
+The additional argument specification <span style="font-weight: bold;"> must be enclosed in
+double quotes.</span>
+</p>
+
+
+<p>To completely replace these default arguments for a particular
+use of <span class="teletype">)compile</span>, use the <span class="teletype">)onlyargs</span> option.
+For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)compile&nbsp;mycode.as&nbsp;)onlyargs&nbsp;"-v&nbsp;-O"<br />
+</div>
+
+
+<p>only uses the <span class="teletype">-v</span> (verbose) and <span class="teletype">-O</span> (optimize)
+arguments.
+The argument specification <span style="font-weight: bold;"> must be enclosed in double quotes.</span>
+In this example, Lisp code is not produced and so the compilation
+output will not be available to Axiom.
+</p>
+
+
+<p>To completely replace the default arguments for all calls to <span class="teletype">)compile</span> within your Axiom session, use <span class="teletype">)set compiler args.</span>
+For example, to use the above arguments for all compilations, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;compiler&nbsp;args&nbsp;"-v&nbsp;-O"<br />
+</div>
+
+
+<p>Make sure you include the necessary <span class="teletype">-l</span> and <span class="teletype">-Y</span>
+arguments along with those needed for Lisp file creation.
+As above, <span style="font-weight: bold;"> the argument specification must be enclosed in double
+quotes.</span>
+</p>
+
+
+<p>By default, the <span class="teletype">)library</span> system command <span class="italic">exposes</span> all
+domains and categories it processes.
+This means that the Axiom intepreter will consider those
+domains and categories when it is trying to resolve a reference
+to a function.
+Sometimes domains and categories should not be exposed.
+For example, a domain may just be used privately by another
+domain and may not be meant for top-level use.
+The <span class="teletype">)library</span> command should still be used, though, so that
+the code will be loaded on demand.
+In this case, you should use the <span class="teletype">)nolibrary</span> option on <span class="teletype">)compile</span> and the <span class="teletype">)noexpose</span> option in the <span class="teletype">)library</span>
+command. For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)compile&nbsp;mycode.as&nbsp;)nolibrary<br />
+)library&nbsp;mycode&nbsp;)noexpose<br />
+</div>
+
+
+
+<p>Once you have established your own collection of compiled code,
+you may find it handy to use the <span class="teletype">)dir</span> option on the
+<span class="teletype">)library</span> command.
+This causes <span class="teletype">)library</span> to process all compiled code in the
+specified directory. For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)library&nbsp;)dir&nbsp;/u/jones/as/quantum<br />
+</div>
+
+
+<p>You must give an explicit directory after <span class="teletype">)dir</span>, even if you
+want all compiled code in the current working directory
+processed, e.g.
+</p>
+
+
+
+<div class="verbatim"><br />
+)library&nbsp;)dir&nbsp;.<br />
+</div>
+
+
+
+<p>The <span class="teletype">)compile</span> command works with several file extensions. We saw
+above what happens when it is invoked on a file with extension <span class="teletype">.as.</span> A <span class="teletype">.ao</span> file is a portable binary compiled version of a
+<span class="teletype">.as</span> file, and <span class="teletype">)compile</span> simply passes the <span class="teletype">.ao</span> file
+onto Aldor. The generated Lisp file is compiled and <span class="teletype">)library</span>
+is automatically called, just as if you had specified a <span class="teletype">.as</span> file.
+</p>
+
+
+<p>A <span class="teletype">.al</span> file is an archive file containing <span class="teletype">.ao</span> files. The
+archive is created (on Unix systems) with the <span class="teletype">ar</span> program. When
+<span class="teletype">)compile</span> is given a <span class="teletype">.al</span> file, it creates a directory whose
+name is based on that of the archive. For example, if you issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)compile&nbsp;mylib.al<br />
+</div>
+
+
+<p>the directory <span class="teletype">mylib.axldir</span> is created. All
+members of the archive are unarchived into the
+directory and <span class="teletype">)compile</span> is called on each <span class="teletype">.ao</span> file found. It
+is your responsibility to remove the directory and its contents, if you
+choose to do so.
+</p>
+
+
+<p>A <span class="teletype">.lsp</span> file is a Lisp source file, presumably, in our context,
+generated by Aldor when called with the <span class="teletype">-Flsp</span> option. When
+<span class="teletype">)compile</span> is used with a <span class="teletype">.lsp</span> file, the Lisp file is
+compiled and <span class="teletype">)library</span> is called. You must also have present a
+<span class="teletype">.asy</span> generated from the same source file.
+</p>
+
+
+<p>The following are descriptions of options for the old system compiler.
+</p>
+
+
+<p>You can compile category, domain, and package constructors
+contained in files with file extension <span class="italic">.spad</span>.
+You can compile individual constructors or every constructor
+in a file.
+</p>
+
+
+<p>The full filename is remembered between invocations of this command and
+<span class="teletype">)edit</span> commands.
+The sequence of commands
+</p>
+
+
+
+<div class="verbatim"><br />
+)compile&nbsp;matrix.spad<br />
+)edit<br />
+)compile<br />
+</div>
+
+
+<p>will call the compiler, edit, and then call the compiler again
+on the file <span style="font-weight: bold;"> matrix.spad.</span>
+If you do not specify a <span class="italic">directory,</span> the working current
+directory (see 
+<a href="ugSysCmdcd" class="ref" >ugSysCmdcd</a> )
+is searched for the file.
+If the file is not found, the standard system directories are searched.
+</p>
+
+
+<p>If you do not give any options, all constructors within a file are
+compiled.
+Each constructor should have an <span class="teletype">)abbreviation</span> command in
+the file in which it is defined.
+We suggest that you place the <span class="teletype">)abbreviation</span> commands at the
+top of the file in the order in which the constructors are
+defined.
+The list of commands serves as a table of contents for the file.
+<span class="index">abbreviation</span><a name="chapter-16-45"/>
+</p>
+
+
+<p>The <span class="teletype">)library</span> option causes directories containing the
+compiled code for each constructor
+to be created in the working current directory.
+The name of such a directory consists of the constructor
+abbreviation and the <span style="font-weight: bold;"> .NRLIB</span> file extension.
+For example, the directory containing the compiled code for
+the <span class="teletype">MATRIX</span> constructor is called <span style="font-weight: bold;"> MATRIX.NRLIB.</span>
+The <span class="teletype">)nolibrary</span> option says that such files should not
+be created.
+The default is <span class="teletype">)library.</span>
+Note that the semantics of <span class="teletype">)library</span> and <span class="teletype">)nolibrary</span>
+for the new Aldor compiler and for the old system compiler are
+completely different.
+</p>
+
+
+<p>The <span class="teletype">)vartrace</span> option causes the compiler to generate
+extra code for the constructor to support conditional tracing of
+variable assignments. (see 
+<a href="ugSysCmdtrace" class="ref" >ugSysCmdtrace</a> ). Without
+this option, this code is suppressed and one cannot use
+the <span class="teletype">)vars</span> option for the trace command.
+</p>
+
+
+<p>The <span class="teletype">)constructor</span> option is used to
+specify a particular constructor to compile.
+All other constructors in the file are ignored.
+The constructor name or abbreviation follows <span class="teletype">)constructor.</span>
+Thus either
+</p>
+
+
+
+<div class="verbatim"><br />
+)compile&nbsp;matrix.spad&nbsp;)constructor&nbsp;RectangularMatrix<br />
+</div>
+
+
+<p>or
+</p>
+
+
+
+<div class="verbatim"><br />
+)compile&nbsp;matrix.spad&nbsp;)constructor&nbsp;RMATRIX<br />
+</div>
+
+
+<p>compiles  the <span class="teletype">RectangularMatrix</span> constructor
+defined in <span style="font-weight: bold;"> matrix.spad.</span>
+</p>
+
+
+<p>The <span class="teletype">)break</span> and <span class="teletype">)nobreak</span> options determine what
+the old system compiler does when it encounters an error.
+<span class="teletype">)break</span> is the default and it indicates that processing
+should stop at the first error.
+The value of the <span class="teletype">)set break</span> variable then controls what happens.
+</p>
+
+
+<p><!--
+ 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 <span class="teletype">)load</span> command with the
+ <span class="teletype">)update</span> option should be used to bring in the new code
+ and update internal system tables with information about the
+ constructor.
+ END OBSOLTE
+-->
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)abbreviation</span> <span class="index">ugSysCmdabbreviation</span><a name="chapter-16-46"/>,
+<span class="teletype">)edit</span> <span class="index">ugSysCmdedit</span><a name="chapter-16-47"/>, and
+<span class="teletype">)library</span> <span class="index">ugSysCmdlibrary</span><a name="chapter-16-48"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.6.xhtml" style="margin-right: 10px;">Previous Section 16.6 )clear</a><a href="section-16.8.xhtml" style="margin-right: 10px;">Next Section 16.8 )display</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.8.xhtml
new file mode 100644
index 0000000..6264bc7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.8.xhtml
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.7.xhtml" style="margin-right: 10px;">Previous Section 16.7 )compile</a><a href="section-16.9.xhtml" style="margin-right: 10px;">Next Section 16.9 )edit</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.8">
+<h2 class="sectiontitle">16.8  )display</h2>
+
+
+<p><span class="index">ugSysCmddisplay</span><a name="chapter-16-49"/>
+</p>
+
+
+<p><span class="index">display</span><a name="chapter-16-50"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">)display all</span>
+</div>
+<div class="item"> <span class="teletype">)display properties</span>
+</div>
+<div class="item"> <span class="teletype">)display properties all</span>
+</div>
+<div class="item"> <span class="teletype">)display properties</span> <span class="italic">[obj1 [obj2 ...]]</span>
+</div>
+<div class="item"> <span class="teletype">)display value all</span>
+</div>
+<div class="item"> <span class="teletype">)display value</span> <span class="italic">[obj1 [obj2 ...]]</span>
+</div>
+<div class="item"> <span class="teletype">)display mode all</span>
+</div>
+<div class="item"> <span class="teletype">)display mode</span> <span class="italic">[obj1 [obj2 ...]]</span>
+</div>
+<div class="item"> <span class="teletype">)display names</span>
+</div>
+<div class="item"> <span class="teletype">)display operations</span> <span class="italic">opName</span>
+</div>
+</div>
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is  used to display the contents of  the workspace and
+signatures of functions  with a  given  name.<span class="footnote">A
+<span class="italic">signature</span> gives the argument and return types of a
+function.</span>
+</p>
+
+
+<p>The command
+</p>
+
+
+
+<div class="verbatim"><br />
+)display&nbsp;names<br />
+</div>
+
+
+<p>lists the names of all user-defined  objects in the workspace.  This is useful
+if you do  not wish to see everything  about the objects and need  only be
+reminded of their names.
+</p>
+
+
+<p>The commands
+</p>
+
+
+
+<div class="verbatim"><br />
+)display&nbsp;all<br />
+)display&nbsp;properties<br />
+)display&nbsp;properties&nbsp;all<br />
+</div>
+
+
+<p>all do  the same thing: show  the values and  types and declared modes  of all
+variables in the  workspace.  If you have defined  functions, their signatures
+and definitions will also be displayed.
+</p>
+
+
+<p>To show all information about a  particular variable or user functions,
+for example, something named <span class="teletype">d</span>, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)display&nbsp;properties&nbsp;d<br />
+</div>
+
+
+<p>To just show the value (and the type) of <span class="teletype">d</span>, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)display&nbsp;value&nbsp;d<br />
+</div>
+
+
+<p>To just show the declared mode of <span class="teletype">d</span>, issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)display&nbsp;mode&nbsp;d<br />
+</div>
+
+
+
+<p>All modemaps for a given operation  may be
+displayed by using <span class="teletype">)display operations</span>.
+A <span class="italic">modemap</span> is a collection of information about  a particular
+reference
+to an  operation.  This  includes the  types of the  arguments and  the return
+value, the  location of the  implementation and  any conditions on  the types.
+The modemap may contain patterns.  The following displays the modemaps for the
+operation <span class="spadfunFrom" >complex</span><span class="index">complex</span><a name="chapter-16-51"/><span class="index">ComplexCategory</span><a name="chapter-16-52"/>:
+</p>
+
+
+
+<div class="verbatim"><br />
+)d&nbsp;op&nbsp;complex<br />
+</div>
+
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)clear</span> <span class="index">ugSysCmdclear</span><a name="chapter-16-53"/>,
+<span class="teletype">)history</span> <span class="index">ugSysCmdhistory</span><a name="chapter-16-54"/>,
+<span class="teletype">)set</span> <span class="index">ugSysCmdset</span><a name="chapter-16-55"/>,
+<span class="teletype">)show</span> <span class="index">ugSysCmdshow</span><a name="chapter-16-56"/>, and
+<span class="teletype">)what</span> <span class="index">ugSysCmdwhat</span><a name="chapter-16-57"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.7.xhtml" style="margin-right: 10px;">Previous Section 16.7 )compile</a><a href="section-16.9.xhtml" style="margin-right: 10px;">Next Section 16.9 )edit</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-16.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-16.9.xhtml
new file mode 100644
index 0000000..23983f7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-16.9.xhtml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section16.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.8.xhtml" style="margin-right: 10px;">Previous Section 16.8 )display</a><a href="section-16.10.xhtml" style="margin-right: 10px;">Next Section 16.10 )fin</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-16.9">
+<h2 class="sectiontitle">16.9  )edit</h2>
+
+
+<p><span class="index">ugSysCmdedit</span><a name="chapter-16-58"/>
+</p>
+
+
+<p><span class="index">edit</span><a name="chapter-16-59"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> User Level Required:</span> interpreter
+</p>
+
+
+<p><span style="font-weight: bold;"> Command Syntax:</span>
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+<span class="teletype">)edit</span> [<span class="italic">filename</span>]
+</div>
+</div>
+
+
+<p><span style="font-weight: bold;"> Command Description:</span>
+</p>
+
+
+<p>This command is  used to edit files.
+It works in conjunction  with the <span class="teletype">)read</span>
+and <span class="teletype">)compile</span> commands to remember the name
+of the file on which you are working.
+By specifying the name fully, you  can edit any file you wish.
+Thus
+</p>
+
+
+
+<div class="verbatim"><br />
+)edit&nbsp;/u/julius/matrix.input<br />
+</div>
+
+
+<p>will place  you in an editor looking at the  file
+<span class="teletype">/u/julius/matrix.input</span>.
+<span class="index">editing files</span><a name="chapter-16-60"/>
+By default, the editor is <span class="teletype">vi</span>,
+<span class="index">vi</span><a name="chapter-16-61"/>
+but if you have an EDITOR shell environment variable defined, that editor
+will be used.
+When Axiom is running under the X Window System,
+it will try to open a separate <span class="teletype">xterm</span> running your editor if
+it thinks one is necessary.
+<span class="index">Korn shell</span><a name="chapter-16-62"/>
+For example, under the Korn shell, if you issue
+</p>
+
+
+
+<div class="verbatim"><br />
+export&nbsp;EDITOR=emacs<br />
+</div>
+
+
+<p>then the emacs
+<span class="index">emacs</span><a name="chapter-16-63"/>
+editor will be used by <span class="teletype">)edit</span>.
+</p>
+
+
+<p>If you do not specify a file name, the last file you edited,
+read or compiled will be used.
+If there is no ``last file'' you will be placed in the editor editing
+an empty unnamed file.
+</p>
+
+
+<p>It is possible to use the <span class="teletype">)system</span> command to edit a file directly.
+For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+)system&nbsp;emacs&nbsp;/etc/rc.tcpip<br />
+</div>
+
+
+<p>calls <span class="teletype">emacs</span> to edit the file.
+<span class="index">emacs</span><a name="chapter-16-64"/>
+</p>
+
+
+<p><span style="font-weight: bold;"> Also See:</span>
+<span class="teletype">)system</span> <span class="index">ugSysCmdsystem</span><a name="chapter-16-65"/>,
+<span class="teletype">)compile</span> <span class="index">ugSysCmdcompile</span><a name="chapter-16-66"/>, and
+<span class="teletype">)read</span> <span class="index">ugSysCmdread</span><a name="chapter-16-67"/>.
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-16.8.xhtml" style="margin-right: 10px;">Previous Section 16.8 )display</a><a href="section-16.10.xhtml" style="margin-right: 10px;">Next Section 16.10 )fin</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-17.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-17.1.xhtml
new file mode 100644
index 0000000..8ad6850
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-17.1.xhtml
@@ -0,0 +1,1678 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section17.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.28.xhtml" style="margin-right: 10px;">Previous Section 16.28  )what</a><a href="section-18.1.xhtml" style="margin-right: 10px;">Next Section 18.1  Axiom Domains</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-17.1">
+<h2 class="sectiontitle">17.1  Axiom Categories</h2>
+<a name="ugAppCategories" class="label"/>
+
+<p>This is a listing of all categories in the Axiom library at the
+time this book was produced.
+Use the Browse facility (described in Chapter 
+<a href="section-14.0.xhtml#ugBrowse" class="ref" >ugBrowse</a> )
+to get more information about these constructors.
+</p>
+
+
+<p>This sample entry will help you read the following table:
+</p>
+
+
+<p>CategoryName{CategoryAbbreviation}:{ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Category</mi><mn>1</mn></msub></mrow></mstyle></math>
+... <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Category</mi><mi>N</mi></msub></mrow></mstyle></math>}<span class="italic">with </span>
+{ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mn>1</mn></msub></mrow></mstyle></math>... <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mi>M</mi></msub></mrow></mstyle></math>}
+</p>
+
+
+<p>where
+</p>
+
+
+<p><table class="begintabular">
+<tr><td>CategoryName </td><td> is the full category name, e.g., <span class="italic">CommutativeRing</span>. </td></tr>
+<tr><td>CategoryAbbreviation </td><td> is the category abbreviation, e.g., <span class="italic">COMRING</span>. </td></tr>
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Category</mi><mi>i</mi></msub></mrow></mstyle></math> </td><td> is a category to which the category belongs. </td></tr>
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mi>j</mi></msub></mrow></mstyle></math> </td><td> is an operation exported by the category. </td></tr>
+</table>
+</p>
+
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ABELGRP</td></tr>
+<tr><td>Full name: </td><td class="full">AbelianGroup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CancellationAbelianMonoid</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">-</span></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">AMR</td></tr>
+<tr><td>Full name: </td><td class="full">AbelianMonoidRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra BiModule CharacteristicNonZero CharacteristicZero CommutativeRing
+   IntegralDomain Ring</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">/</span> coefficient degree leadingCoefficient leadingMonomial map monomial monomial? reductum</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ABELMON</td></tr>
+<tr><td>Full name: </td><td class="full">AbelianMonoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianSemiGroup</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> Zero zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ABELSG</td></tr>
+<tr><td>Full name: </td><td class="full">AbelianSemiGroup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">+</span></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">AGG</td></tr>
+<tr><td>Full name: </td><td class="full">Aggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Object</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> copy empty empty? eq? less? more? size?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ACF</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraicallyClosedField</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Field RadicalCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">rootOf rootsOf zeroOf zerosOf</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ACFS</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraicallyClosedFunctionSpace</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AlgebraicallyClosedField FunctionSpace</td></tr>
+<tr><td>Operations: </td><td class="ops">rootOf rootsOf zeroOf zerosOf</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ALGEBRA</td></tr>
+<tr><td>Full name: </td><td class="full">Algebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Module Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">AHYP</td></tr>
+<tr><td>Full name: </td><td class="full">ArcHyperbolicFunctionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">acosh acoth acsch asech asinh atanh</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ATRIG</td></tr>
+<tr><td>Full name: </td><td class="full">ArcTrigonometricFunctionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">acos acot acsc asec asin atan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ALAGG</td></tr>
+<tr><td>Full name: </td><td class="full">AssociationListAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ListAggregate TableAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">assoc</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ATTREG</td></tr>
+<tr><td>Full name: </td><td class="full">AttributeRegistry</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BGAGG</td></tr>
+<tr><td>Full name: </td><td class="full">BagAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">HomogeneousAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">bag extract! insert! inspect</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BMODULE</td></tr>
+<tr><td>Full name: </td><td class="full">BiModule</td></tr>
+<tr><td>Belongs to: </td><td class="membs">LeftModule RightModule</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BRAGG</td></tr>
+<tr><td>Full name: </td><td class="full">BinaryRecursiveAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RecursiveAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">elt left right setelt setleft! setright!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BTCAT</td></tr>
+<tr><td>Full name: </td><td class="full">BinaryTreeCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BinaryRecursiveAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">node</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BTAGG</td></tr>
+<tr><td>Full name: </td><td class="full">BitAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OneDimensionalArrayAggregate OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">\^{}</span> and nand nor not or xor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CACHSET</td></tr>
+<tr><td>Full name: </td><td class="full">CachableSet</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops">position setPosition</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CABMON</td></tr>
+<tr><td>Full name: </td><td class="full">CancellationAbelianMonoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianMonoid</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">-</span></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CHARNZ</td></tr>
+<tr><td>Full name: </td><td class="full">CharacteristicNonZero</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">charthRoot</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CHARZ</td></tr>
+<tr><td>Full name: </td><td class="full">CharacteristicZero</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Ring</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">KOERCE</td></tr>
+<tr><td>Full name: </td><td class="full">CoercibleTo</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CLAGG</td></tr>
+<tr><td>Full name: </td><td class="full">Collection</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo HomogeneousAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">construct find reduce remove removeDuplicates select</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CFCAT</td></tr>
+<tr><td>Full name: </td><td class="full">CombinatorialFunctionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">binomial factorial permutation</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMBOPC</td></tr>
+<tr><td>Full name: </td><td class="full">CombinatorialOpsCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CombinatorialFunctionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">factorials product summation</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMRING</td></tr>
+<tr><td>Full name: </td><td class="full">CommutativeRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BiModule Ring</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMPCAT</td></tr>
+<tr><td>Full name: </td><td class="full">ComplexCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CharacteristicNonZero CharacteristicZero CommutativeRing ConvertibleTo
+   DifferentialExtension EuclideanDomain Field FullyEvalableOver FullyLinearlyExplicitRingOver FullyRetractableTo
+   IntegralDomain MonogenicAlgebra OrderedSet PolynomialFactorizationExplicit RadicalCategory
+   TranscendentalFunctionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">abs argument complex conjugate exquo imag imaginary norm polarCoordinates rational
+   rational? rationalIfCan real</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">KONVERT</td></tr>
+<tr><td>Full name: </td><td class="full">ConvertibleTo</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">convert</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DQAGG</td></tr>
+<tr><td>Full name: </td><td class="full">DequeueAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QueueAggregate StackAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">bottom! dequeue extractBottom! extractTop! height
+   insertBottom! insertTop! reverse! top!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DIOPS</td></tr>
+<tr><td>Full name: </td><td class="full">DictionaryOperations</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BagAggregate Collection</td></tr>
+<tr><td>Operations: </td><td class="ops">dictionary remove! select!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DIAGG</td></tr>
+<tr><td>Full name: </td><td class="full">Dictionary</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DictionaryOperations</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DIFEXT</td></tr>
+<tr><td>Full name: </td><td class="full">DifferentialExtension</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DifferentialRing PartialDifferentialRing Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">D differentiate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DPOLCAT</td></tr>
+<tr><td>Full name: </td><td class="full">DifferentialPolynomialCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DifferentialExtension Evalable InnerEvalable PolynomialCategory
+   RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">degree differentialVariables initial isobaric? leader makeVariable order separant weight weights</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DIFRING</td></tr>
+<tr><td>Full name: </td><td class="full">DifferentialRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">D differentiate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DVARCAT</td></tr>
+<tr><td>Full name: </td><td class="full">DifferentialVariableCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OrderedSet RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">D coerce differentiate makeVariable order
+   variable weight</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DIRPCAT</td></tr>
+<tr><td>Full name: </td><td class="full">DirectProductCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianSemiGroup Algebra BiModule CancellationAbelianMonoid CoercibleTo
+   CommutativeRing DifferentialExtension Finite FullyLinearlyExplicitRingOver FullyRetractableTo IndexedAggregate
+   OrderedAbelianMonoidSup OrderedRing VectorSpace</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> directProduct dot unitVector</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DIVRING</td></tr>
+<tr><td>Full name: </td><td class="full">DivisionRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra EntireRing</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> inv</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DLAGG</td></tr>
+<tr><td>Full name: </td><td class="full">DoublyLinkedAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RecursiveAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">concat! head last next previous setnext! setprevious! tail</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ELEMFUN</td></tr>
+<tr><td>Full name: </td><td class="full">ElementaryFunctionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> exp log</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ELTAGG</td></tr>
+<tr><td>Full name: </td><td class="full">EltableAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Eltable</td></tr>
+<tr><td>Operations: </td><td class="ops">elt qelt qsetelt! setelt</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ELTAB</td></tr>
+<tr><td>Full name: </td><td class="full">Eltable</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">elt</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ENTIRER</td></tr>
+<tr><td>Full name: </td><td class="full">EntireRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BiModule Ring</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EUCDOM</td></tr>
+<tr><td>Full name: </td><td class="full">EuclideanDomain</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PrincipalIdealDomain</td></tr>
+<tr><td>Operations: </td><td class="ops">divide euclideanSize extendedEuclidean multiEuclidean quo rem
+   sizeLess?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EVALAB</td></tr>
+<tr><td>Full name: </td><td class="full">Evalable</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">eval</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ES</td></tr>
+<tr><td>Full name: </td><td class="full">ExpressionSpace</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Evalable InnerEvalable OrderedSet RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">belong? box definingPolynomial
+   distribute elt eval freeOf? height is? kernel kernels mainKernel map minPoly operator operators paren subst tower</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ELAGG</td></tr>
+<tr><td>Full name: </td><td class="full">ExtensibleLinearAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">LinearAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">concat! delete! insert! merge! remove! removeDuplicates!
+   select!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">XF</td></tr>
+<tr><td>Full name: </td><td class="full">ExtensionField</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CharacteristicZero Field FieldOfPrimeCharacteristic RetractableTo VectorSpace</td></tr>
+<tr><td>Operations: </td><td class="ops">Frobenius
+   algebraic? degree extensionDegree inGroundField? transcendenceDegree transcendent?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FPC</td></tr>
+<tr><td>Full name: </td><td class="full">FieldOfPrimeCharacteristic</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CharacteristicNonZero Field</td></tr>
+<tr><td>Operations: </td><td class="ops">discreteLog order primeFrobenius</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FIELD</td></tr>
+<tr><td>Full name: </td><td class="full">Field</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DivisionRing EuclideanDomain UniqueFactorizationDomain</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">/</span></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FILECAT</td></tr>
+<tr><td>Full name: </td><td class="full">FileCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">close! iomode name open read! reopen! write!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FNCAT</td></tr>
+<tr><td>Full name: </td><td class="full">FileNameCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce directory exists? extension filename name new readable? writable?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FAMR</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteAbelianMonoidRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianMonoidRing FullyRetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">coefficients content exquo ground ground?
+   mapExponents minimumDegree numberOfMonomials primitivePart</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FAXF</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ExtensionField FiniteFieldCategory RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">basis coordinates
+   createNormalElement definingPolynomial degree extensionDegree generator minimalPolynomial norm normal? normalElement
+   represents trace</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFIELDC</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FieldOfPrimeCharacteristic Finite StepThrough</td></tr>
+<tr><td>Operations: </td><td class="ops">charthRoot conditionP
+   createPrimitiveElement discreteLog factorsOfCyclicGroupSize order primitive? primitiveElement representationType
+   tableForDiscreteLogarithm</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FLAGG</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteLinearAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">LinearAggregate OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops">copyInto! merge position reverse reverse! sort sort!
+   sorted?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FINRALG</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteRankAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra CharacteristicNonZero CharacteristicZero</td></tr>
+<tr><td>Operations: </td><td class="ops">characteristicPolynomial
+   coordinates discriminant minimalPolynomial norm rank regularRepresentation represents trace traceMatrix</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FINAALG</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteRankNonAssociativeAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">NonAssociativeAlgebra</td></tr>
+<tr><td>Operations: </td><td class="ops">JacobiIdentity? JordanAlgebra? alternative?
+   antiAssociative? antiCommutative? associative? associatorDependence commutative? conditionsForIdempotents coordinates
+   flexible? jordanAdmissible? leftAlternative? leftCharacteristicPolynomial leftDiscriminant leftMinimalPolynomial
+   leftNorm leftRecip leftRegularRepresentation leftTrace leftTraceMatrix leftUnit leftUnits lieAdmissible? lieAlgebra?
+   noncommutativeJordanAlgebra? powerAssociative? rank recip represents rightAlternative? rightCharacteristicPolynomial
+   rightDiscriminant rightMinimalPolynomial rightNorm rightRecip rightRegularRepresentation rightTrace rightTraceMatrix
+   rightUnit rightUnits someBasis structuralConstants unit</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FSAGG</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteSetAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Dictionary Finite SetAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">cardinality complement max min universe</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FINITE</td></tr>
+<tr><td>Full name: </td><td class="full">Finite</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">index lookup random size</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FPS</td></tr>
+<tr><td>Full name: </td><td class="full">FloatingPointSystem</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RealNumberSystem</td></tr>
+<tr><td>Operations: </td><td class="ops">base bits decreasePrecision digits exponent float
+   increasePrecision mantissa max order precision</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FRAMALG</td></tr>
+<tr><td>Full name: </td><td class="full">FramedAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteRankAlgebra</td></tr>
+<tr><td>Operations: </td><td class="ops">basis convert coordinates discriminant regularRepresentation
+   represents traceMatrix</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FRNAALG</td></tr>
+<tr><td>Full name: </td><td class="full">FramedNonAssociativeAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteRankNonAssociativeAlgebra</td></tr>
+<tr><td>Operations: </td><td class="ops">apply basis conditionsForIdempotents
+   convert coordinates elt leftDiscriminant leftRankPolynomial leftRegularRepresentation leftTraceMatrix represents
+   rightDiscriminant rightRankPolynomial rightRegularRepresentation rightTraceMatrix structuralConstants</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FAMONC</td></tr>
+<tr><td>Full name: </td><td class="full">FreeAbelianMonoidCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CancellationAbelianMonoid RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">+</span> coefficient
+   highCommonTerms mapCoef mapGen nthCoef nthFactor size terms</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FEVALAB</td></tr>
+<tr><td>Full name: </td><td class="full">FullyEvalableOver</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Eltable Evalable InnerEvalable</td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FLINEXP</td></tr>
+<tr><td>Full name: </td><td class="full">FullyLinearlyExplicitRingOver</td></tr>
+<tr><td>Belongs to: </td><td class="membs">LinearlyExplicitRingOver</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FPATMAB</td></tr>
+<tr><td>Full name: </td><td class="full">FullyPatternMatchable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Object PatternMatchable</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FRETRCT</td></tr>
+<tr><td>Full name: </td><td class="full">FullyRetractableTo</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFCAT</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionFieldCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MonogenicAlgebra</td></tr>
+<tr><td>Operations: </td><td class="ops">D absolutelyIrreducible? branchPoint? branchPointAtInfinity?
+   complementaryBasis differentiate elt genus integral? integralAtInfinity? integralBasis integralBasisAtInfinity
+   integralCoordinates integralDerivationMatrix integralMatrix integralMatrixAtInfinity integralRepresents
+   inverseIntegralMatrix inverseIntegralMatrixAtInfinity nonSingularModel normalizeAtInfinity numberOfComponents
+   primitivePart ramified? ramifiedAtInfinity? rationalPoint? rationalPoints reduceBasisAtInfinity represents singular?
+   singularAtInfinity? yCoordinates</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FS</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpace</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup AbelianMonoid Algebra CharacteristicNonZero CharacteristicZero ConvertibleTo
+   ExpressionSpace Field FullyLinearlyExplicitRingOver FullyPatternMatchable FullyRetractableTo Group Monoid
+   PartialDifferentialRing Patternable RetractableTo Ring</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> <span class="teletype">/</span> applyQuote coerce convert denom denominator
+   eval ground ground? isExpt isMult isPlus isPower isTimes numer numerator univariate variables</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GCDDOM</td></tr>
+<tr><td>Full name: </td><td class="full">GcdDomain</td></tr>
+<tr><td>Belongs to: </td><td class="membs">IntegralDomain</td></tr>
+<tr><td>Operations: </td><td class="ops">gcd lcm</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GRALG</td></tr>
+<tr><td>Full name: </td><td class="full">GradedAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">GradedModule</td></tr>
+<tr><td>Operations: </td><td class="ops">One product</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GRMOD</td></tr>
+<tr><td>Full name: </td><td class="full">GradedModule</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RetractableTo SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> Zero degree</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GROUP</td></tr>
+<tr><td>Full name: </td><td class="full">Group</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Monoid</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> <span class="teletype">/</span> commutator conjugate inv</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">HOAGG</td></tr>
+<tr><td>Full name: </td><td class="full">HomogeneousAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Aggregate SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">any? count every? map map! member? members parts</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">HYPCAT</td></tr>
+<tr><td>Full name: </td><td class="full">HyperbolicFunctionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">cosh coth csch sech sinh tanh</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IXAGG</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">EltableAggregate HomogeneousAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">entries entry? fill! first index? indices
+   maxIndex minIndex swap!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IDPC</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedDirectProductCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">leadingCoefficient leadingSupport map monomial reductum</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IEVALAB</td></tr>
+<tr><td>Full name: </td><td class="full">InnerEvalable</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">eval</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INS</td></tr>
+<tr><td>Full name: </td><td class="full">IntegerNumberSystem</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CharacteristicZero CombinatorialFunctionCategory ConvertibleTo DifferentialRing
+   EuclideanDomain LinearlyExplicitRingOver OrderedRing PatternMatchable RealConstant RetractableTo StepThrough
+   UniqueFactorizationDomain</td></tr>
+<tr><td>Operations: </td><td class="ops">addmod base bit? copy dec even? hash inc invmod length mask mulmod odd? positiveRemainder
+   powmod random rational rational? rationalIfCan shift submod symmetricRemainder</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTDOM</td></tr>
+<tr><td>Full name: </td><td class="full">IntegralDomain</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra CommutativeRing EntireRing</td></tr>
+<tr><td>Operations: </td><td class="ops">associates? exquo unit? unitCanonical unitNormal</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">KDAGG</td></tr>
+<tr><td>Full name: </td><td class="full">KeyedDictionary</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Dictionary</td></tr>
+<tr><td>Operations: </td><td class="ops">key? keys remove! search</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LZSTAGG</td></tr>
+<tr><td>Full name: </td><td class="full">LazyStreamAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">StreamAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">complete explicitEntries? explicitlyEmpty? extend frst lazy?
+   lazyEvaluate numberOfComputedEntries remove rst select</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LALG</td></tr>
+<tr><td>Full name: </td><td class="full">LeftAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">LeftModule Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LMODULE</td></tr>
+<tr><td>Full name: </td><td class="full">LeftModule</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LNAGG</td></tr>
+<tr><td>Full name: </td><td class="full">LinearAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Collection IndexedAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">concat delete elt insert map new setelt</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LINEXP</td></tr>
+<tr><td>Full name: </td><td class="full">LinearlyExplicitRingOver</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">reducedSystem</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LFCAT</td></tr>
+<tr><td>Full name: </td><td class="full">LiouvillianFunctionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PrimitiveFunctionCategory TranscendentalFunctionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">Ci Ei Si dilog
+   erf li</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LSAGG</td></tr>
+<tr><td>Full name: </td><td class="full">ListAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ExtensibleLinearAggregate FiniteLinearAggregate StreamAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">list</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MATCAT</td></tr>
+<tr><td>Full name: </td><td class="full">MatrixCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TwoDimensionalArrayCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> antisymmetric?
+   coerce determinant diagonal? diagonalMatrix elt exquo horizConcat inverse listOfLists matrix minordet nullSpace nullity
+   rank rowEchelon scalarMatrix setelt setsubMatrix! square? squareTop subMatrix swapColumns! swapRows! symmetric?
+   transpose vertConcat zero</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MODULE</td></tr>
+<tr><td>Full name: </td><td class="full">Module</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BiModule</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MONADWU</td></tr>
+<tr><td>Full name: </td><td class="full">MonadWithUnit</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Monad</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> One leftPower leftRecip one? recip rightPower rightRecip</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MONAD</td></tr>
+<tr><td>Full name: </td><td class="full">Monad</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">**</span> leftPower rightPower</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MONOGEN</td></tr>
+<tr><td>Full name: </td><td class="full">MonogenicAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CommutativeRing ConvertibleTo DifferentialExtension Field Finite
+   FiniteFieldCategory FramedAlgebra FullyLinearlyExplicitRingOver FullyRetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">convert definingPolynomial
+   derivationCoordinates generator lift reduce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MLO</td></tr>
+<tr><td>Full name: </td><td class="full">MonogenicLinearOperator</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra BiModule Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">coefficient degree leadingCoefficient minimumDegree
+   monomial reductum</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MONOID</td></tr>
+<tr><td>Full name: </td><td class="full">Monoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SemiGroup</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> One one? recip</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MDAGG</td></tr>
+<tr><td>Full name: </td><td class="full">MultiDictionary</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DictionaryOperations</td></tr>
+<tr><td>Operations: </td><td class="ops">duplicates insert! removeDuplicates!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MSAGG</td></tr>
+<tr><td>Full name: </td><td class="full">MultiSetAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MultiDictionary SetAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MTSCAT</td></tr>
+<tr><td>Full name: </td><td class="full">MultivariateTaylorSeriesCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Evalable InnerEvalable PartialDifferentialRing PowerSeriesCategory
+   RadicalCategory TranscendentalFunctionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">coefficient extend integrate monomial order polynomial</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NAALG</td></tr>
+<tr><td>Full name: </td><td class="full">NonAssociativeAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Module NonAssociativeRng</td></tr>
+<tr><td>Operations: </td><td class="ops">plenaryPower</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NASRING</td></tr>
+<tr><td>Full name: </td><td class="full">NonAssociativeRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MonadWithUnit NonAssociativeRng</td></tr>
+<tr><td>Operations: </td><td class="ops">characteristic coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NARNG</td></tr>
+<tr><td>Full name: </td><td class="full">NonAssociativeRng</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup Monad</td></tr>
+<tr><td>Operations: </td><td class="ops">antiCommutator associator commutator</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OBJECT</td></tr>
+<tr><td>Full name: </td><td class="full">Object</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OC</td></tr>
+<tr><td>Full name: </td><td class="full">OctonionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra CharacteristicNonZero CharacteristicZero ConvertibleTo Finite FullyEvalableOver
+   FullyRetractableTo OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops">abs conjugate imagE imagI imagJ imagK imagi imagj imagk inv norm octon rational
+   rational? rationalIfCan real</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">A1AGG</td></tr>
+<tr><td>Full name: </td><td class="full">OneDimensionalArrayAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteLinearAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OAGROUP</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedAbelianGroup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup OrderedCancellationAbelianMonoid</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OAMONS</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedAbelianMonoidSup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OrderedCancellationAbelianMonoid</td></tr>
+<tr><td>Operations: </td><td class="ops">sup</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OAMON</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedAbelianMonoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianMonoid OrderedAbelianSemiGroup</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OASGP</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedAbelianSemiGroup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianMonoid OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OCAMON</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedCancellationAbelianMonoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CancellationAbelianMonoid OrderedAbelianMonoid</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ORDFIN</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedFinite</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Finite OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ORDMON</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedMonoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Monoid OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OMAGG</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedMultiSetAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MultiSetAggregate PriorityQueueAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">min</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ORDRING</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OrderedAbelianGroup OrderedMonoid Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">abs negative? positive? sign</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ORDSET</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedSet</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> max min</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PADICCT</td></tr>
+<tr><td>Full name: </td><td class="full">PAdicIntegerCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CharacteristicZero EuclideanDomain</td></tr>
+<tr><td>Operations: </td><td class="ops">approximate complete digits extend moduloP
+   modulus order quotientByP sqrt</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PDRING</td></tr>
+<tr><td>Full name: </td><td class="full">PartialDifferentialRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">D differentiate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PTRANFN</td></tr>
+<tr><td>Full name: </td><td class="full">PartialTranscendentalFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">acosIfCan acoshIfCan acotIfCan acothIfCan acscIfCan acschIfCan
+   asecIfCan asechIfCan asinIfCan asinhIfCan atanIfCan atanhIfCan cosIfCan coshIfCan cotIfCan cothIfCan cscIfCan cschIfCan
+   expIfCan logIfCan nthRootIfCan secIfCan sechIfCan sinIfCan sinhIfCan tanIfCan tanhIfCan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PATAB</td></tr>
+<tr><td>Full name: </td><td class="full">Patternable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo Object</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PATMAB</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">patternMatch</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PERMCAT</td></tr>
+<tr><td>Full name: </td><td class="full">PermutationCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Group OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> cycle cycles elt eval orbit</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PPCURVE</td></tr>
+<tr><td>Full name: </td><td class="full">PlottablePlaneCurveCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo</td></tr>
+<tr><td>Operations: </td><td class="ops">listBranches xRange yRange</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PSCURVE</td></tr>
+<tr><td>Full name: </td><td class="full">PlottableSpaceCurveCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo</td></tr>
+<tr><td>Operations: </td><td class="ops">listBranches xRange yRange zRange</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PTCAT</td></tr>
+<tr><td>Full name: </td><td class="full">PointCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">VectorCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">convert cross dimension extend length point</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">POLYCAT</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo Evalable FiniteAbelianMonoidRing FullyLinearlyExplicitRingOver
+   GcdDomain InnerEvalable OrderedSet PartialDifferentialRing PatternMatchable PolynomialFactorizationExplicit
+   RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">coefficient content degree discriminant isExpt isPlus isTimes mainVariable minimumDegree monicDivide
+   monomial monomials multivariate primitiveMonomials primitivePart resultant squareFree squareFreePart totalDegree
+   univariate variables</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PFECAT</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialFactorizationExplicit</td></tr>
+<tr><td>Belongs to: </td><td class="membs">UniqueFactorizationDomain</td></tr>
+<tr><td>Operations: </td><td class="ops">charthRoot conditionP factorPolynomial
+   factorSquareFreePolynomial gcdPolynomial solveLinearPolynomialEquation squareFreePolynomial</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PSCAT</td></tr>
+<tr><td>Full name: </td><td class="full">PowerSeriesCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianMonoidRing</td></tr>
+<tr><td>Operations: </td><td class="ops">complete monomial pole? variables</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PRIMCAT</td></tr>
+<tr><td>Full name: </td><td class="full">PrimitiveFunctionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">integral</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PID</td></tr>
+<tr><td>Full name: </td><td class="full">PrincipalIdealDomain</td></tr>
+<tr><td>Belongs to: </td><td class="membs">GcdDomain</td></tr>
+<tr><td>Operations: </td><td class="ops">expressIdealMember principalIdeal</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PRQAGG</td></tr>
+<tr><td>Full name: </td><td class="full">PriorityQueueAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BagAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">max merge merge!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QUATCAT</td></tr>
+<tr><td>Full name: </td><td class="full">QuaternionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra CharacteristicNonZero CharacteristicZero ConvertibleTo
+   DifferentialExtension DivisionRing EntireRing FullyEvalableOver FullyLinearlyExplicitRingOver FullyRetractableTo
+   OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops">abs conjugate imagI imagJ imagK norm quatern rational rational? rationalIfCan real</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QUAGG</td></tr>
+<tr><td>Full name: </td><td class="full">QueueAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BagAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">back dequeue! enqueue! front length rotate!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QFCAT</td></tr>
+<tr><td>Full name: </td><td class="full">QuotientFieldCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra CharacteristicNonZero CharacteristicZero ConvertibleTo
+   DifferentialExtension Field FullyEvalableOver FullyLinearlyExplicitRingOver FullyPatternMatchable OrderedRing
+   OrderedSet Patternable PolynomialFactorizationExplicit RealConstant RetractableTo StepThrough</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">/</span> ceiling denom
+   denominator floor fractionPart numer numerator random wholePart</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RADCAT</td></tr>
+<tr><td>Full name: </td><td class="full">RadicalCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> nthRoot sqrt</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REAL</td></tr>
+<tr><td>Full name: </td><td class="full">RealConstant</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RNS</td></tr>
+<tr><td>Full name: </td><td class="full">RealNumberSystem</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CharacteristicZero ConvertibleTo Field OrderedRing PatternMatchable RadicalCategory
+   RealConstant RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">abs ceiling floor fractionPart norm round truncate wholePart</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RMATCAT</td></tr>
+<tr><td>Full name: </td><td class="full">RectangularMatrixCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BiModule HomogeneousAggregate Module</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">/</span> antisymmetric? column
+   diagonal? elt exquo listOfLists map matrix maxColIndex maxRowIndex minColIndex minRowIndex ncols nrows nullSpace
+   nullity qelt rank row rowEchelon square? symmetric?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RCAGG</td></tr>
+<tr><td>Full name: </td><td class="full">RecursiveAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">HomogeneousAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">children cyclic? elt leaf? leaves node? nodes setchildren!
+   setelt setvalue! value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RETRACT</td></tr>
+<tr><td>Full name: </td><td class="full">RetractableTo</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce retract retractIfCan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RMODULE</td></tr>
+<tr><td>Full name: </td><td class="full">RightModule</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RING</td></tr>
+<tr><td>Full name: </td><td class="full">Ring</td></tr>
+<tr><td>Belongs to: </td><td class="membs">LeftModule Monoid Rng</td></tr>
+<tr><td>Operations: </td><td class="ops">characteristic coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RNG</td></tr>
+<tr><td>Full name: </td><td class="full">Rng</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup SemiGroup</td></tr>
+<tr><td>Operations: </td><td class="ops"></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SEGCAT</td></tr>
+<tr><td>Full name: </td><td class="full">SegmentCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">BY SEGMENT convert hi high incr lo low segment</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SEGXCAT</td></tr>
+<tr><td>Full name: </td><td class="full">SegmentExpansionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SegmentCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">expand map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SGROUP</td></tr>
+<tr><td>Full name: </td><td class="full">SemiGroup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">**</span></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SETAGG</td></tr>
+<tr><td>Full name: </td><td class="full">SetAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Collection SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> brace difference intersect subset? symmetricDifference
+   union</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SETCAT</td></tr>
+<tr><td>Full name: </td><td class="full">SetCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo Object</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span></td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SEXCAT</td></tr>
+<tr><td>Full name: </td><td class="full">SExpressionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> atom? car cdr convert destruct elt eq expr float float?
+   integer integer? list? null? pair? string string? symbol symbol? uequal</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SPFCAT</td></tr>
+<tr><td>Full name: </td><td class="full">SpecialFunctionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">Beta Gamma abs airyAi airyBi besselI besselJ besselK besselY digamma
+   polygamma</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SMATCAT</td></tr>
+<tr><td>Full name: </td><td class="full">SquareMatrixCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra BiModule DifferentialExtension FullyLinearlyExplicitRingOver
+   FullyRetractableTo Module RectangularMatrixCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">**</span> determinant diagonal diagonalMatrix
+   diagonalProduct inverse minordet scalarMatrix trace</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SKAGG</td></tr>
+<tr><td>Full name: </td><td class="full">StackAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BagAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">depth pop! push! top</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STEP</td></tr>
+<tr><td>Full name: </td><td class="full">StepThrough</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">init nextItem</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STAGG</td></tr>
+<tr><td>Full name: </td><td class="full">StreamAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">LinearAggregate UnaryRecursiveAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">explicitlyFinite? possiblyInfinite?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SRAGG</td></tr>
+<tr><td>Full name: </td><td class="full">StringAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OneDimensionalArrayAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce elt leftTrim lowerCase lowerCase! match match?
+   position prefix? replace rightTrim split substring? suffix? trim upperCase upperCase!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STRICAT</td></tr>
+<tr><td>Full name: </td><td class="full">StringCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">StringAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">string</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TBAGG</td></tr>
+<tr><td>Full name: </td><td class="full">TableAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">IndexedAggregate KeyedDictionary</td></tr>
+<tr><td>Operations: </td><td class="ops">map setelt table</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SPACEC</td></tr>
+<tr><td>Full name: </td><td class="full">ThreeSpaceCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">check closedCurve closedCurve? coerce components composite composites
+   copy create3Space curve curve? enterPointData lllip lllp llprop lp lprop merge mesh mesh? modifyPointData
+   numberOfComponents numberOfComposites objects point point? polygon polygon? subspace</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TRANFUN</td></tr>
+<tr><td>Full name: </td><td class="full">TranscendentalFunctionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ArcHyperbolicFunctionCategory ArcTrigonometricFunctionCategory
+   ElementaryFunctionCategory HyperbolicFunctionCategory TrigonometricFunctionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">pi</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TRIGCAT</td></tr>
+<tr><td>Full name: </td><td class="full">TrigonometricFunctionCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">cos cot csc sec sin tan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ARR2CAT</td></tr>
+<tr><td>Full name: </td><td class="full">TwoDimensionalArrayCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">HomogeneousAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">column elt fill! map map! maxColIndex maxRowIndex
+   minColIndex minRowIndex ncols new nrows parts qelt qsetelt! row setColumn! setRow! setelt</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">URAGG</td></tr>
+<tr><td>Full name: </td><td class="full">UnaryRecursiveAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RecursiveAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops">concat concat! cycleEntry cycleLength cycleSplit!
+   cycleTail elt first last rest second setelt setfirst! setlast! setrest! split! tail third</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UFD</td></tr>
+<tr><td>Full name: </td><td class="full">UniqueFactorizationDomain</td></tr>
+<tr><td>Belongs to: </td><td class="membs">GcdDomain</td></tr>
+<tr><td>Operations: </td><td class="ops">factor prime? squareFree squareFreePart</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ULSCAT</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariateLaurentSeriesCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Field RadicalCategory TranscendentalFunctionCategory
+   UnivariatePowerSeriesCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">integrate multiplyCoefficients rationalFunction</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ULSCCAT</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariateLaurentSeriesConstructorCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QuotientFieldCategory RetractableTo
+   UnivariateLaurentSeriesCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce degree laurent removeZeroes taylor taylorIfCan taylorRep</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UPOLYC</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePolynomialCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DifferentialExtension DifferentialRing Eltable EuclideanDomain
+   PolynomialCategory StepThrough</td></tr>
+<tr><td>Operations: </td><td class="ops">D composite differentiate discriminant divideExponents elt integrate makeSUP
+   monicDivide multiplyExponents order pseudoDivide pseudoQuotient pseudoRemainder resultant separate subResultantGcd
+   unmakeSUP vectorise</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UPSCAT</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePowerSeriesCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DifferentialRing Eltable PowerSeriesCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">approximate center elt
+   eval extend multiplyExponents order series terms truncate variable</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UPXSCAT</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePuiseuxSeriesCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Field RadicalCategory TranscendentalFunctionCategory
+   UnivariatePowerSeriesCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">integrate multiplyExponents</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UPXSCCA</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePuiseuxSeriesConstructorCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RetractableTo UnivariatePuiseuxSeriesCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce
+   degree laurent laurentIfCan laurentRep puiseux rationalPower</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UTSCAT</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariateTaylorSeriesCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RadicalCategory TranscendentalFunctionCategory
+   UnivariatePowerSeriesCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> coefficients integrate multiplyCoefficients polynomial quoByVar series</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">VECTCAT</td></tr>
+<tr><td>Full name: </td><td class="full">VectorCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OneDimensionalArrayAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> dot zero</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">VSPACE</td></tr>
+<tr><td>Full name: </td><td class="full">VectorSpace</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Module</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">/</span> dimension</td></tr>
+</table>
+</p>
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-16.28.xhtml" style="margin-right: 10px;">Previous Section 16.28  )what</a><a href="section-18.1.xhtml" style="margin-right: 10px;">Next Section 18.1  Axiom Domains</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-18.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-18.1.xhtml
new file mode 100644
index 0000000..e7f4b39
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-18.1.xhtml
@@ -0,0 +1,2888 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section18.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-17.1.xhtml" style="margin-right: 10px;">Previous Section 17.1  Axiom Categories</a><a href="section-19.1.xhtml" style="margin-right: 10px;">Next Section 19.1  Axiom Packages</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-18.1">
+<h2 class="sectiontitle">18.1  Axiom Domains</h2>
+<a name="ugAppDomains" class="label"/>
+
+<p>This is a listing of all domains in the Axiom library at the
+time this book was produced.
+Use the Browse facility (described in Chapter 
+<a href="section-14.0.xhtml#ugBrowse" class="ref" >ugBrowse</a> )
+to get more information about these constructors.
+</p>
+
+
+<p>This sample entry will help you read the following table:
+</p>
+
+
+<p>DomainName{DomainAbbreviation}:{ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Category</mi><mn>1</mn></msub></mrow></mstyle></math>
+... <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Category</mi><mi>N</mi></msub></mrow></mstyle></math>}<span class="italic">with </span>
+{ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mn>1</mn></msub></mrow></mstyle></math>... <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mi>M</mi></msub></mrow></mstyle></math>}
+</p>
+
+
+<p>where
+</p>
+
+
+<p><table class="begintabular">
+<tr><td>DomainName </td><td> is the full domain name, e.g., <span class="italic">Integer</span>. </td></tr>
+<tr><td>DomainAbbreviation </td><td> is the domain abbreviation, e.g., <span class="italic">INT</span>. </td></tr>
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Category</mi><mi>i</mi></msub></mrow></mstyle></math> </td><td> is a category to which the domain belongs. </td></tr>
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mi>j</mi></msub></mrow></mstyle></math> </td><td> is an operation exported by the domain. </td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ALGSC</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraGivenByStructuralConstants</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FramedNonAssociativeAlgebra LeftModule</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span>
+   <span class="teletype">-</span> <span class="teletype">=</span> JacobiIdentity? JordanAlgebra? alternative? antiAssociative? antiCommutative? antiCommutator apply
+   associative? associator associatorDependence basis coerce commutative? commutator conditionsForIdempotents convert
+   coordinates elt flexible? jordanAdmissible? leftAlternative? leftCharacteristicPolynomial leftDiscriminant
+   leftMinimalPolynomial leftNorm leftPower leftRankPolynomial leftRecip leftRegularRepresentation leftTrace
+   leftTraceMatrix leftUnit leftUnits lieAdmissible? lieAlgebra? noncommutativeJordanAlgebra? plenaryPower
+   powerAssociative? rank recip represents rightAlternative? rightCharacteristicPolynomial rightDiscriminant
+   rightMinimalPolynomial rightNorm rightPower rightRankPolynomial rightRecip rightRegularRepresentation rightTrace
+   rightTraceMatrix rightUnit rightUnits someBasis structuralConstants unit zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ALGFF</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraicFunctionField</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FunctionFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> D
+   absolutelyIrreducible? associates? basis branchPoint? branchPointAtInfinity? characteristic characteristicPolynomial
+   charthRoot coerce complementaryBasis convert coordinates definingPolynomial derivationCoordinates differentiate
+   discriminant divide elt euclideanSize expressIdealMember exquo extendedEuclidean factor gcd generator genus integral?
+   integralAtInfinity? integralBasis integralBasisAtInfinity integralCoordinates integralDerivationMatrix integralMatrix
+   integralMatrixAtInfinity integralRepresents inv inverseIntegralMatrix inverseIntegralMatrixAtInfinity knownInfBasis lcm
+   lift minimalPolynomial multiEuclidean nonSingularModel norm normalizeAtInfinity numberOfComponents one? prime?
+   primitivePart principalIdeal quo ramified? ramifiedAtInfinity? rank rationalPoint? rationalPoints recip reduce
+   reduceBasisAtInfinity reducedSystem regularRepresentation rem represents retract retractIfCan singular?
+   singularAtInfinity? sizeLess? squareFree squareFreePart trace traceMatrix unit? unitCanonical unitNormal yCoordinates
+   zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">AN</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraicNumber</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AlgebraicallyClosedField CharacteristicZero ConvertibleTo DifferentialRing
+   ExpressionSpace LinearlyExplicitRingOver RealConstant RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">   &lt;</span> <span class="teletype">=</span> D associates? belong? box characteristic coerce convert definingPolynomial denom differentiate distribute
+   divide elt euclideanSize eval expressIdealMember exquo extendedEuclidean factor freeOf? gcd height inv is? kernel
+   kernels lcm mainKernel map max min minPoly multiEuclidean nthRoot numer one? operator operators paren prime?
+   principalIdeal quo recip reduce reducedSystem rem retract retractIfCan rootOf rootsOf sizeLess? sqrt squareFree
+   squareFreePart subst tower unit? unitCanonical unitNormal zero? zeroOf zerosOf</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ANON</td></tr>
+<tr><td>Full name: </td><td class="full">AnonymousFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ANTISYM</td></tr>
+<tr><td>Full name: </td><td class="full">AntiSymm</td></tr>
+<tr><td>Belongs to: </td><td class="membs">LeftAlgebra RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> characteristic
+   coefficient coerce degree exp generator homogeneous? leadingBasisTerm leadingCoefficient map one? recip reductum
+   retract retractIfCan retractable? zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ANY</td></tr>
+<tr><td>Full name: </td><td class="full">Any</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> any coerce domain domainOf obj objectOf showTypeInOutput</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ASTACK</td></tr>
+<tr><td>Full name: </td><td class="full">ArrayStack</td></tr>
+<tr><td>Belongs to: </td><td class="membs">StackAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? arrayStack bag coerce copy count depth empty empty?
+   eq? every? extract! insert! inspect less? map map! member? members more? parts pop! push! size? top</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">JORDAN</td></tr>
+<tr><td>Full name: </td><td class="full">AssociatedJordanAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo FiniteRankNonAssociativeAlgebra FramedNonAssociativeAlgebra
+   NonAssociativeAlgebra</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> JacobiIdentity? JordanAlgebra? alternative?
+   antiAssociative? antiCommutative? antiCommutator apply associative? associator associatorDependence basis coerce
+   commutative? commutator conditionsForIdempotents convert coordinates elt flexible? jordanAdmissible? leftAlternative?
+   leftCharacteristicPolynomial leftDiscriminant leftMinimalPolynomial leftNorm leftPower leftRankPolynomial leftRecip
+   leftRegularRepresentation leftTrace leftTraceMatrix leftUnit leftUnits lieAdmissible? lieAlgebra?
+   noncommutativeJordanAlgebra? plenaryPower powerAssociative? rank recip represents rightAlternative?
+   rightCharacteristicPolynomial rightDiscriminant rightMinimalPolynomial rightNorm rightPower rightRankPolynomial
+   rightRecip rightRegularRepresentation rightTrace rightTraceMatrix rightUnit rightUnits someBasis structuralConstants
+   unit zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LIE</td></tr>
+<tr><td>Full name: </td><td class="full">AssociatedLieAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo FiniteRankNonAssociativeAlgebra FramedNonAssociativeAlgebra
+   NonAssociativeAlgebra</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> JacobiIdentity? JordanAlgebra? alternative?
+   antiAssociative? antiCommutative? antiCommutator apply associative? associator associatorDependence basis coerce
+   commutative? commutator conditionsForIdempotents convert coordinates elt flexible? jordanAdmissible? leftAlternative?
+   leftCharacteristicPolynomial leftDiscriminant leftMinimalPolynomial leftNorm leftPower leftRankPolynomial leftRecip
+   leftRegularRepresentation leftTrace leftTraceMatrix leftUnit leftUnits lieAdmissible? lieAlgebra?
+   noncommutativeJordanAlgebra? plenaryPower powerAssociative? rank recip represents rightAlternative?
+   rightCharacteristicPolynomial rightDiscriminant rightMinimalPolynomial rightNorm rightPower rightRankPolynomial
+   rightRecip rightRegularRepresentation rightTrace rightTraceMatrix rightUnit rightUnits someBasis structuralConstants
+   unit zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ALIST</td></tr>
+<tr><td>Full name: </td><td class="full">AssociationList</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AssociationListAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? assoc bag child? children coerce
+   concat concat! construct copy copyInto! count cycleEntry cycleLength cycleSplit! cycleTail cyclic? delete delete!
+   dictionary distance elt empty empty? entries entry? eq? every? explicitlyFinite? extract! fill! find first index?
+   indices insert insert! inspect key? keys last leaf? less? list map map! maxIndex member? members merge merge! minIndex
+   more? new node? nodes parts position possiblyInfinite? qelt qsetelt! reduce remove remove! removeDuplicates
+   removeDuplicates! rest reverse reverse! search second select select! setchildren! setelt setfirst! setlast! setrest!
+   setvalue! size? sort sort! sorted? split! swap! table tail third value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BBTREE</td></tr>
+<tr><td>Full name: </td><td class="full">BalancedBinaryTree</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BinaryTreeCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? balancedBinaryTree children coerce copy
+   count cyclic? elt empty empty? eq? every? leaf? leaves left less? map map! mapDown! mapUp! member? members more? node
+   node? nodes parts right setchildren! setelt setleaves! setleft! setright! setvalue! size? value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BPADIC</td></tr>
+<tr><td>Full name: </td><td class="full">BalancedPAdicInteger</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PAdicIntegerCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> approximate
+   associates? characteristic coerce complete digits divide euclideanSize expressIdealMember exquo extend
+   extendedEuclidean gcd lcm moduloP modulus multiEuclidean one? order principalIdeal quo quotientByP recip rem sizeLess?
+   sqrt unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BPADICRT</td></tr>
+<tr><td>Full name: </td><td class="full">BalancedPAdicRational</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QuotientFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> D
+   approximate associates? characteristic coerce continuedFraction denom denominator differentiate divide euclideanSize
+   expressIdealMember exquo extendedEuclidean factor fractionPart gcd inv lcm map multiEuclidean numer numerator one?
+   prime? principalIdeal quo recip reducedSystem rem removeZeroes retract retractIfCan sizeLess? squareFree squareFreePart
+   unit? unitCanonical unitNormal wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BOP</td></tr>
+<tr><td>Full name: </td><td class="full">BasicOperator</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> arity assert coerce comparison copy deleteProperty! display
+   equality has? input is? max min name nary? nullary? operator properties property setProperties setProperty unary?
+   weight</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BINARY</td></tr>
+<tr><td>Full name: </td><td class="full">BinaryExpansion</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QuotientFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D
+   abs associates? binary ceiling characteristic coerce convert denom denominator differentiate divide euclideanSize
+   expressIdealMember exquo extendedEuclidean factor floor fractionPart gcd init inv lcm map max min multiEuclidean
+   negative? nextItem numer numerator one? patternMatch positive? prime? principalIdeal quo random recip reducedSystem rem
+   retract retractIfCan sign sizeLess? squareFree squareFreePart unit? unitCanonical unitNormal wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BSTREE</td></tr>
+<tr><td>Full name: </td><td class="full">BinarySearchTree</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BinaryTreeCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? binarySearchTree children coerce copy
+   count cyclic? elt empty empty? eq? every? insert! insertRoot! leaf? leaves left less? map map! member? members more?
+   node node? nodes parts right setchildren! setelt setleft! setright! setvalue! size? split value</td></tr>
+</table>
+</p>
+
+
+<p>   count cyclic? elt empty empty? eq? every? insert! leaf? leaves left less? map map! member? members more? node node?
+   nodes parts right setchildren! setelt setleft! setright! setvalue! size? value}
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BTREE</td></tr>
+<tr><td>Full name: </td><td class="full">BinaryTree</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BinaryTreeCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? binaryTree children coerce copy count cyclic? elt
+   empty empty? eq? every? leaf? leaves left less? map map! member? members more? node node? nodes parts right
+   setchildren! setelt setleft! setright! setvalue! size? value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BITS</td></tr>
+<tr><td>Full name: </td><td class="full">Bits</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BitAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> <span class="teletype">\^{}</span> and any? bits coerce concat construct convert
+   copy copyInto! count delete elt empty empty? entries entry? eq? every? fill! find first index? indices insert less? map
+   map! max maxIndex member? members merge min minIndex more? nand new nor not or parts position qelt qsetelt! reduce
+   remove removeDuplicates reverse reverse! select setelt size? sort sort! sorted? swap! xor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BOOLEAN</td></tr>
+<tr><td>Full name: </td><td class="full">Boolean</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo Finite OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> <span class="teletype">\^{}</span> and coerce convert false implies
+   index lookup max min nand nor not or random size true xor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CARD</td></tr>
+<tr><td>Full name: </td><td class="full">CardinalNumber</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CancellationAbelianMonoid Monoid OrderedSet RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span>
+   <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> Aleph coerce countable? finite? generalizedContinuumHypothesisAssumed
+   generalizedContinuumHypothesisAssumed? max min one? recip retract retractIfCan zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CARTEN</td></tr>
+<tr><td>Full name: </td><td class="full">CartesianTensor</td></tr>
+<tr><td>Belongs to: </td><td class="membs">GradedAlgebra</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> coerce contract degree elt
+   kroneckerDelta leviCivitaSymbol product rank ravel reindex retract retractIfCan transpose unravel</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CCLASS</td></tr>
+<tr><td>Full name: </td><td class="full">CharacterClass</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo FiniteSetAggregate SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> alphabetic
+   alphanumeric any? bag brace cardinality charClass coerce complement construct convert copy count dictionary difference
+   digit empty empty? eq? every? extract! find hexDigit index insert! inspect intersect less? lookup lowerCase map map!
+   max member? members min more? parts random reduce remove remove! removeDuplicates select select! size size? subset?
+   symmetricDifference union universe upperCase</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CHAR</td></tr>
+<tr><td>Full name: </td><td class="full">Character</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OrderedFinite</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> alphabetic? alphanumeric? char coerce digit? escape hexDigit?
+   index lookup lowerCase lowerCase? max min ord quote random size space upperCase upperCase?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CLIF</td></tr>
+<tr><td>Full name: </td><td class="full">CliffordAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra Ring VectorSpace</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span>
+   characteristic coefficient coerce dimension e monomial one? recip zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COLOR</td></tr>
+<tr><td>Full name: </td><td class="full">Color</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianSemiGroup</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">=</span> blue coerce color green hue numberOfHues red yellow</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMM</td></tr>
+<tr><td>Full name: </td><td class="full">Commutator</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce mkcomm</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMPLEX</td></tr>
+<tr><td>Full name: </td><td class="full">Complex</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ComplexCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs acos
+   acosh acot acoth acsc acsch argument asec asech asin asinh associates? atan atanh basis characteristic
+   characteristicPolynomial charthRoot coerce complex conditionP conjugate convert coordinates cos cosh cot coth
+   createPrimitiveElement csc csch definingPolynomial derivationCoordinates differentiate discreteLog discriminant divide
+   elt euclideanSize eval exp expressIdealMember exquo extendedEuclidean factor factorPolynomial
+   factorSquareFreePolynomial factorsOfCyclicGroupSize gcd gcdPolynomial generator imag imaginary index init inv lcm lift
+   log lookup map max min minimalPolynomial multiEuclidean nextItem norm nthRoot one? order pi polarCoordinates prime?
+   primeFrobenius primitive? primitiveElement principalIdeal quo random rank rational rational? rationalIfCan real recip
+   reduce reducedSystem regularRepresentation rem representationType represents retract retractIfCan sec sech sin sinh
+   size sizeLess? solveLinearPolynomialEquation sqrt squareFree squareFreePart squareFreePolynomial
+   tableForDiscreteLogarithm tan tanh trace traceMatrix unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CONTFRAC</td></tr>
+<tr><td>Full name: </td><td class="full">ContinuedFraction</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra Field</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> approximants
+   associates? characteristic coerce complete continuedFraction convergents denominators divide euclideanSize
+   expressIdealMember exquo extend extendedEuclidean factor gcd inv lcm multiEuclidean numerators one? partialDenominators
+   partialNumerators partialQuotients prime? principalIdeal quo recip reducedContinuedFraction reducedForm rem sizeLess?
+   squareFree squareFreePart unit? unitCanonical unitNormal wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DBASE</td></tr>
+<tr><td>Full name: </td><td class="full">Database</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> coerce display elt fullDisplay</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DFLOAT</td></tr>
+<tr><td>Full name: </td><td class="full">DoubleFloat</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo DifferentialRing FloatingPointSystem TranscendentalFunctionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span>
+   <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs acos acosh acot acoth acsc acsch asec asech asin asinh
+   associates? atan atanh base bits ceiling characteristic coerce convert cos cosh cot coth csc csch decreasePrecision
+   differentiate digits divide euclideanSize exp exp1 exponent expressIdealMember exquo extendedEuclidean factor float
+   floor fractionPart gcd hash increasePrecision inv lcm log log10 log2 mantissa max min multiEuclidean negative? norm
+   nthRoot one? order patternMatch pi positive? precision prime? principalIdeal quo rationalApproximation recip rem
+   retract retractIfCan round sec sech sign sin sinh sizeLess? sqrt squareFree squareFreePart tan tanh truncate unit?
+   unitCanonical unitNormal wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DLIST</td></tr>
+<tr><td>Full name: </td><td class="full">DataList</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ListAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? children coerce concat concat! construct convert
+   copy copyInto! count cycleEntry cycleLength cycleSplit! cycleTail cyclic? datalist delete delete! elt empty empty?
+   entries entry? eq? every? explicitlyFinite? fill! find first index? indices insert insert! last leaf? leaves less? list
+   map map! max maxIndex member? members merge merge! min minIndex more? new node? nodes parts position possiblyInfinite?
+   qelt qsetelt! reduce remove remove! removeDuplicates removeDuplicates! rest reverse reverse! second select select!
+   setchildren! setelt setfirst! setlast! setrest! setvalue! size? sort sort! sorted? split! swap! tail third value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DECIMAL</td></tr>
+<tr><td>Full name: </td><td class="full">DecimalExpansion</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QuotientFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span>
+   D abs associates? ceiling characteristic coerce convert decimal denom denominator differentiate divide euclideanSize
+   expressIdealMember exquo extendedEuclidean factor floor fractionPart gcd init inv lcm map max min multiEuclidean
+   negative? nextItem numer numerator one? patternMatch positive? prime? principalIdeal quo random recip reducedSystem rem
+   retract retractIfCan sign sizeLess? squareFree squareFreePart unit? unitCanonical unitNormal wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DHMATRIX</td></tr>
+<tr><td>Full name: </td><td class="full">DenavitHartenbergMatrix</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MatrixCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span>
+   antisymmetric? any? coerce column copy count determinant diagonal? diagonalMatrix elt empty empty? eq? every? exquo
+   fill! horizConcat identity inverse less? listOfLists map map! matrix maxColIndex maxRowIndex member? members
+   minColIndex minRowIndex minordet more? ncols new nrows nullSpace nullity parts qelt qsetelt! rank rotatex rotatey
+   rotatez row rowEchelon scalarMatrix scale setColumn! setRow! setelt setsubMatrix! size? square? squareTop subMatrix
+   swapColumns! swapRows! symmetric? translate transpose vertConcat zero</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DEQUEUE</td></tr>
+<tr><td>Full name: </td><td class="full">Dequeue</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DequeueAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? back bag bottom! coerce copy count depth dequeue
+   dequeue! empty empty? enqueue! eq? every? extract! extractBottom! extractTop! front height insert! insertBottom!
+   insertTop! inspect length less? map map! member? members more? parts pop! push! reverse! rotate! size? top top!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DERHAM</td></tr>
+<tr><td>Full name: </td><td class="full">DeRhamComplex</td></tr>
+<tr><td>Belongs to: </td><td class="membs">LeftAlgebra RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> characteristic
+   coefficient coerce degree exteriorDifferential generator homogeneous? leadingBasisTerm leadingCoefficient map one?
+   recip reductum retract retractIfCan retractable? totalDifferential zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DSMP</td></tr>
+<tr><td>Full name: </td><td class="full">DifferentialSparseMultivariatePolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DifferentialPolynomialCategory RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">   **</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D associates? characteristic charthRoot coefficient coefficients coerce
+   conditionP content convert degree differentialVariables differentiate discriminant eval exquo factor factorPolynomial
+   factorSquareFreePolynomial gcd gcdPolynomial ground ground? initial isExpt isPlus isTimes isobaric? lcm leader
+   leadingCoefficient leadingMonomial mainVariable makeVariable map mapExponents max min minimumDegree monicDivide
+   monomial monomial? monomials multivariate numberOfMonomials one? order patternMatch prime? primitiveMonomials
+   primitivePart recip reducedSystem reductum resultant retract retractIfCan separant solveLinearPolynomialEquation
+   squareFree squareFreePart squareFreePolynomial totalDegree unit? unitCanonical unitNormal univariate variables weight
+   weights zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DPMM</td></tr>
+<tr><td>Full name: </td><td class="full">DirectProductMatrixModule</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DirectProductCategory LeftModule</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">   -</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs any? characteristic coerce copy count differentiate dimension directProduct dot elt
+   empty empty? entries entry? eq? every? fill! first index index? indices less? lookup map map! max maxIndex member?
+   members min minIndex more? negative? one? parts positive? qelt qsetelt! random recip reducedSystem retract retractIfCan
+   setelt sign size size? sup swap! unitVector zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DPMO</td></tr>
+<tr><td>Full name: </td><td class="full">DirectProductModule</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DirectProductCategory LeftModule</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span>
+   <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs any? characteristic coerce copy count differentiate dimension directProduct dot elt empty
+   empty? entries entry? eq? every? fill! first index index? indices less? lookup map map! max maxIndex member? members
+   min minIndex more? negative? one? parts positive? qelt qsetelt! random recip reducedSystem retract retractIfCan setelt
+   sign size size? sup swap! unitVector zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DIRPROD</td></tr>
+<tr><td>Full name: </td><td class="full">DirectProduct</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DirectProductCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span>
+   <span class="teletype">=</span> D abs any? characteristic coerce copy count differentiate dimension directProduct dot elt empty empty? entries
+   entry? eq? every? fill! first index index? indices less? lookup map map! max maxIndex member? members min minIndex
+   more? negative? one? parts positive? qelt qsetelt! random recip reducedSystem retract retractIfCan setelt sign size
+   size? sup swap! unitVector zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DMP</td></tr>
+<tr><td>Full name: </td><td class="full">DistributedMultivariatePolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PolynomialCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">   &lt;</span> <span class="teletype">=</span> D associates? characteristic charthRoot coefficient coefficients coerce conditionP const content convert
+   degree differentiate discriminant eval exquo factor factorPolynomial factorSquareFreePolynomial gcd gcdPolynomial
+   ground ground? isExpt isPlus isTimes lcm leadingCoefficient leadingMonomial mainVariable map mapExponents max min
+   minimumDegree monicDivide monomial monomial? monomials multivariate numberOfMonomials one? prime? primitiveMonomials
+   primitivePart recip reducedSystem reductum reorder resultant retract retractIfCan solveLinearPolynomialEquation
+   squareFree squareFreePart squareFreePolynomial totalDegree unit? unitCanonical unitNormal univariate variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DROPT</td></tr>
+<tr><td>Full name: </td><td class="full">DrawOption</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> adaptive clip coerce colorFunction coordinate coordinates curveColor
+   option option? pointColor range ranges space style title toScale tubePoints tubeRadius unit var1Steps var2Steps</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EFULS</td></tr>
+<tr><td>Full name: </td><td class="full">ElementaryFunctionsUnivariateLaurentSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PartialTranscendentalFunctions</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> acos acosIfCan
+   acosh acoshIfCan acot acotIfCan acoth acothIfCan acsc acscIfCan acsch acschIfCan asec asecIfCan asech asechIfCan asin
+   asinIfCan asinh asinhIfCan atan atanIfCan atanh atanhIfCan cos cosIfCan cosh coshIfCan cot cotIfCan coth cothIfCan csc
+   cscIfCan csch cschIfCan exp expIfCan log logIfCan nthRootIfCan sec secIfCan sech sechIfCan sin sinIfCan sinh sinhIfCan
+   tan tanIfCan tanh tanhIfCan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EFUPXS</td></tr>
+<tr><td>Full name: </td><td class="full">ElementaryFunctionsUnivariatePuiseuxSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PartialTranscendentalFunctions</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> acos acosIfCan
+   acosh acoshIfCan acot acotIfCan acoth acothIfCan acsc acscIfCan acsch acschIfCan asec asecIfCan asech asechIfCan asin
+   asinIfCan asinh asinhIfCan atan atanIfCan atanh atanhIfCan cos cosIfCan cosh coshIfCan cot cotIfCan coth cothIfCan csc
+   cscIfCan csch cschIfCan exp expIfCan log logIfCan nthRootIfCan sec secIfCan sech sechIfCan sin sinIfCan sinh sinhIfCan
+   tan tanIfCan tanh tanhIfCan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EQTBL</td></tr>
+<tr><td>Full name: </td><td class="full">EqTable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TableAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag coerce construct copy count dictionary elt empty
+   empty? entries entry? eq? every? extract! fill! find first index? indices insert! inspect key? keys less? map map!
+   maxIndex member? members minIndex more? parts qelt qsetelt! reduce remove remove! removeDuplicates search select
+   select! setelt size? swap! table</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EQ</td></tr>
+<tr><td>Full name: </td><td class="full">Equation</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo InnerEvalable Object SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> coerce
+   equation eval lhs map rhs</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EMR</td></tr>
+<tr><td>Full name: </td><td class="full">EuclideanModularRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">EuclideanDomain</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> associates?
+   characteristic coerce divide euclideanSize exQuo expressIdealMember exquo extendedEuclidean gcd inv lcm modulus
+   multiEuclidean one? principalIdeal quo recip reduce rem sizeLess? unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EXIT</td></tr>
+<tr><td>Full name: </td><td class="full">Exit</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EXPR</td></tr>
+<tr><td>Full name: </td><td class="full">Expression</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AlgebraicallyClosedFunctionSpace CombinatorialOpsCategory FunctionSpace
+   LiouvillianFunctionCategory RetractableTo SpecialFunctionCategory TranscendentalFunctionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span>
+   <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> Beta Ci D Ei Gamma Si abs acos acosh acot acoth acsc acsch airyAi airyBi
+   applyQuote asec asech asin asinh associates? atan atanh belong? besselI besselJ besselK besselY binomial box
+   characteristic charthRoot coerce commutator conjugate convert cos cosh cot coth csc csch definingPolynomial denom
+   denominator differentiate digamma dilog distribute divide elt erf euclideanSize eval exp expressIdealMember exquo
+   extendedEuclidean factor factorial factorials freeOf? gcd ground ground? height integral inv is? isExpt isMult isPlus
+   isPower isTimes kernel kernels lcm li log mainKernel map max min minPoly multiEuclidean nthRoot numer numerator one?
+   operator operators paren patternMatch permutation pi polygamma prime? principalIdeal product quo recip reduce
+   reducedSystem rem retract retractIfCan rootOf rootsOf sec sech sin sinh sizeLess? sqrt squareFree squareFreePart subst
+   summation tan tanh tower unit? unitCanonical unitNormal univariate variables zero? zeroOf zerosOf</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EAB</td></tr>
+<tr><td>Full name: </td><td class="full">ExtAlgBasis</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> Nul coerce degree exponents max min</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FR</td></tr>
+<tr><td>Full name: </td><td class="full">Factored</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra DifferentialExtension Eltable Evalable FullyEvalableOver FullyRetractableTo GcdDomain
+   InnerEvalable IntegralDomain RealConstant UniqueFactorizationDomain</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> D
+   associates? characteristic coerce convert differentiate elt eval expand exponent exquo factor factorList factors
+   flagFactor gcd irreducibleFactor lcm makeFR map nilFactor nthExponent nthFactor nthFlag numberOfFactors one? prime?
+   primeFactor rational rational? rationalIfCan recip retract retractIfCan sqfrFactor squareFree squareFreePart unit unit?
+   unitCanonical unitNormal unitNormalize zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FNAME</td></tr>
+<tr><td>Full name: </td><td class="full">FileName</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FileNameCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce directory exists? extension filename name new readable?
+   writable?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FILE</td></tr>
+<tr><td>Full name: </td><td class="full">File</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FileCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> close! coerce iomode name open read! readIfCan! reopen! write!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FDIV</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteDivisor</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> algsplit coerce divisor finiteBasis
+   generator ideal lSpaceBasis mkBasicDiv principal? reduce zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFCGP</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldCyclicGroupExtensionByPolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">   +</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP
+   coordinates createNormalElement createPrimitiveElement definingPolynomial degree dimension discreteLog divide
+   euclideanSize expressIdealMember exquo extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator
+   getZechTable inGroundField? index init inv lcm lookup minimalPolynomial multiEuclidean nextItem norm normal?
+   normalElement one? order prime? primeFrobenius primitive? primitiveElement principalIdeal quo random recip rem
+   representationType represents retract retractIfCan size sizeLess? squareFree squareFreePart tableForDiscreteLogarithm
+   trace transcendenceDegree transcendent? unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFCGX</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldCyclicGroupExtension</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span>
+   <span class="teletype">/</span> <span class="teletype">=</span> Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP coordinates
+   createNormalElement createPrimitiveElement definingPolynomial degree dimension discreteLog divide euclideanSize
+   expressIdealMember exquo extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator getZechTable
+   inGroundField? index init inv lcm lookup minimalPolynomial multiEuclidean nextItem norm normal? normalElement one?
+   order prime? primeFrobenius primitive? primitiveElement principalIdeal quo random recip rem representationType
+   represents retract retractIfCan size sizeLess? squareFree squareFreePart tableForDiscreteLogarithm trace
+   transcendenceDegree transcendent? unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFCG</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldCyclicGroup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">   =</span> Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP coordinates createNormalElement
+   createPrimitiveElement definingPolynomial degree dimension discreteLog divide euclideanSize expressIdealMember exquo
+   extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator getZechTable inGroundField? index init
+   inv lcm lookup minimalPolynomial multiEuclidean nextItem norm normal? normalElement one? order prime? primeFrobenius
+   primitive? primitiveElement principalIdeal quo random recip rem representationType represents retract retractIfCan size
+   sizeLess? squareFree squareFreePart tableForDiscreteLogarithm trace transcendenceDegree transcendent? unit?
+   unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFP</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldExtensionByPolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span>
+   <span class="teletype">/</span> <span class="teletype">=</span> Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP coordinates
+   createNormalElement createPrimitiveElement definingPolynomial degree dimension discreteLog divide euclideanSize
+   expressIdealMember exquo extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator inGroundField?
+   index init inv lcm lookup minimalPolynomial multiEuclidean nextItem norm normal? normalElement one? order prime?
+   primeFrobenius primitive? primitiveElement principalIdeal quo random recip rem representationType represents retract
+   retractIfCan size sizeLess? squareFree squareFreePart tableForDiscreteLogarithm trace transcendenceDegree transcendent?
+   unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFX</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldExtension</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span>
+   Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP coordinates createNormalElement
+   createPrimitiveElement definingPolynomial degree dimension discreteLog divide euclideanSize expressIdealMember exquo
+   extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator inGroundField? index init inv lcm
+   lookup minimalPolynomial multiEuclidean nextItem norm normal? normalElement one? order prime? primeFrobenius primitive?
+   primitiveElement principalIdeal quo random recip rem representationType represents retract retractIfCan size sizeLess?
+   squareFree squareFreePart tableForDiscreteLogarithm trace transcendenceDegree transcendent? unit? unitCanonical
+   unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFNBP</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldNormalBasisExtensionByPolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">   +</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP
+   coordinates createNormalElement createPrimitiveElement definingPolynomial degree dimension discreteLog divide
+   euclideanSize expressIdealMember exquo extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator
+   getMultiplicationMatrix getMultiplicationTable inGroundField? index init inv lcm lookup minimalPolynomial
+   multiEuclidean nextItem norm normal? normalElement one? order prime? primeFrobenius primitive? primitiveElement
+   principalIdeal quo random recip rem representationType represents retract retractIfCan size sizeLess?
+   sizeMultiplication squareFree squareFreePart tableForDiscreteLogarithm trace transcendenceDegree transcendent? unit?
+   unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFNBX</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldNormalBasisExtension</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span>
+   <span class="teletype">/</span> <span class="teletype">=</span> Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP coordinates
+   createNormalElement createPrimitiveElement definingPolynomial degree dimension discreteLog divide euclideanSize
+   expressIdealMember exquo extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator
+   getMultiplicationMatrix getMultiplicationTable inGroundField? index init inv lcm lookup minimalPolynomial
+   multiEuclidean nextItem norm normal? normalElement one? order prime? primeFrobenius primitive? primitiveElement
+   principalIdeal quo random recip rem representationType represents retract retractIfCan size sizeLess?
+   sizeMultiplication squareFree squareFreePart tableForDiscreteLogarithm trace transcendenceDegree transcendent? unit?
+   unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFNB</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldNormalBasis</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">   =</span> Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP coordinates createNormalElement
+   createPrimitiveElement definingPolynomial degree dimension discreteLog divide euclideanSize expressIdealMember exquo
+   extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator getMultiplicationMatrix
+   getMultiplicationTable inGroundField? index init inv lcm lookup minimalPolynomial multiEuclidean nextItem norm normal?
+   normalElement one? order prime? primeFrobenius primitive? primitiveElement principalIdeal quo random recip rem
+   representationType represents retract retractIfCan size sizeLess? sizeMultiplication squareFree squareFreePart
+   tableForDiscreteLogarithm trace transcendenceDegree transcendent? unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FF</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteField</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> Frobenius
+   algebraic? associates? basis characteristic charthRoot coerce conditionP coordinates createNormalElement
+   createPrimitiveElement definingPolynomial degree dimension discreteLog divide euclideanSize expressIdealMember exquo
+   extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator inGroundField? index init inv lcm
+   lookup minimalPolynomial multiEuclidean nextItem norm normal? normalElement one? order prime? primeFrobenius primitive?
+   primitiveElement principalIdeal quo random recip rem representationType represents retract retractIfCan size sizeLess?
+   squareFree squareFreePart tableForDiscreteLogarithm trace transcendenceDegree transcendent? unit? unitCanonical
+   unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FARRAY</td></tr>
+<tr><td>Full name: </td><td class="full">FlexibleArray</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ExtensibleLinearAggregate OneDimensionalArrayAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any?
+   coerce concat concat! construct convert copy copyInto! count delete delete! elt empty empty? entries entry? eq? every?
+   fill! find first flexibleArray index? indices insert insert! less? map map! max maxIndex member? members merge merge!
+   min minIndex more? new parts physicalLength physicalLength! position qelt qsetelt! reduce remove remove!
+   removeDuplicates removeDuplicates! reverse reverse! select select! setelt shrinkable size? sort sort! sorted? swap!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FLOAT</td></tr>
+<tr><td>Full name: </td><td class="full">Float</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo ConvertibleTo DifferentialRing FloatingPointSystem TranscendentalFunctionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0
+   1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs acos acosh acot acoth acsc acsch asec asech asin asinh
+   associates? atan atanh base bits ceiling characteristic coerce convert cos cosh cot coth csc csch decreasePrecision
+   differentiate digits divide euclideanSize exp exp1 exponent expressIdealMember exquo extendedEuclidean factor float
+   floor fractionPart gcd increasePrecision inv lcm log log10 log2 mantissa max min multiEuclidean negative? norm
+   normalize nthRoot one? order outputFixed outputFloating outputGeneral outputSpacing patternMatch pi positive? precision
+   prime? principalIdeal quo rationalApproximation recip relerror rem retract retractIfCan round sec sech shift sign sin
+   sinh sizeLess? sqrt squareFree squareFreePart tan tanh truncate unit? unitCanonical unitNormal wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FRIDEAL</td></tr>
+<tr><td>Full name: </td><td class="full">FractionalIdeal</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Group</td></tr>
+<tr><td>Operations: </td><td class="ops">1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">/</span> <span class="teletype">=</span> basis coerce commutator conjugate denom
+   ideal inv minimize norm numer one? randomLC recip</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FRAC</td></tr>
+<tr><td>Full name: </td><td class="full">Fraction</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QuotientFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs
+   associates? ceiling characteristic charthRoot coerce conditionP convert denom denominator differentiate divide elt
+   euclideanSize eval expressIdealMember exquo extendedEuclidean factor factorPolynomial factorSquareFreePolynomial floor
+   fractionPart gcd gcdPolynomial init inv lcm map max min multiEuclidean negative? nextItem numer numerator one?
+   patternMatch positive? prime? principalIdeal quo random recip reducedSystem rem retract retractIfCan sign sizeLess?
+   solveLinearPolynomialEquation squareFree squareFreePart squareFreePolynomial unit? unitCanonical unitNormal wholePart
+   zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FRMOD</td></tr>
+<tr><td>Full name: </td><td class="full">FramedModule</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Monoid</td></tr>
+<tr><td>Operations: </td><td class="ops">1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">=</span> basis coerce module norm one? recip</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FAGROUP</td></tr>
+<tr><td>Full name: </td><td class="full">FreeAbelianGroup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup FreeAbelianMonoidCategory Module OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span>
+   <span class="teletype">&lt;</span> <span class="teletype">=</span> coefficient coerce highCommonTerms mapCoef mapGen max min nthCoef nthFactor retract retractIfCan size
+   terms zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FAMONOID</td></tr>
+<tr><td>Full name: </td><td class="full">FreeAbelianMonoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FreeAbelianMonoidCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> coefficient coerce
+   highCommonTerms mapCoef mapGen nthCoef nthFactor retract retractIfCan size terms zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FGROUP</td></tr>
+<tr><td>Full name: </td><td class="full">FreeGroup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Group RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">/</span> <span class="teletype">=</span> coerce commutator conjugate factors
+   inv mapExpon mapGen nthExpon nthFactor one? recip retract retractIfCan size</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FM</td></tr>
+<tr><td>Full name: </td><td class="full">FreeModule</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BiModule IndexedDirectProductCategory Module</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> coerce
+   leadingCoefficient leadingSupport map monomial reductum zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FMONOID</td></tr>
+<tr><td>Full name: </td><td class="full">FreeMonoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Monoid OrderedSet RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> coerce divide factors
+   hclf hcrf lquo mapExpon mapGen max min nthExpon nthFactor one? overlap recip retract retractIfCan rquo size</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FNLA</td></tr>
+<tr><td>Full name: </td><td class="full">FreeNilpotentLie</td></tr>
+<tr><td>Belongs to: </td><td class="membs">NonAssociativeAlgebra</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> antiCommutator
+   associator coerce commutator deepExpand dimension generator leftPower rightPower shallowExpand zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FUNCTION</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionCalled</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce name</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GDMP</td></tr>
+<tr><td>Full name: </td><td class="full">GeneralDistributedMultivariatePolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PolynomialCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">   /</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D associates? characteristic charthRoot coefficient coefficients coerce conditionP const content
+   convert degree differentiate discriminant eval exquo factor factorPolynomial factorSquareFreePolynomial gcd
+   gcdPolynomial ground ground? isExpt isPlus isTimes lcm leadingCoefficient leadingMonomial mainVariable map mapExponents
+   max min minimumDegree monicDivide monomial monomial? monomials multivariate numberOfMonomials one? prime?
+   primitiveMonomials primitivePart recip reducedSystem reductum reorder resultant retract retractIfCan
+   solveLinearPolynomialEquation squareFree squareFreePart squareFreePolynomial totalDegree unit? unitCanonical unitNormal
+   univariate variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GSTBL</td></tr>
+<tr><td>Full name: </td><td class="full">GeneralSparseTable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TableAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag coerce construct copy count dictionary
+   elt empty empty? entries entry? eq? every? extract! fill! find first index? indices insert! inspect key? keys less? map
+   map! maxIndex member? members minIndex more? parts qelt qsetelt! reduce remove remove! removeDuplicates search select
+   select! setelt size? swap! table</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GCNAALG</td></tr>
+<tr><td>Full name: </td><td class="full">GenericNonAssociativeAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FramedNonAssociativeAlgebra LeftModule</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">   -</span> <span class="teletype">=</span> JacobiIdentity? JordanAlgebra? alternative? antiAssociative? antiCommutative? antiCommutator apply
+   associative? associator associatorDependence basis coerce commutative? commutator conditionsForIdempotents convert
+   coordinates elt flexible? generic genericLeftDiscriminant genericLeftMinimalPolynomial genericLeftNorm genericLeftTrace
+   genericLeftTraceForm genericRightDiscriminant genericRightMinimalPolynomial genericRightNorm genericRightTrace
+   genericRightTraceForm jordanAdmissible? leftAlternative? leftCharacteristicPolynomial leftDiscriminant
+   leftMinimalPolynomial leftNorm leftPower leftRankPolynomial leftRecip leftRegularRepresentation leftTrace
+   leftTraceMatrix leftUnit leftUnits lieAdmissible? lieAlgebra? noncommutativeJordanAlgebra? plenaryPower
+   powerAssociative? rank recip represents rightAlternative? rightCharacteristicPolynomial rightDiscriminant
+   rightMinimalPolynomial rightNorm rightPower rightRankPolynomial rightRecip rightRegularRepresentation rightTrace
+   rightTraceMatrix rightUnit rightUnits someBasis structuralConstants unit zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GRIMAGE</td></tr>
+<tr><td>Full name: </td><td class="full">GraphImage</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> appendPoint coerce component graphImage key makeGraphImage point
+   pointLists putColorInfo ranges units</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">HASHTBL</td></tr>
+<tr><td>Full name: </td><td class="full">HashTable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TableAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag coerce construct copy count dictionary elt empty
+   empty? entries entry? eq? every? extract! fill! find first index? indices insert! inspect key? keys less? map map!
+   maxIndex member? members minIndex more? parts qelt qsetelt! reduce remove remove! removeDuplicates search select
+   select! setelt size? swap! table</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">HEAP</td></tr>
+<tr><td>Full name: </td><td class="full">Heap</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PriorityQueueAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag coerce copy count empty empty? eq? every?
+   extract! heap insert! inspect less? map map! max member? members merge merge! more? parts size?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">HEXADEC</td></tr>
+<tr><td>Full name: </td><td class="full">HexadecimalExpansion</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QuotientFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span>
+   <span class="teletype">=</span> D abs associates? ceiling characteristic coerce convert denom denominator differentiate divide euclideanSize
+   expressIdealMember exquo extendedEuclidean factor floor fractionPart gcd hex init inv lcm map max min multiEuclidean
+   negative? nextItem numer numerator one? patternMatch positive? prime? principalIdeal quo random recip reducedSystem rem
+   retract retractIfCan sign sizeLess? squareFree squareFreePart unit? unitCanonical unitNormal wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ICARD</td></tr>
+<tr><td>Full name: </td><td class="full">IndexCard</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> coerce display elt fullDisplay max min</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IBITS</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedBits</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BitAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> And Not Or <span class="teletype">\^{}</span> and any? coerce concat
+   construct convert copy copyInto! count delete elt empty empty? entries entry? eq? every? fill! find first index?
+   indices insert less? map map! max maxIndex member? members merge min minIndex more? nand new nor not or parts position
+   qelt qsetelt! reduce remove removeDuplicates reverse reverse! select setelt size? sort sort! sorted? swap! xor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IDPAG</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedDirectProductAbelianGroup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup IndexedDirectProductCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span>
+   <span class="teletype">=</span> coerce leadingCoefficient leadingSupport map monomial reductum zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IDPAM</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedDirectProductAbelianMonoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianMonoid IndexedDirectProductCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">   =</span> coerce leadingCoefficient leadingSupport map monomial reductum zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IDPO</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedDirectProductObject</td></tr>
+<tr><td>Belongs to: </td><td class="membs">IndexedDirectProductCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce leadingCoefficient
+   leadingSupport map monomial reductum</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IDPOAMS</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedDirectProductOrderedAbelianMonoidSup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">IndexedDirectProductCategory OrderedAbelianMonoidSup</td></tr>
+<tr><td>Operations: </td><td class="ops">0
+   <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> coerce leadingCoefficient leadingSupport map max min monomial reductum sup
+   zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IDPOAM</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedDirectProductOrderedAbelianMonoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">IndexedDirectProductCategory OrderedAbelianMonoid</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span>
+   <span class="teletype">+</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> coerce leadingCoefficient leadingSupport map max min monomial reductum zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INDE</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedExponents</td></tr>
+<tr><td>Belongs to: </td><td class="membs">IndexedDirectProductCategory OrderedAbelianMonoidSup</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">   &lt;</span> <span class="teletype">=</span> coerce leadingCoefficient leadingSupport map max min monomial reductum sup zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IFARRAY</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedFlexibleArray</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ExtensibleLinearAggregate OneDimensionalArrayAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">   =</span> any? coerce concat concat! construct convert copy copyInto! count delete delete! elt empty empty? entries entry? eq?
+   every? fill! find first flexibleArray index? indices insert insert! less? map map! max maxIndex member? members merge
+   merge! min minIndex more? new parts physicalLength physicalLength! position qelt qsetelt! reduce remove remove!
+   removeDuplicates removeDuplicates! reverse reverse! select select! setelt shrinkable size? sort sort! sorted? swap!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ILIST</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedList</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ListAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? child? children coerce concat concat!
+   construct convert copy copyInto! count cycleEntry cycleLength cycleSplit! cycleTail cyclic? delete delete! distance elt
+   empty empty? entries entry? eq? every? explicitlyFinite? fill! find first index? indices insert insert! last leaf?
+   less? list map map! max maxIndex member? members merge merge! min minIndex more? new node? nodes parts position
+   possiblyInfinite? qelt qsetelt! reduce remove remove! removeDuplicates removeDuplicates! rest reverse reverse! second
+   select select! setchildren! setelt setfirst! setlast! setrest! setvalue! size? sort sort! sorted? split! swap! tail
+   third value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IMATRIX</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedMatrix</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MatrixCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span>
+   antisymmetric? any? coerce column copy count determinant diagonal? diagonalMatrix elt empty empty? eq? every? exquo
+   fill! horizConcat inverse less? listOfLists map map! matrix maxColIndex maxRowIndex member? members minColIndex
+   minRowIndex minordet more? ncols new nrows nullSpace nullity parts qelt qsetelt! rank row rowEchelon scalarMatrix
+   setColumn! setRow! setelt setsubMatrix! size? square? squareTop subMatrix swapColumns! swapRows! symmetric? transpose
+   vertConcat zero</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IARRAY1</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedOneDimensionalArray</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OneDimensionalArrayAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? coerce concat
+   construct convert copy copyInto! count delete elt empty empty? entries entry? eq? every? fill! find first index?
+   indices insert less? map map! max maxIndex member? members merge min minIndex more? new parts position qelt qsetelt!
+   reduce remove removeDuplicates reverse reverse! select setelt size? sort sort! sorted? swap!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ISTRING</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedString</td></tr>
+<tr><td>Belongs to: </td><td class="membs">StringAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? coerce concat construct copy copyInto!
+   count delete elt empty empty? entries entry? eq? every? fill! find first hash index? indices insert leftTrim less?
+   lowerCase lowerCase! map map! match? max maxIndex member? members merge min minIndex more? new parts position prefix?
+   qelt qsetelt! reduce remove removeDuplicates replace reverse reverse! rightTrim select setelt size? sort sort! sorted?
+   split substring? suffix? swap! trim upperCase upperCase!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IARRAY2</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedTwoDimensionalArray</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TwoDimensionalArrayCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? coerce column copy
+   count elt empty empty? eq? every? fill! less? map map! maxColIndex maxRowIndex member? members minColIndex minRowIndex
+   more? ncols new nrows parts qelt qsetelt! row setColumn! setRow! setelt size?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IVECTOR</td></tr>
+<tr><td>Full name: </td><td class="full">IndexedVector</td></tr>
+<tr><td>Belongs to: </td><td class="membs">VectorCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? coerce concat
+   construct convert copy copyInto! count delete dot elt empty empty? entries entry? eq? every? fill! find first index?
+   indices insert less? map map! max maxIndex member? members merge min minIndex more? new parts position qelt qsetelt!
+   reduce remove removeDuplicates reverse reverse! select setelt size? sort sort! sorted? swap! zero</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ITUPLE</td></tr>
+<tr><td>Full name: </td><td class="full">InfiniteTuple</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce construct filterUntil filterWhile generate map select</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IFF</td></tr>
+<tr><td>Full name: </td><td class="full">InnerFiniteField</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAlgebraicExtensionField</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span>
+   Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP coordinates createNormalElement
+   createPrimitiveElement definingPolynomial degree dimension discreteLog divide euclideanSize expressIdealMember exquo
+   extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator inGroundField? index init inv lcm
+   lookup minimalPolynomial multiEuclidean nextItem norm normal? normalElement one? order prime? primeFrobenius primitive?
+   primitiveElement principalIdeal quo random recip rem representationType represents retract retractIfCan size sizeLess?
+   squareFree squareFreePart tableForDiscreteLogarithm trace transcendenceDegree transcendent? unit? unitCanonical
+   unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IFAMON</td></tr>
+<tr><td>Full name: </td><td class="full">InnerFreeAbelianMonoid</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FreeAbelianMonoidCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> coefficient
+   coerce highCommonTerms mapCoef mapGen nthCoef nthFactor retract retractIfCan size terms zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IIARRAY2</td></tr>
+<tr><td>Full name: </td><td class="full">InnerIndexedTwoDimensionalArray</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TwoDimensionalArrayCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? coerce column
+   copy count elt empty empty? eq? every? fill! less? map map! maxColIndex maxRowIndex member? members minColIndex
+   minRowIndex more? ncols new nrows parts qelt qsetelt! row setColumn! setRow! setelt size?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IPADIC</td></tr>
+<tr><td>Full name: </td><td class="full">InnerPAdicInteger</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PAdicIntegerCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> approximate
+   associates? characteristic coerce complete digits divide euclideanSize expressIdealMember exquo extend
+   extendedEuclidean gcd lcm moduloP modulus multiEuclidean one? order principalIdeal quo quotientByP recip rem sizeLess?
+   sqrt unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IPF</td></tr>
+<tr><td>Full name: </td><td class="full">InnerPrimeField</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo FiniteAlgebraicExtensionField FiniteFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span>
+   <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP
+   convert coordinates createNormalElement createPrimitiveElement definingPolynomial degree dimension discreteLog divide
+   euclideanSize expressIdealMember exquo extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator
+   inGroundField? index init inv lcm lookup minimalPolynomial multiEuclidean nextItem norm normal? normalElement one?
+   order prime? primeFrobenius primitive? primitiveElement principalIdeal quo random recip rem representationType
+   represents retract retractIfCan size sizeLess? squareFree squareFreePart tableForDiscreteLogarithm trace
+   transcendenceDegree transcendent? unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ITAYLOR</td></tr>
+<tr><td>Full name: </td><td class="full">InnerTaylorSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs">IntegralDomain Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> associates?
+   characteristic coefficients coerce exquo one? order pole? recip series unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INFORM</td></tr>
+<tr><td>Full name: </td><td class="full">InputForm</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo SExpressionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">/</span> <span class="teletype">=</span>
+   atom? binary car cdr coerce compile convert declare destruct elt eq expr flatten float float? function integer integer?
+   interpret lambda list? null? pair? string string? symbol symbol? uequal unparse</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ZMOD</td></tr>
+<tr><td>Full name: </td><td class="full">IntegerMod</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CommutativeRing ConvertibleTo Finite StepThrough</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">   =</span> characteristic coerce convert index init lookup nextItem one? random recip size zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INT</td></tr>
+<tr><td>Full name: </td><td class="full">Integer</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo IntegerNumberSystem</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs
+   addmod associates? base binomial bit? characteristic coerce convert copy dec differentiate divide euclideanSize even?
+   expressIdealMember exquo extendedEuclidean factor factorial gcd hash inc init invmod lcm length mask max min mulmod
+   multiEuclidean negative? nextItem odd? one? patternMatch permutation positive? positiveRemainder powmod prime?
+   principalIdeal quo random rational rational? rationalIfCan recip reducedSystem rem retract retractIfCan shift sign
+   sizeLess? squareFree squareFreePart submod symmetricRemainder unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IR</td></tr>
+<tr><td>Full name: </td><td class="full">IntegrationResult</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Module RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> D coerce differentiate elem?
+   integral logpart mkAnswer notelem ratpart retract retractIfCan zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">KERNEL</td></tr>
+<tr><td>Full name: </td><td class="full">Kernel</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CachableSet ConvertibleTo Patternable</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> argument coerce convert height is?
+   kernel max min name operator position setPosition symbolIfCan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">KAFILE</td></tr>
+<tr><td>Full name: </td><td class="full">KeyedAccessFile</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FileCategory TableAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag close! coerce construct copy
+   count dictionary elt empty empty? entries entry? eq? every? extract! fill! find first index? indices insert! inspect
+   iomode key? keys less? map map! maxIndex member? members minIndex more? name open pack! parts qelt qsetelt! read!
+   reduce remove remove! removeDuplicates reopen! search select select! setelt size? swap! table write!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LAUPOL</td></tr>
+<tr><td>Full name: </td><td class="full">LaurentPolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CharacteristicNonZero CharacteristicZero ConvertibleTo DifferentialExtension
+   EuclideanDomain FullyRetractableTo IntegralDomain RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> D
+   associates? characteristic charthRoot coefficient coerce convert degree differentiate divide euclideanSize
+   expressIdealMember exquo extendedEuclidean gcd lcm leadingCoefficient monomial monomial? multiEuclidean one? order
+   principalIdeal quo recip reductum rem retract retractIfCan separate sizeLess? trailingCoefficient unit? unitCanonical
+   unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LIB</td></tr>
+<tr><td>Full name: </td><td class="full">Library</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TableAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag coerce construct copy count dictionary elt empty
+   empty? entries entry? eq? every? extract! fill! find first index? indices insert! inspect key? keys less? library map
+   map! maxIndex member? members minIndex more? pack! parts qelt qsetelt! reduce remove remove! removeDuplicates search
+   select select! setelt size? swap! table</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LSQM</td></tr>
+<tr><td>Full name: </td><td class="full">LieSquareMatrix</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo FramedNonAssociativeAlgebra SquareMatrixCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">   **</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> D JacobiIdentity? JordanAlgebra? alternative? antiAssociative? antiCommutative?
+   antiCommutator antisymmetric? any? apply associative? associator associatorDependence basis characteristic coerce
+   column commutative? commutator conditionsForIdempotents convert coordinates copy count determinant diagonal diagonal?
+   diagonalMatrix diagonalProduct differentiate elt empty empty? eq? every? exquo flexible? inverse jordanAdmissible?
+   leftAlternative? leftCharacteristicPolynomial leftDiscriminant leftMinimalPolynomial leftNorm leftPower
+   leftRankPolynomial leftRecip leftRegularRepresentation leftTrace leftTraceMatrix leftUnit leftUnits less?
+   lieAdmissible? lieAlgebra? listOfLists map map! matrix maxColIndex maxRowIndex member? members minColIndex minRowIndex
+   minordet more? ncols noncommutativeJordanAlgebra? nrows nullSpace nullity one? parts plenaryPower powerAssociative?
+   qelt rank recip reducedSystem represents retract retractIfCan rightAlternative? rightCharacteristicPolynomial
+   rightDiscriminant rightMinimalPolynomial rightNorm rightPower rightRankPolynomial rightRecip rightRegularRepresentation
+   rightTrace rightTraceMatrix rightUnit rightUnits row rowEchelon scalarMatrix size? someBasis square?
+   structuralConstants symmetric? trace unit zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LODO</td></tr>
+<tr><td>Full name: </td><td class="full">LinearOrdinaryDifferentialOperator</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MonogenicLinearOperator</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">   =</span> D characteristic coefficient coerce degree elt leadingCoefficient leftDivide leftExactQuotient leftGcd leftLcm
+   leftQuotient leftRemainder minimumDegree monomial one? recip reductum rightDivide rightExactQuotient rightGcd rightLcm
+   rightQuotient rightRemainder zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LMOPS</td></tr>
+<tr><td>Full name: </td><td class="full">ListMonoidOps</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RetractableTo SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce leftMult listOfMonoms makeMulti makeTerm
+   makeUnit mapExpon mapGen nthExpon nthFactor outputForm plus retract retractIfCan reverse reverse! rightMult size</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LMDICT</td></tr>
+<tr><td>Full name: </td><td class="full">ListMultiDictionary</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MultiDictionary</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag coerce construct convert copy count
+   dictionary duplicates duplicates? empty empty? eq? every? extract! find insert! inspect less? map map! member? members
+   more? parts reduce remove remove! removeDuplicates removeDuplicates! select select! size? substitute</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LIST</td></tr>
+<tr><td>Full name: </td><td class="full">List</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ListAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? append child? children coerce concat concat! cons
+   construct convert copy copyInto! count cycleEntry cycleLength cycleSplit! cycleTail cyclic? delete delete! distance elt
+   empty empty? entries entry? eq? every? explicitlyFinite? fill! find first index? indices insert insert! last leaf?
+   less? list map map! max maxIndex member? members merge merge! min minIndex more? new nil node? nodes null parts
+   position possiblyInfinite? qelt qsetelt! reduce remove remove! removeDuplicates removeDuplicates! rest reverse reverse!
+   second select select! setDifference setIntersection setUnion setchildren! setelt setfirst! setlast! setrest! setvalue!
+   size? sort sort! sorted? split! swap! tail third value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LA</td></tr>
+<tr><td>Full name: </td><td class="full">LocalAlgebra</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra OrderedRing</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> abs
+   characteristic coerce denom max min negative? numer one? positive? recip sign zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LO</td></tr>
+<tr><td>Full name: </td><td class="full">Localize</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Module OrderedAbelianGroup</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> coerce denom max
+   min numer zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MKCHSET</td></tr>
+<tr><td>Full name: </td><td class="full">MakeCachableSet</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CachableSet CoercibleTo</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> coerce max min position setPosition</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MKODRING</td></tr>
+<tr><td>Full name: </td><td class="full">MakeOrdinaryDifferentialRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo DifferentialRing</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span>
+   <span class="teletype">=</span> D characteristic coerce differentiate one? recip zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MATRIX</td></tr>
+<tr><td>Full name: </td><td class="full">Matrix</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MatrixCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> antisymmetric? any?
+   coerce column copy count determinant diagonal? diagonalMatrix elt empty empty? eq? every? exquo fill! horizConcat
+   inverse less? listOfLists map map! matrix maxColIndex maxRowIndex member? members minColIndex minRowIndex minordet
+   more? ncols new nrows nullSpace nullity parts qelt qsetelt! rank row rowEchelon scalarMatrix setColumn! setRow! setelt
+   setsubMatrix! size? square? squareTop subMatrix swapColumns! swapRows! symmetric? transpose vertConcat zero</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MODMON</td></tr>
+<tr><td>Full name: </td><td class="full">ModMonic</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Finite UnivariatePolynomialCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span>
+   <span class="teletype">=</span> An D UnVectorise Vectorise associates? characteristic charthRoot coefficient coefficients coerce composite
+   computePowers conditionP content degree differentiate discriminant divide divideExponents elt euclideanSize eval
+   expressIdealMember exquo extendedEuclidean factor factorPolynomial factorSquareFreePolynomial gcd gcdPolynomial ground
+   ground? index init integrate isExpt isPlus isTimes lcm leadingCoefficient leadingMonomial lift lookup mainVariable
+   makeSUP map mapExponents max min minimumDegree modulus monicDivide monomial monomial? monomials multiEuclidean
+   multiplyExponents multivariate nextItem numberOfMonomials one? order pow prime? primitiveMonomials primitivePart
+   principalIdeal pseudoDivide pseudoQuotient pseudoRemainder quo random recip reduce reducedSystem reductum rem resultant
+   retract retractIfCan separate setPoly size sizeLess? solveLinearPolynomialEquation squareFree squareFreePart
+   squareFreePolynomial subResultantGcd totalDegree unit? unitCanonical unitNormal univariate unmakeSUP variables
+   vectorise zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MODFIELD</td></tr>
+<tr><td>Full name: </td><td class="full">ModularField</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Field</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> associates? characteristic
+   coerce divide euclideanSize exQuo expressIdealMember exquo extendedEuclidean factor gcd inv lcm modulus multiEuclidean
+   one? prime? principalIdeal quo recip reduce rem sizeLess? squareFree squareFreePart unit? unitCanonical unitNormal
+   zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MODRING</td></tr>
+<tr><td>Full name: </td><td class="full">ModularRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> characteristic coerce exQuo inv
+   modulus one? recip reduce zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MOEBIUS</td></tr>
+<tr><td>Full name: </td><td class="full">MoebiusTransform</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Group</td></tr>
+<tr><td>Operations: </td><td class="ops">1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">/</span> <span class="teletype">=</span> coerce commutator conjugate eval inv
+   moebius one? recip scale shift</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MRING</td></tr>
+<tr><td>Full name: </td><td class="full">MonoidRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra CharacteristicNonZero CharacteristicZero Finite RetractableTo Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span>
+   <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> characteristic charthRoot coefficient coefficients coerce index leadingCoefficient
+   leadingMonomial lookup map monomial monomial? monomials numberOfMonomials one? random recip reductum retract
+   retractIfCan size terms zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MSET</td></tr>
+<tr><td>Full name: </td><td class="full">Multiset</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MultiSetAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? bag brace coerce construct convert copy count
+   dictionary difference duplicates empty empty? eq? every? extract! find insert! inspect intersect less? map map! member?
+   members more? multiset parts reduce remove remove! removeDuplicates removeDuplicates! select select! size? subset?
+   symmetricDifference union</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MPOLY</td></tr>
+<tr><td>Full name: </td><td class="full">MultivariatePolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PolynomialCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">   =</span> D associates? characteristic charthRoot coefficient coefficients coerce conditionP content convert degree
+   differentiate discriminant eval exquo factor factorPolynomial factorSquareFreePolynomial gcd gcdPolynomial ground
+   ground? isExpt isPlus isTimes lcm leadingCoefficient leadingMonomial mainVariable map mapExponents max min
+   minimumDegree monicDivide monomial monomial? monomials multivariate numberOfMonomials one? prime? primitiveMonomials
+   primitivePart recip reducedSystem reductum resultant retract retractIfCan solveLinearPolynomialEquation squareFree
+   squareFreePart squareFreePolynomial totalDegree unit? unitCanonical unitNormal univariate variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NDP</td></tr>
+<tr><td>Full name: </td><td class="full">NewDirectProduct</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DirectProductCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span>
+   <span class="teletype">=</span> D abs any? characteristic coerce copy count differentiate dimension directProduct dot elt empty empty? entries
+   entry? eq? every? fill! first index index? indices less? lookup map map! max maxIndex member? members min minIndex
+   more? negative? one? parts positive? qelt qsetelt! random recip reducedSystem retract retractIfCan setelt sign size
+   size? sup swap! unitVector zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NDMP</td></tr>
+<tr><td>Full name: </td><td class="full">NewDistributedMultivariatePolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PolynomialCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span>
+   <span class="teletype">&lt;</span> <span class="teletype">=</span> D associates? characteristic charthRoot coefficient coefficients coerce conditionP const content
+   convert degree differentiate discriminant eval exquo factor factorPolynomial factorSquareFreePolynomial gcd
+   gcdPolynomial ground ground? isExpt isPlus isTimes lcm leadingCoefficient leadingMonomial mainVariable map mapExponents
+   max min minimumDegree monicDivide monomial monomial? monomials multivariate numberOfMonomials one? prime?
+   primitiveMonomials primitivePart recip reducedSystem reductum reorder resultant retract retractIfCan
+   solveLinearPolynomialEquation squareFree squareFreePart squareFreePolynomial totalDegree unit? unitCanonical unitNormal
+   univariate variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NONE</td></tr>
+<tr><td>Full name: </td><td class="full">None</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NNI</td></tr>
+<tr><td>Full name: </td><td class="full">NonNegativeInteger</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Monoid OrderedAbelianMonoidSup</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span>
+   coerce divide exquo gcd max min one? quo recip rem sup zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OCT</td></tr>
+<tr><td>Full name: </td><td class="full">Octonion</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FullyRetractableTo OctonionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> abs
+   characteristic charthRoot coerce conjugate convert elt eval imagE imagI imagJ imagK imagi imagj imagk index inv lookup
+   map max min norm octon one? random rational rational? rationalIfCan real recip retract retractIfCan size zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ARRAY1</td></tr>
+<tr><td>Full name: </td><td class="full">OneDimensionalArray</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OneDimensionalArrayAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? coerce concat
+   construct convert copy copyInto! count delete elt empty empty? entries entry? eq? every? fill! find first index?
+   indices insert less? map map! max maxIndex member? members merge min minIndex more? new oneDimensionalArray parts
+   position qelt qsetelt! reduce remove removeDuplicates reverse reverse! select setelt size? sort sort! sorted? swap!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ONECOMP</td></tr>
+<tr><td>Full name: </td><td class="full">OnePointCompletion</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup FullyRetractableTo OrderedRing SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span>
+   <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> abs characteristic coerce finite? infinite? infinity max min negative? one? positive?
+   rational rational? rationalIfCan recip retract retractIfCan sign zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OP</td></tr>
+<tr><td>Full name: </td><td class="full">Operator</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra CharacteristicNonZero CharacteristicZero Eltable RetractableTo Ring</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">   **</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> characteristic charthRoot coerce elt evaluate one? opeval recip retract retractIfCan zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OMLO</td></tr>
+<tr><td>Full name: </td><td class="full">OppositeMonogenicLinearOperator</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DifferentialRing MonogenicLinearOperator</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span>
+   <span class="teletype">-</span> <span class="teletype">=</span> D characteristic coefficient coerce degree differentiate leadingCoefficient minimumDegree monomial one?
+   op po recip reductum zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ORDCOMP</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedCompletion</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup FullyRetractableTo OrderedRing SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">   +</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> abs characteristic coerce finite? infinite? max min minusInfinity negative? one?
+   plusInfinity positive? rational rational? rationalIfCan recip retract retractIfCan sign whatInfinity zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODP</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedDirectProduct</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DirectProductCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">   &lt;</span> <span class="teletype">=</span> D abs any? characteristic coerce copy count differentiate dimension directProduct dot elt empty empty?
+   entries entry? eq? every? fill! first index index? indices less? lookup map map! max maxIndex member? members min
+   minIndex more? negative? one? parts positive? qelt qsetelt! random recip reducedSystem retract retractIfCan setelt sign
+   size size? sup swap! unitVector zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OVAR</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedVariableList</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo OrderedFinite</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> coerce convert index lookup max min
+   random size variable</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODPOL</td></tr>
+<tr><td>Full name: </td><td class="full">OrderlyDifferentialPolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DifferentialPolynomialCategory RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">   +</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D associates? characteristic charthRoot coefficient coefficients coerce conditionP
+   content degree differentialVariables differentiate discriminant eval exquo factor factorPolynomial
+   factorSquareFreePolynomial gcd gcdPolynomial ground ground? initial isExpt isPlus isTimes isobaric? lcm leader
+   leadingCoefficient leadingMonomial mainVariable makeVariable map mapExponents max min minimumDegree monicDivide
+   monomial monomial? monomials multivariate numberOfMonomials one? order prime? primitiveMonomials primitivePart recip
+   reducedSystem reductum resultant retract retractIfCan separant solveLinearPolynomialEquation squareFree squareFreePart
+   squareFreePolynomial totalDegree unit? unitCanonical unitNormal univariate variables weight weights zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODVAR</td></tr>
+<tr><td>Full name: </td><td class="full">OrderlyDifferentialVariable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DifferentialVariableCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> D coerce differentiate
+   makeVariable max min order retract retractIfCan variable weight</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODR</td></tr>
+<tr><td>Full name: </td><td class="full">OrdinaryDifferentialRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra DifferentialRing Field</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span>
+   <span class="teletype">=</span> D associates? characteristic coerce differentiate divide euclideanSize expressIdealMember exquo
+   extendedEuclidean factor gcd inv lcm multiEuclidean one? prime? principalIdeal quo recip rem sizeLess? squareFree
+   squareFreePart unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OSI</td></tr>
+<tr><td>Full name: </td><td class="full">OrdSetInts</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> coerce max min value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OUTFORM</td></tr>
+<tr><td>Full name: </td><td class="full">OutputForm</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">&lt;=</span> <span class="teletype">=</span> <span class="teletype">></span>
+   <span class="teletype">>=</span> D SEGMENT <span class="teletype">\^{}=</span> and assign blankSeparate box brace bracket center coerce commaSeparate differentiate div
+   dot elt empty exquo hconcat height hspace infix infix? int label left matrix message messagePrint not or outputForm
+   over overbar paren pile postfix prefix presub presuper prime print prod quo quote rarrow rem right root rspace scripts
+   semicolonSeparate slash string sub subHeight sum super superHeight supersub vconcat vspace width zag</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PADIC</td></tr>
+<tr><td>Full name: </td><td class="full">PAdicInteger</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PAdicIntegerCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> approximate
+   associates? characteristic coerce complete digits divide euclideanSize expressIdealMember exquo extend
+   extendedEuclidean gcd lcm moduloP modulus multiEuclidean one? order principalIdeal quo quotientByP recip rem sizeLess?
+   sqrt unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PADICRC</td></tr>
+<tr><td>Full name: </td><td class="full">PAdicRationalConstructor</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QuotientFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span>
+   <span class="teletype">=</span> D abs approximate associates? ceiling characteristic charthRoot coerce conditionP continuedFraction convert
+   denom denominator differentiate divide elt euclideanSize eval expressIdealMember exquo extendedEuclidean factor
+   factorPolynomial factorSquareFreePolynomial floor fractionPart gcd gcdPolynomial init inv lcm map max min
+   multiEuclidean negative? nextItem numer numerator one? patternMatch positive? prime? principalIdeal quo random recip
+   reducedSystem rem removeZeroes retract retractIfCan sign sizeLess? solveLinearPolynomialEquation squareFree
+   squareFreePart squareFreePolynomial unit? unitCanonical unitNormal wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PADICRAT</td></tr>
+<tr><td>Full name: </td><td class="full">PAdicRational</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QuotientFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> D
+   approximate associates? characteristic coerce continuedFraction denom denominator differentiate divide euclideanSize
+   expressIdealMember exquo extendedEuclidean factor fractionPart gcd inv lcm map multiEuclidean numer numerator one?
+   prime? principalIdeal quo recip reducedSystem rem removeZeroes retract retractIfCan sizeLess? squareFree squareFreePart
+   unit? unitCanonical unitNormal wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PALETTE</td></tr>
+<tr><td>Full name: </td><td class="full">Palette</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> bright coerce dark dim hue light pastel shade</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PARPCURV</td></tr>
+<tr><td>Full name: </td><td class="full">ParametricPlaneCurve</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coordinate curve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PARSCURV</td></tr>
+<tr><td>Full name: </td><td class="full">ParametricSpaceCurve</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coordinate curve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PARSURF</td></tr>
+<tr><td>Full name: </td><td class="full">ParametricSurface</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coordinate surface</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PFR</td></tr>
+<tr><td>Full name: </td><td class="full">PartialFraction</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Algebra Field</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> associates?
+   characteristic coerce compactFraction divide euclideanSize expressIdealMember exquo extendedEuclidean factor firstDenom
+   firstNumer gcd inv lcm multiEuclidean nthFractionalTerm numberOfFractionalTerms one? padicFraction padicallyExpand
+   partialFraction prime? principalIdeal quo recip rem sizeLess? squareFree squareFreePart unit? unitCanonical unitNormal
+   wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PRTITION</td></tr>
+<tr><td>Full name: </td><td class="full">Partition</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo OrderedCancellationAbelianMonoid</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span>
+   coerce conjugate convert max min partition pdct powers zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PATLRES</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchListResult</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> atoms coerce failed failed? lists makeResult new</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PATRES</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchResult</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> addMatch addMatchRestricted coerce construct destruct failed
+   failed? getMatch insertMatch new satisfy? union</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PATTERN</td></tr>
+<tr><td>Full name: </td><td class="full">Pattern</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RetractableTo SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">/</span> <span class="teletype">=</span> addBadValue coerce
+   constant? convert copy depth elt generic? getBadValues hasPredicate? hasTopPredicate? inR? isExpt isList isOp isPlus
+   isPower isQuotient isTimes multiple? optional? optpair patternVariable predicates quoted? resetBadValues retract
+   retractIfCan setPredicates setTopPredicate symbol? topPredicate variables withPredicates</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PENDTREE</td></tr>
+<tr><td>Full name: </td><td class="full">PendantTree</td></tr>
+<tr><td>Belongs to: </td><td class="membs">BinaryRecursiveAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? children coerce copy count cyclic? elt
+   empty empty? eq? every? leaf? leaves left less? map map! member? members more? node? nodes parts ptree right
+   setchildren! setelt setleft! setright! setvalue! size? value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PERMGRP</td></tr>
+<tr><td>Full name: </td><td class="full">PermutationGroup</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">&lt;=</span> <span class="teletype">=</span> base coerce degree elt generators
+   initializeGroupForWordProblem member? movedPoints orbit orbits order permutationGroup random strongGenerators
+   wordInGenerators wordInStrongGenerators wordsForStrongGenerators</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PERM</td></tr>
+<tr><td>Full name: </td><td class="full">Permutation</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PermutationCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> coerce coerceImages
+   coerceListOfPairs coercePreimagesImages commutator conjugate cycle cyclePartition cycles degree elt eval even?
+   fixedPoints inv listRepresentation max min movedPoints numberOfCycles odd? one? orbit order recip sign sort</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">HACKPI</td></tr>
+<tr><td>Full name: </td><td class="full">Pi</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CharacteristicZero CoercibleTo ConvertibleTo Field RealConstant RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">   **</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> associates? characteristic coerce convert divide euclideanSize expressIdealMember
+   exquo extendedEuclidean factor gcd inv lcm multiEuclidean one? pi prime? principalIdeal quo recip rem retract
+   retractIfCan sizeLess? squareFree squareFreePart unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ACPLOT</td></tr>
+<tr><td>Full name: </td><td class="full">PlaneAlgebraicCurvePlot</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PlottablePlaneCurveCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce listBranches makeSketch refine xRange
+   yRange</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PLOT3D</td></tr>
+<tr><td>Full name: </td><td class="full">Plot3D</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PlottableSpaceCurveCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">adaptive3D? coerce debug3D listBranches maxPoints3D minPoints3D
+   numFunEvals3D plot pointPlot refine screenResolution3D setAdaptive3D setMaxPoints3D setMinPoints3D
+   setScreenResolution3D tRange tValues xRange yRange zRange zoom</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PLOT</td></tr>
+<tr><td>Full name: </td><td class="full">Plot</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PlottablePlaneCurveCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">adaptive? coerce debug listBranches maxPoints minPoints numFunEvals
+   parametric? plot plotPolar pointPlot refine screenResolution setAdaptive setMaxPoints setMinPoints setScreenResolution
+   tRange xRange yRange zoom</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">POINT</td></tr>
+<tr><td>Full name: </td><td class="full">Point</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PointCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? coerce concat construct
+   convert copy copyInto! count cross delete dimension dot elt empty empty? entries entry? eq? every? extend fill! find
+   first index? indices insert length less? map map! max maxIndex member? members merge min minIndex more? new parts point
+   position qelt qsetelt! reduce remove removeDuplicates reverse reverse! select setelt size? sort sort! sorted? swap!
+   zero</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IDEAL</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialIdeals</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">=</span> backOldPos coerce contract dimension
+   element? generalPosition generators groebner groebner? groebnerIdeal ideal in? inRadical? intersect leadingIdeal
+   quotient relationsIdeal saturate zeroDim?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PR</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialRing</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAbelianMonoidRing</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> associates?
+   characteristic charthRoot coefficient coefficients coerce content degree exquo ground ground? leadingCoefficient
+   leadingMonomial map mapExponents minimumDegree monomial monomial? numberOfMonomials one? primitivePart recip reductum
+   retract retractIfCan unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">POLY</td></tr>
+<tr><td>Full name: </td><td class="full">Polynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PolynomialCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D
+   associates? characteristic charthRoot coefficient coefficients coerce conditionP content convert degree differentiate
+   discriminant eval exquo factor factorPolynomial factorSquareFreePolynomial gcd gcdPolynomial ground ground? integrate
+   isExpt isPlus isTimes lcm leadingCoefficient leadingMonomial mainVariable map mapExponents max min minimumDegree
+   monicDivide monomial monomial? monomials multivariate numberOfMonomials one? patternMatch prime? primitiveMonomials
+   primitivePart recip reducedSystem reductum resultant retract retractIfCan solveLinearPolynomialEquation squareFree
+   squareFreePart squareFreePolynomial totalDegree unit? unitCanonical unitNormal univariate variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PI</td></tr>
+<tr><td>Full name: </td><td class="full">PositiveInteger</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianSemiGroup Monoid OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops">1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> coerce gcd
+   max min one? recip</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PF</td></tr>
+<tr><td>Full name: </td><td class="full">PrimeField</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo FiniteAlgebraicExtensionField FiniteFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span>
+   <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> Frobenius algebraic? associates? basis characteristic charthRoot coerce conditionP convert
+   coordinates createNormalElement createPrimitiveElement definingPolynomial degree dimension discreteLog divide
+   euclideanSize expressIdealMember exquo extendedEuclidean extensionDegree factor factorsOfCyclicGroupSize gcd generator
+   inGroundField? index init inv lcm lookup minimalPolynomial multiEuclidean nextItem norm normal? normalElement one?
+   order prime? primeFrobenius primitive? primitiveElement principalIdeal quo random recip rem representationType
+   represents retract retractIfCan size sizeLess? squareFree squareFreePart tableForDiscreteLogarithm trace
+   transcendenceDegree transcendent? unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PRIMARR</td></tr>
+<tr><td>Full name: </td><td class="full">PrimitiveArray</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OneDimensionalArrayAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? coerce concat construct
+   convert copy copyInto! count delete elt empty empty? entries entry? eq? every? fill! find first index? indices insert
+   less? map map! max maxIndex member? members merge min minIndex more? new parts position qelt qsetelt! reduce remove
+   removeDuplicates reverse reverse! select setelt size? sort sort! sorted? swap!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PRODUCT</td></tr>
+<tr><td>Full name: </td><td class="full">Product</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup AbelianMonoid CancellationAbelianMonoid Finite Group Monoid
+   OrderedAbelianMonoidSup OrderedSet SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> coerce
+   commutator conjugate index inv lookup makeprod max min one? random recip selectfirst selectsecond size sup zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QFORM</td></tr>
+<tr><td>Full name: </td><td class="full">QuadraticForm</td></tr>
+<tr><td>Belongs to: </td><td class="membs">AbelianGroup</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">=</span> coerce elt matrix quadraticForm zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QALGSET</td></tr>
+<tr><td>Full name: </td><td class="full">QuasiAlgebraicSet</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce definingEquations definingInequation
+   empty? idealSimplify quasiAlgebraicSet setStatus simplify</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QUAT</td></tr>
+<tr><td>Full name: </td><td class="full">Quaternion</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QuaternionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs
+   characteristic charthRoot coerce conjugate convert differentiate elt eval imagI imagJ imagK inv map max min norm one?
+   quatern rational rational? rationalIfCan real recip reducedSystem retract retractIfCan zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QEQUAT</td></tr>
+<tr><td>Full name: </td><td class="full">QueryEquation</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">equation value variable</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QUEUE</td></tr>
+<tr><td>Full name: </td><td class="full">Queue</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QueueAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? back bag coerce copy count dequeue! empty empty? enqueue!
+   eq? every? extract! front insert! inspect length less? map map! member? members more? parts queue rotate! size?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RADFF</td></tr>
+<tr><td>Full name: </td><td class="full">RadicalFunctionField</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FunctionFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> D
+   absolutelyIrreducible? associates? basis branchPoint? branchPointAtInfinity? characteristic characteristicPolynomial
+   charthRoot coerce complementaryBasis convert coordinates definingPolynomial derivationCoordinates differentiate
+   discriminant divide elt euclideanSize expressIdealMember exquo extendedEuclidean factor gcd generator genus integral?
+   integralAtInfinity? integralBasis integralBasisAtInfinity integralCoordinates integralDerivationMatrix integralMatrix
+   integralMatrixAtInfinity integralRepresents inv inverseIntegralMatrix inverseIntegralMatrixAtInfinity lcm lift
+   minimalPolynomial multiEuclidean nonSingularModel norm normalizeAtInfinity numberOfComponents one? prime? primitivePart
+   principalIdeal quo ramified? ramifiedAtInfinity? rank rationalPoint? rationalPoints recip reduce reduceBasisAtInfinity
+   reducedSystem regularRepresentation rem represents retract retractIfCan singular? singularAtInfinity? sizeLess?
+   squareFree squareFreePart trace traceMatrix unit? unitCanonical unitNormal yCoordinates zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RADIX</td></tr>
+<tr><td>Full name: </td><td class="full">RadixExpansion</td></tr>
+<tr><td>Belongs to: </td><td class="membs">QuotientFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D
+   abs associates? ceiling characteristic coerce convert cycleRagits denom denominator differentiate divide euclideanSize
+   expressIdealMember exquo extendedEuclidean factor floor fractRadix fractRagits fractionPart gcd init inv lcm map max
+   min multiEuclidean negative? nextItem numer numerator one? patternMatch positive? prefixRagits prime? principalIdeal
+   quo random recip reducedSystem rem retract retractIfCan sign sizeLess? squareFree squareFreePart unit? unitCanonical
+   unitNormal wholePart wholeRadix wholeRagits zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RMATRIX</td></tr>
+<tr><td>Full name: </td><td class="full">RectangularMatrix</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo RectangularMatrixCategory VectorSpace</td></tr>
+<tr><td>Operations: </td><td class="ops">0 <span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">   -</span> <span class="teletype">/</span> <span class="teletype">=</span> antisymmetric? any? coerce column copy count diagonal? dimension elt empty empty? eq? every? exquo
+   less? listOfLists map map! matrix maxColIndex maxRowIndex member? members minColIndex minRowIndex more? ncols nrows
+   nullSpace nullity parts qelt rank rectangularMatrix row rowEchelon size? square? symmetric? zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REF</td></tr>
+<tr><td>Full name: </td><td class="full">Reference</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Object SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce deref elt ref setelt setref</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RULE</td></tr>
+<tr><td>Full name: </td><td class="full">RewriteRule</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Eltable RetractableTo SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce elt lhs pattern quotedOperators retract
+   retractIfCan rhs rule suchThat</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ROMAN</td></tr>
+<tr><td>Full name: </td><td class="full">RomanNumeral</td></tr>
+<tr><td>Belongs to: </td><td class="membs">IntegerNumberSystem</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs addmod
+   associates? base binomial bit? characteristic coerce convert copy dec differentiate divide euclideanSize even?
+   expressIdealMember exquo extendedEuclidean factor factorial gcd hash inc init invmod lcm length mask max min mulmod
+   multiEuclidean negative? nextItem odd? one? patternMatch permutation positive? positiveRemainder powmod prime?
+   principalIdeal quo random rational rational? rationalIfCan recip reducedSystem rem retract retractIfCan roman shift
+   sign sizeLess? squareFree squareFreePart submod symmetricRemainder unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RULECOLD</td></tr>
+<tr><td>Full name: </td><td class="full">RuleCalled</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce name</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RULESET</td></tr>
+<tr><td>Full name: </td><td class="full">Ruleset</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Eltable SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce elt rules ruleset</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FORMULA1</td></tr>
+<tr><td>Full name: </td><td class="full">ScriptFormulaFormat1</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Object</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FORMULA</td></tr>
+<tr><td>Full name: </td><td class="full">ScriptFormulaFormat</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce convert display epilogue formula new prologue
+   setEpilogue! setFormula! setPrologue!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SEGBIND</td></tr>
+<tr><td>Full name: </td><td class="full">SegmentBinding</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce equation segment variable</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SEG</td></tr>
+<tr><td>Full name: </td><td class="full">Segment</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SegmentCategory SegmentExpansionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> BY SEGMENT coerce convert expand hi high incr
+   lo low map segment</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SCFRAC</td></tr>
+<tr><td>Full name: </td><td class="full">SemiCancelledFraction</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo QuotientFieldCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">   /</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs associates? ceiling characteristic charthRoot coerce conditionP convert denom denominator
+   differentiate divide elt euclideanSize eval expressIdealMember exquo extendedEuclidean factor factorPolynomial
+   factorSquareFreePolynomial floor fractionPart gcd gcdPolynomial init inv lcm map max min multiEuclidean negative?
+   nextItem normalize numer numerator one? patternMatch positive? prime? principalIdeal quo random recip reducedSystem rem
+   retract retractIfCan sign sizeLess? solveLinearPolynomialEquation squareFree squareFreePart squareFreePolynomial unit?
+   unitCanonical unitNormal wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SDPOL</td></tr>
+<tr><td>Full name: </td><td class="full">SequentialDifferentialPolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DifferentialPolynomialCategory RetractableTo</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span>
+   <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D associates? characteristic charthRoot coefficient coefficients coerce
+   conditionP content degree differentialVariables differentiate discriminant eval exquo factor factorPolynomial
+   factorSquareFreePolynomial gcd gcdPolynomial ground ground? initial isExpt isPlus isTimes isobaric? lcm leader
+   leadingCoefficient leadingMonomial mainVariable makeVariable map mapExponents max min minimumDegree monicDivide
+   monomial monomial? monomials multivariate numberOfMonomials one? order prime? primitiveMonomials primitivePart recip
+   reducedSystem reductum resultant retract retractIfCan separant solveLinearPolynomialEquation squareFree squareFreePart
+   squareFreePolynomial totalDegree unit? unitCanonical unitNormal univariate variables weight weights zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SDVAR</td></tr>
+<tr><td>Full name: </td><td class="full">SequentialDifferentialVariable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">DifferentialVariableCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> D coerce differentiate
+   makeVariable max min order retract retractIfCan variable weight</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SET</td></tr>
+<tr><td>Full name: </td><td class="full">Set</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteSetAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? bag brace cardinality coerce complement construct
+   convert copy count dictionary difference empty empty? eq? every? extract! find index insert! inspect intersect less?
+   lookup map map! max member? members min more? parts random reduce remove remove! removeDuplicates select select! size
+   size? subset? symmetricDifference union universe</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SEXOF</td></tr>
+<tr><td>Full name: </td><td class="full">SExpressionOf</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SExpressionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> atom? car cdr coerce convert destruct elt eq expr
+   float float? integer integer? list? null? pair? string string? symbol symbol? uequal</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SEX</td></tr>
+<tr><td>Full name: </td><td class="full">SExpression</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SExpressionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> atom? car cdr coerce convert destruct elt eq expr
+   float float? integer integer? list? null? pair? string string? symbol symbol? uequal</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SAE</td></tr>
+<tr><td>Full name: </td><td class="full">SimpleAlgebraicExtension</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MonogenicAlgebra</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> D
+   associates? basis characteristic characteristicPolynomial charthRoot coerce conditionP convert coordinates
+   createPrimitiveElement definingPolynomial derivationCoordinates differentiate discreteLog discriminant divide
+   euclideanSize expressIdealMember exquo extendedEuclidean factor factorsOfCyclicGroupSize gcd generator index init inv
+   lcm lift lookup minimalPolynomial multiEuclidean nextItem norm one? order prime? primeFrobenius primitive?
+   primitiveElement principalIdeal quo random rank recip reduce reducedSystem regularRepresentation rem representationType
+   represents retract retractIfCan size sizeLess? squareFree squareFreePart tableForDiscreteLogarithm trace traceMatrix
+   unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SAOS</td></tr>
+<tr><td>Full name: </td><td class="full">SingletonAsOrderedSet</td></tr>
+<tr><td>Belongs to: </td><td class="membs">OrderedSet</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> coerce create max min</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SINT</td></tr>
+<tr><td>Full name: </td><td class="full">SingleInteger</td></tr>
+<tr><td>Belongs to: </td><td class="membs">IntegerNumberSystem</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> And D Not Or <span class="teletype">   \^{}</span> abs addmod and associates? base binomial bit? characteristic coerce convert copy dec differentiate divide
+   euclideanSize even? expressIdealMember exquo extendedEuclidean factor factorial gcd hash inc init invmod lcm length
+   mask max min mulmod multiEuclidean negative? nextItem not odd? one? or patternMatch permutation positive?
+   positiveRemainder powmod prime? principalIdeal quo random rational rational? rationalIfCan recip reducedSystem rem
+   retract retractIfCan shift sign sizeLess? squareFree squareFreePart submod symmetricRemainder unit? unitCanonical
+   unitNormal xor zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SMP</td></tr>
+<tr><td>Full name: </td><td class="full">SparseMultivariatePolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">PolynomialCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span>
+   <span class="teletype">=</span> D associates? characteristic charthRoot coefficient coefficients coerce conditionP content convert degree
+   differentiate discriminant eval exquo factor factorPolynomial factorSquareFreePolynomial gcd gcdPolynomial ground
+   ground? isExpt isPlus isTimes lcm leadingCoefficient leadingMonomial mainVariable map mapExponents max min
+   minimumDegree monicDivide monomial monomial? monomials multivariate numberOfMonomials one? patternMatch prime?
+   primitiveMonomials primitivePart recip reducedSystem reductum resultant retract retractIfCan
+   solveLinearPolynomialEquation squareFree squareFreePart squareFreePolynomial totalDegree unit? unitCanonical unitNormal
+   univariate variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SMTS</td></tr>
+<tr><td>Full name: </td><td class="full">SparseMultivariateTaylorSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MultivariateTaylorSeriesCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span>
+   <span class="teletype">/</span> <span class="teletype">=</span> D acos acosh acot acoth acsc acsch asec asech asin asinh associates? atan atanh characteristic
+   charthRoot coefficient coerce complete cos cosh cot coth csc csch csubst degree differentiate eval exp exquo extend
+   fintegrate integrate leadingCoefficient leadingMonomial log map monomial monomial? nthRoot one? order pi pole?
+   polynomial recip reductum sec sech sin sinh sqrt tan tanh unit? unitCanonical unitNormal variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STBL</td></tr>
+<tr><td>Full name: </td><td class="full">SparseTable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TableAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag coerce construct copy count dictionary elt empty
+   empty? entries entry? eq? every? extract! fill! find first index? indices insert! inspect key? keys less? map map!
+   maxIndex member? members minIndex more? parts qelt qsetelt! reduce remove remove! removeDuplicates search select
+   select! setelt size? swap! table</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SUP</td></tr>
+<tr><td>Full name: </td><td class="full">SparseUnivariatePolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">UnivariatePolynomialCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span>
+   <span class="teletype">&lt;</span> <span class="teletype">=</span> D associates? characteristic charthRoot coefficient coefficients coerce composite conditionP content
+   degree differentiate discriminant divide divideExponents elt euclideanSize eval expressIdealMember exquo
+   extendedEuclidean factor factorPolynomial factorSquareFreePolynomial gcd gcdPolynomial ground ground? init integrate
+   isExpt isPlus isTimes lcm leadingCoefficient leadingMonomial mainVariable makeSUP map mapExponents max min
+   minimumDegree monicDivide monomial monomial? monomials multiEuclidean multiplyExponents multivariate nextItem
+   numberOfMonomials one? order outputForm prime? primitiveMonomials primitivePart principalIdeal pseudoDivide
+   pseudoQuotient pseudoRemainder quo recip reducedSystem reductum rem resultant retract retractIfCan separate sizeLess?
+   solveLinearPolynomialEquation squareFree squareFreePart squareFreePolynomial subResultantGcd totalDegree unit?
+   unitCanonical unitNormal univariate unmakeSUP variables vectorise zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SUTS</td></tr>
+<tr><td>Full name: </td><td class="full">SparseUnivariateTaylorSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs">UnivariateTaylorSeriesCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">   /</span> <span class="teletype">=</span> D acos acosh acot acoth acsc acsch approximate asec asech asin asinh associates? atan atanh center
+   characteristic charthRoot coefficient coefficients coerce complete cos cosh cot coth csc csch degree differentiate elt
+   eval exp exquo extend integrate leadingCoefficient leadingMonomial log map monomial monomial? multiplyCoefficients
+   multiplyExponents nthRoot one? order pi pole? polynomial quoByVar recip reductum sec sech series sin sinh sqrt tan tanh
+   terms truncate unit? unitCanonical unitNormal variable variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SQMATRIX</td></tr>
+<tr><td>Full name: </td><td class="full">SquareMatrix</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo SquareMatrixCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">   /</span> <span class="teletype">=</span> D antisymmetric? any? characteristic coerce column copy count determinant diagonal diagonal? diagonalMatrix
+   diagonalProduct differentiate elt empty empty? eq? every? exquo inverse less? listOfLists map map! matrix maxColIndex
+   maxRowIndex member? members minColIndex minRowIndex minordet more? ncols nrows nullSpace nullity one? parts qelt rank
+   recip reducedSystem retract retractIfCan row rowEchelon scalarMatrix size? square? squareMatrix symmetric? trace
+   transpose zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STACK</td></tr>
+<tr><td>Full name: </td><td class="full">Stack</td></tr>
+<tr><td>Belongs to: </td><td class="membs">StackAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag coerce copy count depth empty empty? eq? every?
+   extract! insert! inspect less? map map! member? members more? parts pop! push! size? stack top</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STREAM</td></tr>
+<tr><td>Full name: </td><td class="full">Stream</td></tr>
+<tr><td>Belongs to: </td><td class="membs">LazyStreamAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? child? children coerce complete concat concat! cons
+   construct convert copy count cycleEntry cycleLength cycleSplit! cycleTail cyclic? delay delete distance elt empty
+   empty? entries entry? eq? every? explicitEntries? explicitlyEmpty? explicitlyFinite? extend fill! filterUntil
+   filterWhile find findCycle first frst generate index? indices insert last lazy? lazyEvaluate leaf? less? map map!
+   maxIndex member? members minIndex more? new node? nodes numberOfComputedEntries output parts possiblyInfinite? qelt
+   qsetelt! reduce remove removeDuplicates repeating repeating? rest rst second select setchildren! setelt setfirst!
+   setlast! setrest! setvalue! showAll? showAllElements size? split! swap! tail third value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STRTBL</td></tr>
+<tr><td>Full name: </td><td class="full">StringTable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TableAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag coerce construct copy count dictionary elt
+   empty empty? entries entry? eq? every? extract! fill! find first index? indices insert! inspect key? keys less? map
+   map! maxIndex member? members minIndex more? parts qelt qsetelt! reduce remove remove! removeDuplicates search select
+   select! setelt size? swap! table</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STRING</td></tr>
+<tr><td>Full name: </td><td class="full">String</td></tr>
+<tr><td>Belongs to: </td><td class="membs">StringCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? coerce concat construct copy copyInto! count
+   delete elt empty empty? entries entry? eq? every? fill! find first index? indices insert leftTrim less? lowerCase
+   lowerCase! map map! match? max maxIndex member? members merge min minIndex more? new parts position prefix? qelt
+   qsetelt! reduce remove removeDuplicates replace reverse reverse! rightTrim select setelt size? sort sort! sorted? split
+   string substring? suffix? swap! trim upperCase upperCase!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMPPROP</td></tr>
+<tr><td>Full name: </td><td class="full">SubSpaceComponentProperty</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> close closed? coerce copy new solid solid?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SUBSPACE</td></tr>
+<tr><td>Full name: </td><td class="full">SubSpace</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> addPoint addPoint2 addPointLast birth child children closeComponent
+   coerce deepCopy defineProperty extractClosed extractIndex extractPoint extractProperty internal? leaf? level merge
+   modifyPoint new numberOfChildren parent pointData root? separate shallowCopy subspace traverse</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SUCH</td></tr>
+<tr><td>Full name: </td><td class="full">SuchThat</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce construct lhs rhs</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SYMBOL</td></tr>
+<tr><td>Full name: </td><td class="full">Symbol</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ConvertibleTo OrderedSet PatternMatchable</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">&lt;</span> <span class="teletype">=</span> argscript coerce convert elt list
+   max min name new patternMatch resetNew script scripted? scripts string subscript superscript</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SYMPOLY</td></tr>
+<tr><td>Full name: </td><td class="full">SymmetricPolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FiniteAbelianMonoidRing</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span>
+   associates? characteristic charthRoot coefficient coefficients coerce content degree exquo ground ground?
+   leadingCoefficient leadingMonomial map mapExponents minimumDegree monomial monomial? numberOfMonomials one?
+   primitivePart recip reductum retract retractIfCan unit? unitCanonical unitNormal zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TABLEAU</td></tr>
+<tr><td>Full name: </td><td class="full">Tableau</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Object</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce listOfLists tableau</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TABLE</td></tr>
+<tr><td>Full name: </td><td class="full">Table</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TableAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? bag coerce construct copy count dictionary elt empty
+   empty? entries entry? eq? every? extract! fill! find first index? indices insert! inspect key? keys less? map map!
+   maxIndex member? members minIndex more? parts qelt qsetelt! reduce remove remove! removeDuplicates search select
+   select! setelt size? swap! table</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TS</td></tr>
+<tr><td>Full name: </td><td class="full">TaylorSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs">MultivariateTaylorSeriesCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> D
+   acos acosh acot acoth acsc acsch asec asech asin asinh associates? atan atanh characteristic charthRoot coefficient
+   coerce complete cos cosh cot coth csc csch degree differentiate eval exp exquo extend fintegrate integrate
+   leadingCoefficient leadingMonomial log map monomial monomial? nthRoot one? order pi pole? polynomial recip reductum sec
+   sech sin sinh sqrt tan tanh unit? unitCanonical unitNormal variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TEX1</td></tr>
+<tr><td>Full name: </td><td class="full">TexFormat1</td></tr>
+<tr><td>Belongs to: </td><td class="membs">Object</td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TEX</td></tr>
+<tr><td>Full name: </td><td class="full">TexFormat</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce convert display epilogue new prologue setEpilogue! setPrologue!
+   setTex! tex</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TEXTFILE</td></tr>
+<tr><td>Full name: </td><td class="full">TextFile</td></tr>
+<tr><td>Belongs to: </td><td class="membs">FileCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> close! coerce endOfFile? iomode name open read! readIfCan! readLine!
+   readLineIfCan! reopen! write! writeLine!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">VIEW3D</td></tr>
+<tr><td>Full name: </td><td class="full">ThreeDimensionalViewport</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> axes clipSurface close coerce colorDef controlPanel
+   diagonals dimensions drawStyle eyeDistance hitherPlane intensity key lighting makeViewport3D modifyPointData move
+   options outlineRender perspective reset resize rotate showClipRegion showRegion subspace title translate
+   viewDeltaXDefault viewDeltaYDefault viewPhiDefault viewThetaDefault viewZoomDefault viewpoint viewport3D write zoom</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SPACE3</td></tr>
+<tr><td>Full name: </td><td class="full">ThreeSpace</td></tr>
+<tr><td>Belongs to: </td><td class="membs">ThreeSpaceCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> check closedCurve closedCurve? coerce components composite
+   composites copy create3Space curve curve? enterPointData lllip lllp llprop lp lprop merge mesh mesh? modifyPointData
+   numberOfComponents numberOfComposites objects point point? polygon polygon? subspace</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TREE</td></tr>
+<tr><td>Full name: </td><td class="full">Tree</td></tr>
+<tr><td>Belongs to: </td><td class="membs">RecursiveAggregate</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? children coerce copy count cyclic? elt empty empty? eq?
+   every? leaf? leaves less? map map! member? members more? node? nodes parts setchildren! setelt setvalue! size? tree
+   value</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TUBE</td></tr>
+<tr><td>Full name: </td><td class="full">TubePlot</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">closed? getCurve listLoops open? setClosed tube</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TUPLE</td></tr>
+<tr><td>Full name: </td><td class="full">Tuple</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce length select</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ARRAY2</td></tr>
+<tr><td>Full name: </td><td class="full">TwoDimensionalArray</td></tr>
+<tr><td>Belongs to: </td><td class="membs">TwoDimensionalArrayCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">=</span> any? coerce column copy count elt
+   empty empty? eq? every? fill! less? map map! maxColIndex maxRowIndex member? members minColIndex minRowIndex more?
+   ncols new nrows parts qelt qsetelt! row setColumn! setRow! setelt size?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">VIEW2D</td></tr>
+<tr><td>Full name: </td><td class="full">TwoDimensionalViewport</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> axes close coerce connect controlPanel dimensions
+   getGraph graphState graphStates graphs key makeViewport2D move options points putGraph region reset resize scale show
+   title translate units viewport2D write</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ULSCONS</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariateLaurentSeriesConstructor</td></tr>
+<tr><td>Belongs to: </td><td class="membs">UnivariateLaurentSeriesConstructorCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span>
+   <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> D abs acos acosh acot acoth acsc acsch approximate asec asech asin asinh
+   associates? atan atanh ceiling center characteristic charthRoot coefficient coerce complete conditionP convert cos cosh
+   cot coth csc csch degree denom denominator differentiate divide elt euclideanSize eval exp expressIdealMember exquo
+   extend extendedEuclidean factor factorPolynomial factorSquareFreePolynomial floor fractionPart gcd gcdPolynomial init
+   integrate inv laurent lcm leadingCoefficient leadingMonomial log map max min monomial monomial? multiEuclidean
+   multiplyCoefficients multiplyExponents negative? nextItem nthRoot numer numerator one? order patternMatch pi pole?
+   positive? prime? principalIdeal quo random rationalFunction recip reducedSystem reductum rem removeZeroes retract
+   retractIfCan sec sech series sign sin sinh sizeLess? solveLinearPolynomialEquation sqrt squareFree squareFreePart
+   squareFreePolynomial tan tanh taylor taylorIfCan taylorRep terms truncate unit? unitCanonical unitNormal variable
+   variables wholePart zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ULS</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariateLaurentSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs">UnivariateLaurentSeriesConstructorCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span>
+   <span class="teletype">/</span> <span class="teletype">=</span> D acos acosh acot acoth acsc acsch approximate asec asech asin asinh associates? atan atanh center
+   characteristic charthRoot coefficient coerce complete cos cosh cot coth csc csch degree denom denominator differentiate
+   divide elt euclideanSize eval exp expressIdealMember exquo extend extendedEuclidean factor gcd integrate inv laurent
+   lcm leadingCoefficient leadingMonomial log map monomial monomial? multiEuclidean multiplyCoefficients multiplyExponents
+   nthRoot numer numerator one? order pi pole? prime? principalIdeal quo rationalFunction recip reducedSystem reductum rem
+   removeZeroes retract retractIfCan sec sech series sin sinh sizeLess? sqrt squareFree squareFreePart tan tanh taylor
+   taylorIfCan taylorRep terms truncate unit? unitCanonical unitNormal variable variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UP</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs">UnivariatePolynomialCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">&lt;</span>
+   <span class="teletype">=</span> D associates? characteristic charthRoot coefficient coefficients coerce composite conditionP content degree
+   differentiate discriminant divide divideExponents elt euclideanSize eval expressIdealMember exquo extendedEuclidean
+   factor factorPolynomial factorSquareFreePolynomial gcd gcdPolynomial ground ground? init integrate isExpt isPlus
+   isTimes lcm leadingCoefficient leadingMonomial mainVariable makeSUP map mapExponents max min minimumDegree monicDivide
+   monomial monomial? monomials multiEuclidean multiplyExponents multivariate nextItem numberOfMonomials one? order prime?
+   primitiveMonomials primitivePart principalIdeal pseudoDivide pseudoQuotient pseudoRemainder quo recip reducedSystem
+   reductum rem resultant retract retractIfCan separate sizeLess? solveLinearPolynomialEquation squareFree squareFreePart
+   squareFreePolynomial subResultantGcd totalDegree unit? unitCanonical unitNormal univariate unmakeSUP variables
+   vectorise zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UPXSCONS</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePuiseuxSeriesConstructor</td></tr>
+<tr><td>Belongs to: </td><td class="membs">UnivariatePuiseuxSeriesConstructorCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span>
+   <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">=</span> D acos acosh acot acoth acsc acsch approximate asec asech asin asinh associates? atan
+   atanh center characteristic charthRoot coefficient coerce complete cos cosh cot coth csc csch degree differentiate
+   divide elt euclideanSize eval exp expressIdealMember exquo extend extendedEuclidean factor gcd integrate inv laurent
+   laurentIfCan laurentRep lcm leadingCoefficient leadingMonomial log map monomial monomial? multiEuclidean
+   multiplyExponents nthRoot one? order pi pole? prime? principalIdeal puiseux quo rationalPower recip reductum rem
+   retract retractIfCan sec sech series sin sinh sizeLess? sqrt squareFree squareFreePart tan tanh terms truncate unit?
+   unitCanonical unitNormal variable variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UPXS</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePuiseuxSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs">UnivariatePuiseuxSeriesConstructorCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">   -</span> <span class="teletype">/</span> <span class="teletype">=</span> D acos acosh acot acoth acsc acsch approximate asec asech asin asinh associates? atan atanh center
+   characteristic charthRoot coefficient coerce complete cos cosh cot coth csc csch degree differentiate divide elt
+   euclideanSize eval exp expressIdealMember exquo extend extendedEuclidean factor gcd integrate inv laurent laurentIfCan
+   laurentRep lcm leadingCoefficient leadingMonomial log map monomial monomial? multiEuclidean multiplyExponents nthRoot
+   one? order pi pole? prime? principalIdeal puiseux quo rationalPower recip reductum rem retract retractIfCan sec sech
+   series sin sinh sizeLess? sqrt squareFree squareFreePart tan tanh terms truncate unit? unitCanonical unitNormal
+   variable variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UTS</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariateTaylorSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs">UnivariateTaylorSeriesCategory</td></tr>
+<tr><td>Operations: </td><td class="ops">0 1 <span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> <span class="teletype">   =</span> D acos acosh acot acoth acsc acsch approximate asec asech asin asinh associates? atan atanh center characteristic
+   charthRoot coefficient coefficients coerce complete cos cosh cot coth csc csch degree differentiate elt eval
+   evenlambert exp exquo extend generalLambert integrate invmultisect lagrange lambert leadingCoefficient leadingMonomial
+   log map monomial monomial? multiplyCoefficients multiplyExponents multisect nthRoot oddlambert one? order pi pole?
+   polynomial quoByVar recip reductum revert sec sech series sin sinh sqrt tan tanh terms truncate unit? unitCanonical
+   unitNormal univariatePolynomial variable variables zero?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UNISEG</td></tr>
+<tr><td>Full name: </td><td class="full">UniversalSegment</td></tr>
+<tr><td>Belongs to: </td><td class="membs">SegmentCategory SegmentExpansionCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> BY SEGMENT coerce convert expand
+   hasHi hi high incr lo low map segment</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">VARIABLE</td></tr>
+<tr><td>Full name: </td><td class="full">Variable</td></tr>
+<tr><td>Belongs to: </td><td class="membs">CoercibleTo SetCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">=</span> coerce variable</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">VECTOR</td></tr>
+<tr><td>Full name: </td><td class="full">Vector</td></tr>
+<tr><td>Belongs to: </td><td class="membs">VectorCategory</td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype"> #</span> <span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">&lt;</span> <span class="teletype">=</span> any? coerce concat construct
+   convert copy copyInto! count delete dot elt empty empty? entries entry? eq? every? fill! find first index? indices
+   insert less? map map! max maxIndex member? members merge min minIndex more? new parts position qelt qsetelt! reduce
+   remove removeDuplicates reverse reverse! select setelt size? sort sort! sorted? swap! vector zero</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">VOID</td></tr>
+<tr><td>Full name: </td><td class="full">Void</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce void</td></tr>
+</table>
+</p>
+
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-17.1.xhtml" style="margin-right: 10px;">Previous Section 17.1  Axiom Categories</a><a href="section-19.1.xhtml" style="margin-right: 10px;">Next Section 19.1  Axiom Packages</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-19.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-19.1.xhtml
new file mode 100644
index 0000000..a719b5a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-19.1.xhtml
@@ -0,0 +1,3261 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section19.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-18.1.xhtml" style="margin-right: 10px;">Previous Section 18.1  Axiom Domains</a><a href="section-21.0.xhtml" style="margin-right: 10px;">Next Section 21.0 Programs for AXIOM Images</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-19.1">
+<h2 class="sectiontitle">19.1  Axiom Packages</h2>
+<a name="ugAppPackages" class="label"/>
+
+<p>This is a listing of all packages in the Axiom library at the
+time this book was produced.
+Use the Browse facility (described in Chapter 
+<a href="section-14.0.xhtml#ugBrowse" class="ref" >ugBrowse</a> )
+to get more information about these constructors.
+</p>
+
+
+<p>This sample entry will help you read the following table:
+</p>
+
+
+<p>PackageName{PackageAbbreviation}:{ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Category</mi><mn>1</mn></msub></mrow></mstyle></math>
+... <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Category</mi><mi>N</mi></msub></mrow></mstyle></math>}<span class="italic">with </span>
+{ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mn>1</mn></msub></mrow></mstyle></math>... <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mi>M</mi></msub></mrow></mstyle></math>}
+</p>
+
+
+<p>where
+</p>
+
+
+<p><table class="begintabular">
+<tr><td>PackageName </td><td> is the full package name, e.g., <span class="italic">PadeApproximantPackage</span>. </td></tr>
+<tr><td>PackageAbbreviation </td><td> is the package abbreviation, e.g., <span class="italic">PADEPAC</span>.</td></tr>
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Category</mi><mi>i</mi></msub></mrow></mstyle></math> </td><td> is a category to which the package belongs. </td></tr>
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mi>j</mi></msub></mrow></mstyle></math> </td><td> is an operation exported by the package. </td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">AF</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraicFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> belong? definingPolynomial inrootof iroot minPoly operator rootOf</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTHERAL</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraicHermiteIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">HermiteIntegrate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTALG</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraicIntegrate</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">algintegrate palginfieldint palgintegrate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTAF</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraicIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">algint</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ALGMANIP</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraicManipulations</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">ratDenom ratPoly rootKerSimp rootSimp rootSplit</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ALGMFACT</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraicMultFact</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ALGPKG</td></tr>
+<tr><td>Full name: </td><td class="full">AlgebraPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">basisOfCenter basisOfCentroid basisOfCommutingElements basisOfLeftAnnihilator
+   basisOfLeftNucleus basisOfLeftNucloid basisOfMiddleNucleus basisOfNucleus basisOfRightAnnihilator basisOfRightNucleus
+   basisOfRightNucloid biRank doubleRank leftRank radicalOfLeftTraceForm rightRank weakBiRank</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ALGFACT</td></tr>
+<tr><td>Full name: </td><td class="full">AlgFactor</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">doublyTransitive? factor split</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ANY1</td></tr>
+<tr><td>Full name: </td><td class="full">AnyFunctions1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce retract retractIfCan retractable?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">APPRULE</td></tr>
+<tr><td>Full name: </td><td class="full">ApplyRules</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">applyRules localUnquote</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMPRED</td></tr>
+<tr><td>Full name: </td><td class="full">AttachPredicates</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">suchThat</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BALFACT</td></tr>
+<tr><td>Full name: </td><td class="full">BalancedFactorisation</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">balancedFactorisation</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BOP1</td></tr>
+<tr><td>Full name: </td><td class="full">BasicOperatorFunctions1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">constantOpIfCan constantOperator derivative evaluate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BEZOUT</td></tr>
+<tr><td>Full name: </td><td class="full">BezoutMatrix</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">bezoutDiscriminant bezoutMatrix bezoutResultant</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">BOUNDZRO</td></tr>
+<tr><td>Full name: </td><td class="full">BoundIntegerRoots</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">integerBound</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CARTEN2</td></tr>
+<tr><td>Full name: </td><td class="full">CartesianTensorFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reshape</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CHVAR</td></tr>
+<tr><td>Full name: </td><td class="full">ChangeOfVariable</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">chvar eval goodPoint mkIntegral radPoly rootPoly</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CHARPOL</td></tr>
+<tr><td>Full name: </td><td class="full">CharacteristicPolynomialPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">characteristicPolynomial</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CVMP</td></tr>
+<tr><td>Full name: </td><td class="full">CoerceVectorMatrixPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce coerceP</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMBF</td></tr>
+<tr><td>Full name: </td><td class="full">CombinatorialFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> belong? binomial factorial factorials iibinom iidprod iidsum iifact
+   iiperm iipow ipow operator permutation product summation</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CDEN</td></tr>
+<tr><td>Full name: </td><td class="full">CommonDenominator</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">clearDenominator commonDenominator splitDenominator</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMMONOP</td></tr>
+<tr><td>Full name: </td><td class="full">CommonOperators</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">operator</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMMUPC</td></tr>
+<tr><td>Full name: </td><td class="full">CommuteUnivariatePolynomialCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">swap</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMPFACT</td></tr>
+<tr><td>Full name: </td><td class="full">ComplexFactorization</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMPLEX2</td></tr>
+<tr><td>Full name: </td><td class="full">ComplexFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CINTSLPE</td></tr>
+<tr><td>Full name: </td><td class="full">ComplexIntegerSolveLinearPolynomialEquation</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">solveLinearPolynomialEquation</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CRFP</td></tr>
+<tr><td>Full name: </td><td class="full">ComplexRootFindingPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">complexZeros divisorCascade factor graeffe norm pleskenSplit
+   reciprocalPolynomial rootRadius schwerpunkt setErrorBound startPolynomial</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CMPLXRT</td></tr>
+<tr><td>Full name: </td><td class="full">ComplexRootPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">complexZeros</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODECONST</td></tr>
+<tr><td>Full name: </td><td class="full">ConstantLODE</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">constDsolve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COORDSYS</td></tr>
+<tr><td>Full name: </td><td class="full">CoordinateSystems</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">bipolar bipolarCylindrical cartesian conical cylindrical elliptic
+   ellipticCylindrical oblateSpheroidal parabolic parabolicCylindrical paraboloidal polar prolateSpheroidal spherical
+   toroidal</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CRAPACK</td></tr>
+<tr><td>Full name: </td><td class="full">CRApackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">chineseRemainder modTree multiEuclideanTree</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CYCLES</td></tr>
+<tr><td>Full name: </td><td class="full">CycleIndicators</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">SFunction alternating cap complete cup cyclic dihedral elementary eval graphs
+   powerSum skewSFunction wreath</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CSTTOOLS</td></tr>
+<tr><td>Full name: </td><td class="full">CyclicStreamTools</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">computeCycleEntry computeCycleLength cycleElt</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CYCLOTOM</td></tr>
+<tr><td>Full name: </td><td class="full">CyclotomicPolynomialPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">cyclotomic cyclotomicDecomposition cyclotomicFactorization</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DEGRED</td></tr>
+<tr><td>Full name: </td><td class="full">DegreeReductionPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">expand reduce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DIOSP</td></tr>
+<tr><td>Full name: </td><td class="full">DiophantineSolutionPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">dioSolve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DIRPROD2</td></tr>
+<tr><td>Full name: </td><td class="full">DirectProductFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reduce scan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DLP</td></tr>
+<tr><td>Full name: </td><td class="full">DiscreteLogarithmPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">shanksDiscLogAlgorithm</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DISPLAY</td></tr>
+<tr><td>Full name: </td><td class="full">DisplayPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">bright center copies newLine say sayLength</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DDFACT</td></tr>
+<tr><td>Full name: </td><td class="full">DistinctDegreeFactorize</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">distdfact exptMod factor irreducible? separateDegrees separateFactors
+   tracePowMod</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DBLRESP</td></tr>
+<tr><td>Full name: </td><td class="full">DoubleResultantPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">doubleResultant</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DRAWHACK</td></tr>
+<tr><td>Full name: </td><td class="full">DrawNumericHack</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DROPT0</td></tr>
+<tr><td>Full name: </td><td class="full">DrawOptionFunctions0</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">adaptive clipBoolean coordinate curveColorPalette pointColorPalette ranges
+   space style title toScale tubePoints tubeRadius units var1Steps var2Steps</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DROPT1</td></tr>
+<tr><td>Full name: </td><td class="full">DrawOptionFunctions1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">option</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EP</td></tr>
+<tr><td>Full name: </td><td class="full">EigenPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">characteristicPolynomial eigenvalues eigenvector eigenvectors inteigen</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODEEF</td></tr>
+<tr><td>Full name: </td><td class="full">ElementaryFunctionODESolver</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">solve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SIGNEF</td></tr>
+<tr><td>Full name: </td><td class="full">ElementaryFunctionSign</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">sign</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EFSTRUC</td></tr>
+<tr><td>Full name: </td><td class="full">ElementaryFunctionStructurePackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">normalize realElementary rischNormalize validExponential</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EFUTS</td></tr>
+<tr><td>Full name: </td><td class="full">ElementaryFunctionsUnivariateTaylorSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> acos acosh acot acoth acsc acsch asec asech asin
+   asinh atan atanh cos cosh cot coth csc csch exp log sec sech sin sincos sinh sinhcosh tan tanh</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EF</td></tr>
+<tr><td>Full name: </td><td class="full">ElementaryFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">acos acosh acot acoth acsc acsch asec asech asin asinh atan atanh belong? cos cosh
+   cot coth csc csch exp iiacos iiacosh iiacot iiacoth iiacsc iiacsch iiasec iiasech iiasin iiasinh iiatan iiatanh iicos
+   iicosh iicot iicoth iicsc iicsch iiexp iilog iisec iisech iisin iisinh iitan iitanh log operator pi sec sech sin sinh
+   specialTrigs tan tanh</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTEF</td></tr>
+<tr><td>Full name: </td><td class="full">ElementaryIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">lfextendedint lfextlimint lfinfieldint lfintegrate lflimitedint</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RDEEF</td></tr>
+<tr><td>Full name: </td><td class="full">ElementaryRischDE</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">rischDE</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ELFUTS</td></tr>
+<tr><td>Full name: </td><td class="full">EllipticFunctionsUnivariateTaylorSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">cn dn sn sncndn</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EQ2</td></tr>
+<tr><td>Full name: </td><td class="full">EquationFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ERROR</td></tr>
+<tr><td>Full name: </td><td class="full">ErrorFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">error</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GBEUCLID</td></tr>
+<tr><td>Full name: </td><td class="full">EuclideanGroebnerBasisPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">euclideanGroebner euclideanNormalForm</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EVALCYC</td></tr>
+<tr><td>Full name: </td><td class="full">EvaluateCycleIndicators</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">eval</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EXPR2</td></tr>
+<tr><td>Full name: </td><td class="full">ExpressionFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ES1</td></tr>
+<tr><td>Full name: </td><td class="full">ExpressionSpaceFunctions1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ES2</td></tr>
+<tr><td>Full name: </td><td class="full">ExpressionSpaceFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EXPRODE</td></tr>
+<tr><td>Full name: </td><td class="full">ExpressionSpaceODESolver</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">seriesSolve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EXPR2UPS</td></tr>
+<tr><td>Full name: </td><td class="full">ExpressionToUnivariatePowerSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">laurent puiseux series taylor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">EXPRTUBE</td></tr>
+<tr><td>Full name: </td><td class="full">ExpressionTubePlot</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">constantToUnaryFunction tubePlot</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FR2</td></tr>
+<tr><td>Full name: </td><td class="full">FactoredFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FACTFUNC</td></tr>
+<tr><td>Full name: </td><td class="full">FactoredFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">log nthRoot</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FRUTIL</td></tr>
+<tr><td>Full name: </td><td class="full">FactoredFunctionUtilities</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">mergeFactors refine</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FACUTIL</td></tr>
+<tr><td>Full name: </td><td class="full">FactoringUtilities</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">completeEval degree lowerPolynomial normalDeriv raisePolynomial ran variables</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FORDER</td></tr>
+<tr><td>Full name: </td><td class="full">FindOrderFinite</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">order</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FDIV2</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteDivisorFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFF</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">createMultiplicationMatrix createMultiplicationTable createZechTable
+   sizeMultiplication</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFHOM</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldHomomorphisms</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFPOLY2</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldPolynomialPackage2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">rootOfIrreduciblePoly</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFPOLY</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldPolynomialPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">createIrreduciblePoly createNormalPoly createNormalPrimitivePoly
+   createPrimitiveNormalPoly createPrimitivePoly leastAffineMultiple nextIrreduciblePoly nextNormalPoly
+   nextNormalPrimitivePoly nextPrimitiveNormalPoly nextPrimitivePoly normal? numberOfIrreduciblePoly numberOfNormalPoly
+   numberOfPrimitivePoly primitive? random reducedQPowers</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFSLPE</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteFieldSolveLinearPolynomialEquation</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">solveLinearPolynomialEquation</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FLAGG2</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteLinearAggregateFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reduce scan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FLASORT</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteLinearAggregateSort</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">heapSort quickSort shellSort</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FSAGG2</td></tr>
+<tr><td>Full name: </td><td class="full">FiniteSetAggregateFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reduce scan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FLOATCP</td></tr>
+<tr><td>Full name: </td><td class="full">FloatingComplexPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">complexRoots complexSolve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FLOATRP</td></tr>
+<tr><td>Full name: </td><td class="full">FloatingRealPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">realRoots solve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FRIDEAL2</td></tr>
+<tr><td>Full name: </td><td class="full">FractionalIdealFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FRAC2</td></tr>
+<tr><td>Full name: </td><td class="full">FractionFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FSPECF</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionalSpecialFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">Beta Gamma abs airyAi airyBi belong? besselI besselJ besselK besselY
+   digamma iiGamma iiabs operator polygamma</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFCAT2</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionFieldCategoryFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FFINTBAS</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionFieldIntegralBasis</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">integralBasis</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMASSFS</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpaceAssertions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">assert constant multiple optional</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMPREDFS</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpaceAttachPredicates</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">suchThat</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FSCINT</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpaceComplexIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">complexIntegrate internalIntegrate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FS2</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpaceFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FSINT</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpaceIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">integrate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FSPRMELT</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpacePrimitiveElement</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">primitiveElement</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FSRED</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpaceReduce</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">bringDown newReduc</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SUMFS</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpaceSum</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">sum</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FS2UPS</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpaceToUnivariatePowerSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">exprToGenUPS exprToUPS</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">FSUPFACT</td></tr>
+<tr><td>Full name: </td><td class="full">FunctionSpaceUnivariatePolynomialFactor</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">ffactor qfactor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GAUSSFAC</td></tr>
+<tr><td>Full name: </td><td class="full">GaussianFactorizationPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor prime? sumSquares</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GHENSEL</td></tr>
+<tr><td>Full name: </td><td class="full">GeneralHenselPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">HenselLift completeHensel</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GENPGCD</td></tr>
+<tr><td>Full name: </td><td class="full">GeneralPolynomialGcdPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">gcdPolynomial randomR</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GENUPS</td></tr>
+<tr><td>Full name: </td><td class="full">GenerateUnivariatePowerSeries</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">laurent puiseux series taylor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GENEEZ</td></tr>
+<tr><td>Full name: </td><td class="full">GenExEuclid</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">compBound reduction solveid tablePow testModulus</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GENUFACT</td></tr>
+<tr><td>Full name: </td><td class="full">GenUFactorize</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTG0</td></tr>
+<tr><td>Full name: </td><td class="full">GenusZeroIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">palgLODE0 palgRDE0 palgextint0 palgint0 palglimint0</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GOSPER</td></tr>
+<tr><td>Full name: </td><td class="full">GosperSummationMethod</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">GospersMethod</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GRDEF</td></tr>
+<tr><td>Full name: </td><td class="full">GraphicsDefaults</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">adaptive clipPointsDefault drawToScale maxPoints minPoints screenResolution</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GRAY</td></tr>
+<tr><td>Full name: </td><td class="full">GrayCode</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">firstSubsetGray nextSubsetGray</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GBF</td></tr>
+<tr><td>Full name: </td><td class="full">GroebnerFactorizationPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factorGroebnerBasis groebnerFactorize</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GBINTERN</td></tr>
+<tr><td>Full name: </td><td class="full">GroebnerInternalPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">credPol critB critBonD critM critMTonD1 critMonD1 critT critpOrder
+   fprindINFO gbasis hMonic lepol makeCrit minGbasis prinb prindINFO prinpolINFO prinshINFO redPo redPol sPol updatD
+   updatF virtualDegree</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GB</td></tr>
+<tr><td>Full name: </td><td class="full">GroebnerPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">groebner normalForm</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">GROEBSOL</td></tr>
+<tr><td>Full name: </td><td class="full">GroebnerSolve</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">genericPosition groebSolve testDim</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">HB</td></tr>
+<tr><td>Full name: </td><td class="full">HallBasis</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">generate inHallBasis? lfunc</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">HEUGCD</td></tr>
+<tr><td>Full name: </td><td class="full">HeuGcd</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">content contprim gcd gcdcofact gcdcofactprim gcdprim lintgcd</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IDECOMP</td></tr>
+<tr><td>Full name: </td><td class="full">IdealDecompositionPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">primaryDecomp prime? radical zeroDimPrimary? zeroDimPrime?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INCRMAPS</td></tr>
+<tr><td>Full name: </td><td class="full">IncrementingMaps</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">increment incrementBy</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ITFUN2</td></tr>
+<tr><td>Full name: </td><td class="full">InfiniteTupleFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ITFUN3</td></tr>
+<tr><td>Full name: </td><td class="full">InfiniteTupleFunctions3</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INFINITY</td></tr>
+<tr><td>Full name: </td><td class="full">Infinity</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">infinity minusInfinity plusInfinity</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IALGFACT</td></tr>
+<tr><td>Full name: </td><td class="full">InnerAlgFactor</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ICDEN</td></tr>
+<tr><td>Full name: </td><td class="full">InnerCommonDenominator</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">clearDenominator commonDenominator splitDenominator</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IMATLIN</td></tr>
+<tr><td>Full name: </td><td class="full">InnerMatrixLinearAlgebraFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">determinant inverse nullSpace nullity rank rowEchelon</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IMATQF</td></tr>
+<tr><td>Full name: </td><td class="full">InnerMatrixQuotientFieldFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">inverse nullSpace nullity rank rowEchelon</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INMODGCD</td></tr>
+<tr><td>Full name: </td><td class="full">InnerModularGcd</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">modularGcd reduction</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INNMFACT</td></tr>
+<tr><td>Full name: </td><td class="full">InnerMultFact</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INBFF</td></tr>
+<tr><td>Full name: </td><td class="full">InnerNormalBasisFieldFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">**</span> <span class="teletype">/</span> basis dAndcExp expPot index inv lookup
+   minimalPolynomial norm normal? normalElement pol qPot random repSq setFieldInfo trace xn</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INEP</td></tr>
+<tr><td>Full name: </td><td class="full">InnerNumericEigenPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">charpol innerEigenvectors</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INFSP</td></tr>
+<tr><td>Full name: </td><td class="full">InnerNumericFloatSolvePackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">innerSolve innerSolve1 makeEq</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INPSIGN</td></tr>
+<tr><td>Full name: </td><td class="full">InnerPolySign</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">signAround</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ISUMP</td></tr>
+<tr><td>Full name: </td><td class="full">InnerPolySum</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">sum</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ITRIGMNP</td></tr>
+<tr><td>Full name: </td><td class="full">InnerTrigonometricManipulations</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">F2FG FG2F GF2FG explogs2trigs trigs2explogs</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INFORM1</td></tr>
+<tr><td>Full name: </td><td class="full">InputFormFunctions1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">interpret packageCall</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">COMBINAT</td></tr>
+<tr><td>Full name: </td><td class="full">IntegerCombinatoricFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">binomial factorial multinomial partition permutation stirling1
+   stirling2</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTFACT</td></tr>
+<tr><td>Full name: </td><td class="full">IntegerFactorizationPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">BasicMethod PollardSmallFactor factor squareFree</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ZLINDEP</td></tr>
+<tr><td>Full name: </td><td class="full">IntegerLinearDependence</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">linearDependenceOverZ linearlyDependentOverZ? solveLinearlyOverQ</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTHEORY</td></tr>
+<tr><td>Full name: </td><td class="full">IntegerNumberTheoryFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">bernoulli chineseRemainder divisors euler eulerPhi fibonacci
+   harmonic jacobi legendre moebiusMu numberOfDivisors sumOfDivisors sumOfKthPowerDivisors</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PRIMES</td></tr>
+<tr><td>Full name: </td><td class="full">IntegerPrimesPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">nextPrime prevPrime prime? primes</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTRET</td></tr>
+<tr><td>Full name: </td><td class="full">IntegerRetractions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">integer integer? integerIfCan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IROOT</td></tr>
+<tr><td>Full name: </td><td class="full">IntegerRoots</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">approxNthRoot approxSqrt perfectNthPower? perfectNthRoot perfectSqrt perfectSquare?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IBATOOL</td></tr>
+<tr><td>Full name: </td><td class="full">IntegralBasisTools</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">diagonalProduct idealiser leastPower</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IR2</td></tr>
+<tr><td>Full name: </td><td class="full">IntegrationResultFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IRRF2F</td></tr>
+<tr><td>Full name: </td><td class="full">IntegrationResultRFToFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">complexExpand complexIntegrate expand integrate split</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IR2F</td></tr>
+<tr><td>Full name: </td><td class="full">IntegrationResultToFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">complexExpand expand split</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTTOOLS</td></tr>
+<tr><td>Full name: </td><td class="full">IntegrationTools</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">kmax ksec mkPrim union vark varselect</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INVLAPLA</td></tr>
+<tr><td>Full name: </td><td class="full">InverseLaplaceTransform</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">inverseLaplace</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IRREDFFX</td></tr>
+<tr><td>Full name: </td><td class="full">IrredPolyOverFiniteField</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">generateIrredPoly</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">IRSN</td></tr>
+<tr><td>Full name: </td><td class="full">IrrRepSymNatPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">dimensionOfIrreducibleRepresentation irreducibleRepresentation</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">KERNEL2</td></tr>
+<tr><td>Full name: </td><td class="full">KernelFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">constantIfCan constantKernel</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">KOVACIC</td></tr>
+<tr><td>Full name: </td><td class="full">Kovacic</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">kovacic</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LAPLACE</td></tr>
+<tr><td>Full name: </td><td class="full">LaplaceTransform</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">laplace</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LEADCDET</td></tr>
+<tr><td>Full name: </td><td class="full">LeadingCoefDetermination</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">distFact polCase</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LINDEP</td></tr>
+<tr><td>Full name: </td><td class="full">LinearDependence</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">linearDependence linearlyDependent? solveLinear</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LPEFRAC</td></tr>
+<tr><td>Full name: </td><td class="full">LinearPolynomialEquationByFractions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">solveLinearPolynomialEquationByFractions</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LSMP</td></tr>
+<tr><td>Full name: </td><td class="full">LinearSystemMatrixPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">aSolution hasSolution? rank solve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LSPP</td></tr>
+<tr><td>Full name: </td><td class="full">LinearSystemPolynomialPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">linSolve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LGROBP</td></tr>
+<tr><td>Full name: </td><td class="full">LinGrobnerPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">anticoord choosemon computeBasis coordinate groebgen intcompBasis linGenPos
+   minPol totolex transform</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LF</td></tr>
+<tr><td>Full name: </td><td class="full">LiouvillianFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">Ci Ei Si belong? dilog erf integral li operator</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LIST2</td></tr>
+<tr><td>Full name: </td><td class="full">ListFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reduce scan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LIST3</td></tr>
+<tr><td>Full name: </td><td class="full">ListFunctions3</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LIST2MAP</td></tr>
+<tr><td>Full name: </td><td class="full">ListToMap</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">match</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MKBCFUNC</td></tr>
+<tr><td>Full name: </td><td class="full">MakeBinaryCompiledFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">binaryFunction compiledFunction</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MKFLCFN</td></tr>
+<tr><td>Full name: </td><td class="full">MakeFloatCompiledFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">makeFloatFunction</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MKFUNC</td></tr>
+<tr><td>Full name: </td><td class="full">MakeFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">function</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MKRECORD</td></tr>
+<tr><td>Full name: </td><td class="full">MakeRecord</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">makeRecord</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MKUCFUNC</td></tr>
+<tr><td>Full name: </td><td class="full">MakeUnaryCompiledFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">compiledFunction unaryFunction</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MAPPKG1</td></tr>
+<tr><td>Full name: </td><td class="full">MappingPackage1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> coerce fixedPoint id nullary recur</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MAPPKG2</td></tr>
+<tr><td>Full name: </td><td class="full">MappingPackage2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">const constant curry diag</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MAPPKG3</td></tr>
+<tr><td>Full name: </td><td class="full">MappingPackage3</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> constantLeft constantRight curryLeft curryRight twist</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MAPHACK1</td></tr>
+<tr><td>Full name: </td><td class="full">MappingPackageInternalHacks1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">iter recur</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MAPHACK2</td></tr>
+<tr><td>Full name: </td><td class="full">MappingPackageInternalHacks2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">arg1 arg2</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MAPHACK3</td></tr>
+<tr><td>Full name: </td><td class="full">MappingPackageInternalHacks3</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">comp</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MATCAT2</td></tr>
+<tr><td>Full name: </td><td class="full">MatrixCategoryFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reduce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MCDEN</td></tr>
+<tr><td>Full name: </td><td class="full">MatrixCommonDenominator</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">clearDenominator commonDenominator splitDenominator</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MATLIN</td></tr>
+<tr><td>Full name: </td><td class="full">MatrixLinearAlgebraFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">determinant inverse minordet nullSpace nullity rank rowEchelon</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MTHING</td></tr>
+<tr><td>Full name: </td><td class="full">MergeThing</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">mergeDifference</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MESH</td></tr>
+<tr><td>Full name: </td><td class="full">MeshCreationRoutinesForThreeDimensions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">meshFun2Var meshPar1Var meshPar2Var ptFunc</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MDDFACT</td></tr>
+<tr><td>Full name: </td><td class="full">ModularDistinctDegreeFactorizer</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">ddFact exptMod factor gcd separateFactors</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MHROWRED</td></tr>
+<tr><td>Full name: </td><td class="full">ModularHermitianRowReduction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">rowEch rowEchelon</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MRF2</td></tr>
+<tr><td>Full name: </td><td class="full">MonoidRingFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MSYSCMD</td></tr>
+<tr><td>Full name: </td><td class="full">MoreSystemCommands</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">systemCommand</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MPC2</td></tr>
+<tr><td>Full name: </td><td class="full">MPolyCatFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reshape</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MPC3</td></tr>
+<tr><td>Full name: </td><td class="full">MPolyCatFunctions3</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MPRFF</td></tr>
+<tr><td>Full name: </td><td class="full">MPolyCatRationalFunctionFactorizer</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor pushdown pushdterm pushucoef pushuconst pushup totalfract</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MRATFAC</td></tr>
+<tr><td>Full name: </td><td class="full">MRationalFactorize</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MFINFACT</td></tr>
+<tr><td>Full name: </td><td class="full">MultFiniteFactorize</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MMAP</td></tr>
+<tr><td>Full name: </td><td class="full">MultipleMap</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MULTFACT</td></tr>
+<tr><td>Full name: </td><td class="full">MultivariateFactorize</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MLIFT</td></tr>
+<tr><td>Full name: </td><td class="full">MultivariateLifting</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">corrPoly lifting lifting1</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MULTSQFR</td></tr>
+<tr><td>Full name: </td><td class="full">MultivariateSquareFree</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">squareFree squareFreePrim</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NCODIV</td></tr>
+<tr><td>Full name: </td><td class="full">NonCommutativeOperatorDivision</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">leftDivide leftExactQuotient leftGcd leftLcm leftQuotient
+   leftRemainder</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NONE1</td></tr>
+<tr><td>Full name: </td><td class="full">NoneFunctions1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NODE1</td></tr>
+<tr><td>Full name: </td><td class="full">NonLinearFirstOrderODESolver</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">solve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NLINSOL</td></tr>
+<tr><td>Full name: </td><td class="full">NonLinearSolvePackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">solve solveInField</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NPCOEF</td></tr>
+<tr><td>Full name: </td><td class="full">NPCoef</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">listexp npcoef</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NFINTBAS</td></tr>
+<tr><td>Full name: </td><td class="full">NumberFieldIntegralBasis</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">discriminant integralBasis</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NUMFMT</td></tr>
+<tr><td>Full name: </td><td class="full">NumberFormats</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">FormatArabic FormatRoman ScanArabic ScanRoman</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NTPOLFN</td></tr>
+<tr><td>Full name: </td><td class="full">NumberTheoreticPolynomialFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">bernoulliB cyclotomic eulerE</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NUMODE</td></tr>
+<tr><td>Full name: </td><td class="full">NumericalOrdinaryDifferentialEquations</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">rk4 rk4a rk4f rk4qc</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NUMQUAD</td></tr>
+<tr><td>Full name: </td><td class="full">NumericalQuadrature</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">aromberg asimpson atrapezoidal romberg rombergo simpson simpsono trapezoidal
+   trapezoidalo</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NCEP</td></tr>
+<tr><td>Full name: </td><td class="full">NumericComplexEigenPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">characteristicPolynomial complexEigenvalues complexEigenvectors</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NCNTFRAC</td></tr>
+<tr><td>Full name: </td><td class="full">NumericContinuedFraction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">continuedFraction</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NREP</td></tr>
+<tr><td>Full name: </td><td class="full">NumericRealEigenPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">characteristicPolynomial realEigenvalues realEigenvectors</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NUMTUBE</td></tr>
+<tr><td>Full name: </td><td class="full">NumericTubePlot</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">tube</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">NUMERIC</td></tr>
+<tr><td>Full name: </td><td class="full">Numeric</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">complexNumeric numeric</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OCTCT2</td></tr>
+<tr><td>Full name: </td><td class="full">OctonionCategoryFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODEINT</td></tr>
+<tr><td>Full name: </td><td class="full">ODEIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">expint int</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODETOOLS</td></tr>
+<tr><td>Full name: </td><td class="full">ODETools</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">particularSolution variationOfParameters wronskianMatrix</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ARRAY12</td></tr>
+<tr><td>Full name: </td><td class="full">OneDimensionalArrayFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reduce scan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ONECOMP2</td></tr>
+<tr><td>Full name: </td><td class="full">OnePointCompletionFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OPQUERY</td></tr>
+<tr><td>Full name: </td><td class="full">OperationsQuery</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">getDatabase</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ORDCOMP2</td></tr>
+<tr><td>Full name: </td><td class="full">OrderedCompletionFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ORDFUNS</td></tr>
+<tr><td>Full name: </td><td class="full">OrderingFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">pureLex reverseLex totalLex</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ORTHPOL</td></tr>
+<tr><td>Full name: </td><td class="full">OrthogonalPolynomialFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">ChebyshevU chebyshevT hermiteH laguerreL legendreP</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">OUT</td></tr>
+<tr><td>Full name: </td><td class="full">OutputPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">output</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PADEPAC</td></tr>
+<tr><td>Full name: </td><td class="full">PadeApproximantPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">pade</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PADE</td></tr>
+<tr><td>Full name: </td><td class="full">PadeApproximants</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">pade padecf</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">YSTREAM</td></tr>
+<tr><td>Full name: </td><td class="full">ParadoxicalCombinatorsForStreams</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">Y</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PARTPERM</td></tr>
+<tr><td>Full name: </td><td class="full">PartitionsAndPermutations</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">conjugate conjugates partitions permutations sequences shuffle
+   shufflein</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PATTERN1</td></tr>
+<tr><td>Full name: </td><td class="full">PatternFunctions1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">addBadValue badValues predicate satisfy? suchThat</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PATTERN2</td></tr>
+<tr><td>Full name: </td><td class="full">PatternFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMASS</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchAssertions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">assert constant multiple optional</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMFS</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchFunctionSpace</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">patternMatch</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMINS</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchIntegerNumberSystem</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">patternMatch</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMKERNEL</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchKernel</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">patternMatch</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMLSAGG</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchListAggregate</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">patternMatch</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMPLCAT</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchPolynomialCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">patternMatch</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMDOWN</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchPushDown</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">fixPredicate patternMatch</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMQFCAT</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchQuotientFieldCategory</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">patternMatch</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PATRES2</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchResultFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMSYM</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchSymbol</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">patternMatch</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PMTOOLS</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatchTools</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">patternMatch patternMatchTimes</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PATMATCH</td></tr>
+<tr><td>Full name: </td><td class="full">PatternMatch</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">Is is?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PERMAN</td></tr>
+<tr><td>Full name: </td><td class="full">Permanent</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">permanent</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PGE</td></tr>
+<tr><td>Full name: </td><td class="full">PermutationGroupExamples</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">abelianGroup alternatingGroup cyclicGroup dihedralGroup janko2 mathieu11
+   mathieu12 mathieu22 mathieu23 mathieu24 rubiksGroup symmetricGroup youngGroup</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PICOERCE</td></tr>
+<tr><td>Full name: </td><td class="full">PiCoercions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PLOT1</td></tr>
+<tr><td>Full name: </td><td class="full">PlotFunctions1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">plot plotPolar</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PLOTTOOL</td></tr>
+<tr><td>Full name: </td><td class="full">PlotTools</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">calcRanges</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PTFUNC2</td></tr>
+<tr><td>Full name: </td><td class="full">PointFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PTPACK</td></tr>
+<tr><td>Full name: </td><td class="full">PointPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">color hue phiCoord rCoord shade thetaCoord xCoord yCoord zCoord</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PFOQ</td></tr>
+<tr><td>Full name: </td><td class="full">PointsOfFiniteOrderRational</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">order torsion? torsionIfCan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PFOTOOLS</td></tr>
+<tr><td>Full name: </td><td class="full">PointsOfFiniteOrderTools</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">badNum doubleDisc getGoodPrime mix polyred</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PFO</td></tr>
+<tr><td>Full name: </td><td class="full">PointsOfFiniteOrder</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">order torsion? torsionIfCan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">POLTOPOL</td></tr>
+<tr><td>Full name: </td><td class="full">PolToPol</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">dmpToNdmp dmpToP ndmpToDmp ndmpToP pToDmp pToNdmp</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PGROEB</td></tr>
+<tr><td>Full name: </td><td class="full">PolyGroebner</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">lexGroebner totalGroebner</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PAN2EXPR</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialAN2Expression</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">POLYLIFT</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialCategoryLifting</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">POLYCATQ</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialCategoryQuotientFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">isExpt isPlus isPower isTimes mainVariable multivariate
+   univariate variables</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PFBRU</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialFactorizationByRecursionUnivariate</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">bivariateSLPEBR factorByRecursion factorSFBRlcUnit
+   factorSquareFreeByRecursion randomR solveLinearPolynomialEquationByRecursion</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PFBR</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialFactorizationByRecursion</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">bivariateSLPEBR factorByRecursion factorSFBRlcUnit
+   factorSquareFreeByRecursion randomR solveLinearPolynomialEquationByRecursion</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">POLY2</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PGCD</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialGcdPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">gcd gcdPrimitive</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PINTERPA</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialInterpolationAlgorithms</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">LagrangeInterpolation</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PINTERP</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialInterpolation</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">interpolate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PNTHEORY</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialNumberTheoryFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">bernoulli chebyshevT chebyshevU cyclotomic euler fixedDivisor
+   hermite laguerre legendre</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">POLYROOT</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialRoots</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">froot qroot rroot</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SOLVEFOR</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialSolveByFormulas</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">aCubic aLinear aQuadratic aQuartic aSolution cubic linear mapSolve
+   quadratic quartic solve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PSQFR</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialSquareFree</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">squareFree</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">POLY2UP</td></tr>
+<tr><td>Full name: </td><td class="full">PolynomialToUnivariatePolynomial</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">univariate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LIMITPS</td></tr>
+<tr><td>Full name: </td><td class="full">PowerSeriesLimitPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">complexLimit limit</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PRIMARR2</td></tr>
+<tr><td>Full name: </td><td class="full">PrimitiveArrayFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reduce scan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PRIMELT</td></tr>
+<tr><td>Full name: </td><td class="full">PrimitiveElement</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">primitiveElement</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODEPRIM</td></tr>
+<tr><td>Full name: </td><td class="full">PrimitiveRatDE</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">denomLODE</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODEPRRIC</td></tr>
+<tr><td>Full name: </td><td class="full">PrimitiveRatRicDE</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">changevar constantCoefficientRicDE denomRicDE leadingCoefficientRicDE polyRicDE
+   singRicDE</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">PRINT</td></tr>
+<tr><td>Full name: </td><td class="full">PrintPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">print</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTPAF</td></tr>
+<tr><td>Full name: </td><td class="full">PureAlgebraicIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">palgLODE palgRDE palgextint palgint palglimint</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODEPAL</td></tr>
+<tr><td>Full name: </td><td class="full">PureAlgebraicLODE</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">algDsolve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QALGSET2</td></tr>
+<tr><td>Full name: </td><td class="full">QuasiAlgebraicSet2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">radicalSimplify</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QUATCT2</td></tr>
+<tr><td>Full name: </td><td class="full">QuaternionCategoryFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">QFCAT2</td></tr>
+<tr><td>Full name: </td><td class="full">QuotientFieldCategoryFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REP</td></tr>
+<tr><td>Full name: </td><td class="full">RadicalEigenPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">eigenMatrix gramschmidt normalise orthonormalBasis radicalEigenvalues
+   radicalEigenvector radicalEigenvectors</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SOLVERAD</td></tr>
+<tr><td>Full name: </td><td class="full">RadicalSolvePackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">contractSolve radicalRoots radicalSolve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RADUTIL</td></tr>
+<tr><td>Full name: </td><td class="full">RadixUtilities</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">radix</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RANDSRC</td></tr>
+<tr><td>Full name: </td><td class="full">RandomNumberSource</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">randnum reseed size</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RATFACT</td></tr>
+<tr><td>Full name: </td><td class="full">RationalFactorize</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DEFINTRF</td></tr>
+<tr><td>Full name: </td><td class="full">RationalFunctionDefiniteIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">integrate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RFFACTOR</td></tr>
+<tr><td>Full name: </td><td class="full">RationalFunctionFactorizer</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factorFraction</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RFFACT</td></tr>
+<tr><td>Full name: </td><td class="full">RationalFunctionFactor</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTRF</td></tr>
+<tr><td>Full name: </td><td class="full">RationalFunctionIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">extendedIntegrate infieldIntegrate internalIntegrate limitedIntegrate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">LIMITRF</td></tr>
+<tr><td>Full name: </td><td class="full">RationalFunctionLimitPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">complexLimit limit</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SIGNRF</td></tr>
+<tr><td>Full name: </td><td class="full">RationalFunctionSign</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">sign</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SUMRF</td></tr>
+<tr><td>Full name: </td><td class="full">RationalFunctionSum</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">sum</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RF</td></tr>
+<tr><td>Full name: </td><td class="full">RationalFunction</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce eval mainVariable multivariate univariate variables</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTRAT</td></tr>
+<tr><td>Full name: </td><td class="full">RationalIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">extendedint infieldint integrate limitedint</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODERAT</td></tr>
+<tr><td>Full name: </td><td class="full">RationalLODE</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">ratDsolve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RATRET</td></tr>
+<tr><td>Full name: </td><td class="full">RationalRetractions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">rational rational? rationalIfCan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODERTRIC</td></tr>
+<tr><td>Full name: </td><td class="full">RationalRicDE</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">changevar constantCoefficientRicDE polyRicDE ricDsolve singRicDE</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RTODETLS</td></tr>
+<tr><td>Full name: </td><td class="full">RatODETools</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">genericPolynomial</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REALSOLV</td></tr>
+<tr><td>Full name: </td><td class="full">RealSolvePackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">realSolve solve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REAL0Q</td></tr>
+<tr><td>Full name: </td><td class="full">RealZeroPackageQ</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">realZeros refine</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REAL0</td></tr>
+<tr><td>Full name: </td><td class="full">RealZeroPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">midpoint midpoints realZeros refine</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RMCAT2</td></tr>
+<tr><td>Full name: </td><td class="full">RectangularMatrixCategoryFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reduce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RDIV</td></tr>
+<tr><td>Full name: </td><td class="full">ReducedDivisor</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">order</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODERED</td></tr>
+<tr><td>Full name: </td><td class="full">ReduceLODE</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">reduceLODE</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REDORDER</td></tr>
+<tr><td>Full name: </td><td class="full">ReductionOfOrder</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">ReduceOrder</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REPDB</td></tr>
+<tr><td>Full name: </td><td class="full">RepeatedDoubling</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">double</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REPSQ</td></tr>
+<tr><td>Full name: </td><td class="full">RepeatedSquaring</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">expt</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REP1</td></tr>
+<tr><td>Full name: </td><td class="full">RepresentationPackage1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">antisymmetricTensors createGenericMatrix permutationRepresentation
+   symmetricTensors tensorProduct</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">REP2</td></tr>
+<tr><td>Full name: </td><td class="full">RepresentationPackage2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">areEquivalent? completeEchelonBasis createRandomElement cyclicSubmodule
+   isAbsolutelyIrreducible? meatAxe scanOneDimSubspaces split standardBasisOfCyclicSubmodule</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RESLATC</td></tr>
+<tr><td>Full name: </td><td class="full">ResolveLatticeCompletion</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RETSOL</td></tr>
+<tr><td>Full name: </td><td class="full">RetractSolvePackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">solveRetract</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SAERFFC</td></tr>
+<tr><td>Full name: </td><td class="full">SAERationalFunctionAlgFactor</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SEGBIND2</td></tr>
+<tr><td>Full name: </td><td class="full">SegmentBindingFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SEG2</td></tr>
+<tr><td>Full name: </td><td class="full">SegmentFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SAEFACT</td></tr>
+<tr><td>Full name: </td><td class="full">SimpleAlgebraicExtensionAlgFactor</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DFLOATSFUN</td></tr>
+<tr><td>Full name: </td><td class="full">DoubleFloatSpecialFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">Beta Gamma airyAi airyBi besselI besselJ besselK besselY digamma
+   hypergeometric0F1 logGamma polygamma</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SCACHE</td></tr>
+<tr><td>Full name: </td><td class="full">SortedCache</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">cache clearCache enterInCache</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SUP2</td></tr>
+<tr><td>Full name: </td><td class="full">SparseUnivariatePolynomialFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SPECOUT</td></tr>
+<tr><td>Full name: </td><td class="full">SpecialOutputPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">outputAsFortran outputAsScript outputAsTex</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">MATSTOR</td></tr>
+<tr><td>Full name: </td><td class="full">StorageEfficientMatrixOperations</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> copy! leftScalarTimes! minus! plus! power!
+   rightScalarTimes! times!</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STREAM1</td></tr>
+<tr><td>Full name: </td><td class="full">StreamFunctions1</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">concat</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STREAM2</td></tr>
+<tr><td>Full name: </td><td class="full">StreamFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reduce scan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STREAM3</td></tr>
+<tr><td>Full name: </td><td class="full">StreamFunctions3</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STTAYLOR</td></tr>
+<tr><td>Full name: </td><td class="full">StreamTaylorSeriesOperations</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> <span class="teletype">/</span> addiag coerce compose deriv eval
+   evenlambert gderiv generalLambert int integers integrate invmultisect lagrange lambert lazyGintegrate lazyIntegrate
+   mapdiv mapmult monom multisect nlde oddintegers oddlambert power powern recip revert</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">STTF</td></tr>
+<tr><td>Full name: </td><td class="full">StreamTranscendentalFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">**</span> acos acosh acot acoth acsc acsch asec asech asin asinh atan
+   atanh cos cosh cot coth csc csch exp log sec sech sin sincos sinh sinhcosh tan tanh</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SUBRESP</td></tr>
+<tr><td>Full name: </td><td class="full">SubResultantPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">primitivePart subresultantVector</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SYMFUNC</td></tr>
+<tr><td>Full name: </td><td class="full">SymmetricFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">symFunc</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SGCF</td></tr>
+<tr><td>Full name: </td><td class="full">SymmetricGroupCombinatoricFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coleman inverseColeman listYoungTableaus makeYoungTableau
+   nextColeman nextLatticePermutation nextPartition numberOfImproperPartitions subSet unrankImproperPartitions0
+   unrankImproperPartitions1</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ODESYS</td></tr>
+<tr><td>Full name: </td><td class="full">SystemODESolver</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">solveInField triangulate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SYSSOLP</td></tr>
+<tr><td>Full name: </td><td class="full">SystemSolvePackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">solve triangularSystems</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TABLBUMP</td></tr>
+<tr><td>Full name: </td><td class="full">TableauxBumpers</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">bat bat1 bumprow bumptab bumptab1 inverse lex maxrow mr slex tab tab1 untab</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TANEXP</td></tr>
+<tr><td>Full name: </td><td class="full">TangentExpansions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">tanAn tanNa tanSum</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TOOLSIGN</td></tr>
+<tr><td>Full name: </td><td class="full">ToolsForSign</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">direction nonQsign sign</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DRAWCURV</td></tr>
+<tr><td>Full name: </td><td class="full">TopLevelDrawFunctionsForAlgebraicCurves</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">draw</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DRAWCFUN</td></tr>
+<tr><td>Full name: </td><td class="full">TopLevelDrawFunctionsForCompiledFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">draw makeObject recolor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">DRAW</td></tr>
+<tr><td>Full name: </td><td class="full">TopLevelDrawFunctions</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">draw makeObject</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TOPSP</td></tr>
+<tr><td>Full name: </td><td class="full">TopLevelThreeSpace</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">createThreeSpace</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTHERTR</td></tr>
+<tr><td>Full name: </td><td class="full">TranscendentalHermiteIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">HermiteIntegrate</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">INTTR</td></tr>
+<tr><td>Full name: </td><td class="full">TranscendentalIntegration</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">expextendedint expintegrate expintfldpoly explimitedint primextendedint
+   primextintfrac primintegrate primintegratefrac primintfldpoly primlimintfrac primlimitedint</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TRMANIP</td></tr>
+<tr><td>Full name: </td><td class="full">TranscendentalManipulations</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">cos2sec cosh2sech cot2tan cot2trig coth2tanh coth2trigh csc2sin
+   csch2sinh expand expandLog expandPower htrigs removeCosSq removeCoshSq removeSinSq removeSinhSq sec2cos sech2cosh
+   simplify simplifyExp sin2csc sinh2csch tan2cot tan2trig tanh2coth tanh2trigh</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">RDETR</td></tr>
+<tr><td>Full name: </td><td class="full">TranscendentalRischDE</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">DSPDE SPDE baseRDE expRDE primRDE</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SOLVESER</td></tr>
+<tr><td>Full name: </td><td class="full">TransSolvePackageService</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">decomposeFunc unvectorise</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">SOLVETRA</td></tr>
+<tr><td>Full name: </td><td class="full">TransSolvePackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">solve</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TRIMAT</td></tr>
+<tr><td>Full name: </td><td class="full">TriangularMatrixOperations</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">LowTriBddDenomInv UpTriBddDenomInv</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TRIGMNIP</td></tr>
+<tr><td>Full name: </td><td class="full">TrigonometricManipulations</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">complexElementary complexNormalize imag real real? trigs</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TUBETOOL</td></tr>
+<tr><td>Full name: </td><td class="full">TubePlotTools</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops"><span class="teletype">*</span> <span class="teletype">+</span> <span class="teletype">-</span> cosSinInfo cross dot loopPoints point unitVector</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">CLIP</td></tr>
+<tr><td>Full name: </td><td class="full">TwoDimensionalPlotClipping</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">clip clipParametric clipWithRanges</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">TWOFACT</td></tr>
+<tr><td>Full name: </td><td class="full">TwoFactorize</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">generalSqFr generalTwoFactor twoFactor</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UNIFACT</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariateFactorize</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">factor factorSquareFree genFact henselFact henselfact quadratic sqroot
+   trueFactors</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">ULS2</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariateLaurentSeriesFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UPOLYC2</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePolynomialCategoryFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UPCDEN</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePolynomialCommonDenominator</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">clearDenominator commonDenominator splitDenominator</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UP2</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePolynomialFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UPSQFREE</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePolynomialSquareFree</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">BumInSepFFE squareFree squareFreePart</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UPXS2</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariatePuiseuxSeriesFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UTS2</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariateTaylorSeriesFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UTSODE</td></tr>
+<tr><td>Full name: </td><td class="full">UnivariateTaylorSeriesODESolver</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">mpsode ode ode1 ode2 stFunc1 stFunc2 stFuncN</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UNISEG2</td></tr>
+<tr><td>Full name: </td><td class="full">UniversalSegmentFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UDPO</td></tr>
+<tr><td>Full name: </td><td class="full">UserDefinedPartialOrdering</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">getOrder largest less? more? setOrder userOrdered?</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">UDVO</td></tr>
+<tr><td>Full name: </td><td class="full">UserDefinedVariableOrdering</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">getVariableOrder resetVariableOrder setVariableOrder</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">VECTOR2</td></tr>
+<tr><td>Full name: </td><td class="full">VectorFunctions2</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">map reduce scan</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">VIEWDEF</td></tr>
+<tr><td>Full name: </td><td class="full">ViewDefaultsPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">axesColorDefault lineColorDefault pointColorDefault pointSizeDefault
+   tubePointsDefault tubeRadiusDefault unitsColorDefault var1StepsDefault var2StepsDefault viewDefaults viewPosDefault
+   viewSizeDefault viewWriteAvailable viewWriteDefault</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">VIEW</td></tr>
+<tr><td>Full name: </td><td class="full">ViewportPackage</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">coerce drawCurves graphCurves</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">WEIER</td></tr>
+<tr><td>Full name: </td><td class="full">WeierstrassPreparation</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">cfirst clikeUniv crest qqq sts2stst weierstrass</td></tr>
+</table>
+</p>
+
+
+<p><table class="category-domain-package">
+<tr><td>Abbreviation: </td><td class="abbrev">WFFINTBS</td></tr>
+<tr><td>Full name: </td><td class="full">WildFunctionFieldIntegralBasis</td></tr>
+<tr><td>Belongs to: </td><td class="membs"></td></tr>
+<tr><td>Operations: </td><td class="ops">integralBasis listSquaredFactors</td></tr>
+</table>
+</p>
+
+
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-18.1.xhtml" style="margin-right: 10px;">Previous Section 18.1  Axiom Domains</a><a href="section-21.0.xhtml" style="margin-right: 10px;">Next Section 21.0 Programs for AXIOM Images</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.0.xhtml
new file mode 100644
index 0000000..5acf3e5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.0.xhtml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.16.xhtml" style="margin-right: 10px;">Previous Section 1.16  Graphics</a><a href="section-2.1.xhtml" style="margin-right: 10px;">Next Section 2.1 The Basic Idea</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.0">
+<h2 class="sectiontitle">2.0 Using Types and Modes</h2>
+
+
+<div class="quote" >
+
+
+<p>Only recently have I begun to realize that the problem is not merely
+one of technical mastery or the competent application of the rules 
+...
+but that there is actually something else which is guiding these
+rules. It actually involves a different level of mastery. It's quite
+a different process to do it right; and every single act that you 
+do can be done in that sense well or badly. But even assuming that 
+you have got the technical part clear, the creation of this quality
+is a much more complicated process of the most utterly absorbing and
+fascinating dimensions. It is in fact a major creative or artistic 
+act -- every single little thing you do -- ...
+</p>
+
+
+<p>-- Christopher Alexander
+</p>
+
+
+<p>(from Patterns of Software by Richard Gabriel)
+</p>
+
+
+
+
+</div>
+
+
+<a name="ugTypes" class="label"/>
+
+
+<p>In this chapter we look at the key notion of <span class="italic">type</span> and its
+generalization <span class="italic">mode</span>.  We show that every Axiom object has a type
+that determines what you can do with the object.  In particular, we
+explain how to use types to call specific functions from particular
+parts of the library and how types and modes can be used to create new
+objects from old.  We also look at <span class="teletype">Record</span> and <span class="teletype">Union</span> types
+and the special type <span class="teletype">Any</span>.  Finally, we give you an idea of how
+Axiom manipulates types and modes internally to resolve ambiguities.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-1.16.xhtml" style="margin-right: 10px;">Previous Section 1.16  Graphics</a><a href="section-2.1.xhtml" style="margin-right: 10px;">Next Section 2.1 The Basic Idea</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.1.xhtml
new file mode 100644
index 0000000..798a4ba
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.1.xhtml
@@ -0,0 +1,889 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.0.xhtml" style="margin-right: 10px;">Previous Section 2.0 Using Types and Modes</a><a href="section-2.2.xhtml" style="margin-right: 10px;">Next Section 2.2 Writing Types and Modes</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.1">
+<h2 class="sectiontitle">2.1  The Basic Idea</h2>
+
+
+<a name="ugTypesBasic" class="label"/>
+
+
+<p>The Axiom world deals with many kinds of objects.  There are
+mathematical objects such as numbers and polynomials, data structure
+objects such as lists and arrays, and graphics objects such as points
+and graphic images.  Functions are objects too.
+</p>
+
+
+<p>Axiom organizes objects using the notion of domain of computation, or
+simply <span class="italic">domain</span>.  Each domain denotes a class of objects.  The
+class of objects it denotes is usually given by the name of the
+domain: <span class="teletype">Integer</span> for the integers, <span class="teletype">Float</span> for floating-point
+numbers, and so on.  The convention is that the first letter of a
+domain name is capitalized.  Similarly, the domain 
+<span class="teletype">Polynomial(Integer)</span> denotes ``polynomials with integer
+coefficients.''  Also, <span class="teletype">Matrix(Float)</span> denotes ``matrices with
+floating-point entries.''
+</p>
+
+
+<p>Every basic Axiom object belongs to a unique domain.  The integer <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math>
+belongs to the domain <span class="teletype">Integer</span> and the polynomial <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mn>3</mn></mrow></mstyle></math> belongs
+to the domain <span class="teletype">Polynomial(Integer)</span>.  The domain of an object is
+also called its <span class="italic">type</span>.  Thus we speak of ``the type 
+<span class="teletype">Integer</span>'' and ``the type <span class="teletype">Polynomial(Integer)</span>.''
+</p>
+
+
+<p>After an Axiom computation, the type is displayed toward the
+right-hand side of the page (or screen).
+</p>
+
+
+
+<div id="spadComm2-1" class="spadComm" >
+<form id="formComm2-1" action="javascript:makeRequest('2-1');" >
+<input id="comm2-1" type="text" class="command" style="width: 2em;" value="-3" />
+</form>
+<span id="commSav2-1" class="commSav" >-3</span>
+<div id="mathAns2-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>Here we create a rational number but it looks like the last result.
+The type however tells you it is different.  You cannot identify the
+type of an object by how Axiom displays the object.
+</p>
+
+
+
+<div id="spadComm2-2" class="spadComm" >
+<form id="formComm2-2" action="javascript:makeRequest('2-2');" >
+<input id="comm2-2" type="text" class="command" style="width: 3em;" value="-3/1" />
+</form>
+<span id="commSav2-2" class="commSav" >-3/1</span>
+<div id="mathAns2-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>When a computation produces a result of a simpler type, Axiom leaves
+the type unsimplified.  Thus no information is lost.
+</p>
+
+
+
+<div id="spadComm2-3" class="spadComm" >
+<form id="formComm2-3" action="javascript:makeRequest('2-3');" >
+<input id="comm2-3" type="text" class="command" style="width: 6em;" value="x + 3 - x" />
+</form>
+<span id="commSav2-3" class="commSav" >x + 3 - x</span>
+<div id="mathAns2-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>This seldom matters since Axiom retracts the answer to the
+simpler type if it is necessary.
+</p>
+
+
+
+<div id="spadComm2-4" class="spadComm" >
+<form id="formComm2-4" action="javascript:makeRequest('2-4');" >
+<input id="comm2-4" type="text" class="command" style="width: 9em;" value="factorial(%)" />
+</form>
+<span id="commSav2-4" class="commSav" >factorial(%)</span>
+<div id="mathAns2-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>6</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>When you issue a positive number, the type <span class="teletype">PositiveInteger</span> is
+printed.  Surely, <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math> also has type <span class="teletype">Integer</span>!  The curious reader
+may now have two questions.  First, is the type of an object not
+unique?  Second, how is <span class="teletype">PositiveInteger</span> related to 
+<span class="teletype">Integer</span>?
+</p>
+
+
+
+<div id="spadComm2-5" class="spadComm" >
+<form id="formComm2-5" action="javascript:makeRequest('2-5');" >
+<input id="comm2-5" type="text" class="command" style="width: 1em;" value="3" />
+</form>
+<span id="commSav2-5" class="commSav" >3</span>
+<div id="mathAns2-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Any domain can be refined to a <span class="italic">subdomain</span> by a membership 
+<span class="teletype">predicate</span>. A <span class="teletype">predicate</span> is a function that, when applied to an
+object of the domain, returns either <span class="teletype">true</span> or <span class="teletype">false</span>.  For
+example, the domain <span class="teletype">Integer</span> can be refined to the subdomain 
+<span class="teletype">PositiveInteger</span>, the set of integers <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> such that <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>&gt;</mo><mn>0</mn></mrow></mstyle></math>, by giving
+the Axiom predicate <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mo>-</mo><mo>&gt;</mo><mi>x</mi><mo>&gt;</mo><mn>0</mn></mrow></mstyle></math>.  Similarly, Axiom can define
+subdomains such as ``the subdomain of diagonal matrices,'' ``the
+subdomain of lists of length two,'' ``the subdomain of monic
+irreducible polynomials in <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>,'' and so on.  Trivially, any domain is
+a subdomain of itself.
+</p>
+
+
+<p>While an object belongs to a unique domain, it can belong to any
+number of subdomains.  Any subdomain of the domain of an object can be
+used as the <span class="italic">type</span> of that object.  The type of <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math> is indeed both
+<span class="teletype">Integer</span> and <span class="teletype">PositiveInteger</span> as well as any other subdomain
+of integer whose predicate is satisfied, such as ``the prime
+integers,'' ``the odd positive integers between 3 and 17,'' and so on.
+</p>
+
+
+
+<a name="subsec-2.1.1"/>
+<div class="subsection"  id="subsec-2.1.1">
+<h3 class="subsectitle">2.1.1  Domain Constructors</h3>
+
+
+<a name="ugTypesBasicDomainCons" class="label"/>
+
+
+<p>In Axiom, domains are objects.  You can create them, pass them to
+functions, and, as we'll see later, test them for certain properties.
+</p>
+
+
+<p>In Axiom, you ask for a value of a function by applying its name
+to a set of arguments.
+</p>
+
+
+<p>To ask for ``the factorial of <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math>'' you enter this expression to
+Axiom.  This applies the function <span class="teletype">factorial</span> to the value <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math> to
+compute the result.
+</p>
+
+
+
+<div id="spadComm2-6" class="spadComm" >
+<form id="formComm2-6" action="javascript:makeRequest('2-6');" >
+<input id="comm2-6" type="text" class="command" style="width: 8em;" value="factorial(7)" />
+</form>
+<span id="commSav2-6" class="commSav" >factorial(7)</span>
+<div id="mathAns2-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5040</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Enter the type <span class="teletype">Polynomial (Integer)</span> as an expression to Axiom.
+This looks much like a function call as well.  It is!  The result is
+appropriately stated to be of type <span class="teletype">Domain</span>, which according to
+our usual convention, denotes the class of all domains.
+</p>
+
+
+
+<div id="spadComm2-7" class="spadComm" >
+<form id="formComm2-7" action="javascript:makeRequest('2-7');" >
+<input id="comm2-7" type="text" class="command" style="width: 13em;" value="Polynomial(Integer)" />
+</form>
+<span id="commSav2-7" class="commSav" >Polynomial(Integer)</span>
+<div id="mathAns2-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>PolynomialInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>The most basic operation involving domains is that of building a new
+domain from a given one.  To create the domain of ``polynomials over
+the integers,'' Axiom applies the function <span class="teletype">Polynomial</span> to the
+domain <span class="teletype">Integer</span>.  A function like <span class="teletype">Polynomial</span> is called a
+<span class="italic">domain constructor</span> or, <span class="index">constructor:domain</span><a name="chapter-2-0"/> more simply, a
+<span class="italic">constructor</span>.  A domain constructor is a function that creates a
+domain.  An argument to a domain constructor can be another domain or,
+in general, an arbitrary kind of object.  <span class="teletype">Polynomial</span> takes a
+single domain argument while <span class="teletype">SquareMatrix</span> takes a positive
+integer as an argument to give its dimension and a domain argument to
+give the type of its components.
+</p>
+
+
+<p>What kinds of domains can you use as the argument to <span class="teletype">Polynomial</span>
+or <span class="teletype">SquareMatrix</span> or <span class="teletype">List</span>?  Well, the first two are
+mathematical in nature.  You want to be able to perform algebraic
+operations like ``<span class="teletype">+</span>'' and ``<span class="teletype">*</span>'' on polynomials and square
+matrices, and operations such as <span style="font-weight: bold;"> determinant</span> on square
+matrices.  So you want to allow polynomials of integers <span class="italic">and</span>
+polynomials of square matrices with complex number coefficients and,
+in general, anything that ``makes sense.'' At the same time, you don't
+want Axiom to be able to build nonsense domains such as ``polynomials
+of strings!''
+</p>
+
+
+<p>In contrast to algebraic structures, data structures can hold any kind
+of object.  Operations on lists such as <span class="spadfunFrom" style="font-weight: bold;">insert</span><span class="index">insert</span><a name="chapter-2-1"/><span class="index">List</span><a name="chapter-2-2"/>,
+<span class="spadfunFrom" style="font-weight: bold;">delete</span><span class="index">delete</span><a name="chapter-2-3"/><span class="index">List</span><a name="chapter-2-4"/>, and <span class="spadfunFrom" style="font-weight: bold;">concat</span><span class="index">concat</span><a name="chapter-2-5"/><span class="index">List</span><a name="chapter-2-6"/> just
+manipulate the list itself without changing or operating on its
+elements.  Thus you can build <span class="teletype">List</span> over almost any datatype,
+including itself.
+</p>
+
+
+<p>Create a complicated algebraic domain.
+</p>
+
+
+
+<div id="spadComm2-8" class="spadComm" >
+<form id="formComm2-8" action="javascript:makeRequest('2-8');" >
+<input id="comm2-8" type="text" class="command" style="width: 43em;" value="List (List (Matrix (Polynomial (Complex (Fraction (Integer))))))" />
+</form>
+<span id="commSav2-8" class="commSav" >List (List (Matrix (Polynomial (Complex (Fraction (Integer))))))</span>
+<div id="mathAns2-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>ListListMatrixPolynomialComplexFractionInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Try to create a meaningless domain.
+</p>
+
+
+
+<div id="spadComm2-9" class="spadComm" >
+<form id="formComm2-9" action="javascript:makeRequest('2-9');" >
+<input id="comm2-9" type="text" class="command" style="width: 12em;" value="Polynomial(String)" />
+</form>
+<span id="commSav2-9" class="commSav" >Polynomial(String)</span>
+<div id="mathAns2-9" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Polynomial&nbsp;String&nbsp;is&nbsp;not&nbsp;a&nbsp;valid&nbsp;type.<br />
+</div>
+
+
+
+<p>Evidently from our last example, Axiom has some mechanism that tells
+what a constructor can use as an argument.  This brings us to the
+notion of <span class="italic">category</span>.  As domains are objects, they too have a
+domain.  The domain of a domain is a category.  A category is simply a
+type whose members are domains.
+</p>
+
+
+<p>A common algebraic category is <span class="teletype">Ring</span>, the class of all domains
+that are ``rings.''  A ring is an algebraic structure with constants
+<math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and operations <span class="spadopFrom" title="Ring">+</span>, <span class="spadopFrom" title="Ring">-</span>,
+and <span class="spadopFrom" title="Ring">*</span>.  These operations are assumed ``closed''
+with respect to the domain, meaning that they take two objects of the
+domain and produce a result object also in the domain.  The operations
+are understood to satisfy certain ``axioms,'' certain mathematical
+principles providing the algebraic foundation for rings.  For example,
+the <span class="italic">additive inverse axiom</span> for rings states: 
+</p>
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>Every element <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> has an additive inverse <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> such that <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+</div>
+
+<p> The prototypical example of a domain that is a ring is
+the integers.  Keep them in mind whenever we mention <span class="teletype">Ring</span>.
+</p>
+
+
+<p>Many algebraic domain constructors such as <span class="teletype">Complex</span>, 
+<span class="teletype">Polynomial</span>, <span class="teletype">Fraction</span>, take rings as arguments and return rings
+as values.  You can use the infix operator ``<math xmlns="&mathml;" mathsize="big"><mstyle><mi>has</mi></mstyle></math>'' to ask a domain
+if it belongs to a particular category.
+</p>
+
+
+<p>All numerical types are rings.  Domain constructor <span class="teletype">Polynomial</span>
+builds ``the ring of polynomials over any other ring.''
+</p>
+
+
+
+<div id="spadComm2-10" class="spadComm" >
+<form id="formComm2-10" action="javascript:makeRequest('2-10');" >
+<input id="comm2-10" type="text" class="command" style="width: 19em;" value="Polynomial(Integer) has Ring" />
+</form>
+<span id="commSav2-10" class="commSav" >Polynomial(Integer) has Ring</span>
+<div id="mathAns2-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Constructor <span class="teletype">List</span> never produces a ring.
+</p>
+
+
+
+<div id="spadComm2-11" class="spadComm" >
+<form id="formComm2-11" action="javascript:makeRequest('2-11');" >
+<input id="comm2-11" type="text" class="command" style="width: 15em;" value="List(Integer) has Ring" />
+</form>
+<span id="commSav2-11" class="commSav" >List(Integer) has Ring</span>
+<div id="mathAns2-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The constructor <span class="teletype">Matrix(R)</span> builds ``the domain of all matrices
+over the ring <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>.'' This domain is never a ring since the operations
+``<span class="teletype">+</span>'', ``<span class="teletype">-</span>'', and ``<span class="teletype">*</span>'' on matrices of arbitrary
+shapes are undefined.
+</p>
+
+
+
+<div id="spadComm2-12" class="spadComm" >
+<form id="formComm2-12" action="javascript:makeRequest('2-12');" >
+<input id="comm2-12" type="text" class="command" style="width: 16em;" value="Matrix(Integer) has Ring" />
+</form>
+<span id="commSav2-12" class="commSav" >Matrix(Integer) has Ring</span>
+<div id="mathAns2-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Thus you can never build polynomials over matrices.
+</p>
+
+
+
+<div id="spadComm2-13" class="spadComm" >
+<form id="formComm2-13" action="javascript:makeRequest('2-13');" >
+<input id="comm2-13" type="text" class="command" style="width: 18em;" value="Polynomial(Matrix(Integer))" />
+</form>
+<span id="commSav2-13" class="commSav" >Polynomial(Matrix(Integer))</span>
+<div id="mathAns2-13" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Polynomial&nbsp;Matrix&nbsp;Integer&nbsp;is&nbsp;not&nbsp;a&nbsp;valid&nbsp;type.<br />
+</div>
+
+
+
+<p>Use <span class="teletype">SquareMatrix(n,R)</span> instead.  For any positive integer <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>, it
+builds ``the ring of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> by <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> matrices over <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>.''
+</p>
+
+
+
+<div id="spadComm2-14" class="spadComm" >
+<form id="formComm2-14" action="javascript:makeRequest('2-14');" >
+<input id="comm2-14" type="text" class="command" style="width: 30em;" value="Polynomial(SquareMatrix(7,Complex(Integer)))" />
+</form>
+<span id="commSav2-14" class="commSav" >Polynomial(SquareMatrix(7,Complex(Integer)))</span>
+<div id="mathAns2-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>PolynomialSquareMatrix(7,ComplexInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Another common category is <span class="teletype">Field</span>, the class of all fields.
+<span class="index">field</span><a name="chapter-2-7"/> A field is a ring with additional operations.  For
+example, a field has commutative multiplication and a closed operation
+<span class="spadopFrom" title="Field">/</span> for the division of two elements.  <span class="teletype">Integer</span>
+is not a field since, for example, <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>3</mn><mo>/</mo><mn>2</mn></mrow></mstyle></math> does not have an integer
+result.  The prototypical example of a field is the rational numbers,
+that is, the domain <span class="teletype">Fraction(Integer)</span>.  In general, the
+constructor <span class="teletype">Fraction</span> takes an IntegralDomain, which is a ring
+with additional properties, as an argument and returns a field. 
+<span class="footnote">Actually, the argument domain must have some additional
+so as to belong to the category <span class="teletype">IntegralDomain</span></span>
+Other domain constructors, such as <span class="teletype">Complex</span>, build fields only if their
+argument domain is a field.
+</p>
+
+
+<p>The complex integers (often called the ``Gaussian integers'') do not form
+a field.
+</p>
+
+
+
+<div id="spadComm2-15" class="spadComm" >
+<form id="formComm2-15" action="javascript:makeRequest('2-15');" >
+<input id="comm2-15" type="text" class="command" style="width: 18em;" value="Complex(Integer) has Field" />
+</form>
+<span id="commSav2-15" class="commSav" >Complex(Integer) has Field</span>
+<div id="mathAns2-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>But fractions of complex integers do.
+</p>
+
+
+
+<div id="spadComm2-16" class="spadComm" >
+<form id="formComm2-16" action="javascript:makeRequest('2-16');" >
+<input id="comm2-16" type="text" class="command" style="width: 24em;" value="Fraction(Complex(Integer)) has Field" />
+</form>
+<span id="commSav2-16" class="commSav" >Fraction(Complex(Integer)) has Field</span>
+<div id="mathAns2-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The algebraically equivalent domain of complex rational numbers is a field
+since domain constructor <span class="teletype">Complex</span> produces a field whenever its
+argument is a field.
+</p>
+
+
+
+<div id="spadComm2-17" class="spadComm" >
+<form id="formComm2-17" action="javascript:makeRequest('2-17');" >
+<input id="comm2-17" type="text" class="command" style="width: 24em;" value="Complex(Fraction(Integer)) has Field" />
+</form>
+<span id="commSav2-17" class="commSav" >Complex(Fraction(Integer)) has Field</span>
+<div id="mathAns2-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The most basic category is <span class="teletype">Type</span>.  <span class="index">Type</span><a name="chapter-2-8"/> It denotes the
+class of all domains and subdomains. Note carefully that <span class="teletype">Type</span>
+does not denote the class of all types.  The type of all categories is
+<span class="teletype">Category</span>.  The type of <span class="teletype">Type</span> itself is undefined.  Domain
+constructor <span class="teletype">List</span> is able to build ``lists of elements from
+domain <math xmlns="&mathml;" mathsize="big"><mstyle><mi>D</mi></mstyle></math>'' for arbitrary <math xmlns="&mathml;" mathsize="big"><mstyle><mi>D</mi></mstyle></math> simply by requiring that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>D</mi></mstyle></math> belong to
+category <span class="teletype">Type</span>.
+</p>
+
+
+<p>Now, you may ask, what exactly is a category?  <span class="index">category</span><a name="chapter-2-9"/> Like
+domains, categories can be defined in the Axiom language.  A category
+is defined by three components:
+</p>
+
+
+
+
+<ol>
+<li>
+ a name (for example, <span class="teletype">Ring</span>),
+used to refer to the class of domains that the category represents;
+</li>
+<li> a set of operations, used to refer to the operations that
+the domains of this class support
+(for example, ``<span class="teletype">+</span>'', ``<span class="teletype">-</span>'', and ``<span class="teletype">*</span>'' for rings); and
+</li>
+<li> an optional list of other categories that this category extends.
+</li>
+</ol>
+
+
+
+<p>This last component is a new idea.  And it is key to the design of
+Axiom!  Because categories can extend one another, they form
+hierarchies.  Detailed charts showing the category hierarchies
+in Axiom are displayed in Appendix (TPDHERE).  There you see
+that all categories are extensions of <span class="teletype">Type</span> and that <span class="teletype">Field</span>
+is an extension of <span class="teletype">Ring</span>.
+</p>
+
+
+<p>The operations supported by the domains of a category are called the
+<span style="font-style: italic;"> exports</span> of that category because these are the operations made
+available for system-wide use.  The exports of a domain of a given
+category are not only the ones explicitly mentioned by the category.
+Since a category extends other categories, the operations of these
+other categories---and all categories these other categories
+extend---are also exported by the domains.
+</p>
+
+
+<p>For example, polynomial domains belong to <span class="teletype">PolynomialCategory</span>.
+This category explicitly mentions some twenty-nine operations on
+polynomials, but it extends eleven other categories (including 
+<span class="teletype">Ring</span>).  As a result, the current system has over one hundred
+operations on polynomials.
+</p>
+
+
+<p>If a domain belongs to a category that extends, say, <span class="teletype">Ring</span>, it is
+convenient to say that the domain exports <span class="teletype">Ring</span>.  The name of the
+category thus provides a convenient shorthand for the list of
+operations exported by the category.  Rather than listing operations
+such as <span class="spadopFrom" title="Ring">+</span> and <span class="spadopFrom" title="Ring">*</span> of <span class="teletype">Ring</span>
+each time they are needed, the definition of a type simply asserts
+that it exports category <span class="teletype">Ring</span>.
+</p>
+
+
+<p>The category name, however, is more than a shorthand.  The name 
+<span class="teletype">Ring</span>, in fact, implies that the operations exported by rings are
+required to satisfy a set of ``axioms'' associated with the name 
+<span class="teletype">Ring</span>. This subtle but important feature distinguishes Axiom from
+other abstract datatype designs.
+</p>
+
+
+<p>Why is it not correct to assume that some type is a ring if it exports
+all of the operations of <span class="teletype">Ring</span>?  Here is why.  Some languages
+such as <span style="font-weight: bold;"> APL</span> <span class="index">APL</span><a name="chapter-2-10"/> denote the <span class="teletype">Boolean</span> constants
+<span class="teletype">true</span> and <span class="teletype">false</span> by the integers <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> respectively, then use
+``<span class="teletype">+</span>'' and ``<span class="teletype">*</span>'' to denote the logical operators <span style="font-weight: bold;"> or</span> and
+<span style="font-weight: bold;"> and</span>.  But with these definitions <span class="teletype">Boolean</span> is not a
+ring since the additive inverse axiom is violated. That is, there is
+no inverse element <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> such that <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>a</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>, or, in the usual terms:
+<span class="teletype">true or a = false</span>.  This alternative definition of <span class="teletype">Boolean</span>
+can be easily and correctly implemented in Axiom, since <span class="teletype">Boolean</span>
+simply does not assert that it is of category <span class="teletype">Ring</span>.  This
+prevents the system from building meaningless domains such as 
+<span class="teletype">Polynomial(Boolean)</span> and then wrongfully applying algorithms that
+presume that the ring axioms hold.
+</p>
+
+
+<p>Enough on categories. To learn more about them, see Chapter
+<a href="section-12.0.xhtml#ugCategories" class="ref" >ugCategories</a> .  
+We now return to our discussion of domains.
+</p>
+
+
+<p>Domains <span class="italic">export</span> a set of operations to make them available for
+system-wide use.  <span class="teletype">Integer</span>, for example, exports the operations
+<span class="spadopFrom" title="Integer">+</span> and <span class="spadopFrom" title="Integer">=</span> given by the
+signatures <span class="spadopFrom" title="Integer">+</span>:
+(Integer,Integer)->Integer and <span class="spadopFrom" title="Integer">=</span>:
+(Integer,Integer)->Boolean, respectively.  Each of these
+operations takes two <span class="teletype">Integer</span> arguments.  The
+<span class="spadopFrom" title="Integer">+</span> operation also returns an <span class="teletype">Integer</span> but
+<span class="spadopFrom" title="Integer">=</span> returns a <span class="teletype">Boolean</span>: <span class="teletype">true</span> or <span class="teletype">false</span>.
+The operations exported by a domain usually manipulate objects of the
+domain---but not always.
+</p>
+
+
+<p>The operations of a domain may actually take as arguments, and return
+as values, objects from any domain.  For example, <span class="teletype">Fraction
+(Integer)</span> exports the operations <span class="spadopFrom" title="Fraction">/</span>:
+(Integer,Integer)->Fraction(Integer) and
+<span class="spadfunFrom" style="font-weight: bold;">characteristic</span><span class="index">characteristic</span><a name="chapter-2-11"/><span class="index">Fraction</span><a name="chapter-2-12"/>:
+->NonNegativeInteger.
+</p>
+
+
+<p>Suppose all operations of a domain take as arguments and return as
+values, only objects from <span class="italic">other</span> domains.  <span class="index">package</span><a name="chapter-2-13"/> This
+kind of domain <span class="index">constructor:package</span><a name="chapter-2-14"/> is what Axiom calls a 
+<span class="italic">package</span>.
+</p>
+
+
+<p>A package does not designate a class of objects at all.  Rather, a
+package is just a collection of operations.  Actually the bulk of the
+Axiom library of algorithms consists of packages.  The facilities for
+factorization; integration; solution of linear, polynomial, and
+differential equations; computation of limits; and so on, are all
+defined in packages.  Domains needed by algorithms can be passed to a
+package as arguments or used by name if they are not ``variable.''
+Packages are useful for defining operations that convert objects of
+one type to another, particularly when these types have different
+parameterizations.  As an example, the package <span class="teletype">PolynomialFunction2(R,S)</span> 
+defines operations that convert polynomials
+over a domain <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math> to polynomials over <math xmlns="&mathml;" mathsize="big"><mstyle><mi>S</mi></mstyle></math>.  To convert an object from
+<span class="teletype">Polynomial(Integer)</span> to <span class="teletype">Polynomial(Float)</span>, Axiom builds the
+package <span class="teletype">PolynomialFunctions2(Integer,Float)</span> in order to create
+the required conversion function.  (This happens ``behind the scenes''
+for you: see <a href="section-2.7.xhtml#ugTypesConvert" class="ref" >ugTypesConvert</a> 
+for details on how to convert objects.)
+</p>
+
+
+<p>Axiom categories, domains and packages and all their contained
+functions are written in the Axiom programming language and have been
+compiled into machine code.  This is what comprises the Axiom 
+<span class="italic">library</span>.  We will show you how to use these
+domains and their functions and how to write your own functions.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.0.xhtml" style="margin-right: 10px;">Previous Section 2.0 Using Types and Modes</a><a href="section-2.2.xhtml" style="margin-right: 10px;">Next Section 2.2 Writing Types and Modes</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.10.xhtml
new file mode 100644
index 0000000..91f9f5d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.10.xhtml
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.9.xhtml" style="margin-right: 10px;">Previous Section 2.9 Package Calling and Target Types</a><a href="section-2.11.xhtml" style="margin-right: 10px;">Next Section 2.11 Exposing Domains and Packages</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.10">
+<h2 class="sectiontitle">2.10  Resolving Types</h2>
+
+
+<a name="ugTypesResolve" class="label"/>
+
+
+<p>In this section we briefly describe an internal process by which
+<span class="index">resolve</span><a name="chapter-2-59"/> Axiom determines a type to which two objects of
+possibly different types can be converted.  We do this to give you
+further insight into how Axiom takes your input, analyzes it, and
+produces a result.
+</p>
+
+
+<p>What happens when you enter <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math> to Axiom?  Let's look at what you
+get from the two terms of this expression.
+</p>
+
+
+<p>This is a symbolic object whose type indicates the name.
+</p>
+
+
+
+<div id="spadComm2-125" class="spadComm" >
+<form id="formComm2-125" action="javascript:makeRequest('2-125');" >
+<input id="comm2-125" type="text" class="command" style="width: 1em;" value="x" />
+</form>
+<span id="commSav2-125" class="commSav" >x</span>
+<div id="mathAns2-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Variable x
+</div>
+
+
+
+<p>This is a positive integer.
+</p>
+
+
+
+<div id="spadComm2-126" class="spadComm" >
+<form id="formComm2-126" action="javascript:makeRequest('2-126');" >
+<input id="comm2-126" type="text" class="command" style="width: 1em;" value="1" />
+</form>
+<span id="commSav2-126" class="commSav" >1</span>
+<div id="mathAns2-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>There are no operations in <span class="teletype">PositiveInteger</span> that add positive
+integers to objects of type <span class="teletype">Variable(x)</span> nor are there any in
+<span class="teletype">Variable(x)</span>.  Before it can add the two parts, Axiom must come
+up with a common type to which both <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> can be converted.  We
+say that Axiom must <span class="italic">resolve</span> the two types into a common type.
+In this example, the common type is <span class="teletype">Polynomial(Integer)</span>.
+</p>
+
+
+<p>Once this is determined, both parts are converted into polynomials,
+and the addition operation from <span class="teletype">Polynomial(Integer)</span> is used to
+get the answer.
+</p>
+
+
+
+<div id="spadComm2-127" class="spadComm" >
+<form id="formComm2-127" action="javascript:makeRequest('2-127');" >
+<input id="comm2-127" type="text" class="command" style="width: 4em;" value="x + 1" />
+</form>
+<span id="commSav2-127" class="commSav" >x + 1</span>
+<div id="mathAns2-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Axiom can always resolve two types: if nothing resembling the original
+types can be found, then <span class="teletype">Any</span> is be used.  <span class="index">Any</span><a name="chapter-2-60"/> This is
+fine and useful in some cases.
+</p>
+
+
+
+
+<div id="spadComm2-128" class="spadComm" >
+<form id="formComm2-128" action="javascript:makeRequest('2-128');" >
+<input id="comm2-128" type="text" class="command" style="width: 12em;" value='["string",3.14159]' />
+</form>
+<span id="commSav2-128" class="commSav" >["string",3.14159]</span>
+<div id="mathAns2-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtext><mrow><mtext mathvariant='monospace'>"string"</mtext></mrow></mtext><mo>,</mo><mrow><mn>3</mn><mo>.</mo><mn>14159</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Any
+</div>
+
+
+
+<p>In other cases objects of type <span class="teletype">Any</span> can't be used by the
+operations you specified.
+</p>
+
+
+
+<div id="spadComm2-129" class="spadComm" >
+<form id="formComm2-129" action="javascript:makeRequest('2-129');" >
+<input id="comm2-129" type="text" class="command" style="width: 12em;" value='"string" + 3.14159' />
+</form>
+<span id="commSav2-129" class="commSav" >"string" + 3.14159</span>
+<div id="mathAns2-129" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+There&nbsp;are&nbsp;11&nbsp;exposed&nbsp;and&nbsp;5&nbsp;unexposed&nbsp;library&nbsp;operations&nbsp;named&nbsp;+&nbsp;<br />
+&nbsp;&nbsp;having&nbsp;2&nbsp;argument(s)&nbsp;but&nbsp;none&nbsp;was&nbsp;determined&nbsp;to&nbsp;be&nbsp;applicable.&nbsp;<br />
+&nbsp;&nbsp;Use&nbsp;HyperDoc&nbsp;Browse,&nbsp;or&nbsp;issue<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)display&nbsp;op&nbsp;+<br />
+&nbsp;&nbsp;to&nbsp;learn&nbsp;more&nbsp;about&nbsp;the&nbsp;available&nbsp;operations.&nbsp;Perhaps&nbsp;<br />
+&nbsp;&nbsp;package-calling&nbsp;the&nbsp;operation&nbsp;or&nbsp;using&nbsp;coercions&nbsp;on&nbsp;the&nbsp;<br />
+&nbsp;&nbsp;arguments&nbsp;will&nbsp;allow&nbsp;you&nbsp;to&nbsp;apply&nbsp;the&nbsp;operation.<br />
+&nbsp;<br />
+Cannot&nbsp;find&nbsp;a&nbsp;definition&nbsp;or&nbsp;applicable&nbsp;library&nbsp;operation&nbsp;named&nbsp;+&nbsp;<br />
+&nbsp;&nbsp;with&nbsp;argument&nbsp;type(s)&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Float<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;Perhaps&nbsp;you&nbsp;should&nbsp;use&nbsp;"@"&nbsp;to&nbsp;indicate&nbsp;the&nbsp;required&nbsp;return&nbsp;type,&nbsp;<br />
+&nbsp;&nbsp;or&nbsp;"$"&nbsp;to&nbsp;specify&nbsp;which&nbsp;version&nbsp;of&nbsp;the&nbsp;function&nbsp;you&nbsp;need.<br />
+</div>
+
+
+
+<p>Although this example was contrived, your expressions may need to be
+qualified slightly to help Axiom resolve the types involved.  You may
+need to declare a few variables, do some package calling, provide some
+target type information or do some explicit conversions.
+</p>
+
+
+<p>We suggest that you just enter the expression you want evaluated and
+see what Axiom does.  We think you will be impressed with its ability
+to ``do what I mean.''  If Axiom is still being obtuse, give it some
+hints.  As you work with Axiom, you will learn where it needs a little
+help to analyze quickly and perform your computations.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.9.xhtml" style="margin-right: 10px;">Previous Section 2.9 Package Calling and Target Types</a><a href="section-2.11.xhtml" style="margin-right: 10px;">Next Section 2.11 Exposing Domains and Packages</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.11.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.11.xhtml
new file mode 100644
index 0000000..01ad80d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.11.xhtml
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.11</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.10.xhtml" style="margin-right: 10px;">Previous Section 2.10 Resolving Types</a><a href="section-2.12.xhtml" style="margin-right: 10px;">Next Section 2.12 Commands for Snooping</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.11">
+<h2 class="sectiontitle">2.11  Exposing Domains and Packages</h2>
+
+
+<a name="ugTypesExpose" class="label"/>
+
+
+<p>In this section we discuss how Axiom makes some operations available
+to you while hiding others that are meant to be used by developers or
+only in rare cases.  If you are a new user of Axiom, it is likely that
+everything you need is available by default and you may want to skip
+over this section on first reading.
+</p>
+
+
+<p>Every <span class="index">constructor:exposed</span><a name="chapter-2-61"/> domain and package in the Axiom
+library <span class="index">constructor:hidden</span><a name="chapter-2-62"/> is <span class="index">exposed:constructor</span><a name="chapter-2-63"/>
+either exposed (meaning that you can use its operations without doing
+anything special) or it is <span class="italic">hidden</span> (meaning you have to either
+package call (see <a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a>) the operations it contains or
+explicitly expose it to use the operations).  The initial exposure
+status for a constructor is set in the file <span style="font-weight: bold;"> exposed.lsp</span> (see the
+<span class="italic">Installer's Note</span> <span class="index">exposed.lsp @<span style="font-weight: bold;"> exposed.lsp</span><a name="chapter-2-64"/></span> for
+Axiom <span class="index">file:exposed.lsp @<span style="font-weight: bold;"> exposed.lsp</span></span><a name="chapter-2-65"/> if you need to know
+the location of this file).  Constructors are collected together in
+<span class="index">group:exposure</span><a name="chapter-2-66"/> <span class="italic">exposure groups</span>.  <span class="index">exposure:group</span><a name="chapter-2-67"/>
+Categories are all in the exposure group ``categories'' and the bulk
+of the basic set of packages and domains that are exposed are in the
+exposure group ``basic.''  Here is an abbreviated sample of the file
+(without the Lisp parentheses):
+</p>
+
+
+
+
+<div class="verbatim"><br />
+basic<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AlgebraicNumber&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AN<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AlgebraGivenByStructuralConstants&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ALGSC<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Any&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ANY<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AnyFunctions1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ANY1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryExpansion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BINARY<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BOOLEAN<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CardinalNumber&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CARD<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CartesianTensor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CARTEN<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Character&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CHAR<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CharacterClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCLASS<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CliffordAlgebra&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLIF<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COLOR<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Complex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COMPLEX<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ContinuedFraction&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CONTFRAC<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DecimalExpansion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DECIMAL<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+categories<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AbelianGroup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ABELGRP<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AbelianMonoid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ABELMON<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AbelianMonoidRing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AMR<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AbelianSemiGroup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ABELSG<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aggregate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AGG<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Algebra&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ALGEBRA<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AlgebraicallyClosedField&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACF<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AlgebraicallyClosedFunctionSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACFS<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArcHyperbolicFunctionCategory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AHYP<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
+</div>
+
+
+
+<p>For each constructor in a group, the full name and the abbreviation is
+given.  There are other groups in <span style="font-weight: bold;"> exposed.lsp</span> but initially only
+the constructors in exposure groups ``basic'' ``categories''
+``naglink'' and ``anna'' are exposed.
+</p>
+
+
+<p>As an interactive user of Axiom, you do not need to modify this file.
+Instead, use <span class="teletype">)set expose</span> to expose, hide or query the exposure
+status of an individual constructor or exposure group. <span class="index">set expose</span><a name="chapter-2-68"/> 
+The reason for having exposure groups is to be able to expose
+or hide multiple constructors with a single command.  For example, you
+might group together into exposure group ``quantum'' a number of
+domains and packages useful for quantum mechanical computations.
+These probably should not be available to every user, but you want an
+easy way to make the whole collection visible to Axiom when it is
+looking for operations to apply.
+</p>
+
+
+<p>If you wanted to hide all the basic constructors available by default,
+you would issue <span class="teletype">)set expose drop group basic</span>.  
+<span class="index">set expose drop group</span><a name="chapter-2-69"/> We do not recommend that you do this.  
+If, however, you discover that you have hidden all the basic constructors, 
+you should issue <span class="teletype">)set expose add group basic</span> to restore your default
+environment.  <span class="index">set expose add group</span><a name="chapter-2-70"/>
+</p>
+
+
+<p>It is more likely that you would want to expose or hide individual
+constructors.  In <a href="section-6.19.xhtml#ugUserTriangle" class="ref" >ugUserTriangle</a> we use several operations from 
+<span class="teletype">OutputForm</span>, a domain usually hidden.  To avoid package calling every
+operation from <span class="teletype">OutputForm</span>, we expose the domain and let Axiom
+conclude that those operations should be used.  Use <span class="teletype">)set expose
+add constructor</span> and <span class="teletype">)set expose drop constructor</span> to expose and
+hide a constructor, respectively.  <span class="index">set expose drop constructor</span><a name="chapter-2-71"/>
+You should use the constructor name, not the abbreviation.  The 
+<span class="teletype">)set expose</span> command guides you through these options.  
+<span class="index">set expose add constructor</span><a name="chapter-2-72"/>
+</p>
+
+
+<p>If you expose a previously hidden constructor, Axiom exhibits new
+behavior (that was your intention) though you might not expect the
+results that you get.  <span class="teletype">OutputForm</span> is, in fact, one of the worst
+offenders in this regard.  <span class="index">OutputForm</span><a name="chapter-2-73"/> This domain is meant to
+be used by other domains for creating a structure that Axiom knows how
+to display.  It has functions like <span class="spadopFrom" title="OutputForm">+</span> that
+form output representations rather than do mathematical calculations.
+Because of the order in which Axiom looks at constructors when it is
+deciding what operation to apply, <span class="teletype">OutputForm</span> might be used
+instead of what you expect.
+</p>
+
+
+<p>This is a polynomial.
+</p>
+
+
+
+<div id="spadComm2-130" class="spadComm" >
+<form id="formComm2-130" action="javascript:makeRequest('2-130');" >
+<input id="comm2-130" type="text" class="command" style="width: 4em;" value="x + x" />
+</form>
+<span id="commSav2-130" class="commSav" >x + x</span>
+<div id="mathAns2-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo></mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Expose <span class="teletype">OutputForm</span>.
+</p>
+
+
+
+<div id="spadComm2-131" class="spadComm" >
+<form id="formComm2-131" action="javascript:makeRequest('2-131');" >
+<input id="comm2-131" type="text" class="command" style="width: 26em;" value=")set expose add constructor OutputForm " />
+</form>
+<span id="commSav2-131" class="commSav" >)set expose add constructor OutputForm </span>
+<div id="mathAns2-131" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;OutputForm&nbsp;is&nbsp;now&nbsp;explicitly&nbsp;exposed&nbsp;in&nbsp;frame&nbsp;G82322&nbsp;<br />
+</div>
+
+
+
+<p>This is what we get when <span class="teletype">OutputForm</span> is automatically available.
+</p>
+
+
+
+<div id="spadComm2-132" class="spadComm" >
+<form id="formComm2-132" action="javascript:makeRequest('2-132');" >
+<input id="comm2-132" type="text" class="command" style="width: 4em;" value="x + x" />
+</form>
+<span id="commSav2-132" class="commSav" >x + x</span>
+<div id="mathAns2-132" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>+</mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OutputForm
+</div>
+
+
+
+<p>Hide <span class="teletype">OutputForm</span> so we don't run into problems with any later examples!
+</p>
+
+
+
+<div id="spadComm2-133" class="spadComm" >
+<form id="formComm2-133" action="javascript:makeRequest('2-133');" >
+<input id="comm2-133" type="text" class="command" style="width: 27em;" value=")set expose drop constructor OutputForm " />
+</form>
+<span id="commSav2-133" class="commSav" >)set expose drop constructor OutputForm </span>
+<div id="mathAns2-133" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;OutputForm&nbsp;is&nbsp;now&nbsp;explicitly&nbsp;hidden&nbsp;in&nbsp;frame&nbsp;G82322&nbsp;<br />
+</div>
+
+
+
+<p>Finally, exposure is done on a frame-by-frame basis.  A <span class="italic">frame</span>
+(see <a href="section-16.11.xhtml#ugSysCmdframe" class="ref" >ugSysCmdframe</a> )
+<span class="index">frame:exposure and</span><a name="chapter-2-74"/> is one of possibly several logical Axiom
+workspaces within a physical one, each having its own environment (for
+example, variables and function definitions).  If you have several
+Axiom workspace windows on your screen, they are all different frames,
+automatically created for you by HyperDoc.  Frames can be manually
+created, made active and destroyed by the <span class="teletype">)frame</span> system command.
+<span class="index">frame</span><a name="chapter-2-75"/> They do not share exposure information, so you need to
+use <span class="teletype">)set expose</span> in each one to add or drop constructors from
+view.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.10.xhtml" style="margin-right: 10px;">Previous Section 2.10 Resolving Types</a><a href="section-2.12.xhtml" style="margin-right: 10px;">Next Section 2.12 Commands for Snooping</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.12.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.12.xhtml
new file mode 100644
index 0000000..07750f1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.12.xhtml
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.11.xhtml" style="margin-right: 10px;">Previous Section 2.11 Exposing Domains and Packages</a><a href="section-3.0.xhtml" style="margin-right: 10px;">Next Section 3.0 Using HyperDoc</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.12">
+<h2 class="sectiontitle">2.12  Commands for Snooping</h2>
+
+
+<a name="ugAvailSnoop" class="label"/>
+
+
+<p>To conclude this chapter, we introduce you to some system commands
+that you can use for getting more information about domains, packages,
+categories, and operations.  The most powerful Axiom facility for
+getting information about constructors and operations is the Browse
+component of HyperDoc.  This is discussed in Chapter 
+<a href="section-14.0.xhtml#ugBrowse" class="ref" >ugBrowse</a> .
+</p>
+
+
+<p>Use the <span class="teletype">)what</span> system command to see lists of system objects
+whose name contain a particular substring (uppercase or lowercase is
+not significant).  <span class="index">what</span><a name="chapter-2-76"/>
+</p>
+
+
+<p>Issue this to see a list of all operations with ``<span class="teletype">complex</span>'' in
+their names.  <span class="index">what operation</span><a name="chapter-2-77"/>
+</p>
+
+
+
+<div id="spadComm2-134" class="spadComm" >
+<form id="formComm2-134" action="javascript:makeRequest('2-134');" >
+<input id="comm2-134" type="text" class="command" style="width: 16em;" value=")what operation complex" />
+</form>
+<span id="commSav2-134" class="commSav" >)what operation complex</span>
+<div id="mathAns2-134" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+<br />
+Operations&nbsp;whose&nbsp;names&nbsp;satisfy&nbsp;the&nbsp;above&nbsp;pattern(s):<br />
+<br />
+complex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complex?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+complexEigenvalues&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complexEigenvectors&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+complexElementary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complexExpand&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+complexForm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complexIntegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+complexLimit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complexNormalize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+complexNumeric&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complexNumericIfCan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+complexRoots&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complexSolve&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+complexZeros&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createLowComplexityNormalBasis&nbsp;&nbsp;&nbsp;&nbsp;<br />
+createLowComplexityTable&nbsp;&nbsp;doubleComplex?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+drawComplex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drawComplexVectorField&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+fortranComplex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fortranDoubleComplex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+pmComplexintegrate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;<br />
+To&nbsp;get&nbsp;more&nbsp;information&nbsp;about&nbsp;an&nbsp;operation&nbsp;such&nbsp;as&nbsp;<br />
+complexZeros,&nbsp;issue&nbsp;the&nbsp;command&nbsp;)display&nbsp;op&nbsp;complexZeros&nbsp;<br />
+</div>
+
+
+
+<p>If you want to see all domains with ``<span class="teletype">matrix</span>'' in their names,
+issue this.  <span class="index">what domain</span><a name="chapter-2-78"/>
+</p>
+
+
+
+<div id="spadComm2-135" class="spadComm" >
+<form id="formComm2-135" action="javascript:makeRequest('2-135');" >
+<input id="comm2-135" type="text" class="command" style="width: 13em;" value=")what domain matrix" />
+</form>
+<span id="commSav2-135" class="commSav" >)what domain matrix</span>
+<div id="mathAns2-135" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+-----------------------&nbsp;Domains&nbsp;-----------------------<br />
+<br />
+Domains&nbsp;with&nbsp;names&nbsp;matching&nbsp;patterns:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;<br />
+<br />
+&nbsp;DHMATRIX&nbsp;DenavitHartenbergMatrix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;DPMM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DirectProductMatrixModule<br />
+&nbsp;IMATRIX&nbsp;&nbsp;IndexedMatrix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;LSQM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LieSquareMatrix<br />
+&nbsp;M3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ThreeDimensionalMatrix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;MATCAT-&nbsp;&nbsp;MatrixCategory&amp;<br />
+&nbsp;MATRIX&nbsp;&nbsp;&nbsp;Matrix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;RMATCAT-&nbsp;RectangularMatrixCategory&amp;<br />
+&nbsp;RMATRIX&nbsp;&nbsp;RectangularMatrix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;SMATCAT-&nbsp;SquareMatrixCategory&amp;<br />
+&nbsp;SQMATRIX&nbsp;SquareMatrix<br />
+</div>
+
+
+
+<p>Similarly, if you wish to see all packages whose names contain 
+``<span class="teletype">gauss</span>'', enter this.  <span class="index">what packages</span><a name="chapter-2-79"/>
+</p>
+
+
+
+<div id="spadComm2-136" class="spadComm" >
+<form id="formComm2-136" action="javascript:makeRequest('2-136');" >
+<input id="comm2-136" type="text" class="command" style="width: 13em;" value=")what package gauss" />
+</form>
+<span id="commSav2-136" class="commSav" >)what package gauss</span>
+<div id="mathAns2-136" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+----------------------&nbsp;Packages&nbsp;-----------------------<br />
+<br />
+Packages&nbsp;with&nbsp;names&nbsp;matching&nbsp;patterns:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gauss&nbsp;<br />
+<br />
+&nbsp;GAUSSFAC&nbsp;GaussianFactorizationPackage<br />
+</div>
+
+
+
+<p>This command shows all the operations that <span class="teletype">Any</span> provides.
+Wherever <span class="teletype"> $</span> appears, it means ``<span class="teletype">Any</span>''.  <span class="index">show</span><a name="chapter-2-80"/>
+</p>
+
+
+
+<div id="spadComm2-137" class="spadComm" >
+<form id="formComm2-137" action="javascript:makeRequest('2-137');" >
+<input id="comm2-137" type="text" class="command" style="width: 6em;" value=")show Any" />
+</form>
+<span id="commSav2-137" class="commSav" >)show Any</span>
+<div id="mathAns2-137" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;Any&nbsp;&nbsp;is&nbsp;a&nbsp;domain&nbsp;constructor<br />
+&nbsp;Abbreviation&nbsp;for&nbsp;Any&nbsp;is&nbsp;ANY&nbsp;<br />
+&nbsp;This&nbsp;constructor&nbsp;is&nbsp;exposed&nbsp;in&nbsp;this&nbsp;frame.<br />
+&nbsp;Issue&nbsp;)edit&nbsp;/usr/local/axiom/mnt/algebra/any.spad&nbsp;<br />
+&nbsp;&nbsp;to&nbsp;see&nbsp;algebra&nbsp;source&nbsp;code&nbsp;for&nbsp;ANY&nbsp;<br />
+<br />
+---------------------&nbsp;Operations&nbsp;----------------------<br />
+&nbsp;?=?&nbsp;:&nbsp;(%,%)&nbsp;-&gt;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;any&nbsp;:&nbsp;(SExpression,None)&nbsp;-&gt;&nbsp;%<br />
+&nbsp;coerce&nbsp;:&nbsp;%&nbsp;-&gt;&nbsp;OutputForm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;dom&nbsp;:&nbsp;%&nbsp;-&gt;&nbsp;SExpression<br />
+&nbsp;domainOf&nbsp;:&nbsp;%&nbsp;-&gt;&nbsp;OutputForm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;hash&nbsp;:&nbsp;%&nbsp;-&gt;&nbsp;SingleInteger<br />
+&nbsp;latex&nbsp;:&nbsp;%&nbsp;-&gt;&nbsp;String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;obj&nbsp;:&nbsp;%&nbsp;-&gt;&nbsp;None<br />
+&nbsp;objectOf&nbsp;:&nbsp;%&nbsp;-&gt;&nbsp;OutputForm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;?~=?&nbsp;:&nbsp;(%,%)&nbsp;-&gt;&nbsp;Boolean<br />
+&nbsp;showTypeInOutput&nbsp;:&nbsp;Boolean&nbsp;-&gt;&nbsp;String<br />
+<br />
+</div>
+
+
+
+<p>This displays all operations with the name <span class="teletype">complex</span>.
+<span class="index">display operation</span><a name="chapter-2-81"/>
+</p>
+
+
+
+<div id="spadComm2-138" class="spadComm" >
+<form id="formComm2-138" action="javascript:makeRequest('2-138');" >
+<input id="comm2-138" type="text" class="command" style="width: 18em;" value=")display operation complex" />
+</form>
+<span id="commSav2-138" class="commSav" >)display operation complex</span>
+<div id="mathAns2-138" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+There&nbsp;is&nbsp;one&nbsp;exposed&nbsp;function&nbsp;called&nbsp;complex&nbsp;:<br />
+&nbsp;[1]&nbsp;(D1,D1)&nbsp;-&gt;&nbsp;D&nbsp;from&nbsp;D&nbsp;if&nbsp;D&nbsp;has&nbsp;COMPCAT&nbsp;D1&nbsp;and&nbsp;D1&nbsp;has&nbsp;COMRING<br />
+</div>
+
+
+
+<p>Let's analyze this output.
+</p>
+
+
+<p>First we find out what some of the abbreviations mean.
+</p>
+
+
+
+<div id="spadComm2-139" class="spadComm" >
+<form id="formComm2-139" action="javascript:makeRequest('2-139');" >
+<input id="comm2-139" type="text" class="command" style="width: 18em;" value=")abbreviation query COMPCAT" />
+</form>
+<span id="commSav2-139" class="commSav" >)abbreviation query COMPCAT</span>
+<div id="mathAns2-139" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;COMPCAT&nbsp;abbreviates&nbsp;category&nbsp;ComplexCategory&nbsp;<br />
+</div>
+
+
+
+
+
+<div id="spadComm2-140" class="spadComm" >
+<form id="formComm2-140" action="javascript:makeRequest('2-140');" >
+<input id="comm2-140" type="text" class="command" style="width: 18em;" value=")abbreviation query COMRING" />
+</form>
+<span id="commSav2-140" class="commSav" >)abbreviation query COMRING</span>
+<div id="mathAns2-140" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;COMRING&nbsp;abbreviates&nbsp;category&nbsp;CommutativeRing&nbsp;<br />
+</div>
+
+
+
+<p>So if <span class="teletype">D1</span> is a commutative ring (such as the integers or floats) and
+<span class="teletype">D</span> belongs to <span class="teletype">ComplexCategory D1</span>, then there is an operation
+called <span style="font-weight: bold;"> complex</span> that takes two elements of <span class="teletype">D1</span> and creates an
+element of <span class="teletype">D</span>.  The primary example of a constructor implementing
+domains belonging to <span class="teletype">ComplexCategory</span> is <span class="teletype">Complex</span>.  See
+<a href="chapter-9.1-12.xhtml#Complex" class="ref" >Complex</a>  for more information on that and see
+<a href="section-6.4.xhtml#ugUserDeclare" class="ref" >ugUserDeclare</a> 
+for more information on function types.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.11.xhtml" style="margin-right: 10px;">Previous Section 2.11 Exposing Domains and Packages</a><a href="section-3.0.xhtml" style="margin-right: 10px;">Next Section 3.0 Using HyperDoc</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.2.xhtml
new file mode 100644
index 0000000..0956eea
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.2.xhtml
@@ -0,0 +1,719 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.1.xhtml" style="margin-right: 10px;">Previous Section 2.1 The Basic Idea</a><a href="section-2.3.xhtml" style="margin-right: 10px;">Next Section 2.3 Declarations</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.2">
+<h2 class="sectiontitle">2.2  Writing Types and Modes</h2>
+
+
+<a name="ugTypesWriting" class="label"/>
+
+
+<p>We have already seen in the last section <a href="section-2.1.xhtml#ugTypesBasic" class="ref" >ugTypesBasic</a> several examples of types.  Most of these
+examples had either no arguments (for example, <span class="teletype">Integer</span>) or one
+argument (for example, <span class="teletype">Polynomial (Integer)</span>).  In this section
+we give details about writing arbitrary types.  We then define modes
+and discuss how to write them.  We conclude the section with a
+discussion on constructor abbreviations.
+</p>
+
+
+<p>When might you need to write a type or mode?  You need to do so when
+you declare variables.
+</p>
+
+
+
+<div id="spadComm2-18" class="spadComm" >
+<form id="formComm2-18" action="javascript:makeRequest('2-18');" >
+<input id="comm2-18" type="text" class="command" style="width: 13em;" value="a : PositiveInteger" />
+</form>
+<span id="commSav2-18" class="commSav" >a : PositiveInteger</span>
+<div id="mathAns2-18" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>You need to do so when you declare functions 
+(See Section <a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a> ),
+</p>
+
+
+
+<div id="spadComm2-19" class="spadComm" >
+<form id="formComm2-19" action="javascript:makeRequest('2-19');" >
+<input id="comm2-19" type="text" class="command" style="width: 14em;" value="f : Integer -> String" />
+</form>
+<span id="commSav2-19" class="commSav" >f : Integer -> String</span>
+<div id="mathAns2-19" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>You need to do so when you convert an object from one type to another
+(See Section <a href="section-2.7.xhtml#ugTypesConvert" class="ref" >ugTypesConvert</a> ).
+</p>
+
+
+
+<div id="spadComm2-20" class="spadComm" >
+<form id="formComm2-20" action="javascript:makeRequest('2-20');" >
+<input id="comm2-20" type="text" class="command" style="width: 20em;" value="factor(2 :: Complex(Integer))" />
+</form>
+<span id="commSav2-20" class="commSav" >factor(2 :: Complex(Integer))</span>
+<div id="mathAns2-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mi>i</mi><mo></mo><mrow><msup><mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Complex Integer
+</div>
+
+
+
+
+
+<div id="spadComm2-21" class="spadComm" >
+<form id="formComm2-21" action="javascript:makeRequest('2-21');" >
+<input id="comm2-21" type="text" class="command" style="width: 11em;" value="(2 = 3) $Integer" />
+</form>
+<span id="commSav2-21" class="commSav" >(2 = 3) $Integer</span>
+<div id="mathAns2-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>You need to do so when you give computation target type information
+(See Section <a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> ).
+</p>
+
+
+
+<div id="spadComm2-22" class="spadComm" >
+<form id="formComm2-22" action="javascript:makeRequest('2-22');" >
+<input id="comm2-22" type="text" class="command" style="width: 10em;" value="(2 = 3)@Boolean" />
+</form>
+<span id="commSav2-22" class="commSav" >(2 = 3)@Boolean</span>
+<div id="mathAns2-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+<a name="subsec-2.2.1"/>
+<div class="subsection"  id="subsec-2.2.1">
+<h3 class="subsectitle">2.2.1  Types with No Arguments</h3>
+
+
+<a name="ugTypesWritingZero" class="label"/>
+
+
+<p>A constructor with no arguments can be written either
+<span class="index">type:using parentheses</span><a name="chapter-2-15"/> with or without
+<span class="index">parentheses:using with types</span><a name="chapter-2-16"/> trailing opening and closing
+parentheses ``<span class="teletype">()</span>''.
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">Boolean()</span> is the same as <span class="teletype">Boolean</span> <br/>
+<span class="teletype">Integer()</span> is the same as <span class="teletype">Integer</span> <br/>
+<span class="teletype">String()</span> is the same as <span class="teletype">String</span> <br/>
+<span class="teletype">Void()</span> is the same as <span class="teletype">Void</span> 
+</p>
+
+
+
+</div>
+
+
+
+<p>It is customary to omit the parentheses.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-2.2.2"/>
+<div class="subsection"  id="subsec-2.2.2">
+<h3 class="subsectitle">2.2.2  Types with One Argument</h3>
+
+
+<a name="ugTypesWritingOne" class="label"/>
+
+
+<p>A constructor with one argument can frequently be 
+<span class="index">type:using parentheses</span><a name="chapter-2-17"/> written with no 
+<span class="index">parentheses:using with types</span><a name="chapter-2-18"/> parentheses.  Types nest from 
+right to left so that <span class="teletype">Complex Fraction Polynomial Integer</span> 
+is the same as <span class="teletype">Complex (Fraction (Polynomial (Integer)))</span>.  
+You need to use parentheses to force the application of a constructor 
+to the correct argument, but you need not use any more than is necessary 
+to remove ambiguities.
+</p>
+
+
+<p>Here are some guidelines for using parentheses (they are possibly slightly
+more restrictive than they need to be).
+</p>
+
+
+<p>If the argument is an expression like <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>+</mo><mn>3</mn></mrow></mstyle></math>
+then you must enclose the argument in parentheses.
+</p>
+
+
+
+<div id="spadComm2-23" class="spadComm" >
+<form id="formComm2-23" action="javascript:makeRequest('2-23');" >
+<input id="comm2-23" type="text" class="command" style="width: 14em;" value="e : PrimeField(2 + 3)" />
+</form>
+<span id="commSav2-23" class="commSav" >e : PrimeField(2 + 3)</span>
+<div id="mathAns2-23" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>If the type is to be used with package calling
+then you must enclose the argument in parentheses.
+</p>
+
+
+
+<div id="spadComm2-24" class="spadComm" >
+<form id="formComm2-24" action="javascript:makeRequest('2-24');" >
+<input id="comm2-24" type="text" class="command" style="width: 21em;" value="content(2) $Polynomial(Integer)" />
+</form>
+<span id="commSav2-24" class="commSav" >content(2) $Polynomial(Integer)</span>
+<div id="mathAns2-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>Alternatively, you can write the type without parentheses
+then enclose the whole type expression with parentheses.
+</p>
+
+
+
+<div id="spadComm2-25" class="spadComm" >
+<form id="formComm2-25" action="javascript:makeRequest('2-25');" >
+<input id="comm2-25" type="text" class="command" style="width: 33em;" value="content(2) $(Polynomial Complex Fraction Integer)" />
+</form>
+<span id="commSav2-25" class="commSav" >content(2) $(Polynomial Complex Fraction Integer)</span>
+<div id="mathAns2-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+<p>If you supply computation target type information 
+(See Section <a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> ) 
+then you should enclose the argument in parentheses.
+</p>
+
+
+
+<div id="spadComm2-26" class="spadComm" >
+<form id="formComm2-26" action="javascript:makeRequest('2-26');" >
+<input id="comm2-26" type="text" class="command" style="width: 24em;" value="(2/3)@Fraction(Polynomial(Integer))" />
+</form>
+<span id="commSav2-26" class="commSav" >(2/3)@Fraction(Polynomial(Integer))</span>
+<div id="mathAns2-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>2</mn><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+<p>If the type itself has parentheses around it and we are not in the
+case of the first example above, then the parentheses can usually be
+omitted.
+</p>
+
+
+
+<div id="spadComm2-27" class="spadComm" >
+<form id="formComm2-27" action="javascript:makeRequest('2-27');" >
+<input id="comm2-27" type="text" class="command" style="width: 23em;" value="(2/3)@Fraction(Polynomial Integer)" />
+</form>
+<span id="commSav2-27" class="commSav" >(2/3)@Fraction(Polynomial Integer)</span>
+<div id="mathAns2-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>2</mn><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+<p>If the type is used in a declaration and the argument is a single-word
+type, integer or symbol, then the parentheses can usually be omitted.
+</p>
+
+
+
+<div id="spadComm2-28" class="spadComm" >
+<form id="formComm2-28" action="javascript:makeRequest('2-28');" >
+<input id="comm2-28" type="text" class="command" style="width: 24em;" value="(d,f,g) : Complex Polynomial Integer" />
+</form>
+<span id="commSav2-28" class="commSav" >(d,f,g) : Complex Polynomial Integer</span>
+<div id="mathAns2-28" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-2.2.3"/>
+<div class="subsection"  id="subsec-2.2.3">
+<h3 class="subsectitle">2.2.3  Types with More Than One Argument</h3>
+
+
+<a name="ugTypesWritingMore" class="label"/>
+
+
+<p>If a constructor <span class="index">type:using parentheses</span><a name="chapter-2-19"/> has more than
+<span class="index">parentheses:using with types</span><a name="chapter-2-20"/> one argument, you must use
+parentheses.  Some examples are 
+</p>
+
+
+
+<p>
+<span class="teletype">UnivariatePolynomial(x, Float)</span>
+<br/>
+<span class="teletype">MultivariatePolynomial([z,w,r], Complex Float)</span> 
+<br/>
+<span class="teletype">SquareMatrix(3, Integer)</span> 
+<br/>
+<span class="teletype">FactoredFunctions2(Integer,Fraction Integer)</span> 
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-2.2.4"/>
+<div class="subsection"  id="subsec-2.2.4">
+<h3 class="subsectitle">2.2.4  Modes</h3>
+
+
+<a name="ugTypesWritingModes" class="label"/>
+
+
+<p>A <span class="italic">mode</span> is a type that possibly is a question mark (<span class="teletype">?</span>) or
+contains one in an argument position.  For example, the following are
+all modes.<br/>
+</p>
+
+
+<p><span class="teletype">?</span> 
+</p>
+
+
+<p><span class="teletype">Polynomial ?</span> 
+</p>
+
+
+<p><span class="teletype">Matrix Polynomial ?</span> 
+</p>
+
+
+<p><span class="teletype">SquareMatrix(3,?)</span> 
+</p>
+
+
+<p><span class="teletype">Integer</span> 
+</p>
+
+
+<p><span class="teletype">OneDimensionalArray(Float)</span>
+</p>
+
+
+<p>As is evident from these examples, a mode is a type with a part that
+is not specified (indicated by a question mark).  Only one ``<span class="teletype">?</span>'' is
+allowed per mode and it must appear in the most deeply nested argument
+that is a type. Thus <span class="teletype">?(Integer)</span>, <span class="teletype">Matrix(? (Polynomial))</span>,
+<span class="teletype">SquareMatrix(?, Integer)</span> (it requires a numeric argument)
+and <span class="teletype">SquareMatrix(?, ?)</span> are all
+invalid.  The question mark must take the place of a domain, not data.
+This rules out, for example, the two <span class="teletype">SquareMatrix</span> expressions.
+</p>
+
+
+<p>Modes can be used for declarations (See Section <a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a>
+) and conversions (Section
+<a href="section-2.7.xhtml#ugTypesConvert" class="ref" >ugTypesConvert</a> ).  However, you
+cannot use a mode for package calling or giving target type information.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-2.2.5"/>
+<div class="subsection"  id="subsec-2.2.5">
+<h3 class="subsectitle">2.2.5  Abbreviations</h3>
+
+
+<a name="ugTypesWritingAbbr" class="label"/>
+
+
+<p>Every constructor has an abbreviation that
+<span class="index">abbreviation:constructor</span><a name="chapter-2-21"/> you can freely
+<span class="index">constructor:abbreviation</span><a name="chapter-2-22"/> substitute for the constructor name.
+In some cases, the abbreviation is nothing more than the capitalized
+version of the constructor name.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+
+<p>Aside from allowing types to be written more concisely, abbreviations
+are used by Axiom to name various system files for constructors (such
+as library filenames, test input files and example files).  Here are
+some common abbreviations.
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><table class="begintabular">
+<tr><td><span class="teletype">COMPLEX</span>   abbreviates <span class="teletype">Complex</span>             </td><td>
+<span class="teletype">DFLOAT</span>    abbreviates <span class="teletype">DoubleFloat</span>         </td></tr>
+<tr><td><span class="teletype">EXPR</span>      abbreviates <span class="teletype">Expression</span>          </td><td>
+<span class="teletype">FLOAT</span>     abbreviates <span class="teletype">Float</span>               </td></tr>
+<tr><td><span class="teletype">FRAC</span>      abbreviates <span class="teletype">Fraction</span>            </td><td>
+<span class="teletype">INT</span>       abbreviates <span class="teletype">Integer</span>             </td></tr>
+<tr><td><span class="teletype">MATRIX</span>    abbreviates <span class="teletype">Matrix</span>              </td><td>
+<span class="teletype">NNI</span>       abbreviates <span class="teletype">NonNegativeInteger</span>  </td></tr>
+<tr><td><span class="teletype">PI</span>        abbreviates <span class="teletype">PositiveInteger</span>     </td><td>
+<span class="teletype">POLY</span>      abbreviates <span class="teletype">Polynomial</span>          </td></tr>
+<tr><td><span class="teletype">STRING</span>    abbreviates <span class="teletype">String</span>              </td><td>
+<span class="teletype">UP</span>        abbreviates <span class="teletype">UnivariatePolynomial</span></td></tr>
+</table>
+</p>
+
+
+
+</div>
+
+
+
+
+
+</div>
+</div>
+
+
+
+<p>You can combine both full constructor names and abbreviations in a
+type expression.  Here are some types using abbreviations.
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><table class="begintabular">
+<tr><td><span class="teletype">POLY INT</span> </td><td> is the same as </td><td> <span class="teletype">Polynomial(INT)</span> </td></tr>
+<tr><td><span class="teletype">POLY(Integer)</span> </td><td> is the same as </td><td> <span class="teletype">Polynomial(Integer)</span> </td></tr>
+<tr><td><span class="teletype">POLY(Integer)</span> </td><td> is the same as </td><td> <span class="teletype">Polynomial(INT)</span> </td></tr>
+<tr><td><span class="teletype">FRAC(COMPLEX(INT))</span> </td><td> is the same as </td><td> <span class="teletype">Fraction Complex Integer</span> </td></tr>
+<tr><td><span class="teletype">FRAC(COMPLEX(INT))</span> </td><td> is the same as </td><td> <span class="teletype">FRAC(Complex Integer)</span> </td></tr>
+</table>
+</p>
+
+
+
+</div>
+
+
+
+<p>There are several ways of finding the names of constructors and their
+abbreviations.  For a specific constructor, use <span class="teletype">)abbreviation
+query</span>.  <span class="index">abbreviation</span><a name="chapter-2-23"/> You can also use the <span class="teletype">)what</span> system
+command to see the names and abbreviations of constructors.
+<span class="index">what</span><a name="chapter-2-24"/> For more information about <span class="teletype">)what</span>, see
+<a href="ugSysCmdwhat" class="ref" >ugSysCmdwhat</a> .
+</p>
+
+
+<p><span class="teletype">)abbreviation query</span> can be abbreviated (no pun intended) to 
+<span class="teletype">)abb q</span>.
+</p>
+
+
+
+<div id="spadComm2-29" class="spadComm" >
+<form id="formComm2-29" action="javascript:makeRequest('2-29');" >
+<input id="comm2-29" type="text" class="command" style="width: 10em;" value=")abb q Integer" />
+</form>
+<span id="commSav2-29" class="commSav" >)abb q Integer</span>
+<div id="mathAns2-29" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;INT&nbsp;abbreviates&nbsp;domain&nbsp;Integer&nbsp;<br />
+</div>
+
+
+
+<p>The <span class="teletype">)abbreviation query</span> command lists the constructor name if
+you give the abbreviation.  Issue <span class="teletype">)abb q</span> if you want to see the
+names and abbreviations of all Axiom constructors.  
+</p>
+
+
+
+<div id="spadComm2-30" class="spadComm" >
+<form id="formComm2-30" action="javascript:makeRequest('2-30');" >
+<input id="comm2-30" type="text" class="command" style="width: 7em;" value=")abb q DMP" />
+</form>
+<span id="commSav2-30" class="commSav" >)abb q DMP</span>
+<div id="mathAns2-30" ></div>
+</div>
+
+<p> 
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;DMP&nbsp;abbreviates&nbsp;domain&nbsp;DistributedMultivariatePolynomial&nbsp;<br />
+</div>
+
+
+
+<p>Issue this to see all packages whose
+names contain the string ``ode''.  <span class="index">what packages</span><a name="chapter-2-25"/>
+</p>
+
+
+
+<div id="spadComm2-31" class="spadComm" >
+<form id="formComm2-31" action="javascript:makeRequest('2-31');" >
+<input id="comm2-31" type="text" class="command" style="width: 12em;" value=")what packages ode" />
+</form>
+<span id="commSav2-31" class="commSav" >)what packages ode</span>
+<div id="mathAns2-31" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+----------------------&nbsp;Packages&nbsp;-----------------------<br />
+<br />
+Packages&nbsp;with&nbsp;names&nbsp;matching&nbsp;patterns:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ode&nbsp;<br />
+<br />
+&nbsp;EXPRODE&nbsp;&nbsp;ExpressionSpaceODESolver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;FCPAK1&nbsp;&nbsp;&nbsp;FortranCodePackage1<br />
+&nbsp;GRAY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GrayCode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;LODEEF&nbsp;&nbsp;&nbsp;ElementaryFunctionLODESolver<br />
+&nbsp;NODE1&nbsp;&nbsp;&nbsp;&nbsp;NonLinearFirstOrderODESolver&nbsp;<br />
+&nbsp;ODECONST&nbsp;ConstantLODE<br />
+&nbsp;ODEEF&nbsp;&nbsp;&nbsp;&nbsp;ElementaryFunctionODESolver&nbsp;&nbsp;<br />
+&nbsp;ODEINT&nbsp;&nbsp;&nbsp;ODEIntegration<br />
+&nbsp;ODEPAL&nbsp;&nbsp;&nbsp;PureAlgebraicLODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;ODERAT&nbsp;&nbsp;&nbsp;RationalLODE<br />
+&nbsp;ODERED&nbsp;&nbsp;&nbsp;ReduceLODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;ODESYS&nbsp;&nbsp;&nbsp;SystemODESolver<br />
+&nbsp;ODETOOLS&nbsp;ODETools<br />
+&nbsp;UTSODE&nbsp;&nbsp;&nbsp;UnivariateTaylorSeriesODESolver<br />
+&nbsp;UTSODETL&nbsp;UTSodetools<br />
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.1.xhtml" style="margin-right: 10px;">Previous Section 2.1 The Basic Idea</a><a href="section-2.3.xhtml" style="margin-right: 10px;">Next Section 2.3 Declarations</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.3.xhtml
new file mode 100644
index 0000000..c43db2d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.3.xhtml
@@ -0,0 +1,474 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.2.xhtml" style="margin-right: 10px;">Previous Section 2.2 Writing Types and Modes</a><a href="section-2.4.xhtml" style="margin-right: 10px;">Next Section 2.4 Records</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.3">
+<h2 class="sectiontitle">2.3  Declarations</h2>
+
+
+<a name="ugTypesDeclare" class="label"/>
+
+
+<p>A <span class="italic">declaration</span> is an expression used to restrict the type of
+values that can be assigned to variables.  A colon ``<span class="teletype">:</span>'' is always
+used after a variable or list of variables to be declared.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>For a single variable, the syntax for declaration is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="italic">variableName <math xmlns="&mathml;" mathsize="big"><mstyle><mo>:</mo></mstyle></math> typeOrMode</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>For multiple variables, the syntax is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">(<math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>, 
+... <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>): <span class="italic">typeOrMode</span></span>
+</p>
+
+
+
+</div>
+
+
+
+
+
+</div>
+</div>
+
+
+
+<p>You can always combine a declaration with an assignment.  When you do,
+it is equivalent to first giving a declaration statement, then giving
+an assignment.  For more information on assignment, see
+Section <a href="section-1.3.xhtml#ugIntroAssign" class="ref" >ugIntroAssign</a>  and 
+Section <a href="section-5.1.xhtml#ugLangAssign" class="ref" >ugLangAssign</a> .  
+To see how to declare your own functions, 
+see <a href="section-6.4.xhtml#ugUserDeclare" class="ref" >ugUserDeclare</a> .
+</p>
+
+
+<p>This declares one variable to have a type.
+</p>
+
+
+
+<div id="spadComm2-32" class="spadComm" >
+<form id="formComm2-32" action="javascript:makeRequest('2-32');" >
+<input id="comm2-32" type="text" class="command" style="width: 8em;" value="a : Integer" />
+</form>
+<span id="commSav2-32" class="commSav" >a : Integer</span>
+<div id="mathAns2-32" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This declares several variables to have a type.
+</p>
+
+
+
+<div id="spadComm2-33" class="spadComm" >
+<form id="formComm2-33" action="javascript:makeRequest('2-33');" >
+<input id="comm2-33" type="text" class="command" style="width: 10em;" value="(b,c) : Integer" />
+</form>
+<span id="commSav2-33" class="commSav" >(b,c) : Integer</span>
+<div id="mathAns2-33" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+<p>
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>
+, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>c</mi></mstyle></math> can only hold integer values.
+</p>
+
+
+
+
+<div id="spadComm2-34" class="spadComm" >
+<form id="formComm2-34" action="javascript:makeRequest('2-34');" >
+<input id="comm2-34" type="text" class="command" style="width: 5em;" value="a := 45" />
+</form>
+<span id="commSav2-34" class="commSav" >a := 45</span>
+<div id="mathAns2-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>45</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>If a value cannot be converted to a declared type,
+an error message is displayed.
+</p>
+
+
+
+<div id="spadComm2-35" class="spadComm" >
+<form id="formComm2-35" action="javascript:makeRequest('2-35');" >
+<input id="comm2-35" type="text" class="command" style="width: 6em;" value="b := 4/5" />
+</form>
+<span id="commSav2-35" class="commSav" >b := 4/5</span>
+<div id="mathAns2-35" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Cannot&nbsp;convert&nbsp;right-hand&nbsp;side&nbsp;of&nbsp;assignment<br />
+&nbsp;&nbsp;&nbsp;4<br />
+&nbsp;&nbsp;&nbsp;-<br />
+&nbsp;&nbsp;&nbsp;5<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;an&nbsp;object&nbsp;of&nbsp;the&nbsp;type&nbsp;Integer&nbsp;of&nbsp;the&nbsp;left-hand&nbsp;side.<br />
+</div>
+
+
+
+<p>This declares a variable with a mode.
+</p>
+
+
+
+<div id="spadComm2-36" class="spadComm" >
+<form id="formComm2-36" action="javascript:makeRequest('2-36');" >
+<input id="comm2-36" type="text" class="command" style="width: 9em;" value="n : Complex ?" />
+</form>
+<span id="commSav2-36" class="commSav" >n : Complex ?</span>
+<div id="mathAns2-36" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This declares several variables with a mode.
+</p>
+
+
+
+<div id="spadComm2-37" class="spadComm" >
+<form id="formComm2-37" action="javascript:makeRequest('2-37');" >
+<input id="comm2-37" type="text" class="command" style="width: 20em;" value="(p,q,r) : Matrix Polynomial ?" />
+</form>
+<span id="commSav2-37" class="commSav" >(p,q,r) : Matrix Polynomial ?</span>
+<div id="mathAns2-37" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This complex object has integer real and imaginary parts.
+</p>
+
+
+
+<div id="spadComm2-38" class="spadComm" >
+<form id="formComm2-38" action="javascript:makeRequest('2-38');" >
+<input id="comm2-38" type="text" class="command" style="width: 12em;" value="n := -36 + 9 * %i" />
+</form>
+<span id="commSav2-38" class="commSav" >n := -36 + 9 * %i</span>
+<div id="mathAns2-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>36</mn><mo>+</mo><mrow><mn>9</mn><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Integer
+</div>
+
+
+
+<p>This complex object has fractional symbolic real and imaginary parts.
+</p>
+
+
+
+<div id="spadComm2-39" class="spadComm" >
+<form id="formComm2-39" action="javascript:makeRequest('2-39');" >
+<input id="comm2-39" type="text" class="command" style="width: 18em;" value="n := complex(4/(x + y),y/x)" />
+</form>
+<span id="commSav2-39" class="commSav" >n := complex(4/(x + y),y/x)</span>
+<div id="mathAns2-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>4</mn><mrow><mi>y</mi><mo>+</mo><mi>x</mi></mrow></mfrac><mo>+</mo><mrow><mfrac><mi>y</mi><mi>x</mi></mfrac><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Polynomial Integer
+</div>
+
+
+
+<p>This matrix has entries that are polynomials with integer
+coefficients.
+</p>
+
+
+
+<div id="spadComm2-40" class="spadComm" >
+<form id="formComm2-40" action="javascript:makeRequest('2-40');" >
+<input id="comm2-40" type="text" class="command" style="width: 18em;" value="p := [ [1,2],[3,4],[5,6] ]" />
+</form>
+<span id="commSav2-40" class="commSav" >p := [ [1,2],[3,4],[5,6] ]</span>
+<div id="mathAns2-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>5</mn></mtd><mtd><mn>6</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Integer
+</div>
+
+
+
+<p>This matrix has a single entry that is a polynomial with
+rational number coefficients.
+</p>
+
+
+
+<div id="spadComm2-41" class="spadComm" >
+<form id="formComm2-41" action="javascript:makeRequest('2-41');" >
+<input id="comm2-41" type="text" class="command" style="width: 12em;" value="q := [ [x - 2/3] ]" />
+</form>
+<span id="commSav2-41" class="commSav" >q := [ [x - 2/3] ]</span>
+<div id="mathAns2-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mi>x</mi><mo>-</mo><mfrac><mn>2</mn><mn>3</mn></mfrac></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Fraction Integer
+</div>
+
+
+
+<p>This matrix has entries that are polynomials with complex integer
+coefficients.
+</p>
+
+
+
+
+<div id="spadComm2-42" class="spadComm" >
+<form id="formComm2-42" action="javascript:makeRequest('2-42');" >
+<input id="comm2-42" type="text" class="command" style="width: 19em;" value="r := [ [1-%i*x,7*y+4*%i] ]" />
+</form>
+<span id="commSav2-42" class="commSav" >r := [ [1-%i*x,7*y+4*%i] ]</span>
+<div id="mathAns2-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>-</mo><mrow><mi>i</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow></mtd><mtd><mrow><mrow><mn>7</mn><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>i</mi></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Complex Integer
+</div>
+
+
+
+<p>Note the difference between this and the next example.
+This is a complex object with polynomial real and imaginary parts.
+</p>
+
+
+
+
+<div id="spadComm2-43" class="spadComm" >
+<form id="formComm2-43" action="javascript:makeRequest('2-43');" >
+<input id="comm2-43" type="text" class="command" style="width: 24em;" value="f : COMPLEX POLY ? := (x + y*%i)**2" />
+</form>
+<span id="commSav2-43" class="commSav" >f : COMPLEX POLY ? := (x + y*%i)**2</span>
+<div id="mathAns2-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>x</mi><mo></mo><mi>y</mi><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Polynomial Integer
+</div>
+
+
+
+<p>This is a polynomial with complex integer coefficients.  The objects
+are convertible from one to the other.  See <a href="section-2.7.xhtml#ugTypesConvert" class="ref" >ugTypesConvert</a> for more information.
+</p>
+
+
+
+
+<div id="spadComm2-44" class="spadComm" >
+<form id="formComm2-44" action="javascript:makeRequest('2-44');" >
+<input id="comm2-44" type="text" class="command" style="width: 24em;" value="g : POLY COMPLEX ? := (x + y*%i)**2" />
+</form>
+<span id="commSav2-44" class="commSav" >g : POLY COMPLEX ? := (x + y*%i)**2</span>
+<div id="mathAns2-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>i</mi><mo></mo><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Complex Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.2.xhtml" style="margin-right: 10px;">Previous Section 2.2 Writing Types and Modes</a><a href="section-2.4.xhtml" style="margin-right: 10px;">Next Section 2.4 Records</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.4.xhtml
new file mode 100644
index 0000000..69030b0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.4.xhtml
@@ -0,0 +1,658 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.3.xhtml" style="margin-right: 10px;">Previous Section 2.3 Declarations</a><a href="section-2.5.xhtml" style="margin-right: 10px;">Next Section 2.5 Unions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.4">
+<h2 class="sectiontitle">2.4  Records</h2>
+
+
+<a name="ugTypesRecords" class="label"/>
+
+
+<p>A <span class="teletype">Record</span> is an object composed of one or more other objects,
+<span class="index">Record</span><a name="chapter-2-26"/> each of which is referenced <span class="index">selector:record</span><a name="chapter-2-27"/>
+with <span class="index">record:selector</span><a name="chapter-2-28"/> a <span class="italic">selector</span>.  Components can all
+belong to the same type or each can have a different type.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The syntax for writing a <span class="teletype">Record</span> type is 
+</p>
+
+
+<div class="center" style="text-align: center;">
+
+<p> 
+<span class="teletype">Record(<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>selector</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>:<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>type</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>selector</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>:<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>type</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>, ...,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>selector</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math>:<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>type</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math>)</span> 
+</p>
+
+
+</div>
+
+<p> You must be
+careful if a selector has the same name as a variable in the
+workspace.  If this occurs, precede the selector name by a single
+<span class="index">quote</span><a name="chapter-2-29"/> quote.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>Record components are implicitly ordered.  All the components of a
+record can be set at once by assigning the record a bracketed <span class="italic">
+tuple</span> of values of the proper length. For example:
+</p>
+
+
+
+<div id="spadComm2-45" class="spadComm" >
+<form id="formComm2-45" action="javascript:makeRequest('2-45');" >
+<input id="comm2-45" type="text" class="command" style="width: 31em;" value='r : Record(a:Integer, b: String) := [1, "two"]' />
+</form>
+<span id="commSav2-45" class="commSav" >r : Record(a:Integer, b: String) := [1, "two"]</span>
+<div id="mathAns2-45" ></div>
+</div>
+
+<p>  
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>a</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"two"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: Record(a: Integer,b: String)
+</div>
+
+
+<p>To access a component of a record <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math>, write the name <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math>, followed by
+a period, followed by a selector.
+</p>
+
+
+<p>The object returned by this computation is a record with two components: a
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>quotient</mi></mstyle></math> part and a <math xmlns="&mathml;" mathsize="big"><mstyle><mi>remainder</mi></mstyle></math> part.
+</p>
+
+
+
+<div id="spadComm2-46" class="spadComm" >
+<form id="formComm2-46" action="javascript:makeRequest('2-46');" >
+<input id="comm2-46" type="text" class="command" style="width: 11em;" value="u := divide(5,2)" />
+</form>
+<span id="commSav2-46" class="commSav" >u := divide(5,2)</span>
+<div id="mathAns2-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>quotient</mi><mo>=</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>remainder</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(quotient: Integer,remainder: Integer)
+</div>
+
+
+
+<p>This is the quotient part.
+</p>
+
+
+
+<div id="spadComm2-47" class="spadComm" >
+<form id="formComm2-47" action="javascript:makeRequest('2-47');" >
+<input id="comm2-47" type="text" class="command" style="width: 7em;" value="u.quotient" />
+</form>
+<span id="commSav2-47" class="commSav" >u.quotient</span>
+<div id="mathAns2-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is the remainder part.
+</p>
+
+
+
+<div id="spadComm2-48" class="spadComm" >
+<form id="formComm2-48" action="javascript:makeRequest('2-48');" >
+<input id="comm2-48" type="text" class="command" style="width: 8em;" value="u.remainder" />
+</form>
+<span id="commSav2-48" class="commSav" >u.remainder</span>
+<div id="mathAns2-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>You can use selector expressions on the left-hand side of an assignment
+to change destructively the components of a record.
+</p>
+
+
+
+<div id="spadComm2-49" class="spadComm" >
+<form id="formComm2-49" action="javascript:makeRequest('2-49');" >
+<input id="comm2-49" type="text" class="command" style="width: 12em;" value="u.quotient := 8978" />
+</form>
+<span id="commSav2-49" class="commSav" >u.quotient := 8978</span>
+<div id="mathAns2-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8978</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The selected component <math xmlns="&mathml;" mathsize="big"><mstyle><mi>quotient</mi></mstyle></math> has the value <math xmlns="&mathml;" mathsize="big"><mstyle><mn>8978</mn></mstyle></math>, which is what
+is returned by the assignment.  Check that the value of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math> was
+modified.
+</p>
+
+
+
+<div id="spadComm2-50" class="spadComm" >
+<form id="formComm2-50" action="javascript:makeRequest('2-50');" >
+<input id="comm2-50" type="text" class="command" style="width: 1em;" value="u" />
+</form>
+<span id="commSav2-50" class="commSav" >u</span>
+<div id="mathAns2-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>quotient</mi><mo>=</mo><mn>8978</mn></mrow><mo>,</mo><mrow><mi>remainder</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(quotient: Integer,remainder: Integer)
+</div>
+
+
+
+<p>Selectors are evaluated.  Thus you can use variables that evaluate to
+selectors instead of the selectors themselves.
+</p>
+
+
+
+<div id="spadComm2-51" class="spadComm" >
+<form id="formComm2-51" action="javascript:makeRequest('2-51');" >
+<input id="comm2-51" type="text" class="command" style="width: 10em;" value="s := 'quotient" />
+</form>
+<span id="commSav2-51" class="commSav" >s := 'quotient</span>
+<div id="mathAns2-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>quotient</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Variable quotient
+</div>
+
+
+
+<p>Be careful!  A selector could have the same name as a variable in the
+workspace.  If this occurs, precede the selector name by a single
+quote, as in   <span class="index">selector:quoting</span><a name="chapter-2-30"/> u.'quotient.
+</p>
+
+
+
+<div id="spadComm2-52" class="spadComm" >
+<form id="formComm2-52" action="javascript:makeRequest('2-52');" >
+<input id="comm2-52" type="text" class="command" style="width: 9em;" value="divide(5,2).s" />
+</form>
+<span id="commSav2-52" class="commSav" >divide(5,2).s</span>
+<div id="mathAns2-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Here we declare that the value of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>bd</mi></mstyle></math> has two components: a string,
+to be accessed via <span class="teletype">name</span>, and an integer, to be accessed via
+<span class="teletype">birthdayMonth</span>.
+</p>
+
+
+
+<div id="spadComm2-53" class="spadComm" >
+<form id="formComm2-53" action="javascript:makeRequest('2-53');" >
+<input id="comm2-53" type="text" class="command" style="width: 34em;" value="bd : Record(name : String, birthdayMonth : Integer)" />
+</form>
+<span id="commSav2-53" class="commSav" >bd : Record(name : String, birthdayMonth : Integer)</span>
+<div id="mathAns2-53" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>You must initially set the value of the entire <span class="teletype">Record</span> at once.
+</p>
+
+
+
+<div id="spadComm2-54" class="spadComm" >
+<form id="formComm2-54" action="javascript:makeRequest('2-54');" >
+<input id="comm2-54" type="text" class="command" style="width: 13em;" value='bd := ["Judith", 3]' />
+</form>
+<span id="commSav2-54" class="commSav" >bd := ["Judith", 3]</span>
+<div id="mathAns2-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>name</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"Judith"</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mi>birthdayMonth</mi><mo>=</mo><mn>3</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(name: String,birthdayMonth: Integer)
+</div>
+
+
+
+<p>Once set, you can change any of the individual components.
+</p>
+
+
+
+<div id="spadComm2-55" class="spadComm" >
+<form id="formComm2-55" action="javascript:makeRequest('2-55');" >
+<input id="comm2-55" type="text" class="command" style="width: 12em;" value='bd.name := "Katie"' />
+</form>
+<span id="commSav2-55" class="commSav" >bd.name := "Katie"</span>
+<div id="mathAns2-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"Katie"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Records may be nested and the selector names can be shared at
+different levels.
+</p>
+
+
+
+<div id="spadComm2-56" class="spadComm" >
+<form id="formComm2-56" action="javascript:makeRequest('2-56');" >
+<input id="comm2-56" type="text" class="command" style="width: 39em;" value="r : Record(a : Record(b: Integer, c: Integer), b: Integer)" />
+</form>
+<span id="commSav2-56" class="commSav" >r : Record(a : Record(b: Integer, c: Integer), b: Integer)</span>
+<div id="mathAns2-56" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The record <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> has a <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> selector at two different levels.
+Here is an initial value for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm2-57" class="spadComm" >
+<form id="formComm2-57" action="javascript:makeRequest('2-57');" >
+<input id="comm2-57" type="text" class="command" style="width: 12em;" value="r := [ [1,2], 3 ]" />
+</form>
+<span id="commSav2-57" class="commSav" >r := [ [1,2], 3 ]</span>
+<div id="mathAns2-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>a</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>b</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>b</mi><mo>=</mo><mn>3</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(a: Record(b: Integer,c: Integer),b: Integer)
+</div>
+
+
+
+<p>This extracts the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> component from the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> component of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm2-58" class="spadComm" >
+<form id="formComm2-58" action="javascript:makeRequest('2-58');" >
+<input id="comm2-58" type="text" class="command" style="width: 4em;" value="r.a.b" />
+</form>
+<span id="commSav2-58" class="commSav" >r.a.b</span>
+<div id="mathAns2-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This extracts the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> component from <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm2-59" class="spadComm" >
+<form id="formComm2-59" action="javascript:makeRequest('2-59');" >
+<input id="comm2-59" type="text" class="command" style="width: 2em;" value="r.b" />
+</form>
+<span id="commSav2-59" class="commSav" >r.b</span>
+<div id="mathAns2-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>You can also use spaces or parentheses to refer to <span class="teletype">Record</span>
+components.  This is the same as <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>.</mo><mi>a</mi></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm2-60" class="spadComm" >
+<form id="formComm2-60" action="javascript:makeRequest('2-60');" >
+<input id="comm2-60" type="text" class="command" style="width: 3em;" value="r(a)" />
+</form>
+<span id="commSav2-60" class="commSav" >r(a)</span>
+<div id="mathAns2-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>b</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(b: Integer,c: Integer)
+</div>
+
+
+<p>This is the same as <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>.</mo><mi>b</mi></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm2-61" class="spadComm" >
+<form id="formComm2-61" action="javascript:makeRequest('2-61');" >
+<input id="comm2-61" type="text" class="command" style="width: 2em;" value="r b" />
+</form>
+<span id="commSav2-61" class="commSav" >r b</span>
+<div id="mathAns2-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is the same as <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>.</mo><mi>b</mi><mo>:</mo><mo>=</mo><mn>10</mn></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm2-62" class="spadComm" >
+<form id="formComm2-62" action="javascript:makeRequest('2-62');" >
+<input id="comm2-62" type="text" class="command" style="width: 7em;" value="r(b) := 10" />
+</form>
+<span id="commSav2-62" class="commSav" >r(b) := 10</span>
+<div id="mathAns2-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Look at <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> to make sure it was modified.
+</p>
+
+
+
+<div id="spadComm2-63" class="spadComm" >
+<form id="formComm2-63" action="javascript:makeRequest('2-63');" >
+<input id="comm2-63" type="text" class="command" style="width: 1em;" value="r" />
+</form>
+<span id="commSav2-63" class="commSav" >r</span>
+<div id="mathAns2-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>a</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>b</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>b</mi><mo>=</mo><mn>10</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(a: Record(b: Integer,c: Integer),b: Integer)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.3.xhtml" style="margin-right: 10px;">Previous Section 2.3 Declarations</a><a href="section-2.5.xhtml" style="margin-right: 10px;">Next Section 2.5 Unions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.5.xhtml
new file mode 100644
index 0000000..c0e8e42
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.5.xhtml
@@ -0,0 +1,779 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.4.xhtml" style="margin-right: 10px;">Previous Section 2.4 Records</a><a href="section-2.6.xhtml" style="margin-right: 10px;">Next Section 2.6 The ``Any'' Domain</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.5">
+<h2 class="sectiontitle">2.5  Unions</h2>
+
+
+<a name="ugTypesUnions" class="label"/>
+
+
+<p>Type <span class="teletype">Union</span> is used for objects that can be of any of a specific
+finite set of types.  <span class="index">Union</span><a name="chapter-2-31"/> Two versions of unions are
+available, one with selectors (like records) and one without.
+<span class="index">union</span><a name="chapter-2-32"/>
+</p>
+
+
+
+<a name="subsec-2.5.1"/>
+<div class="subsection"  id="subsec-2.5.1">
+<h3 class="subsectitle">2.5.1  Unions Without Selectors</h3>
+
+
+<a name="ugTypesUnionsWOSel" class="label"/>
+
+
+<p>The declaration <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>:</mo><mi>Union</mi><mo>(</mo><mi>Integer</mi><mo>,</mo><mi>String</mi><mo>,</mo><mi>Float</mi><mo>)</mo></mrow></mstyle></math> states that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>
+can have values that are integers, strings or ``big'' floats.  If, for
+example, the <span class="teletype">Union</span> object is an integer, the object is said to
+belong to the <span class="teletype">Integer</span> <span class="italic">branch</span> of the <span class="teletype">Union</span>.  Note
+that we are being a bit careless with the language here.  Technically,
+the type of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is always <span class="teletype">Union(Integer, String, Float)</span>.  If it
+belongs to the <span class="teletype">Integer</span> branch, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> may be converted to an object
+of type <span class="teletype">Integer</span>.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The syntax for writing a <span class="teletype">Union</span> type without selectors is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">Union(<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>type</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>type</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>, 
+..., <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>type</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math>)</span>
+</p>
+
+
+
+</div>
+
+
+<p>The types in a union without selectors must be distinct.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>It is possible to create unions like <span class="teletype">Union(Integer, PositiveInteger)</span> 
+but they are difficult to work with because of the overlap in the branch 
+types.  See below for the rules Axiom uses for converting something into 
+a union object.
+</p>
+
+
+<p>The <span class="teletype">case</span> infix <span class="index">case</span><a name="chapter-2-33"/> operator returns a <span class="teletype">Boolean</span> and can
+be used to determine the branch in which an object lies.
+</p>
+
+
+<p>This function displays a message stating in which branch of the 
+<span class="teletype">Union</span> the object (defined as <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> above) lies.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+sayBranch(x&nbsp;:&nbsp;Union(Integer,String,Float))&nbsp;:&nbsp;Void&nbsp;&nbsp;==<br />
+&nbsp;&nbsp;output<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;case&nbsp;Integer&nbsp;=&gt;&nbsp;"Integer&nbsp;branch"<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;case&nbsp;String&nbsp;&nbsp;=&gt;&nbsp;"String&nbsp;branch"<br />
+&nbsp;&nbsp;&nbsp;&nbsp;"Float&nbsp;branch"<br />
+</div>
+
+
+
+<p>This tries <span style="font-weight: bold;"> sayBranch</span> with an integer.
+</p>
+
+
+
+<div id="spadComm2-64" class="spadComm" >
+<form id="formComm2-64" action="javascript:makeRequest('2-64');" >
+<input id="comm2-64" type="text" class="command" style="width: 8em;" value="sayBranch 1" />
+</form>
+<span id="commSav2-64" class="commSav" >sayBranch 1</span>
+<div id="mathAns2-64" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;function&nbsp;sayBranch&nbsp;with&nbsp;type&nbsp;Union(Integer,String,Float)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;Void&nbsp;<br />
+&nbsp;Integer&nbsp;branch<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This tries <span style="font-weight: bold;"> sayBranch</span> with a string.
+</p>
+
+
+
+<div id="spadComm2-65" class="spadComm" >
+<form id="formComm2-65" action="javascript:makeRequest('2-65');" >
+<input id="comm2-65" type="text" class="command" style="width: 12em;" value='sayBranch "hello"' />
+</form>
+<span id="commSav2-65" class="commSav" >sayBranch "hello"</span>
+<div id="mathAns2-65" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;String&nbsp;branch<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This tries <span style="font-weight: bold;"> sayBranch</span> with a floating-point number.
+</p>
+
+
+
+<div id="spadComm2-66" class="spadComm" >
+<form id="formComm2-66" action="javascript:makeRequest('2-66');" >
+<input id="comm2-66" type="text" class="command" style="width: 14em;" value="sayBranch 2.718281828" />
+</form>
+<span id="commSav2-66" class="commSav" >sayBranch 2.718281828</span>
+<div id="mathAns2-66" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Float&nbsp;branch<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>There are two things of interest about this particular
+example to which we would like to draw your attention.
+</p>
+
+
+
+<ol>
+<li>
+ Axiom normally converts a result to the target value
+before passing it to the function.
+If we left the declaration information out of this function definition
+then the <span style="font-weight: bold;"> sayBranch</span> call would have been attempted with an
+<span class="teletype">Integer</span> rather than a <span class="teletype">Union</span>, and an error would have
+resulted.
+</li>
+<li> The types in a <span class="teletype">Union</span> are searched in the order given.
+So if the type were given as
+
+
+<span class="teletype">sayBranch(x: Union(String,Integer,Float,Any)): Void</span>
+
+then the result would have been ``String branch'' because there
+is a conversion from <span class="teletype">Integer</span> to <span class="teletype">String</span>.
+</li>
+</ol>
+
+
+
+<p>Sometimes <span class="teletype">Union</span> types can have extremely long names.  Axiom
+therefore abbreviates the names of unions by printing the type of the
+branch first within the <span class="teletype">Union</span> and then eliding the remaining
+types with an ellipsis (<span class="teletype">...</span>).
+</p>
+
+
+<p>Here the <span class="teletype">Integer</span> branch is displayed first.  Use ``<span class="teletype">::</span>'' to
+create a <span class="teletype">Union</span> object from an object.
+</p>
+
+
+
+<div id="spadComm2-67" class="spadComm" >
+<form id="formComm2-67" action="javascript:makeRequest('2-67');" >
+<input id="comm2-67" type="text" class="command" style="width: 18em;" value="78 :: Union(Integer,String)" />
+</form>
+<span id="commSav2-67" class="commSav" >78 :: Union(Integer,String)</span>
+<div id="mathAns2-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>78</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Integer,...)
+</div>
+
+
+
+<p>Here the <span class="teletype">String</span> branch is displayed first.
+</p>
+
+
+
+<div id="spadComm2-68" class="spadComm" >
+<form id="formComm2-68" action="javascript:makeRequest('2-68');" >
+<input id="comm2-68" type="text" class="command" style="width: 26em;" value='s := "string" :: Union(Integer,String)' />
+</form>
+<span id="commSav2-68" class="commSav" >s := "string" :: Union(Integer,String)</span>
+<div id="mathAns2-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"string"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(String,...)
+</div>
+
+
+
+<p>Use <span class="teletype">typeOf</span> to see the full and actual <span class="teletype">Union</span> type. <span class="index">typeOf</span><a name="chapter-2-34"/>
+</p>
+
+
+
+<div id="spadComm2-69" class="spadComm" >
+<form id="formComm2-69" action="javascript:makeRequest('2-69');" >
+<input id="comm2-69" type="text" class="command" style="width: 6em;" value="typeOf s" />
+</form>
+<span id="commSav2-69" class="commSav" >typeOf s</span>
+<div id="mathAns2-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>Union</mi><mo>(</mo><mi>Integer</mi><mo>,</mo><mi>String</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>A common operation that returns a union is <span class="spadfunFrom" style="font-weight: bold;">exquo</span><span class="index">exquo</span><a name="chapter-2-35"/><span class="index">Integer</span><a name="chapter-2-36"/>
+which returns the ``exact quotient'' if the quotient is exact,
+</p>
+
+
+
+<div id="spadComm2-70" class="spadComm" >
+<form id="formComm2-70" action="javascript:makeRequest('2-70');" >
+<input id="comm2-70" type="text" class="command" style="width: 13em;" value="three := exquo(6,2)" />
+</form>
+<span id="commSav2-70" class="commSav" >three := exquo(6,2)</span>
+<div id="mathAns2-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Integer,...)
+</div>
+
+
+
+<p>and <span class="teletype">"failed"</span> if the quotient is not exact.
+</p>
+
+
+
+<div id="spadComm2-71" class="spadComm" >
+<form id="formComm2-71" action="javascript:makeRequest('2-71');" >
+<input id="comm2-71" type="text" class="command" style="width: 7em;" value="exquo(5,2)" />
+</form>
+<span id="commSav2-71" class="commSav" >exquo(5,2)</span>
+<div id="mathAns2-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>A union with a <span class="teletype">"failed"</span> is frequently used to indicate the failure
+or lack of applicability of an object.  As another example, assign an
+integer a variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> declared to be a rational number.
+</p>
+
+
+
+<div id="spadComm2-72" class="spadComm" >
+<form id="formComm2-72" action="javascript:makeRequest('2-72');" >
+<input id="comm2-72" type="text" class="command" style="width: 11em;" value="r: FRAC INT := 3" />
+</form>
+<span id="commSav2-72" class="commSav" >r: FRAC INT := 3</span>
+<div id="mathAns2-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" style="font-weight: bold;">retractIfCan</span><span class="index">retractIfCan</span><a name="chapter-2-37"/><span class="index">Fraction</span><a name="chapter-2-38"/> tries to retract
+the fraction to the underlying domain <span class="teletype">Integer</span>.  It produces a
+union object.  Here it succeeds.
+</p>
+
+
+
+<div id="spadComm2-73" class="spadComm" >
+<form id="formComm2-73" action="javascript:makeRequest('2-73');" >
+<input id="comm2-73" type="text" class="command" style="width: 10em;" value="retractIfCan(r)" />
+</form>
+<span id="commSav2-73" class="commSav" >retractIfCan(r)</span>
+<div id="mathAns2-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Integer,...)
+</div>
+
+
+
+<p>Assign it a rational number.
+</p>
+
+
+
+<div id="spadComm2-74" class="spadComm" >
+<form id="formComm2-74" action="javascript:makeRequest('2-74');" >
+<input id="comm2-74" type="text" class="command" style="width: 6em;" value="r := 3/2" />
+</form>
+<span id="commSav2-74" class="commSav" >r := 3/2</span>
+<div id="mathAns2-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>3</mn><mn>2</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Here the retraction fails.
+</p>
+
+
+
+<div id="spadComm2-75" class="spadComm" >
+<form id="formComm2-75" action="javascript:makeRequest('2-75');" >
+<input id="comm2-75" type="text" class="command" style="width: 10em;" value="retractIfCan(r)" />
+</form>
+<span id="commSav2-75" class="commSav" >retractIfCan(r)</span>
+<div id="mathAns2-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-2.5.2"/>
+<div class="subsection"  id="subsec-2.5.2">
+<h3 class="subsectitle">2.5.2  Unions With Selectors</h3>
+
+
+<a name="ugTypesUnionsWSel" class="label"/>
+
+
+<p>Like records (<a href="section-2.4.xhtml#ugTypesRecords" class="ref" >ugTypesRecords</a> ),
+you can write <span class="teletype">Union</span> types <span class="index">selector:union</span><a name="chapter-2-39"/> with selectors.
+<span class="index">union:selector</span><a name="chapter-2-40"/>
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The syntax for writing a <span class="teletype">Union</span> type with selectors is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">Union(<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>selector</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>:<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>type</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>, 
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>selector</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>:<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>type</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>, ..., 
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>selector</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math>:<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>type</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math>)</span>
+</p>
+
+
+
+</div>
+
+
+<p>You must be careful if a selector has the same name as a variable in
+the workspace.  If this occurs, precede the selector name by a single
+<span class="index">quote</span><a name="chapter-2-41"/> quote.  <span class="index">selector:quoting</span><a name="chapter-2-42"/> It is an error to use a
+selector that does not correspond to the branch of the <span class="teletype">Union</span> in
+which the element actually lies.  <br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>Be sure to understand the difference between records and unions with
+selectors.  <span class="index">union:difference from record</span><a name="chapter-2-43"/> Records can have more
+than one component and the selectors are used to refer to the
+components.  <span class="index">record:difference from union</span><a name="chapter-2-44"/> Unions always have
+one component but the type of that one component can vary.  An object
+of type <span class="teletype">Record(a: Integer, b: Float, c: String)</span> contains an
+integer <span class="italic">and</span> a float <span class="italic">and</span> a string.  An object of type 
+<span class="teletype">Union(a: Integer, b: Float, c: String)</span> contains an integer 
+<span class="italic">or</span> a float <span class="italic">or</span> a string.
+</p>
+
+
+<p>Here is a version of the <span style="font-weight: bold;"> sayBranch</span> function (cf.
+<a href="section-2.5.xhtml#ugTypesUnionsWOSel" class="ref" >ugTypesUnionsWOSel</a> ) that
+works with a union with selectors.  It displays a message stating in
+which branch of the <span class="teletype">Union</span> the object lies.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+sayBranch(x:Union(i:Integer,s:String,f:Float)):Void==<br />
+&nbsp;&nbsp;output<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;case&nbsp;i&nbsp;=&gt;&nbsp;"Integer&nbsp;branch"<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;case&nbsp;s&nbsp;&nbsp;=&gt;&nbsp;"String&nbsp;branch"<br />
+&nbsp;&nbsp;&nbsp;&nbsp;"Float&nbsp;branch"<br />
+</div>
+
+
+
+<p>Note that <span class="teletype">case</span> uses the selector name as its right-hand argument.
+<span class="index">case</span><a name="chapter-2-45"/> If you accidentally use the branch type on the right-hand
+side of <span class="teletype">case</span>, <span class="teletype">false</span> will be returned.
+</p>
+
+
+<p>Declare variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math> to have a union type with selectors.
+</p>
+
+
+
+<div id="spadComm2-76" class="spadComm" >
+<form id="formComm2-76" action="javascript:makeRequest('2-76');" >
+<input id="comm2-76" type="text" class="command" style="width: 23em;" value="u : Union(i : Integer, s : String)" />
+</form>
+<span id="commSav2-76" class="commSav" >u : Union(i : Integer, s : String)</span>
+<div id="mathAns2-76" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Give an initial value to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm2-77" class="spadComm" >
+<form id="formComm2-77" action="javascript:makeRequest('2-77');" >
+<input id="comm2-77" type="text" class="command" style="width: 13em;" value='u := "good morning"' />
+</form>
+<span id="commSav2-77" class="commSav" >u := "good morning"</span>
+<div id="mathAns2-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"goodmorning"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(s: String,...)
+</div>
+
+
+
+<p>Use <math xmlns="&mathml;" mathsize="big"><mstyle><mi>case</mi></mstyle></math> to determine in which branch of a <span class="teletype">Union</span> an object lies.
+</p>
+
+
+
+<div id="spadComm2-78" class="spadComm" >
+<form id="formComm2-78" action="javascript:makeRequest('2-78');" >
+<input id="comm2-78" type="text" class="command" style="width: 6em;" value="u case i" />
+</form>
+<span id="commSav2-78" class="commSav" >u case i</span>
+<div id="mathAns2-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm2-79" class="spadComm" >
+<form id="formComm2-79" action="javascript:makeRequest('2-79');" >
+<input id="comm2-79" type="text" class="command" style="width: 6em;" value="u case s" />
+</form>
+<span id="commSav2-79" class="commSav" >u case s</span>
+<div id="mathAns2-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>To access the element in a particular branch, use the selector.
+</p>
+
+
+
+<div id="spadComm2-80" class="spadComm" >
+<form id="formComm2-80" action="javascript:makeRequest('2-80');" >
+<input id="comm2-80" type="text" class="command" style="width: 2em;" value="u.s" />
+</form>
+<span id="commSav2-80" class="commSav" >u.s</span>
+<div id="mathAns2-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"goodmorning"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.4.xhtml" style="margin-right: 10px;">Previous Section 2.4 Records</a><a href="section-2.6.xhtml" style="margin-right: 10px;">Next Section 2.6 The ``Any'' Domain</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.6.xhtml
new file mode 100644
index 0000000..1f34c6e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.6.xhtml
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.5.xhtml" style="margin-right: 10px;">Previous Section 2.5 Unions</a><a href="section-2.7.xhtml" style="margin-right: 10px;">Next Section 2.7 Conversion</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.6">
+<h2 class="sectiontitle">2.6  The ``Any'' Domain</h2>
+
+
+<a name="ugTypesAnyNone" class="label"/>
+
+
+<p>With the exception of objects of type <span class="teletype">Record</span>, all Axiom data
+structures are homogenous, that is, they hold objects all of the same
+type.  <span class="index">Any</span><a name="chapter-2-46"/> If you need to get around this, you can use type
+<span class="teletype">Any</span>.  Using <span class="teletype">Any</span>, for example, you can create lists whose
+elements are integers, rational numbers, strings, and even other
+lists.
+</p>
+
+
+<p>Declare <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math> to have type <span class="teletype">Any</span>.
+</p>
+
+
+
+<div id="spadComm2-81" class="spadComm" >
+<form id="formComm2-81" action="javascript:makeRequest('2-81');" >
+<input id="comm2-81" type="text" class="command" style="width: 4em;" value="u: Any" />
+</form>
+<span id="commSav2-81" class="commSav" >u: Any</span>
+<div id="mathAns2-81" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Assign a list of mixed type values to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math>
+</p>
+
+
+
+<div id="spadComm2-82" class="spadComm" >
+<form id="formComm2-82" action="javascript:makeRequest('2-82');" >
+<input id="comm2-82" type="text" class="command" style="width: 22em;" value='u := [1, 7.2, 3/2, x**2, "wally"]' />
+</form>
+<span id="commSav2-82" class="commSav" >u := [1, 7.2, 3/2, x**2, "wally"]</span>
+<div id="mathAns2-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mrow><mn>7</mn><mo>.</mo><mn>2</mn></mrow><mo>,</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"wally"</mtext></mrow></mtext><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Any
+</div>
+
+
+
+<p>When we ask for the elements, Axiom displays these types.
+</p>
+
+
+
+<div id="spadComm2-83" class="spadComm" >
+<form id="formComm2-83" action="javascript:makeRequest('2-83');" >
+<input id="comm2-83" type="text" class="command" style="width: 2em;" value="u.1" />
+</form>
+<span id="commSav2-83" class="commSav" >u.1</span>
+<div id="mathAns2-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Actually, these objects belong to <span class="teletype">Any</span> but Axiom
+automatically converts them to their natural types for you.
+</p>
+
+
+
+<div id="spadComm2-84" class="spadComm" >
+<form id="formComm2-84" action="javascript:makeRequest('2-84');" >
+<input id="comm2-84" type="text" class="command" style="width: 2em;" value="u.3" />
+</form>
+<span id="commSav2-84" class="commSav" >u.3</span>
+<div id="mathAns2-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>3</mn><mn>2</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Since type <span class="teletype">Any</span> can be anything, it can only belong to type 
+<span class="teletype">Type</span>.  Therefore it cannot be used in algebraic domains.
+</p>
+
+
+
+<div id="spadComm2-85" class="spadComm" >
+<form id="formComm2-85" action="javascript:makeRequest('2-85');" >
+<input id="comm2-85" type="text" class="command" style="width: 10em;" value="v : Matrix(Any)" />
+</form>
+<span id="commSav2-85" class="commSav" >v : Matrix(Any)</span>
+<div id="mathAns2-85" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Matrix&nbsp;Any&nbsp;is&nbsp;not&nbsp;a&nbsp;valid&nbsp;type.<br />
+</div>
+
+
+
+<p>Perhaps you are wondering how Axiom internally represents objects of
+type <span class="teletype">Any</span>.  An object of type <span class="teletype">Any</span> consists not only of a data
+part representing its normal value, but also a type part (a 
+<span class="italic">badge</span>) giving <span class="index">badge</span><a name="chapter-2-47"/> its type.  For example, the value <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> of
+type <span class="teletype">PositiveInteger</span> as an object of type <span class="teletype">Any</span> internally
+looks like <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mrow><mtext mathvariant='monospace'>PositiveInteger()</mtext></mrow><mo>]</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>When should you use <span class="teletype">Any</span> instead of a <span class="teletype">Union</span> type?  For a
+<span class="teletype">Union</span>, you must know in advance exactly which types you are
+going to
+allow.  For <span class="teletype">Any</span>, anything that comes along can be accommodated.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.5.xhtml" style="margin-right: 10px;">Previous Section 2.5 Unions</a><a href="section-2.7.xhtml" style="margin-right: 10px;">Next Section 2.7 Conversion</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.7.xhtml
new file mode 100644
index 0000000..56c2a21
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.7.xhtml
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.6.xhtml" style="margin-right: 10px;">Previous Section 2.6 The ``Any'' Domain</a><a href="section-2.8.xhtml" style="margin-right: 10px;">Next Section 2.8 Subdomains Again</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.7">
+<h2 class="sectiontitle">2.7  Conversion</h2>
+
+
+<a name="ugTypesConvert" class="label"/>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>Conversion is the process of changing an object of one type into an
+object of another type.  The syntax for conversion is:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mtext mathvariant='sans-serif-italic'>object</mtext></mrow><mrow><mtext mathvariant='monospace'>::</mtext></mrow><mrow><mtext mathvariant='sans-serif-italic'>newType</mtext></mrow></mrow></mstyle></math>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>By default, <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math> has the type <span class="teletype">PositiveInteger</span>.
+</p>
+
+
+
+<div id="spadComm2-86" class="spadComm" >
+<form id="formComm2-86" action="javascript:makeRequest('2-86');" >
+<input id="comm2-86" type="text" class="command" style="width: 1em;" value="3" />
+</form>
+<span id="commSav2-86" class="commSav" >3</span>
+<div id="mathAns2-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>We can change this into an object of type <span class="teletype">Fraction Integer</span>
+by using ``<span class="teletype">::</span>''.
+</p>
+
+
+
+<div id="spadComm2-87" class="spadComm" >
+<form id="formComm2-87" action="javascript:makeRequest('2-87');" >
+<input id="comm2-87" type="text" class="command" style="width: 14em;" value="3 :: Fraction Integer" />
+</form>
+<span id="commSav2-87" class="commSav" >3 :: Fraction Integer</span>
+<div id="mathAns2-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>A <span class="italic">coercion</span> is a special kind of conversion that Axiom is allowed
+to do automatically when you enter an expression.  Coercions are
+usually somewhat safer than more general conversions.  The Axiom
+library contains operations called <span style="font-weight: bold;"> coerce</span> and <span style="font-weight: bold;"> convert</span>.
+Only the <span style="font-weight: bold;"> coerce</span> operations can be used by the interpreter to
+change an object into an object of another type unless you explicitly
+use a <span class="teletype">::</span>.
+</p>
+
+
+<p>By now you will be quite familiar with what types and modes look like.
+It is useful to think of a type or mode as a pattern for what you want
+the result to be.
+</p>
+
+
+<p>Let's start with a square matrix of polynomials with complex rational
+number coefficients. <span class="index">SquareMatrix</span><a name="chapter-2-48"/>
+</p>
+
+
+
+<div id="spadComm2-88" class="spadComm" >
+<form id="formComm2-88" action="javascript:makeRequest('2-88');" >
+<input id="comm2-88" type="text" class="command" style="width: 28em;" value="m : SquareMatrix(2,POLY COMPLEX FRAC INT)" />
+</form>
+<span id="commSav2-88" class="commSav" >m : SquareMatrix(2,POLY COMPLEX FRAC INT)</span>
+<div id="mathAns2-88" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm2-89" class="spadComm" >
+<form id="formComm2-89" action="javascript:makeRequest('2-89');" >
+<input id="comm2-89" type="text" class="command" style="width: 46em;" value="m := matrix [ [x-3/4*%i,z*y**2+1/2],[3/7*%i*y**4 - x,12-%i*9/5] ]" />
+</form>
+<span id="commSav2-89" class="commSav" >m := matrix [ [x-3/4*%i,z*y**2+1/2],[3/7*%i*y**4 - x,12-%i*9/5] ]</span>
+<div id="mathAns2-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mi>x</mi><mo>-</mo><mrow><mfrac><mn>3</mn><mn>4</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mtd><mtd><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mfrac><mn>3</mn><mn>7</mn></mfrac><mo></mo><mi>i</mi><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mi>x</mi></mrow></mtd><mtd><mrow><mn>12</mn><mo>-</mo><mrow><mfrac><mn>9</mn><mn>5</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Polynomial Complex Fraction Integer)
+</div>
+
+
+
+<p>We first want to interchange the <span class="teletype">Complex</span> and <span class="teletype">Fraction</span>
+layers.  We do the conversion by doing the interchange in the type
+expression.
+</p>
+
+
+
+<div id="spadComm2-90" class="spadComm" >
+<form id="formComm2-90" action="javascript:makeRequest('2-90');" >
+<input id="comm2-90" type="text" class="command" style="width: 32em;" value="m1 := m :: SquareMatrix(2,POLY FRAC COMPLEX INT)" />
+</form>
+<span id="commSav2-90" class="commSav" >m1 := m :: SquareMatrix(2,POLY FRAC COMPLEX INT)</span>
+<div id="mathAns2-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mi>x</mi><mo>-</mo><mfrac><mrow><mn>3</mn><mo></mo><mi>i</mi></mrow><mn>4</mn></mfrac></mrow></mtd><mtd><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mfrac><mrow><mn>3</mn><mo></mo><mi>i</mi></mrow><mn>7</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mi>x</mi></mrow></mtd><mtd><mfrac><mrow><mn>60</mn><mo>-</mo><mrow><mn>9</mn><mo></mo><mi>i</mi></mrow></mrow><mn>5</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Polynomial Fraction Complex Integer)
+</div>
+
+
+
+<p>Interchange the <span class="teletype">Polynomial</span> and the <span class="teletype">Fraction</span> levels.
+</p>
+
+
+
+<div id="spadComm2-91" class="spadComm" >
+<form id="formComm2-91" action="javascript:makeRequest('2-91');" >
+<input id="comm2-91" type="text" class="command" style="width: 33em;" value="m2 := m1 :: SquareMatrix(2,FRAC POLY COMPLEX INT)" />
+</form>
+<span id="commSav2-91" class="commSav" >m2 := m1 :: SquareMatrix(2,FRAC POLY COMPLEX INT)</span>
+<div id="mathAns2-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mrow><mrow><mn>4</mn><mo></mo><mi>x</mi></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mi>i</mi></mrow></mrow><mn>4</mn></mfrac></mtd><mtd><mfrac><mrow><mrow><mn>2</mn><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><mrow><mn>3</mn><mo></mo><mi>i</mi><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7</mn><mo></mo><mi>x</mi></mrow></mrow><mn>7</mn></mfrac></mtd><mtd><mfrac><mrow><mn>60</mn><mo>-</mo><mrow><mn>9</mn><mo></mo><mi>i</mi></mrow></mrow><mn>5</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Fraction Polynomial Complex Integer)
+</div>
+
+
+
+<p>Interchange the <span class="teletype">Polynomial</span> and the <span class="teletype">Complex</span> levels.
+</p>
+
+
+
+<div id="spadComm2-92" class="spadComm" >
+<form id="formComm2-92" action="javascript:makeRequest('2-92');" >
+<input id="comm2-92" type="text" class="command" style="width: 33em;" value="m3 := m2 :: SquareMatrix(2,FRAC COMPLEX POLY INT)" />
+</form>
+<span id="commSav2-92" class="commSav" >m3 := m2 :: SquareMatrix(2,FRAC COMPLEX POLY INT)</span>
+<div id="mathAns2-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mrow><mrow><mn>4</mn><mo></mo><mi>x</mi></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mi>i</mi></mrow></mrow><mn>4</mn></mfrac></mtd><mtd><mfrac><mrow><mrow><mn>2</mn><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><mo>-</mo><mrow><mn>7</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow><mo></mo><mi>i</mi></mrow></mrow><mn>7</mn></mfrac></mtd><mtd><mfrac><mrow><mn>60</mn><mo>-</mo><mrow><mn>9</mn><mo></mo><mi>i</mi></mrow></mrow><mn>5</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Fraction Complex Polynomial Integer)
+</div>
+
+
+
+<p>All the entries have changed types, although in comparing the
+last two results only the entry in the lower left corner looks different.
+We did all the intermediate steps to show you what Axiom can do.
+</p>
+
+
+<p>In fact, we could have combined all these into one conversion.
+</p>
+
+
+
+<div id="spadComm2-93" class="spadComm" >
+<form id="formComm2-93" action="javascript:makeRequest('2-93');" >
+<input id="comm2-93" type="text" class="command" style="width: 28em;" value="m :: SquareMatrix(2,FRAC COMPLEX POLY INT)" />
+</form>
+<span id="commSav2-93" class="commSav" >m :: SquareMatrix(2,FRAC COMPLEX POLY INT)</span>
+<div id="mathAns2-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mrow><mrow><mn>4</mn><mo></mo><mi>x</mi></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mi>i</mi></mrow></mrow><mn>4</mn></mfrac></mtd><mtd><mfrac><mrow><mrow><mn>2</mn><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><mo>-</mo><mrow><mn>7</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow><mo></mo><mi>i</mi></mrow></mrow><mn>7</mn></mfrac></mtd><mtd><mfrac><mrow><mn>60</mn><mo>-</mo><mrow><mn>9</mn><mo></mo><mi>i</mi></mrow></mrow><mn>5</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Fraction Complex Polynomial Integer)
+</div>
+
+
+
+<p>There are times when Axiom is not be able to do the conversion in one
+step.  You may need to break up the transformation into several
+conversions in order to get an object of the desired type.
+</p>
+
+
+<p>We cannot move either <span class="teletype">Fraction</span> or <span class="teletype">Complex</span> above (or to the
+left of, depending on how you look at it) <span class="teletype">SquareMatrix</span> because
+each of these levels requires that its argument type have commutative
+multiplication, whereas <span class="teletype">SquareMatrix</span> does not. That is because
+<span class="teletype">Fraction</span> requires that its argument belong to the category 
+<span class="teletype">IntegralDomain</span> and <span class="index">category</span><a name="chapter-2-49"/> <span class="teletype">Complex</span> requires that its
+argument belong to <span class="teletype">CommutativeRing</span>. 
+See <a href="section-2.1.xhtml#ugTypesBasic" class="ref" >ugTypesBasic</a>  for a
+brief discussion of categories. The <span class="teletype">Integer</span> level did not move
+anywhere because it does not allow any arguments.  We also did not
+move the <span class="teletype">SquareMatrix</span> part anywhere, but we could have.
+</p>
+
+
+<p>Recall that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> looks like this.
+</p>
+
+
+
+
+<div id="spadComm2-94" class="spadComm" >
+<form id="formComm2-94" action="javascript:makeRequest('2-94');" >
+<input id="comm2-94" type="text" class="command" style="width: 1em;" value="m" />
+</form>
+<span id="commSav2-94" class="commSav" >m</span>
+<div id="mathAns2-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mi>x</mi><mo>-</mo><mrow><mfrac><mn>3</mn><mn>4</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mtd><mtd><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mfrac><mn>3</mn><mn>7</mn></mfrac><mo></mo><mi>i</mi><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mi>x</mi></mrow></mtd><mtd><mrow><mn>12</mn><mo>-</mo><mrow><mfrac><mn>9</mn><mn>5</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Polynomial Complex Fraction Integer)
+</div>
+
+
+
+<p>If we want a polynomial with matrix coefficients rather than a matrix
+with polynomial entries, we can just do the conversion.
+</p>
+
+
+
+
+<div id="spadComm2-95" class="spadComm" >
+<form id="formComm2-95" action="javascript:makeRequest('2-95');" >
+<input id="comm2-95" type="text" class="command" style="width: 28em;" value="m :: POLY SquareMatrix(2,COMPLEX FRAC INT)" />
+</form>
+<span id="commSav2-95" class="commSav" >m :: POLY SquareMatrix(2,COMPLEX FRAC INT)</span>
+<div id="mathAns2-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mfrac><mn>3</mn><mn>7</mn></mfrac><mo></mo><mi>i</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mrow><mfrac><mn>3</mn><mn>4</mn></mfrac><mo></mo><mi>i</mi></mrow></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mn>12</mn><mo>-</mo><mrow><mfrac><mn>9</mn><mn>5</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial SquareMatrix(2,Complex Fraction Integer)
+</div>
+
+
+
+<p>We have not yet used modes for any conversions.  Modes are a great
+shorthand for indicating the type of the object you want.  Instead of
+using the long type expression in the last example, we could have
+simply said this.
+</p>
+
+
+
+
+<div id="spadComm2-96" class="spadComm" >
+<form id="formComm2-96" action="javascript:makeRequest('2-96');" >
+<input id="comm2-96" type="text" class="command" style="width: 8em;" value="m :: POLY ?" />
+</form>
+<span id="commSav2-96" class="commSav" >m :: POLY ?</span>
+<div id="mathAns2-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mfrac><mn>3</mn><mn>7</mn></mfrac><mo></mo><mi>i</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mrow><mfrac><mn>3</mn><mn>4</mn></mfrac><mo></mo><mi>i</mi></mrow></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mn>12</mn><mo>-</mo><mrow><mfrac><mn>9</mn><mn>5</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial SquareMatrix(2,Complex Fraction Integer)
+</div>
+
+
+
+<p>We can also indicate more structure if we want the entries of the
+matrices to be fractions.
+</p>
+
+
+
+
+<div id="spadComm2-97" class="spadComm" >
+<form id="formComm2-97" action="javascript:makeRequest('2-97');" >
+<input id="comm2-97" type="text" class="command" style="width: 22em;" value="m :: POLY SquareMatrix(2,FRAC ?)" />
+</form>
+<span id="commSav2-97" class="commSav" >m :: POLY SquareMatrix(2,FRAC ?)</span>
+<div id="mathAns2-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mfrac><mrow><mn>3</mn><mo></mo><mi>i</mi></mrow><mn>7</mn></mfrac></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mrow><mn>3</mn><mo></mo><mi>i</mi></mrow><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mfrac><mrow><mn>60</mn><mo>-</mo><mrow><mn>9</mn><mo></mo><mi>i</mi></mrow></mrow><mn>5</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial SquareMatrix(2,Fraction Complex Integer)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.6.xhtml" style="margin-right: 10px;">Previous Section 2.6 The ``Any'' Domain</a><a href="section-2.8.xhtml" style="margin-right: 10px;">Next Section 2.8 Subdomains Again</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.8.xhtml
new file mode 100644
index 0000000..827f3ca
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.8.xhtml
@@ -0,0 +1,515 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.7.xhtml" style="margin-right: 10px;">Previous Section 2.7 Conversion</a><a href="section-2.9.xhtml" style="margin-right: 10px;">Next Section 2.9 Package Calling and Target Types</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.8">
+<h2 class="sectiontitle">2.8  Subdomains Again</h2>
+
+
+<a name="ugTypesSubdomains" class="label"/>
+
+
+<p>A <span class="italic">subdomain</span>  S of a domain  D is a domain consisting of
+</p>
+
+
+
+<ol>
+<li> 
+ those elements of  D that satisfy some 
+<span class="italic">predicate</span> (that is, a test that returns <span class="teletype">true</span> or <span class="teletype">false</span>) and 
+</li>
+<li> a subset of the operations of  D.  
+</li>
+</ol>
+
+<p> 
+Every domain is a subdomain of itself, trivially satisfying the
+membership test: <span class="teletype">true</span>.
+</p>
+
+
+<p>Currently, there are only two system-defined subdomains in Axiom that
+receive substantial use.  <span class="teletype">PositiveInteger</span> and 
+<span class="teletype">NonNegativeInteger</span> are subdomains of <span class="teletype">Integer</span>.  An element <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>
+of <span class="teletype">NonNegativeInteger</span> is an integer that is greater than or
+equal to zero, that is, satisfies <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>&gt;</mo><mo>=</mo><mn>0</mn></mrow></mstyle></math>.  An element <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> of 
+<span class="teletype">PositiveInteger</span> is a nonnegative integer that is, in fact, greater
+than zero, that is, satisfies <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>&gt;</mo><mn>0</mn></mrow></mstyle></math>.  Not all operations from 
+<span class="teletype">Integer</span> are available for these subdomains.  For example, negation
+and subtraction are not provided since the subdomains are not closed
+under those operations.  When you use an integer in an expression,
+Axiom assigns to it the type that is the most specific subdomain whose
+predicate is satisfied.
+</p>
+
+
+<p>This is a positive integer.
+</p>
+
+
+
+<div id="spadComm2-98" class="spadComm" >
+<form id="formComm2-98" action="javascript:makeRequest('2-98');" >
+<input id="comm2-98" type="text" class="command" style="width: 1em;" value="5" />
+</form>
+<span id="commSav2-98" class="commSav" >5</span>
+<div id="mathAns2-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is a nonnegative integer.
+</p>
+
+
+
+<div id="spadComm2-99" class="spadComm" >
+<form id="formComm2-99" action="javascript:makeRequest('2-99');" >
+<input id="comm2-99" type="text" class="command" style="width: 1em;" value="0" />
+</form>
+<span id="commSav2-99" class="commSav" >0</span>
+<div id="mathAns2-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>This is neither of the above.
+</p>
+
+
+
+<div id="spadComm2-100" class="spadComm" >
+<form id="formComm2-100" action="javascript:makeRequest('2-100');" >
+<input id="comm2-100" type="text" class="command" style="width: 2em;" value="-5" />
+</form>
+<span id="commSav2-100" class="commSav" >-5</span>
+<div id="mathAns2-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>5</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>Furthermore, unless you are assigning an integer to a declared variable
+or using a conversion, any integer result has as type the most
+specific subdomain.
+</p>
+
+
+
+<div id="spadComm2-101" class="spadComm" >
+<form id="formComm2-101" action="javascript:makeRequest('2-101');" >
+<input id="comm2-101" type="text" class="command" style="width: 8em;" value="(-2) - (-3)" />
+</form>
+<span id="commSav2-101" class="commSav" >(-2) - (-3)</span>
+<div id="mathAns2-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm2-102" class="spadComm" >
+<form id="formComm2-102" action="javascript:makeRequest('2-102');" >
+<input id="comm2-102" type="text" class="command" style="width: 8em;" value="0 :: Integer" />
+</form>
+<span id="commSav2-102" class="commSav" >0 :: Integer</span>
+<div id="mathAns2-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+
+
+<div id="spadComm2-103" class="spadComm" >
+<form id="formComm2-103" action="javascript:makeRequest('2-103');" >
+<input id="comm2-103" type="text" class="command" style="width: 18em;" value="x : NonNegativeInteger := 5" />
+</form>
+<span id="commSav2-103" class="commSav" >x : NonNegativeInteger := 5</span>
+<div id="mathAns2-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>When necessary, Axiom converts an integer object into one belonging to
+a less specific subdomain.  For example, in <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>3</mn><mo>-</mo><mn>2</mn></mrow></mstyle></math>, the arguments to
+"<span class="spadopFrom" title="Integer">-</span>" are both elements of <span class="teletype">PositiveInteger</span>,
+but this type does not provide a subtraction operation.  Neither does
+<span class="teletype">NonNegativeInteger</span>, so <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math> are viewed as elements of
+<span class="teletype">Integer</span>, where their difference can be calculated.  The result
+is <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>, which Axiom then automatically assigns the type 
+<span class="teletype">PositiveInteger</span>.
+</p>
+
+
+<p>Certain operations are very sensitive to the subdomains to which their
+arguments belong.  This is an element of <span class="teletype">PositiveInteger</span>.
+</p>
+
+
+
+<div id="spadComm2-104" class="spadComm" >
+<form id="formComm2-104" action="javascript:makeRequest('2-104');" >
+<input id="comm2-104" type="text" class="command" style="width: 4em;" value="2 ** 2" />
+</form>
+<span id="commSav2-104" class="commSav" >2 ** 2</span>
+<div id="mathAns2-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is an element of <span class="teletype">Fraction Integer</span>.
+</p>
+
+
+
+<div id="spadComm2-105" class="spadComm" >
+<form id="formComm2-105" action="javascript:makeRequest('2-105');" >
+<input id="comm2-105" type="text" class="command" style="width: 6em;" value="2 ** (-2)" />
+</form>
+<span id="commSav2-105" class="commSav" >2 ** (-2)</span>
+<div id="mathAns2-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>1</mn><mn>4</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>It makes sense then that this is a list of elements of 
+<span class="teletype">PositiveInteger</span>.
+</p>
+
+
+
+<div id="spadComm2-106" class="spadComm" >
+<form id="formComm2-106" action="javascript:makeRequest('2-106');" >
+<input id="comm2-106" type="text" class="command" style="width: 14em;" value="[10**i for i in 2..5]" />
+</form>
+<span id="commSav2-106" class="commSav" >[10**i for i in 2..5]</span>
+<div id="mathAns2-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>100</mn><mo>,</mo><mn>1000</mn><mo>,</mo><mn>10000</mn><mo>,</mo><mn>100000</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>What should the type of <span class="teletype">[10**(i-1) for i in 2..5]</span> be?  On one hand,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math> is always an integer greater than zero as <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> ranges from <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math> to
+<math xmlns="&mathml;" mathsize="big"><mstyle><mn>5</mn></mstyle></math> and so <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>10</mn><mo>*</mo><mo>*</mo><mi>i</mi></mrow></mstyle></math> is also always a positive integer.  On the other,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math> is a very simple function of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>.  Axiom does not try to analyze
+every such function over the index's range of values to determine
+whether it is always positive or nowhere negative.  For an arbitrary
+Axiom function, this analysis is not possible.
+</p>
+
+
+<p>So, to be consistent no such analysis is done and we get this.
+</p>
+
+
+
+<div id="spadComm2-107" class="spadComm" >
+<form id="formComm2-107" action="javascript:makeRequest('2-107');" >
+<input id="comm2-107" type="text" class="command" style="width: 17em;" value="[10**(i-1) for i in 2..5]" />
+</form>
+<span id="commSav2-107" class="commSav" >[10**(i-1) for i in 2..5]</span>
+<div id="mathAns2-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>10</mn><mo>,</mo><mn>100</mn><mo>,</mo><mn>1000</mn><mo>,</mo><mn>10000</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Fraction Integer
+</div>
+
+
+
+<p>To get a list of elements of <span class="teletype">PositiveInteger</span> instead, you have
+two choices.  You can use a conversion.
+</p>
+
+
+
+
+<div id="spadComm2-108" class="spadComm" >
+<form id="formComm2-108" action="javascript:makeRequest('2-108');" >
+<input id="comm2-108" type="text" class="command" style="width: 22em;" value="[10**((i-1) :: PI) for i in 2..5]" />
+</form>
+<span id="commSav2-108" class="commSav" >[10**((i-1) :: PI) for i in 2..5]</span>
+<div id="mathAns2-108" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;function&nbsp;G82696&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Boolean&nbsp;<br />
+Compiling&nbsp;function&nbsp;G82708&nbsp;with&nbsp;type&nbsp;NonNegativeInteger&nbsp;-&gt;&nbsp;Boolean&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>10</mn><mo>,</mo><mn>100</mn><mo>,</mo><mn>1000</mn><mo>,</mo><mn>10000</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Or you can use <span class="teletype">pretend</span>.  <span class="index">pretend</span><a name="chapter-2-50"/>
+</p>
+
+
+
+<div id="spadComm2-109" class="spadComm" >
+<form id="formComm2-109" action="javascript:makeRequest('2-109');" >
+<input id="comm2-109" type="text" class="command" style="width: 26em;" value="[10**((i-1) pretend PI) for i in 2..5]" />
+</form>
+<span id="commSav2-109" class="commSav" >[10**((i-1) pretend PI) for i in 2..5]</span>
+<div id="mathAns2-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>10</mn><mo>,</mo><mn>100</mn><mo>,</mo><mn>1000</mn><mo>,</mo><mn>10000</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="teletype">pretend</span> is used to defeat the Axiom type system.
+The expression <span class="teletype">object pretend D</span> means ``make a new object
+(without copying) of type <span class="teletype">D</span> from <span class="teletype">object</span>.''  If 
+<span class="teletype">object</span> were an integer and you told Axiom to pretend it was a list,
+you would probably see a message about a fatal error being caught and
+memory possibly being damaged.  Lists do not have the same internal
+representation as integers!
+</p>
+
+
+<p>You use <span class="teletype">pretend</span> at your peril.  <span class="index">peril</span><a name="chapter-2-51"/>
+</p>
+
+
+<p>Use <math xmlns="&mathml;" mathsize="big"><mstyle><mi>pretend</mi></mstyle></math> with great care!  Axiom trusts you that the value is of
+the specified type.
+</p>
+
+
+
+
+<div id="spadComm2-110" class="spadComm" >
+<form id="formComm2-110" action="javascript:makeRequest('2-110');" >
+<input id="comm2-110" type="text" class="command" style="width: 20em;" value="(2/3) pretend Complex Integer" />
+</form>
+<span id="commSav2-110" class="commSav" >(2/3) pretend Complex Integer</span>
+<div id="mathAns2-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>+</mo><mrow><mn>3</mn><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.7.xhtml" style="margin-right: 10px;">Previous Section 2.7 Conversion</a><a href="section-2.9.xhtml" style="margin-right: 10px;">Next Section 2.9 Package Calling and Target Types</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-2.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-2.9.xhtml
new file mode 100644
index 0000000..9dd8f6a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-2.9.xhtml
@@ -0,0 +1,590 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section2.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.8.xhtml" style="margin-right: 10px;">Previous Section 2.8 Subdomains Again</a><a href="section-2.10.xhtml" style="margin-right: 10px;">Next Section 2.10 Resolving Types</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-2.9">
+<h2 class="sectiontitle">2.9  Package Calling and Target Types</h2>
+
+
+<a name="ugTypesPkgCall" class="label"/>
+
+
+<p>Axiom works hard to figure out what you mean by an expression without
+your having to qualify it with type information.  Nevertheless, there
+are times when you need to help it along by providing hints (or even
+orders!) to get Axiom to do what you want.
+</p>
+
+
+<p>We saw in <a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a>  that
+declarations using types and modes control the type of the results
+produced.  For example, we can either produce a complex object with
+polynomial real and imaginary parts or a polynomial with complex
+integer coefficients, depending on the declaration.
+</p>
+
+
+<p>Package calling is how you tell Axiom to use a particular function
+from a particular part of the library.
+</p>
+
+
+<p>Use the <span class="spadopFrom" title="Fraction">/</span> from <span class="teletype">Fraction Integer</span> to create
+a fraction of two integers.
+</p>
+
+
+
+<div id="spadComm2-111" class="spadComm" >
+<form id="formComm2-111" action="javascript:makeRequest('2-111');" >
+<input id="comm2-111" type="text" class="command" style="width: 2em;" value="2/3" />
+</form>
+<span id="commSav2-111" class="commSav" >2/3</span>
+<div id="mathAns2-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>2</mn><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>If we wanted a floating point number, we can say ``use the
+<span class="spadopFrom" title="Float">/</span> in <span class="teletype">Float</span>.''
+</p>
+
+
+
+<div id="spadComm2-112" class="spadComm" >
+<form id="formComm2-112" action="javascript:makeRequest('2-112');" >
+<input id="comm2-112" type="text" class="command" style="width: 8em;" value="(2/3) $Float" />
+</form>
+<span id="commSav2-112" class="commSav" >(2/3) $Float</span>
+<div id="mathAns2-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>6666666666</mn><mn>6666666667</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Perhaps we actually wanted a fraction of complex integers.
+</p>
+
+
+
+<div id="spadComm2-113" class="spadComm" >
+<form id="formComm2-113" action="javascript:makeRequest('2-113');" >
+<input id="comm2-113" type="text" class="command" style="width: 22em;" value="(2/3) $Fraction(Complex Integer)" />
+</form>
+<span id="commSav2-113" class="commSav" >(2/3) $Fraction(Complex Integer)</span>
+<div id="mathAns2-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>2</mn><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>In each case, AXIOM used the indicated operations, sometimes first
+needing to convert the two integers into objects of the appropriate type.
+In these examples, ``/'' is written as an infix operator.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>To use package calling with an infix operator, use the following syntax:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>(</mo><mo></mo><msub><mi>arg</mi><mn>1</mn></msub><mrow><mtext>&nbsp;op&nbsp;</mtext></mrow><msub><mi>arg</mi><mn>2</mn></msub><mo></mo><mo>)</mo><mi> $type</mi></mrow></mstyle></math>
+</p>
+
+
+
+</div>
+</div>
+
+<p> 
+</p>
+
+
+<p>We used, for example, <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mn>2</mn><mo>/</mo><mn>3</mn><mo>)</mo><mi> $</mi><mrow><mtext>Float</mtext></mrow></mrow></mstyle></math>. The expression <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>+</mo><mn>3</mn><mo>+</mo><mn>4</mn></mrow></mstyle></math>
+is equivalent to <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mn>2</mn><mo>+</mo><mn>3</mn><mo>)</mo><mo>+</mo><mn>4</mn></mrow></mstyle></math>. Therefore in the expression 
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mn>2</mn><mo>+</mo><mn>3</mn><mo>+</mo><mn>4</mn><mo>)</mo><mi> $</mi><mrow><mtext>Float</mtext></mrow></mrow></mstyle></math> the second ``+'' comes from the  Float
+domain. The first ``+'' comes from  Float because the package
+call causes AXIOM to convert <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mn>2</mn><mo>+</mo><mn>3</mn><mo>)</mo></mrow></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mn>4</mn></mstyle></math> to type
+ Float. Before the sum is converted, it is given a target type
+of  Float by AXIOM and then evaluated. The target type causes the
+``+'' from <span class="teletype">Float</span> to be used.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>For an operator written before its arguments, you must use parentheses
+around the arguments (even if there is only one), and follow the closing
+parenthesis by a `` $'' and then the type.
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>fun</mi><mo></mo><mo>(</mo><mo></mo><msub><mi>arg</mi><mn>1</mn></msub><mo>,</mo><msub><mi>arg</mi><mn>2</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>arg</mi><mi>N</mi></msub><mo></mo><mo>)</mo><mi> $type</mi></mrow></mstyle></math>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>For example, to call the ``minimum'' function from  SmallFloat on two
+integers, you could write <span style="font-weight: bold;"> min</span>(4,89) $<span class="teletype">SmallFloat</span>. Another use of
+package calling is to tell AXIOM to use a library function rather than a
+function you defined. We discuss this in 
+Section <a href="section-6.9.xhtml#ugUserUse" class="ref" >ugUserUse</a> .
+</p>
+
+
+<p>Sometimes rather than specifying where an operation comes from, you
+just want to say what type the result should be. We say that you provide a
+<span style="font-style: italic;"> target type</span> for the expression. Instead of using a `` $'', use a ``@''
+to specify the requested target type. Otherwise, the syntax is the same.
+Note that giving a target type is not the same as explicitly doing a
+conversion. The first says ``try to pick operations so that the result has
+such-and-such a type.'' The second says ``compute the result and then convert
+to an object of such-and-such a type.''
+</p>
+
+
+<p>Sometimes it makes sense, as in this expression, to say ``choose the 
+operations in this expression so that the final result is  Float.
+</p>
+
+
+
+<div id="spadComm2-114" class="spadComm" >
+<form id="formComm2-114" action="javascript:makeRequest('2-114');" >
+<input id="comm2-114" type="text" class="command" style="width: 8em;" value="(2/3)@Float" />
+</form>
+<span id="commSav2-114" class="commSav" >(2/3)@Float</span>
+<div id="mathAns2-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>6666666666</mn><mn>6666666667</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Here we used ``<span class="teletype">@</span>'' to say that the target type of the left-hand side
+was <span class="teletype">Float</span>.  In this simple case, there was no real difference
+between using ``<span class="teletype"> $</span>'' and ``<span class="teletype">@</span>''.  
+You can see the difference if you try the following.
+</p>
+
+
+<p>This says to try to choose ``<span class="teletype">+</span>'' so that the result is a string.
+Axiom cannot do this.
+</p>
+
+
+
+<div id="spadComm2-115" class="spadComm" >
+<form id="formComm2-115" action="javascript:makeRequest('2-115');" >
+<input id="comm2-115" type="text" class="command" style="width: 10em;" value="(2 + 3)@String" />
+</form>
+<span id="commSav2-115" class="commSav" >(2 + 3)@String</span>
+<div id="mathAns2-115" ></div>
+</div>
+
+
+
+
+<div class="verbatim">&nbsp;<br />
+An&nbsp;expression&nbsp;involving&nbsp;@&nbsp;String&nbsp;actually&nbsp;evaluated&nbsp;to&nbsp;one&nbsp;of&nbsp;<br />
+&nbsp;&nbsp;&nbsp;type&nbsp;PositiveInteger&nbsp;.&nbsp;Perhaps&nbsp;you&nbsp;should&nbsp;use&nbsp;::&nbsp;String&nbsp;.<br />
+</div>
+
+
+
+<p>This says to get the <span class="teletype">+</span> from <span class="teletype">String</span> and apply it to the two
+integers.  Axiom also cannot do this because there is no <span class="teletype">+</span>
+exported by <span class="teletype">String</span>.
+</p>
+
+
+
+<div id="spadComm2-116" class="spadComm" >
+<form id="formComm2-116" action="javascript:makeRequest('2-116');" >
+<input id="comm2-116" type="text" class="command" style="width: 10em;" value="(2 + 3) $String" />
+</form>
+<span id="commSav2-116" class="commSav" >(2 + 3) $String</span>
+<div id="mathAns2-116" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;The&nbsp;function&nbsp;+&nbsp;is&nbsp;not&nbsp;implemented&nbsp;in&nbsp;String&nbsp;.<br />
+</div>
+
+
+
+<p>(By the way, the operation <span class="spadfunFrom" style="font-weight: bold;">concat</span><span class="index">concat</span><a name="chapter-2-52"/><span class="index">String</span><a name="chapter-2-53"/> or juxtaposition
+is used to concatenate two strings.)
+<span class="index">String</span><a name="chapter-2-54"/>
+</p>
+
+
+<p>When we have more than one operation in an expression, the difference
+is even more evident.  The following two expressions show that Axiom
+uses the target type to create different objects.  
+The ``<span class="teletype">+</span>'', ``<span class="teletype">*</span>'' and ``<span class="teletype">**</span>'' operations are all 
+chosen so that an object of the correct final type is created.
+</p>
+
+
+<p>This says that the operations should be chosen so that the result is a
+<span class="teletype">Complex</span> object.
+</p>
+
+
+
+<div id="spadComm2-117" class="spadComm" >
+<form id="formComm2-117" action="javascript:makeRequest('2-117');" >
+<input id="comm2-117" type="text" class="command" style="width: 32em;" value="((x + y * %i)**2)@(Complex Polynomial Integer)" />
+</form>
+<span id="commSav2-117" class="commSav" >((x + y * %i)**2)@(Complex Polynomial Integer)</span>
+<div id="mathAns2-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>x</mi><mo></mo><mi>y</mi><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Polynomial Integer
+</div>
+
+
+
+<p>This says that the operations should be chosen so that the result is a
+<span class="teletype">Polynomial</span> object.
+</p>
+
+
+
+<div id="spadComm2-118" class="spadComm" >
+<form id="formComm2-118" action="javascript:makeRequest('2-118');" >
+<input id="comm2-118" type="text" class="command" style="width: 32em;" value="((x + y * %i)**2)@(Polynomial Complex Integer)" />
+</form>
+<span id="commSav2-118" class="commSav" >((x + y * %i)**2)@(Polynomial Complex Integer)</span>
+<div id="mathAns2-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>i</mi><mo></mo><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Complex Integer
+</div>
+
+
+
+<p>What do you think might happen if we left off all target type and
+package call information in this last example?
+</p>
+
+
+
+<div id="spadComm2-119" class="spadComm" >
+<form id="formComm2-119" action="javascript:makeRequest('2-119');" >
+<input id="comm2-119" type="text" class="command" style="width: 11em;" value="(x + y * %i)**2" />
+</form>
+<span id="commSav2-119" class="commSav" >(x + y * %i)**2</span>
+<div id="mathAns2-119" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>i</mi><mo></mo><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Complex Integer
+</div>
+
+
+
+<p>We can convert it to <span class="teletype">Complex</span> as an afterthought.  But this is
+more work than just saying making what we want in the first place.
+</p>
+
+
+
+<div id="spadComm2-120" class="spadComm" >
+<form id="formComm2-120" action="javascript:makeRequest('2-120');" >
+<input id="comm2-120" type="text" class="command" style="width: 10em;" value="% :: Complex ?" />
+</form>
+<span id="commSav2-120" class="commSav" >% :: Complex ?</span>
+<div id="mathAns2-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>x</mi><mo></mo><mi>y</mi><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Polynomial Integer
+</div>
+
+
+
+<p>Finally, another use of package calling is to qualify fully an
+operation that is passed as an argument to a function.
+</p>
+
+
+<p>Start with a small matrix of integers.
+</p>
+
+
+
+<div id="spadComm2-121" class="spadComm" >
+<form id="formComm2-121" action="javascript:makeRequest('2-121');" >
+<input id="comm2-121" type="text" class="command" style="width: 19em;" value="h := matrix [ [8,6],[-4,9] ]" />
+</form>
+<span id="commSav2-121" class="commSav" >h := matrix [ [8,6],[-4,9] ]</span>
+<div id="mathAns2-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>8</mn></mtd><mtd><mn>6</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>4</mn></mtd><mtd><mn>9</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>We want to produce a new matrix that has for entries the
+multiplicative inverses of the entries of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>h</mi></mstyle></math>.  One way to do this is
+by calling <span class="spadfunFrom" style="font-weight: bold;">map</span><span class="index">map</span><a name="chapter-2-55"/><span class="index">MatrixCategoryFunctions2</span><a name="chapter-2-56"/> with the
+<span class="spadfunFrom" style="font-weight: bold;">inv</span><span class="index">inv</span><a name="chapter-2-57"/><span class="index">Fraction</span><a name="chapter-2-58"/> function from <span class="teletype">Fraction (Integer)</span>.
+</p>
+
+
+
+
+<div id="spadComm2-122" class="spadComm" >
+<form id="formComm2-122" action="javascript:makeRequest('2-122');" >
+<input id="comm2-122" type="text" class="command" style="width: 20em;" value="map(inv $Fraction(Integer),h)" />
+</form>
+<span id="commSav2-122" class="commSav" >map(inv $Fraction(Integer),h)</span>
+<div id="mathAns2-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Integer
+</div>
+
+
+
+<p>We could have been a bit less verbose and used abbreviations.
+</p>
+
+
+
+<div id="spadComm2-123" class="spadComm" >
+<form id="formComm2-123" action="javascript:makeRequest('2-123');" >
+<input id="comm2-123" type="text" class="command" style="width: 14em;" value="map(inv $FRAC(INT),h)" />
+</form>
+<span id="commSav2-123" class="commSav" >map(inv $FRAC(INT),h)</span>
+<div id="mathAns2-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Integer
+</div>
+
+
+
+<p>As it turns out, Axiom is smart enough to know what we mean anyway.
+We can just say this.
+</p>
+
+
+
+<div id="spadComm2-124" class="spadComm" >
+<form id="formComm2-124" action="javascript:makeRequest('2-124');" >
+<input id="comm2-124" type="text" class="command" style="width: 7em;" value="map(inv,h)" />
+</form>
+<span id="commSav2-124" class="commSav" >map(inv,h)</span>
+<div id="mathAns2-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-2.8.xhtml" style="margin-right: 10px;">Previous Section 2.8 Subdomains Again</a><a href="section-2.10.xhtml" style="margin-right: 10px;">Next Section 2.10 Resolving Types</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.0.xhtml
new file mode 100644
index 0000000..3d4faec
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.0.xhtml
@@ -0,0 +1,50 @@
+<?xml version="1.0" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-19.1.xhtml" style="margin-right: 10px;">Previous Section 19.1  Axiom Packages</a><a href="section-21.1.xhtml" style="margin-right: 10px;">Next Section 21.1 images1.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.0">
+<h2 class="sectiontitle">21.0 Programs for AXIOM Images</h2>
+<a name="ugAppGraphics" class="label"/>
+
+<p>This appendix contains the Axiom programs used to generate
+the images in the gallery color insert of this book.
+All these input files are included
+with the Axiom system.
+To produce the images
+on page 6 of the gallery insert, for example, issue the command:
+</p>
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;images6<br />
+</div>
+
+
+
+<p>These images were produced on an IBM RS/6000 model 530 with a
+standard color graphics adapter.  The smooth shaded images
+were made from X Window System screen dumps.
+The remaining images were produced with Axiom-generated
+PostScript output.  The images were reproduced from slides made on an Agfa
+ChromaScript PostScript interpreter with a Matrix Instruments QCR camera.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-19.1.xhtml" style="margin-right: 10px;">Previous Section 19.1  Axiom Packages</a><a href="section-21.1.xhtml" style="margin-right: 10px;">Next Section 21.1 images1.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.1.xhtml
new file mode 100644
index 0000000..9a0c10b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.1.xhtml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.0.xhtml" style="margin-right: 10px;">Previous Section 21.0 Programs for AXIOM Images</a><a href="section-21.2.xhtml" style="margin-right: 10px;">Next Section 21.2 images2.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.1">
+<h2 class="sectiontitle">21.1  images1.input</h2>
+
+
+<a name="ugFimagesOne" class="label"/>
+
+
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;tknot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Read&nbsp;torus&nbsp;knot&nbsp;program<br />
+<br />
+torusKnot(15,17,&nbsp;0.1,&nbsp;6,&nbsp;700)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;(15,17)&nbsp;torus&nbsp;knot<br />
+</div>
+
+
+<p><span class="index">torus knot</span><a name="chapter-21-0"/>
+</p>
+
+
+<p>
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.0.xhtml" style="margin-right: 10px;">Previous Section 21.0 Programs for AXIOM Images</a><a href="section-21.2.xhtml" style="margin-right: 10px;">Next Section 21.2 images2.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.10.xhtml
new file mode 100644
index 0000000..8097434
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.10.xhtml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.9.xhtml" style="margin-right: 10px;">Previous Section 21.9 tknot.input</a><a href="section-21.11.xhtml" style="margin-right: 10px;">Next Section 21.11 dhtri.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.10">
+<h2 class="sectiontitle">21.10  ntube.input</h2>
+
+
+<a name="ugFntube" class="label"/>
+
+
+<p>The functions in this file create generalized tubes (also known as generalized
+cylinders).
+These functions draw a 2-d curve in the normal
+planes around a 3-d curve.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+R3&nbsp;:=&nbsp;Point&nbsp;DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points&nbsp;in&nbsp;3-Space<br />
+R2&nbsp;:=&nbsp;Point&nbsp;DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points&nbsp;in&nbsp;2-Space<br />
+S&nbsp;:=&nbsp;Segment&nbsp;Float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;ranges<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Introduce&nbsp;types&nbsp;for&nbsp;functions&nbsp;for:<br />
+ThreeCurve&nbsp;:=&nbsp;DFLOAT&nbsp;-&gt;&nbsp;R3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--the&nbsp;space&nbsp;curve&nbsp;function<br />
+TwoCurve&nbsp;:=&nbsp;(DFLOAT,&nbsp;DFLOAT)&nbsp;-&gt;&nbsp;R2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--the&nbsp;plane&nbsp;curve&nbsp;function<br />
+Surface&nbsp;:=&nbsp;(DFLOAT,&nbsp;DFLOAT)&nbsp;-&gt;&nbsp;R3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--the&nbsp;surface&nbsp;function<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Frenet&nbsp;frames&nbsp;define&nbsp;a<br />
+FrenetFrame&nbsp;:=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coordinate&nbsp;system&nbsp;around&nbsp;a<br />
+&nbsp;&nbsp;&nbsp;Record(value:R3,tangent:R3,normal:R3,binormal:R3)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point&nbsp;on&nbsp;a&nbsp;space&nbsp;curve<br />
+frame:&nbsp;FrenetFrame&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;current&nbsp;Frenet&nbsp;frame<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;a&nbsp;point&nbsp;on&nbsp;a&nbsp;curve<br />
+</div>
+
+
+
+<p><span style="font-weight: bold;"> ntubeDraw</span><span class="italic">(spaceCurve, planeCurve,</span>
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>u</mi><mn>0</mn></msub><mo>.</mo><mo>.</mo><msub><mi>u</mi><mn>1</mn></msub><mo>,</mo></mrow></mstyle></math>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>t</mi><mn>0</mn></msub><mo>.</mo><mo>.</mo><msub><mi>t</mi><mn>1</mn></msub><mo>)</mo></mrow></mstyle></math>
+draws <span class="italic">planeCurve</span> in the normal planes of <span class="italic">spaceCurve.</span>
+The parameter  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>u</mi><mn>0</mn></msub><mo>.</mo><mo>.</mo><msub><mi>u</mi><mn>1</mn></msub></mrow></mstyle></math> specifies
+the parameter range for <span class="italic">planeCurve</span>
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>t</mi><mn>0</mn></msub><mo>.</mo><mo>.</mo><msub><mi>t</mi><mn>1</mn></msub></mrow></mstyle></math> specifies the parameter range for <span class="italic">spaceCurve</span>.
+Additionally, the plane curve function takes
+a second parameter: the current parameter of <span class="italic">spaceCurve</span>.
+This allows the plane curve to change shape
+as it goes around the space curve.
+See <a href="section-21.4.xhtml#ugFimagesFive" class="ref" >ugFimagesFive</a> for an example of this.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+ntubeDraw:&nbsp;(ThreeCurve,TwoCurve,S,S)&nbsp;-&gt;&nbsp;VIEW3D<br />
+ntubeDraw(spaceCurve,planeCurve,uRange,tRange)&nbsp;==<br />
+&nbsp;&nbsp;ntubeDrawOpt(spaceCurve,&nbsp;planeCurve,&nbsp;uRange,&nbsp;_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tRange,&nbsp;[]$List&nbsp;DROPT)<br />
+<br />
+ntubeDrawOpt:&nbsp;(ThreeCurve,TwoCurve,S,S,List&nbsp;DROPT)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;VIEW3D<br />
+ntubeDrawOpt(spaceCurve,planeCurve,uRange,tRange,l)&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;function&nbsp;is&nbsp;similar<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;ntubeDraw,&nbsp;but&nbsp;takes<br />
+&nbsp;&nbsp;delT:DFLOAT&nbsp;:=&nbsp;(hi(tRange)&nbsp;-&nbsp;lo(tRange))/10000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optional&nbsp;parameters&nbsp;that&nbsp;it<br />
+&nbsp;&nbsp;oldT:DFLOAT&nbsp;:=&nbsp;lo(tRange)&nbsp;-&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passes&nbsp;to&nbsp;the&nbsp;draw&nbsp;command<br />
+&nbsp;&nbsp;fun&nbsp;:=&nbsp;ngeneralTube(spaceCurve,planeCurve,delT,oldT)<br />
+&nbsp;&nbsp;draw(fun,&nbsp;uRange,&nbsp;tRange,&nbsp;l)<br />
+<br />
+</div>
+
+
+
+<p><span style="font-weight: bold;"> nfrenetFrame</span><span class="italic">(c, t, delT)</span>
+numerically computes the Frenet frame
+about the curve <span class="italic">c</span> at <span class="italic">t</span>.
+Parameter <span class="italic">delT</span> is a small number used to
+compute derivatives.
+</p>
+
+
+
+<div class="verbatim"><br />
+nfrenetFrame(c,&nbsp;t,&nbsp;delT)&nbsp;==<br />
+&nbsp;&nbsp;f0&nbsp;:=&nbsp;c(t)<br />
+&nbsp;&nbsp;f1&nbsp;:=&nbsp;c(t+delT)<br />
+&nbsp;&nbsp;t0&nbsp;:=&nbsp;f1&nbsp;-&nbsp;f0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;tangent<br />
+&nbsp;&nbsp;n0&nbsp;:=&nbsp;f1&nbsp;+&nbsp;f0<br />
+&nbsp;&nbsp;b&nbsp;:=&nbsp;cross(t0,&nbsp;n0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;binormal<br />
+&nbsp;&nbsp;n&nbsp;:=&nbsp;cross(b,t0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;normal<br />
+&nbsp;&nbsp;ln&nbsp;:=&nbsp;length&nbsp;n<br />
+&nbsp;&nbsp;lb&nbsp;:=&nbsp;length&nbsp;b<br />
+&nbsp;&nbsp;ln&nbsp;=&nbsp;0&nbsp;or&nbsp;lb&nbsp;=&nbsp;0&nbsp;=&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error&nbsp;"Frenet&nbsp;Frame&nbsp;not&nbsp;well&nbsp;defined"<br />
+&nbsp;&nbsp;n&nbsp;:=&nbsp;(1/ln)*n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make&nbsp;into&nbsp;unit&nbsp;length&nbsp;vectors<br />
+&nbsp;&nbsp;b&nbsp;:=&nbsp;(1/lb)*b<br />
+&nbsp;&nbsp;[f0,&nbsp;t0,&nbsp;n,&nbsp;b]$FrenetFrame<br />
+</div>
+
+
+
+<p><span style="font-weight: bold;"> ngeneralTube</span><span class="italic">(spaceCurve, planeCurve,</span><span class="italic"> delT, oltT)</span>
+creates a function that can be passed to the system axiomFun{draw} command.
+The function is a parameterized surface for the general tube
+around <span class="italic">spaceCurve</span>.  <span class="italic">delT</span> is a small number used to compute
+derivatives. <span class="italic">oldT</span> is used to hold the current value of the
+<span class="italic">t</span> parameter for <span class="italic">spaceCurve.</span>  This is an efficiency measure
+to ensure that frames are only computed once for each value of <span class="italic">t</span>.
+</p>
+
+
+
+<div class="verbatim"><br />
+ngeneralTube:&nbsp;(ThreeCurve,&nbsp;TwoCurve,&nbsp;DFLOAT,&nbsp;DFLOAT)&nbsp;-&gt;&nbsp;Surface<br />
+ngeneralTube(spaceCurve,&nbsp;planeCurve,&nbsp;delT,&nbsp;oldT)&nbsp;==<br />
+&nbsp;&nbsp;free&nbsp;frame&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicate&nbsp;that&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>frame</mi></mstyle></math>&nbsp;is&nbsp;global<br />
+&nbsp;&nbsp;(v:DFLOAT,&nbsp;t:&nbsp;DFLOAT):&nbsp;R3&nbsp;+-&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(t&nbsp;$\sim$=&nbsp;oldT)&nbsp;then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;not&nbsp;already&nbsp;computed<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame&nbsp;:=&nbsp;nfrenetFrame(spaceCurve,&nbsp;t,&nbsp;delT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compute&nbsp;new&nbsp;frame<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldT&nbsp;:=&nbsp;t<br />
+&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;:=&nbsp;planeCurve(v,&nbsp;t)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;frame.value&nbsp;+&nbsp;p.1*frame.normal&nbsp;+&nbsp;p.2*frame.binormal<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Project&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>&nbsp;into&nbsp;the&nbsp;normal&nbsp;plane<br />
+</div>
+
+
+
+<p><!--\input{gallery/dhtri.htex}-->
+</p>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.9.xhtml" style="margin-right: 10px;">Previous Section 21.9 tknot.input</a><a href="section-21.11.xhtml" style="margin-right: 10px;">Next Section 21.11 dhtri.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.11.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.11.xhtml
new file mode 100644
index 0000000..527ccab
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.11.xhtml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.11</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.10.xhtml" style="margin-right: 10px;">Previous Section 21.10 ntube.input</a><a href="section-21.12.xhtml" style="margin-right: 10px;">Next Section 21.12 tetra.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.11">
+<h2 class="sectiontitle">21.11  dhtri.input</h2>
+
+
+<a name="ugFdhtri" class="label"/>
+
+
+<p>Create affine transformations (DH matrices) that transform
+a given triangle into another.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+tri2tri:&nbsp;(List&nbsp;Point&nbsp;DFLOAT,&nbsp;List&nbsp;Point&nbsp;DFLOAT)&nbsp;-&gt;&nbsp;DHMATRIX(DFLOAT)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute&nbsp;a&nbsp;DHMATRIX&nbsp;that<br />
+tri2tri(t1,&nbsp;t2)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transforms&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>t1</mi></mstyle></math>&nbsp;to&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>t2</mi><mo>,</mo></mrow></mstyle></math>&nbsp;where<br />
+&nbsp;&nbsp;n1&nbsp;:=&nbsp;triangleNormal(t1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>t1</mi></mstyle></math>&nbsp;and&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>t2</mi></mstyle></math>&nbsp;are&nbsp;the&nbsp;vertices<br />
+&nbsp;&nbsp;n2&nbsp;:=&nbsp;triangleNormal(t2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;two&nbsp;triangles&nbsp;in&nbsp;3-space<br />
+&nbsp;&nbsp;tet2tet(concat(t1,&nbsp;n1),&nbsp;concat(t2,&nbsp;n2))<br />
+<br />
+tet2tet:&nbsp;(List&nbsp;Point&nbsp;DFLOAT,&nbsp;List&nbsp;Point&nbsp;DFLOAT)&nbsp;-&gt;&nbsp;DHMATRIX(DFLOAT)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute&nbsp;a&nbsp;DHMATRIX&nbsp;that<br />
+tet2tet(t1,&nbsp;t2)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transforms&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>t1</mi></mstyle></math>&nbsp;to&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>t2</mi><mo>,</mo></mrow></mstyle></math><br />
+&nbsp;&nbsp;m1&nbsp;:=&nbsp;makeColumnMatrix&nbsp;t1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>t1</mi></mstyle></math>&nbsp;and&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>t2</mi></mstyle></math>&nbsp;are&nbsp;the<br />
+&nbsp;&nbsp;m2&nbsp;:=&nbsp;makeColumnMatrix&nbsp;t2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vertices&nbsp;of&nbsp;two&nbsp;tetrahedrons<br />
+&nbsp;&nbsp;m2&nbsp;*&nbsp;inverse(m1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;3-space<br />
+<br />
+makeColumnMatrix(t)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put&nbsp;the&nbsp;vertices&nbsp;of&nbsp;a&nbsp;tetra-<br />
+&nbsp;&nbsp;m&nbsp;:=&nbsp;new(4,4,0)$DHMATRIX(DFLOAT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hedron&nbsp;into&nbsp;matrix&nbsp;form<br />
+&nbsp;&nbsp;for&nbsp;x&nbsp;in&nbsp;t&nbsp;for&nbsp;i&nbsp;in&nbsp;1..repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;1..3&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m(j,i)&nbsp;:=&nbsp;x.j<br />
+&nbsp;&nbsp;&nbsp;&nbsp;m(4,i)&nbsp;:=&nbsp;1<br />
+&nbsp;&nbsp;m<br />
+<br />
+triangleNormal(t)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute&nbsp;a&nbsp;vector&nbsp;normal&nbsp;to<br />
+&nbsp;&nbsp;a&nbsp;:=&nbsp;triangleArea&nbsp;t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;given&nbsp;triangle,&nbsp;whose<br />
+&nbsp;&nbsp;p1&nbsp;:=&nbsp;t.2&nbsp;-&nbsp;t.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;is&nbsp;the&nbsp;square&nbsp;root<br />
+&nbsp;&nbsp;p2&nbsp;:=&nbsp;t.3&nbsp;-&nbsp;t.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;area&nbsp;of&nbsp;the&nbsp;triangle<br />
+&nbsp;&nbsp;c&nbsp;:=&nbsp;cross(p1,&nbsp;p2)<br />
+&nbsp;&nbsp;len&nbsp;:=&nbsp;length(c)<br />
+&nbsp;&nbsp;len&nbsp;=&nbsp;0&nbsp;=&gt;&nbsp;error&nbsp;"degenerate&nbsp;triangle!"<br />
+&nbsp;&nbsp;c&nbsp;:=&nbsp;(1/len)*c<br />
+&nbsp;&nbsp;t.1&nbsp;+&nbsp;sqrt(a)&nbsp;*&nbsp;c<br />
+<br />
+triangleArea&nbsp;t&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute&nbsp;the&nbsp;area&nbsp;of&nbsp;a<br />
+&nbsp;&nbsp;a&nbsp;:=&nbsp;length(t.2&nbsp;-&nbsp;t.1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;triangle&nbsp;using&nbsp;Heron's<br />
+&nbsp;&nbsp;b&nbsp;:=&nbsp;length(t.3&nbsp;-&nbsp;t.2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formula<br />
+&nbsp;&nbsp;c&nbsp;:=&nbsp;length(t.1&nbsp;-&nbsp;t.3)<br />
+&nbsp;&nbsp;s&nbsp;:=&nbsp;(a+b+c)/2<br />
+&nbsp;&nbsp;sqrt(s*(s-a)*(s-b)*(s-c))<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.10.xhtml" style="margin-right: 10px;">Previous Section 21.10 ntube.input</a><a href="section-21.12.xhtml" style="margin-right: 10px;">Next Section 21.12 tetra.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.12.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.12.xhtml
new file mode 100644
index 0000000..0271aed
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.12.xhtml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.11.xhtml" style="margin-right: 10px;">Previous Section 21.11 dhtri.input</a><a href="section-21.13.xhtml" style="margin-right: 10px;">Next Section 21.13 antoine.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.12">
+<h2 class="sectiontitle">21.12  tetra.input</h2>
+
+
+<a name="ugFtetra" class="label"/>
+
+
+<p><!--\input{gallery/tetra.htex}
+\outdent{Sierpinsky's Tetrahedron}-->
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;expose&nbsp;add&nbsp;con&nbsp;DenavitHartenbergMatrix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bring&nbsp;DH&nbsp;matrices&nbsp;into&nbsp;the<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;environment<br />
+x1:DFLOAT&nbsp;:=&nbsp;sqrt(2.0@DFLOAT/3.0@DFLOAT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;up&nbsp;the&nbsp;coordinates&nbsp;of&nbsp;the<br />
+x2:DFLOAT&nbsp;:=&nbsp;sqrt(3.0@DFLOAT)/6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;corners&nbsp;of&nbsp;the&nbsp;tetrahedron.<br />
+<br />
+p1&nbsp;:=&nbsp;point&nbsp;[-0.5@DFLOAT,&nbsp;-x2,&nbsp;0.0@DFLOAT]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Some&nbsp;needed&nbsp;points<br />
+p2&nbsp;:=&nbsp;point&nbsp;[0.5@DFLOAT,&nbsp;-x2,&nbsp;0.0@DFLOAT]<br />
+p3&nbsp;:=&nbsp;point&nbsp;[0.0@DFLOAT,&nbsp;2*x2,&nbsp;0.0@DFLOAT]<br />
+p4&nbsp;:=&nbsp;point&nbsp;[0.0@DFLOAT,&nbsp;0.0@DFLOAT,&nbsp;x1]<br />
+<br />
+baseTriangle&nbsp;&nbsp;:=&nbsp;[p2,&nbsp;p1,&nbsp;p3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;base&nbsp;of&nbsp;the&nbsp;tetrahedron<br />
+<br />
+mt&nbsp;&nbsp;:=&nbsp;[0.5@DFLOAT*(p2+p1),&nbsp;0.5@DFLOAT*(p1+p3),&nbsp;0.5@DFLOAT*(p3+p2)]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;middle&nbsp;triangle&nbsp;inscribed<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;base&nbsp;of&nbsp;the&nbsp;tetrahedron<br />
+bt1&nbsp;:=&nbsp;[mt.1,&nbsp;p1,&nbsp;mt.2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;bases&nbsp;of&nbsp;the&nbsp;triangles&nbsp;of<br />
+bt2&nbsp;:=&nbsp;[p2,&nbsp;mt.1,&nbsp;mt.3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;subdivided&nbsp;tetrahedron<br />
+bt3&nbsp;:=&nbsp;[mt.2,&nbsp;p3,&nbsp;mt.3]<br />
+bt4&nbsp;:=&nbsp;[0.5@DFLOAT*(p2+p4),&nbsp;0.5@DFLOAT*(p1+p4),&nbsp;0.5@DFLOAT*(p3+p4)]<br />
+<br />
+tt1&nbsp;:=&nbsp;tri2tri(baseTriangle,&nbsp;bt1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;the&nbsp;transformations<br />
+tt2&nbsp;:=&nbsp;tri2tri(baseTriangle,&nbsp;bt2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that&nbsp;bring&nbsp;the&nbsp;base&nbsp;of&nbsp;the<br />
+tt3&nbsp;:=&nbsp;tri2tri(baseTriangle,&nbsp;bt3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tetrahedron&nbsp;to&nbsp;the&nbsp;bases&nbsp;of<br />
+tt4&nbsp;:=&nbsp;tri2tri(baseTriangle,&nbsp;bt4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;subdivided&nbsp;tetrahedron<br />
+<br />
+drawPyramid(n)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;a&nbsp;Sierpinsky&nbsp;tetrahedron<br />
+&nbsp;&nbsp;s&nbsp;:=&nbsp;createThreeSpace()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>&nbsp;levels&nbsp;of&nbsp;recursive<br />
+&nbsp;&nbsp;dh&nbsp;:=&nbsp;rotatex(0.0@DFLOAT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subdivision<br />
+&nbsp;&nbsp;drawPyramidInner(s,&nbsp;n,&nbsp;dh)<br />
+&nbsp;&nbsp;makeViewport3D(s,&nbsp;"Sierpinsky&nbsp;Tetrahedron")<br />
+<br />
+drawPyramidInner(s,&nbsp;n,&nbsp;dh)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Recursively&nbsp;draw&nbsp;a&nbsp;Sierpinsky<br />
+&nbsp;&nbsp;n&nbsp;=&nbsp;0&nbsp;=&gt;&nbsp;makeTetrahedron(s,&nbsp;dh,&nbsp;n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tetrahedron<br />
+&nbsp;&nbsp;drawPyramidInner(s,&nbsp;n-1,&nbsp;dh&nbsp;*&nbsp;tt1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;4&nbsp;recursive&nbsp;pyramids<br />
+&nbsp;&nbsp;drawPyramidInner(s,&nbsp;n-1,&nbsp;dh&nbsp;*&nbsp;tt2)<br />
+&nbsp;&nbsp;drawPyramidInner(s,&nbsp;n-1,&nbsp;dh&nbsp;*&nbsp;tt3)<br />
+&nbsp;&nbsp;drawPyramidInner(s,&nbsp;n-1,&nbsp;dh&nbsp;*&nbsp;tt4)<br />
+<br />
+makeTetrahedron(sp,&nbsp;dh,&nbsp;color)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;a&nbsp;tetrahedron&nbsp;into&nbsp;the<br />
+&nbsp;&nbsp;w1&nbsp;:=&nbsp;dh*p1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;given&nbsp;space&nbsp;with&nbsp;the&nbsp;given<br />
+&nbsp;&nbsp;w2&nbsp;:=&nbsp;dh*p2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color,&nbsp;transforming&nbsp;it&nbsp;by<br />
+&nbsp;&nbsp;w3&nbsp;:=&nbsp;dh*p3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;given&nbsp;DH&nbsp;matrix<br />
+&nbsp;&nbsp;w4&nbsp;:=&nbsp;dh*p4<br />
+&nbsp;&nbsp;polygon(sp,&nbsp;[w1,&nbsp;w2,&nbsp;w4])<br />
+&nbsp;&nbsp;polygon(sp,&nbsp;[w1,&nbsp;w3,&nbsp;w4])<br />
+&nbsp;&nbsp;polygon(sp,&nbsp;[w2,&nbsp;w3,&nbsp;w4])<br />
+&nbsp;&nbsp;void()<br />
+</div>
+
+
+<p><span class="index">Sierpinsky's Tetrahedron</span><a name="chapter-21-12"/>
+</p>
+
+
+
+<p><!--\input{gallery/antoine.htex}-->
+</p>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.11.xhtml" style="margin-right: 10px;">Previous Section 21.11 dhtri.input</a><a href="section-21.13.xhtml" style="margin-right: 10px;">Next Section 21.13 antoine.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.13.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.13.xhtml
new file mode 100644
index 0000000..aa7424b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.13.xhtml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.13</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.12.xhtml" style="margin-right: 10px;">Previous Section 21.12 tetra.input</a><a href="section-21.14.xhtml" style="margin-right: 10px;">Next Section 21.14 scherk.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.13">
+<h2 class="sectiontitle">21.13  antoine.input</h2>
+
+
+<a name="ugFantoine" class="label"/>
+
+
+<p>Draw Antoine's Necklace.
+<span class="index">Antoine's Necklace</span><a name="chapter-21-13"/>
+Thank you to Matthew Grayson at IBM's T.J Watson Research Center for the idea.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;expose&nbsp;add&nbsp;con&nbsp;DenavitHartenbergMatrix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bring&nbsp;DH&nbsp;matrices&nbsp;into<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;environment<br />
+torusRot:&nbsp;DHMATRIX(DFLOAT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;&nbsp;transformation&nbsp;for<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drawing&nbsp;a&nbsp;sub&nbsp;ring<br />
+<br />
+drawRings(n)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;Antoine's&nbsp;Necklace&nbsp;with&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math><br />
+&nbsp;&nbsp;s&nbsp;:=&nbsp;createThreeSpace()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;levels&nbsp;of&nbsp;recursive&nbsp;subdivision<br />
+&nbsp;&nbsp;dh:DHMATRIX(DFLOAT)&nbsp;:=&nbsp;identity()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;number&nbsp;of&nbsp;subrings&nbsp;is&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>10</mn><mi>n</mi></msup></mrow></mstyle></math><br />
+&nbsp;&nbsp;drawRingsInner(s,&nbsp;n,&nbsp;dh)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;the&nbsp;real&nbsp;work<br />
+&nbsp;&nbsp;makeViewport3D(s,&nbsp;"Antoine's&nbsp;Necklace")<br />
+<br />
+</div>
+
+
+
+<p>In order to draw Antoine rings, we take one ring, scale it down to
+a smaller size, rotate it around its central axis, translate it
+to the edge of the larger ring and rotate it around the edge to
+a point corresponding to its count (there are 10 positions around
+the edge of the larger ring). For each of these new rings we
+recursively perform the operations, each ring becoming 10 smaller
+rings. Notice how the <span style="font-weight: bold;"> DHMATRIX</span> operations are used to build up
+the proper matrix composing all these transformations.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+drawRingsInner(s,&nbsp;n,&nbsp;dh)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Recursively&nbsp;draw&nbsp;Antoine's<br />
+&nbsp;&nbsp;n&nbsp;=&nbsp;0&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Necklace<br />
+&nbsp;&nbsp;&nbsp;&nbsp;drawRing(s,&nbsp;dh)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;void()<br />
+&nbsp;&nbsp;t&nbsp;:=&nbsp;0.0@DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Angle&nbsp;around&nbsp;ring<br />
+&nbsp;&nbsp;p&nbsp;:=&nbsp;0.0@DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Angle&nbsp;of&nbsp;subring&nbsp;from&nbsp;plane<br />
+&nbsp;&nbsp;tr&nbsp;:=&nbsp;1.0@DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Amount&nbsp;to&nbsp;translate&nbsp;subring<br />
+&nbsp;&nbsp;inc&nbsp;:=&nbsp;0.1@DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;translation&nbsp;increment<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;1..10&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subdivide&nbsp;into&nbsp;10&nbsp;linked&nbsp;rings<br />
+&nbsp;&nbsp;&nbsp;&nbsp;tr&nbsp;:=&nbsp;tr&nbsp;+&nbsp;inc<br />
+&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;:=&nbsp;-inc<br />
+&nbsp;&nbsp;&nbsp;&nbsp;dh'&nbsp;:=&nbsp;dh*rotatez(t)*translate(tr,0.0@DFLOAT,0.0@DFLOAT)*<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transform&nbsp;ring&nbsp;in&nbsp;center<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;a&nbsp;link<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rotatey(p)*scale(0.35@DFLOAT,&nbsp;0.48@DFLOAT,&nbsp;0.4@DFLOAT)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;drawRingsInner(s,&nbsp;n-1,&nbsp;dh')<br />
+&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;:=&nbsp;t&nbsp;+&nbsp;36.0@DFLOAT<br />
+&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;:=&nbsp;p&nbsp;+&nbsp;90.0@DFLOAT<br />
+&nbsp;&nbsp;void()<br />
+<br />
+drawRing(s,&nbsp;dh)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;a&nbsp;single&nbsp;ring&nbsp;into<br />
+&nbsp;&nbsp;free&nbsp;torusRot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;given&nbsp;subspace,<br />
+&nbsp;&nbsp;torusRot&nbsp;:=&nbsp;dh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transformed&nbsp;by&nbsp;the&nbsp;given<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DHMATRIX<br />
+&nbsp;&nbsp;makeObject(torus,&nbsp;0..2*%pi,&nbsp;0..2*%pi,&nbsp;var1Steps&nbsp;==&nbsp;6,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;space&nbsp;==&nbsp;s,&nbsp;var2Steps&nbsp;==&nbsp;15)<br />
+<br />
+torus(u&nbsp;,v)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Parameterization&nbsp;of&nbsp;a&nbsp;torus,<br />
+&nbsp;&nbsp;cu&nbsp;:=&nbsp;cos(u)/6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transformed&nbsp;by&nbsp;the<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DHMATRIX&nbsp;in&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>torusRot</mi></mstyle></math>.<br />
+&nbsp;&nbsp;torusRot*point&nbsp;[(1+cu)*cos(v),(1+cu)*sin(v),(sin&nbsp;u)/6]<br />
+</div>
+
+
+
+<p><!--\input{gallery/scherk.htex}-->
+</p>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.12.xhtml" style="margin-right: 10px;">Previous Section 21.12 tetra.input</a><a href="section-21.14.xhtml" style="margin-right: 10px;">Next Section 21.14 scherk.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.14.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.14.xhtml
new file mode 100644
index 0000000..f2b15c7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.14.xhtml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.14</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.13.xhtml" style="margin-right: 10px;">Previous Section 21.13 antoine.input</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.14">
+<h2 class="sectiontitle">21.14  scherk.input</h2>
+
+
+<a name="ugFscherk" class="label"/>
+
+
+
+<p>Scherk's minimal surface, defined by:
+<span class="index">Scherk's minimal surface</span><a name="chapter-21-14"/>
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>e</mi><mi>z</mi></msup><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo><mo>=</mo><mo>cos</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>.
+See: <span class="italic">A Comprehensive Introduction to Differential Geometry,</span> Vol. 3,
+by Michael Spivak, Publish Or Perish, Berkeley, 1979, pp. 249-252.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+(xOffset,&nbsp;yOffset):DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Offsets&nbsp;for&nbsp;a&nbsp;single&nbsp;piece<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;Scherk's&nbsp;minimal&nbsp;surface<br />
+<br />
+drawScherk(m,n)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;Scherk's&nbsp;minimal&nbsp;surface<br />
+&nbsp;&nbsp;free&nbsp;xOffset,&nbsp;yOffset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;an&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math>&nbsp;by&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>&nbsp;patch<br />
+&nbsp;&nbsp;space&nbsp;:=&nbsp;createThreeSpace()<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;0..m-1&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;xOffset&nbsp;:=&nbsp;i*%pi<br />
+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;0&nbsp;..&nbsp;n-1&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rem(i+j,&nbsp;2)&nbsp;=&nbsp;0&nbsp;=&gt;&nbsp;'iter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;only&nbsp;odd&nbsp;patches<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yOffset&nbsp;:=&nbsp;j*%pi<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drawOneScherk(space)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;a&nbsp;patch<br />
+&nbsp;&nbsp;makeViewport3D(space,&nbsp;"Scherk's&nbsp;Minimal&nbsp;Surface")<br />
+<br />
+scherk1(u,v)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;first&nbsp;patch&nbsp;that&nbsp;makes<br />
+&nbsp;&nbsp;x&nbsp;:=&nbsp;cos(u)/exp(v)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;up&nbsp;a&nbsp;single&nbsp;piece&nbsp;of<br />
+&nbsp;&nbsp;point&nbsp;[xOffset&nbsp;+&nbsp;acos(x),&nbsp;yOffset&nbsp;+&nbsp;u,&nbsp;v,&nbsp;abs(v)]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scherk's&nbsp;minimal&nbsp;surface<br />
+<br />
+scherk2(u,v)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;second&nbsp;patch<br />
+&nbsp;&nbsp;x&nbsp;:=&nbsp;cos(u)/exp(v)<br />
+&nbsp;&nbsp;point&nbsp;[xOffset&nbsp;-&nbsp;acos(x),&nbsp;yOffset&nbsp;+&nbsp;u,&nbsp;v,&nbsp;abs(v)]<br />
+<br />
+scherk3(u,v)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;third&nbsp;patch<br />
+&nbsp;&nbsp;x&nbsp;:=&nbsp;exp(v)&nbsp;*&nbsp;cos(u)<br />
+&nbsp;&nbsp;point&nbsp;[xOffset&nbsp;+&nbsp;u,&nbsp;yOffset&nbsp;+&nbsp;acos(x),&nbsp;v,&nbsp;abs(v)]<br />
+<br />
+scherk4(u,v)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;fourth&nbsp;patch<br />
+&nbsp;&nbsp;x&nbsp;:=&nbsp;exp(v)&nbsp;*&nbsp;cos(u)<br />
+&nbsp;&nbsp;point&nbsp;[xOffset&nbsp;+&nbsp;u,&nbsp;yOffset&nbsp;-&nbsp;acos(x),&nbsp;v,&nbsp;abs(v)]<br />
+<br />
+drawOneScherk(s)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;surface&nbsp;by<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;breaking&nbsp;it&nbsp;into&nbsp;four<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;patches&nbsp;and&nbsp;then&nbsp;drawing<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;patches<br />
+&nbsp;&nbsp;makeObject(scherk1,-%pi/2..%pi/2,0..%pi/2,space==s,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var1Steps&nbsp;==&nbsp;28,&nbsp;var2Steps&nbsp;==&nbsp;28)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;makeObject(scherk2,-%pi/2..%pi/2,0..%pi/2,space==s,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var1Steps&nbsp;==&nbsp;28,&nbsp;var2Steps&nbsp;==&nbsp;28)<br />
+&nbsp;&nbsp;makeObject(scherk3,-%pi/2..%pi/2,-%pi/2..0,space==s,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var1Steps&nbsp;==&nbsp;28,&nbsp;var2Steps&nbsp;==&nbsp;28)<br />
+&nbsp;&nbsp;makeObject(scherk4,-%pi/2..%pi/2,-%pi/2..0,space==s,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var1Steps&nbsp;==&nbsp;28,&nbsp;var2Steps&nbsp;==&nbsp;28)<br />
+&nbsp;&nbsp;void()<br />
+</div>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.13.xhtml" style="margin-right: 10px;">Previous Section 21.13 antoine.input</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.2.xhtml
new file mode 100644
index 0000000..1ac1b07
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.2.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.1.xhtml" style="margin-right: 10px;">Previous Section 21.1 images1.input</a><a href="section-21.3.xhtml" style="margin-right: 10px;">Next Section 21.3 images3.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.2">
+<h2 class="sectiontitle">21.2  images2.input</h2>
+
+
+<a name="ugFimagesTwo" class="label"/>
+
+
+<p>These images illustrate how Newton's method converges when computing the
+<span class="index">Newton iteration</span><a name="chapter-21-1"/>
+complex cube roots of 2.   Each point in the  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>-plane represents the
+complex number  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mi>iy</mi><mo>,</mo></mrow></mstyle></math> which is given as a starting point for Newton's
+method.  The poles in these images represent bad starting values.
+The flat areas are the regions of convergence to the three roots.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;newton&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Read&nbsp;the&nbsp;programs&nbsp;from<br />
+)read&nbsp;vectors&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chapter&nbsp;10<br />
+f&nbsp;:=&nbsp;newtonStep(x**3&nbsp;-&nbsp;2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;a&nbsp;Newton's&nbsp;iteration<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;for&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mn>3</mn></msup><mo>=</mo><mn>2</mn></mrow></mstyle></math><br />
+</div>
+
+
+
+<p>The function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>f</mi><mi>n</mi></msup></mrow></mstyle></math> computes  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> steps of Newton's method.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+clipValue&nbsp;:=&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clip&nbsp;values&nbsp;with&nbsp;magnitude&nbsp;&gt;&nbsp;4<br />
+drawComplexVectorField(f**3,&nbsp;-3..3,&nbsp;-3..3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;vector&nbsp;field&nbsp;for&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow></mstyle></math><br />
+drawComplex(f**3,&nbsp;-3..3,&nbsp;-3..3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;surface&nbsp;for&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow></mstyle></math><br />
+drawComplex(f**4,&nbsp;-3..3,&nbsp;-3..3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;surface&nbsp;for&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow></mstyle></math><br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.1.xhtml" style="margin-right: 10px;">Previous Section 21.1 images1.input</a><a href="section-21.3.xhtml" style="margin-right: 10px;">Next Section 21.3 images3.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.3.xhtml
new file mode 100644
index 0000000..d1eb19e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.3.xhtml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.2.xhtml" style="margin-right: 10px;">Previous Section 21.2 images2.input</a><a href="section-21.4.xhtml" style="margin-right: 10px;">Next Section 21.4 images5.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.3">
+<h2 class="sectiontitle">21.3  images3.input</h2>
+
+
+<a name="ugFimagesThree" class="label"/>
+
+
+
+
+
+<div class="verbatim"><br />
+)r&nbsp;tknot<br />
+for&nbsp;i&nbsp;in&nbsp;0..4&nbsp;repeat&nbsp;torusKnot(2,&nbsp;2&nbsp;+&nbsp;i/4,&nbsp;0.5,&nbsp;25,&nbsp;250)<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.2.xhtml" style="margin-right: 10px;">Previous Section 21.2 images2.input</a><a href="section-21.4.xhtml" style="margin-right: 10px;">Next Section 21.4 images5.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.4.xhtml
new file mode 100644
index 0000000..b5651d8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.4.xhtml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.3.xhtml" style="margin-right: 10px;">Previous Section 21.3 images3.input</a><a href="section-21.5.xhtml" style="margin-right: 10px;">Next Section 21.5 images6.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.4">
+<h2 class="sectiontitle">21.4  images5.input</h2>
+
+
+<a name="ugFimagesFive" class="label"/>
+
+
+
+<p>The parameterization of the Etruscan Venus is due to George Frances.
+<span class="index">Etruscan Venus</span><a name="chapter-21-2"/>
+</p>
+
+
+
+
+<div class="verbatim"><br />
+venus(a,r,steps)&nbsp;==<br />
+&nbsp;&nbsp;surf&nbsp;:=&nbsp;(u:DFLOAT,&nbsp;v:DFLOAT):&nbsp;Point&nbsp;DFLOAT&nbsp;+-&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;cv&nbsp;:=&nbsp;cos(v)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;sv&nbsp;:=&nbsp;sin(v)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;cu&nbsp;:=&nbsp;cos(u)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;su&nbsp;:=&nbsp;sin(u)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;:=&nbsp;r&nbsp;*&nbsp;cos(2*u)&nbsp;*&nbsp;cv&nbsp;+&nbsp;sv&nbsp;*&nbsp;cu<br />
+&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;:=&nbsp;r&nbsp;*&nbsp;sin(2*u)&nbsp;*&nbsp;cv&nbsp;-&nbsp;sv&nbsp;*&nbsp;su<br />
+&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;:=&nbsp;a&nbsp;*&nbsp;cv<br />
+&nbsp;&nbsp;&nbsp;&nbsp;point&nbsp;[x,y,z]<br />
+&nbsp;&nbsp;draw(surf,&nbsp;0..%pi,&nbsp;-%pi..%pi,&nbsp;var1Steps==steps,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var2Steps==steps,&nbsp;title&nbsp;==&nbsp;"Etruscan&nbsp;Venus")<br />
+<br />
+venus(5/2,&nbsp;13/10,&nbsp;50)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Etruscan&nbsp;Venus<br />
+</div>
+
+
+
+<p>The Figure-8 Klein Bottle
+<span class="index">Klein bottle</span><a name="chapter-21-3"/>
+parameterization is from
+``Differential Geometry and Computer Graphics'' by Thomas Banchoff,
+in <span class="italic">Perspectives in Mathematics,</span> Anniversary of Oberwolfasch 1984,
+Birkh\"{a}user-Verlag, Basel, pp. 43-60.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+klein(x,y)&nbsp;==<br />
+&nbsp;&nbsp;cx&nbsp;:=&nbsp;cos(x)<br />
+&nbsp;&nbsp;cy&nbsp;:=&nbsp;cos(y)<br />
+&nbsp;&nbsp;sx&nbsp;:=&nbsp;sin(x)<br />
+&nbsp;&nbsp;sy&nbsp;:=&nbsp;sin(y)<br />
+&nbsp;&nbsp;sx2&nbsp;:=&nbsp;sin(x/2)<br />
+&nbsp;&nbsp;cx2&nbsp;:=&nbsp;cos(x/2)<br />
+&nbsp;&nbsp;sq2&nbsp;:=&nbsp;sqrt(2.0@DFLOAT)<br />
+&nbsp;&nbsp;point&nbsp;[cx&nbsp;*&nbsp;(cx2&nbsp;*&nbsp;(sq2&nbsp;+&nbsp;cy)&nbsp;+&nbsp;(sx2&nbsp;*&nbsp;sy&nbsp;*&nbsp;cy)),&nbsp;_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sx&nbsp;*&nbsp;(cx2&nbsp;*&nbsp;(sq2&nbsp;+&nbsp;cy)&nbsp;+&nbsp;(sx2&nbsp;*&nbsp;sy&nbsp;*&nbsp;cy)),&nbsp;_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-sx2&nbsp;*&nbsp;(sq2&nbsp;+&nbsp;cy)&nbsp;+&nbsp;cx2&nbsp;*&nbsp;sy&nbsp;*&nbsp;cy]<br />
+<br />
+draw(klein,&nbsp;0..4*%pi,&nbsp;0..2*%pi,&nbsp;var1Steps==50,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Figure-8&nbsp;Klein&nbsp;bottle<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var2Steps==50,title=="Figure&nbsp;Eight&nbsp;Klein&nbsp;Bottle")<br />
+</div>
+
+
+
+<p>The next two images are examples of generalized tubes.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;ntube<br />
+rotateBy(p,&nbsp;theta)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rotate&nbsp;a&nbsp;point&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>&nbsp;by<br />
+&nbsp;&nbsp;c&nbsp;:=&nbsp;cos(theta)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math>&nbsp;around&nbsp;the&nbsp;origin<br />
+&nbsp;&nbsp;s&nbsp;:=&nbsp;sin(theta)<br />
+&nbsp;&nbsp;point&nbsp;[p.1*c&nbsp;-&nbsp;p.2*s,&nbsp;p.1*s&nbsp;+&nbsp;p.2*c]<br />
+<br />
+bcircle&nbsp;t&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;circle&nbsp;in&nbsp;three-space<br />
+&nbsp;&nbsp;point&nbsp;[3*cos&nbsp;t,&nbsp;3*sin&nbsp;t,&nbsp;0]<br />
+<br />
+twist(u,&nbsp;t)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An&nbsp;ellipse&nbsp;that&nbsp;twists<br />
+&nbsp;&nbsp;theta&nbsp;:=&nbsp;4*t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;around&nbsp;four&nbsp;times&nbsp;as<br />
+&nbsp;&nbsp;p&nbsp;:=&nbsp;point&nbsp;[sin&nbsp;u,&nbsp;cos(u)/2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math>&nbsp;revolves&nbsp;once<br />
+&nbsp;&nbsp;rotateBy(p,&nbsp;theta)<br />
+<br />
+ntubeDrawOpt(bcircle,&nbsp;twist,&nbsp;0..2*%pi,&nbsp;0..2*%pi,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Twisted&nbsp;Torus<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var1Steps&nbsp;==&nbsp;70,&nbsp;var2Steps&nbsp;==&nbsp;250)<br />
+<br />
+twist2(u,&nbsp;t)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;a&nbsp;twisting&nbsp;circle<br />
+&nbsp;&nbsp;theta&nbsp;:=&nbsp;t<br />
+&nbsp;&nbsp;p&nbsp;:=&nbsp;point&nbsp;[sin&nbsp;u,&nbsp;cos(u)]<br />
+&nbsp;&nbsp;rotateBy(p,&nbsp;theta)<br />
+<br />
+cf(u,v)&nbsp;==&nbsp;sin(21*u)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;function&nbsp;with&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mn>21</mn></mstyle></math>&nbsp;stripes<br />
+<br />
+ntubeDrawOpt(bcircle,&nbsp;twist2,&nbsp;0..2*%pi,&nbsp;0..2*%pi,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Striped&nbsp;Torus<br />
+&nbsp;&nbsp;colorFunction&nbsp;==&nbsp;cf,&nbsp;var1Steps&nbsp;==&nbsp;168,<br />
+&nbsp;&nbsp;var2Steps&nbsp;==&nbsp;126)<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.3.xhtml" style="margin-right: 10px;">Previous Section 21.3 images3.input</a><a href="section-21.5.xhtml" style="margin-right: 10px;">Next Section 21.5 images6.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.5.xhtml
new file mode 100644
index 0000000..1f5de5c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.5.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.4.xhtml" style="margin-right: 10px;">Previous Section 21.4 images5.input</a><a href="section-21.6.xhtml" style="margin-right: 10px;">Next Section 21.6 images7.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.5">
+<h2 class="sectiontitle">21.5  images6.input</h2>
+
+
+<a name="ugFimagesSix" class="label"/>
+
+
+
+
+<div class="verbatim"><br />
+gam(x,y)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;height&nbsp;and&nbsp;color&nbsp;are&nbsp;the<br />
+&nbsp;&nbsp;g&nbsp;:=&nbsp;Gamma&nbsp;complex(x,y)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;real&nbsp;and&nbsp;argument&nbsp;parts<br />
+&nbsp;&nbsp;point&nbsp;[x,y,max(min(real&nbsp;g,&nbsp;4),&nbsp;-4),&nbsp;argument&nbsp;g]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;Gamma&nbsp;function,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;respectively.<br />
+<br />
+draw(gam,&nbsp;-%pi..%pi,&nbsp;-%pi..%pi,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Gamma&nbsp;Function<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title&nbsp;==&nbsp;"Gamma(x&nbsp;+&nbsp;%i*y)",&nbsp;_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var1Steps&nbsp;==&nbsp;100,&nbsp;var2Steps&nbsp;==&nbsp;100)<br />
+<br />
+b(x,y)&nbsp;==&nbsp;Beta(x,y)<br />
+<br />
+draw(b,&nbsp;-3.1..3,&nbsp;-3.1&nbsp;..&nbsp;3,&nbsp;title&nbsp;==&nbsp;"Beta(x,y)")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Beta&nbsp;Function<br />
+<br />
+atf(x,y)&nbsp;==&nbsp;<br />
+&nbsp;&nbsp;a&nbsp;:=&nbsp;atan&nbsp;complex(x,y)<br />
+&nbsp;&nbsp;point&nbsp;[x,y,real&nbsp;a,&nbsp;argument&nbsp;a]<br />
+<br />
+draw(atf,&nbsp;-3.0..%pi,&nbsp;-3.0..%pi)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Arctangent&nbsp;function<br />
+</div>
+
+
+<p><span class="index">function:Gamma</span><a name="chapter-21-4"/>
+<span class="index">function:Euler Beta</span><a name="chapter-21-5"/>
+<span class="index">Euler:Beta function</span><a name="chapter-21-6"/>
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.4.xhtml" style="margin-right: 10px;">Previous Section 21.4 images5.input</a><a href="section-21.6.xhtml" style="margin-right: 10px;">Next Section 21.6 images7.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.6.xhtml
new file mode 100644
index 0000000..24aa1d4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.6.xhtml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.5.xhtml" style="margin-right: 10px;">Previous Section 21.5 images6.input</a><a href="section-21.7.xhtml" style="margin-right: 10px;">Next Section 21.7 images8.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.6">
+<h2 class="sectiontitle">21.6  images7.input</h2>
+
+
+<a name="ugFimagesSeven" class="label"/>
+
+
+<p>First we look at the conformal
+<span class="index">conformal map</span><a name="chapter-21-7"/>
+map  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>&#x21a6;</mo><mi>z</mi><mo>+</mo><mn>1</mn><mo>/</mo><mi>z</mi></mrow></mstyle></math>.
+</p>
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;conformal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Read&nbsp;program&nbsp;for&nbsp;drawing<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conformal&nbsp;maps<br />
+<br />
+f&nbsp;z&nbsp;==&nbsp;z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;coordinate&nbsp;grid&nbsp;for&nbsp;the<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complex&nbsp;plane<br />
+conformalDraw(f,&nbsp;-2..2,&nbsp;-2..2,&nbsp;9,&nbsp;9,&nbsp;"cartesian")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mapping&nbsp;1:&nbsp;Source<br />
+<br />
+f&nbsp;z&nbsp;==&nbsp;z&nbsp;+&nbsp;1/z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;map&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>&#x21a6;</mo><mi>z</mi><mo>+</mo><mn>1</mn><mo>/</mo><mi>z</mi></mrow></mstyle></math><br />
+<br />
+conformalDraw(f,&nbsp;-2..2,&nbsp;-2..2,&nbsp;9,&nbsp;9,&nbsp;"cartesian")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mapping&nbsp;1:&nbsp;Target<br />
+</div>
+
+
+
+<p>The map  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>&#x21a6;</mo><mo>-</mo><mo>(</mo><mi>z</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>/</mo><mo>(</mo><mi>z</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math> maps
+the unit disk to the right half-plane, as shown
+<span class="index">Riemann:sphere</span><a name="chapter-21-8"/>
+on the Riemann sphere.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+f&nbsp;z&nbsp;==&nbsp;z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;unit&nbsp;disk<br />
+<br />
+riemannConformalDraw(f,0.1..0.99,0..2*%pi,7,11,"polar")&nbsp;&nbsp;&nbsp;&nbsp;Mapping&nbsp;2:&nbsp;Source<br />
+<br />
+f&nbsp;z&nbsp;==&nbsp;-(z+1)/(z-1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;map&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>&#x21a6;</mo><mo>-</mo><mo>(</mo><mi>z</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>/</mo><mo>(</mo><mi>z</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math><br />
+<br />
+riemannConformalDraw(f,0.1..0.99,0..2*%pi,7,11,"polar")&nbsp;&nbsp;&nbsp;&nbsp;Mapping&nbsp;2:&nbsp;Target<br />
+<br />
+riemannSphereDraw(-4..4,&nbsp;-4..4,&nbsp;7,&nbsp;7,&nbsp;"cartesian")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Riemann&nbsp;Sphere&nbsp;Mapping<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.5.xhtml" style="margin-right: 10px;">Previous Section 21.5 images6.input</a><a href="section-21.7.xhtml" style="margin-right: 10px;">Next Section 21.7 images8.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.7.xhtml
new file mode 100644
index 0000000..ac28f8f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.7.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.6.xhtml" style="margin-right: 10px;">Previous Section 21.6 images7.input</a><a href="section-21.8.xhtml" style="margin-right: 10px;">Next Section 21.8 conformal.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.7">
+<h2 class="sectiontitle">21.7  images8.input</h2>
+
+
+<a name="ugFimagesEight" class="label"/>
+
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;dhtri<br />
+)read&nbsp;tetra<br />
+drawPyramid&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sierpinsky's&nbsp;Tetrahedron<br />
+<br />
+Sierpinsky's&nbsp;Tetrahedron<br />
+)read&nbsp;antoine<br />
+drawRings&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Antoine's&nbsp;Necklace<br />
+<br />
+Aintoine's&nbsp;Necklace<br />
+)read&nbsp;scherk<br />
+drawScherk(3,3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scherk's&nbsp;Minimal&nbsp;Surface<br />
+<br />
+)read&nbsp;ribbonsNew<br />
+drawRibbons([x**i&nbsp;for&nbsp;i&nbsp;in&nbsp;1..5],&nbsp;x=-1..1,&nbsp;y=0..2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ribbon&nbsp;Plot<br />
+</div>
+
+
+<p><span class="index">Scherk's minimal surface</span><a name="chapter-21-9"/>
+</p>
+
+
+
+<p><!--\input{gallery/conformal.htex}-->
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.6.xhtml" style="margin-right: 10px;">Previous Section 21.6 images7.input</a><a href="section-21.8.xhtml" style="margin-right: 10px;">Next Section 21.8 conformal.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.8.xhtml
new file mode 100644
index 0000000..8085af6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.8.xhtml
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.7.xhtml" style="margin-right: 10px;">Previous Section 21.7 images8.input</a><a href="section-21.9.xhtml" style="margin-right: 10px;">Next Section 21.9 tknot.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.8">
+<h2 class="sectiontitle">21.8  conformal.input</h2>
+
+
+<a name="ugFconformal" class="label"/>
+
+
+<p>The functions in this section draw conformal maps both on the
+<span class="index">conformal map</span><a name="chapter-21-10"/>
+plane and on the Riemann sphere.
+<span class="index">Riemann:sphere</span><a name="chapter-21-11"/>
+</p>
+
+
+<p><!-- Compile, don't interpret functions.
+\xmpLine{)set fun comp on}{}-->
+</p>
+
+
+
+
+
+<div class="verbatim"><br />
+C&nbsp;:=&nbsp;Complex&nbsp;DoubleFloat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Complex&nbsp;Numbers<br />
+S&nbsp;:=&nbsp;Segment&nbsp;DoubleFloat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;ranges<br />
+R3&nbsp;:=&nbsp;Point&nbsp;DFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points&nbsp;in&nbsp;3-space<br />
+</div>
+
+
+
+<p><span style="font-weight: bold;"> conformalDraw</span><span class="italic">(f, rRange, tRange, rSteps, tSteps, coord)</span>
+draws the image of the coordinate grid under <span class="italic">f</span> in the complex plane.
+The grid may be given in either polar or Cartesian coordinates.
+Argument <span class="italic">f</span> is the function to draw;
+<span class="italic">rRange</span> is the range of the radius (in polar) or real (in Cartesian);
+<span class="italic">tRange</span> is the range of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math> (in polar) or imaginary (in Cartesian);
+<span class="italic">tSteps, rSteps</span>, are the number of intervals in the <span class="italic">r</span> and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math> directions; and
+<span class="italic">coord</span> is the coordinate system to use (either <span class="teletype">"polar"</span> or
+<span class="teletype">"cartesian"</span>).
+</p>
+
+
+
+
+<div class="verbatim"><br />
+conformalDraw:&nbsp;(C&nbsp;-&gt;&nbsp;C,&nbsp;S,&nbsp;S,&nbsp;PI,&nbsp;PI,&nbsp;String)&nbsp;-&gt;&nbsp;VIEW3D<br />
+conformalDraw(f,rRange,tRange,rSteps,tSteps,coord)&nbsp;==<br />
+&nbsp;&nbsp;transformC&nbsp;:=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Function&nbsp;for&nbsp;changing&nbsp;an&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math><br />
+&nbsp;&nbsp;&nbsp;&nbsp;coord&nbsp;=&nbsp;"polar"&nbsp;=&gt;&nbsp;polar2Complex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pair&nbsp;into&nbsp;a&nbsp;complex&nbsp;number<br />
+&nbsp;&nbsp;&nbsp;&nbsp;cartesian2Complex<br />
+&nbsp;&nbsp;cm&nbsp;:=&nbsp;makeConformalMap(f,&nbsp;transformC)<br />
+&nbsp;&nbsp;sp&nbsp;:=&nbsp;createThreeSpace()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;a&nbsp;fresh&nbsp;space<br />
+&nbsp;&nbsp;adaptGrid(sp,&nbsp;cm,&nbsp;rRange,&nbsp;tRange,&nbsp;rSteps,&nbsp;tSteps)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Plot&nbsp;the&nbsp;coordinate&nbsp;lines<br />
+&nbsp;&nbsp;makeViewport3D(sp,&nbsp;"Conformal&nbsp;Map")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;image<br />
+</div>
+
+
+
+<p><span style="font-weight: bold;"> riemannConformalDraw</span><span class="italic">(f, rRange, tRange, rSteps, tSteps, coord)</span>
+draws the image of the coordinate grid under <span class="italic">f</span> on the Riemann sphere.
+The grid may be given in either polar or Cartesian coordinates.
+Its arguments are the same as those for <span style="font-weight: bold;"> conformalDraw</span>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+riemannConformalDraw:(C-&gt;C,S,S,PI,PI,String)-&gt;VIEW3D<br />
+riemannConformalDraw(f,&nbsp;rRange,&nbsp;tRange,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rSteps,&nbsp;tSteps,&nbsp;coord)&nbsp;==<br />
+&nbsp;&nbsp;transformC&nbsp;:=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Function&nbsp;for&nbsp;changing&nbsp;an&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math><br />
+&nbsp;&nbsp;&nbsp;&nbsp;coord&nbsp;=&nbsp;"polar"&nbsp;=&gt;&nbsp;polar2Complex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pair&nbsp;into&nbsp;a&nbsp;complex&nbsp;number<br />
+&nbsp;&nbsp;&nbsp;&nbsp;cartesian2Complex<br />
+&nbsp;&nbsp;sp&nbsp;:=&nbsp;createThreeSpace()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;a&nbsp;fresh&nbsp;space<br />
+&nbsp;&nbsp;cm&nbsp;:=&nbsp;makeRiemannConformalMap(f,&nbsp;transformC)<br />
+&nbsp;&nbsp;adaptGrid(sp,&nbsp;cm,&nbsp;rRange,&nbsp;tRange,&nbsp;rSteps,&nbsp;tSteps)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Plot&nbsp;the&nbsp;coordinate&nbsp;lines<br />
+&nbsp;&nbsp;curve(sp,[point&nbsp;[0,0,2.0@DFLOAT,0],point&nbsp;[0,0,2.0@DFLOAT,0]&nbsp;])<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add&nbsp;an&nbsp;invisible&nbsp;point&nbsp;at<br />
+&nbsp;&nbsp;makeViewport3D(sp,"Map&nbsp;on&nbsp;the&nbsp;Riemann&nbsp;Sphere")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;north&nbsp;pole&nbsp;for&nbsp;scaling<br />
+<br />
+adaptGrid(sp,&nbsp;f,&nbsp;uRange,&nbsp;vRange,&nbsp;&nbsp;uSteps,&nbsp;vSteps)&nbsp;==&nbsp;Plot&nbsp;&nbsp;the&nbsp;coordinate&nbsp;grid<br />
+&nbsp;&nbsp;delU&nbsp;:=&nbsp;(hi(uRange)&nbsp;-&nbsp;lo(uRange))/uSteps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using&nbsp;adaptive&nbsp;plotting&nbsp;for<br />
+&nbsp;&nbsp;delV&nbsp;:=&nbsp;(hi(vRange)&nbsp;-&nbsp;lo(vRange))/vSteps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coordinate&nbsp;lines,&nbsp;and&nbsp;draw<br />
+&nbsp;&nbsp;uSteps&nbsp;:=&nbsp;uSteps&nbsp;+&nbsp;1;&nbsp;vSteps&nbsp;:=&nbsp;vSteps&nbsp;+&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tubes&nbsp;around&nbsp;the&nbsp;lines<br />
+&nbsp;&nbsp;u&nbsp;:=&nbsp;lo&nbsp;uRange<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;1..uSteps&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;coordinate&nbsp;lines&nbsp;in&nbsp;the&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math><br />
+&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;:=&nbsp;curryLeft(f,u)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;direction;&nbsp;curve&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>c</mi></mstyle></math>&nbsp;fixes&nbsp;the<br />
+&nbsp;&nbsp;&nbsp;&nbsp;cf&nbsp;:=&nbsp;(t:DFLOAT):DFLOAT&nbsp;+-&gt;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current&nbsp;value&nbsp;of&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math><br />
+&nbsp;&nbsp;&nbsp;&nbsp;makeObject(c,vRange::SEG&nbsp;Float,colorFunction==cf,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math>&nbsp;coordinate&nbsp;line<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;space&nbsp;==&nbsp;sp,&nbsp;tubeRadius&nbsp;==&nbsp;.02,&nbsp;tubePoints&nbsp;==&nbsp;6)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;:=&nbsp;u&nbsp;+&nbsp;delU<br />
+&nbsp;&nbsp;v&nbsp;:=&nbsp;lo&nbsp;vRange<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;1..vSteps&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;coodinate&nbsp;lines&nbsp;in&nbsp;the&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math><br />
+&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;:=&nbsp;curryRight(f,v)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;direction;&nbsp;curve&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>c</mi></mstyle></math>&nbsp;fixes&nbsp;the<br />
+&nbsp;&nbsp;&nbsp;&nbsp;cf&nbsp;:=&nbsp;(t:DFLOAT):DFLOAT&nbsp;+-&gt;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current&nbsp;value&nbsp;of&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math><br />
+&nbsp;&nbsp;&nbsp;&nbsp;makeObject(c,uRange::SEG&nbsp;Float,colorFunction==cf,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math>&nbsp;coordinate&nbsp;line<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;space&nbsp;==&nbsp;sp,&nbsp;tubeRadius&nbsp;==&nbsp;.02,&nbsp;tubePoints&nbsp;==&nbsp;6)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;:=&nbsp;v&nbsp;+&nbsp;delV<br />
+&nbsp;&nbsp;void()<br />
+<br />
+riemannTransform(z)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;a&nbsp;point&nbsp;in&nbsp;the&nbsp;complex<br />
+&nbsp;&nbsp;r&nbsp;:=&nbsp;sqrt&nbsp;norm&nbsp;z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane&nbsp;to&nbsp;the&nbsp;Riemann&nbsp;sphere<br />
+&nbsp;&nbsp;cosTheta&nbsp;:=&nbsp;(real&nbsp;z)/r<br />
+&nbsp;&nbsp;sinTheta&nbsp;:=&nbsp;(imag&nbsp;z)/r<br />
+&nbsp;&nbsp;cp&nbsp;:=&nbsp;4*r/(4+r**2)<br />
+&nbsp;&nbsp;sp&nbsp;:=&nbsp;sqrt(1-cp*cp)<br />
+&nbsp;&nbsp;if&nbsp;r&gt;2&nbsp;then&nbsp;sp&nbsp;:=&nbsp;-sp<br />
+&nbsp;&nbsp;point&nbsp;[cosTheta*cp,&nbsp;sinTheta*cp,&nbsp;-sp&nbsp;+&nbsp;1]<br />
+<br />
+cartesian2Complex(r:DFLOAT,&nbsp;i:DFLOAT):C&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convert&nbsp;Cartesian&nbsp;coordinates&nbsp;to<br />
+&nbsp;&nbsp;complex(r,&nbsp;i)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complex&nbsp;Cartesian&nbsp;form<br />
+<br />
+polar2Complex(r:DFLOAT,&nbsp;th:DFLOAT):C&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convert&nbsp;polar&nbsp;coordinates&nbsp;to<br />
+&nbsp;&nbsp;complex(r*cos(th),&nbsp;r*sin(th))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complex&nbsp;Cartesian&nbsp;form<br />
+<br />
+makeConformalMap(f,&nbsp;transformC)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convert&nbsp;complex&nbsp;function&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math><br />
+&nbsp;&nbsp;(u:DFLOAT,v:DFLOAT):R3&nbsp;+-&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;a&nbsp;mapping:&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DFLOAT,DFLOAT)&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x21a6;</mo></mstyle></math>&nbsp;R3<br />
+&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;:=&nbsp;f&nbsp;transformC(u,&nbsp;v)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;complex&nbsp;plane<br />
+&nbsp;&nbsp;&nbsp;&nbsp;point&nbsp;[real&nbsp;z,&nbsp;imag&nbsp;z,&nbsp;0.0@DFLOAT]<br />
+<br />
+makeRiemannConformalMap(f,&nbsp;transformC)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convert&nbsp;a&nbsp;complex&nbsp;function&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math><br />
+&nbsp;&nbsp;(u:DFLOAT,&nbsp;v:DFLOAT):R3&nbsp;+-&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;a&nbsp;mapping:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DFLOAT,DFLOAT)&nbsp;<math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x21a6;</mo></mstyle></math>&nbsp;R3<br />
+&nbsp;&nbsp;&nbsp;&nbsp;riemannTransform&nbsp;f&nbsp;transformC(u,&nbsp;v)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;the&nbsp;Riemann&nbsp;sphere<br />
+<br />
+riemannSphereDraw:&nbsp;(S,&nbsp;S,&nbsp;PI,&nbsp;PI,&nbsp;String)&nbsp;-&gt;&nbsp;VIEW3D<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;a&nbsp;picture&nbsp;of&nbsp;the&nbsp;mapping<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;complex&nbsp;plane&nbsp;to<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;Riemann&nbsp;sphere<br />
+riemannSphereDraw(rRange,tRange,rSteps,tSteps,coord)&nbsp;==<br />
+&nbsp;&nbsp;transformC&nbsp;:=<br />
+&nbsp;&nbsp;&nbsp;&nbsp;coord&nbsp;=&nbsp;"polar"&nbsp;=&gt;&nbsp;polar2Complex<br />
+&nbsp;&nbsp;&nbsp;&nbsp;cartesian2Complex<br />
+&nbsp;&nbsp;grid&nbsp;:=&nbsp;(u:DFLOAT,&nbsp;v:DFLOAT):&nbsp;R3&nbsp;+-&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Coordinate&nbsp;grid&nbsp;function<br />
+&nbsp;&nbsp;&nbsp;&nbsp;z1&nbsp;:=&nbsp;transformC(u,&nbsp;v)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;point&nbsp;[real&nbsp;z1,&nbsp;imag&nbsp;z1,&nbsp;0]<br />
+&nbsp;&nbsp;sp&nbsp;:=&nbsp;createThreeSpace()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;a&nbsp;fresh&nbsp;space<br />
+&nbsp;&nbsp;adaptGrid(sp,&nbsp;grid,&nbsp;rRange,&nbsp;tRange,&nbsp;rSteps,&nbsp;tSteps)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;flat&nbsp;grid<br />
+&nbsp;&nbsp;connectingLines(sp,grid,rRange,tRange,rSteps,tSteps)<br />
+&nbsp;&nbsp;makeObject(riemannSphere,0..2*%pi,0..%pi,space==sp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;sphere<br />
+&nbsp;&nbsp;f&nbsp;:=&nbsp;(z:C):C&nbsp;+-&gt;&nbsp;z<br />
+&nbsp;&nbsp;cm&nbsp;:=&nbsp;makeRiemannConformalMap(f,&nbsp;transformC)<br />
+&nbsp;&nbsp;adaptGrid(sp,&nbsp;cm,&nbsp;rRange,&nbsp;tRange,&nbsp;rSteps,&nbsp;tSteps)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;sphere&nbsp;grid<br />
+&nbsp;&nbsp;makeViewport3D(sp,&nbsp;"Riemann&nbsp;Sphere")<br />
+&nbsp;<br />
+connectingLines(sp,f,uRange,vRange,uSteps,vSteps)&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;lines&nbsp;that&nbsp;connect<br />
+&nbsp;&nbsp;delU&nbsp;:=&nbsp;(hi(uRange)&nbsp;-&nbsp;lo(uRange))/uSteps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;points&nbsp;in&nbsp;the&nbsp;complex<br />
+&nbsp;&nbsp;delV&nbsp;:=&nbsp;(hi(vRange)&nbsp;-&nbsp;lo(vRange))/vSteps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane&nbsp;to&nbsp;the&nbsp;north&nbsp;pole<br />
+&nbsp;&nbsp;uSteps&nbsp;:=&nbsp;uSteps&nbsp;+&nbsp;1;&nbsp;vSteps&nbsp;:=&nbsp;vSteps&nbsp;+&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;Riemann&nbsp;sphere<br />
+&nbsp;&nbsp;u&nbsp;:=&nbsp;lo&nbsp;uRange<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;1..uSteps&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;each&nbsp;u<br />
+&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;:=&nbsp;lo&nbsp;vRange<br />
+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;1..vSteps&nbsp;repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;each&nbsp;v<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1&nbsp;:=&nbsp;f(u,v)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2&nbsp;:=&nbsp;riemannTransform&nbsp;complex(p1.1,&nbsp;p1.2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Project&nbsp;p1&nbsp;onto&nbsp;the&nbsp;sphere<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fun&nbsp;:=&nbsp;lineFromTo(p1,p2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;a&nbsp;line&nbsp;function<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cf&nbsp;:=&nbsp;(t:DFLOAT):DFLOAT&nbsp;+-&gt;&nbsp;3<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;makeObject(fun,&nbsp;0..1,space==sp,tubePoints==4,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;connecting&nbsp;line<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tubeRadius==0.01,colorFunction==cf)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;:=&nbsp;v&nbsp;+&nbsp;delV<br />
+&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;:=&nbsp;u&nbsp;+&nbsp;delU<br />
+&nbsp;&nbsp;void()<br />
+<br />
+riemannSphere(u,v)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;sphere&nbsp;sitting&nbsp;on&nbsp;the<br />
+&nbsp;&nbsp;sv&nbsp;:=&nbsp;sin(v)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complex&nbsp;plane,&nbsp;with&nbsp;radius&nbsp;1<br />
+&nbsp;&nbsp;0.99@DFLOAT*(point&nbsp;[cos(u)*sv,sin(u)*sv,cos(v),0.0@DFLOAT])+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;point&nbsp;[0.0@DFLOAT,&nbsp;0.0@DFLOAT,&nbsp;1.0@DFLOAT,&nbsp;4.0@DFLOAT]<br />
+&nbsp;<br />
+lineFromTo(p1,&nbsp;p2)&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create&nbsp;a&nbsp;line&nbsp;function<br />
+&nbsp;&nbsp;d&nbsp;:=&nbsp;p2&nbsp;-&nbsp;p1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that&nbsp;goes&nbsp;from&nbsp;p1&nbsp;to&nbsp;p2<br />
+&nbsp;&nbsp;(t:DFLOAT):Point&nbsp;DFLOAT&nbsp;+-&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;p1&nbsp;+&nbsp;t*d<br />
+</div>
+
+
+
+<p><!--\input{gallery/tknot.htex}-->
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.7.xhtml" style="margin-right: 10px;">Previous Section 21.7 images8.input</a><a href="section-21.9.xhtml" style="margin-right: 10px;">Next Section 21.9 tknot.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-21.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-21.9.xhtml
new file mode 100644
index 0000000..43433ac
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-21.9.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section21.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-21.8.xhtml" style="margin-right: 10px;">Previous Section 21.8 conformal.input</a><a href="section-21.10.xhtml" style="margin-right: 10px;">Next Section 21.10 ntube.input</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-21.9">
+<h2 class="sectiontitle">21.9  tknot.input</h2>
+
+
+<a name="ugFtknot" class="label"/>
+
+
+<p>Create a  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></mstyle></math> torus-knot with radius  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> around the curve.
+The formula was derived by Larry Lambe.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;ntube<br />
+torusKnot:&nbsp;(DFLOAT,&nbsp;DFLOAT,&nbsp;DFLOAT,&nbsp;PI,&nbsp;PI)&nbsp;-&gt;&nbsp;VIEW3D<br />
+torusKnot(p,&nbsp;q&nbsp;,r,&nbsp;uSteps,&nbsp;tSteps)&nbsp;==<br />
+&nbsp;&nbsp;knot&nbsp;:=&nbsp;(t:DFLOAT):Point&nbsp;DFLOAT&nbsp;+-&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Function&nbsp;for&nbsp;the&nbsp;torus&nbsp;knot<br />
+&nbsp;&nbsp;&nbsp;&nbsp;fac&nbsp;:=&nbsp;4/(2.2@DFLOAT-sin(q*t))<br />
+&nbsp;&nbsp;&nbsp;&nbsp;fac&nbsp;*&nbsp;point&nbsp;[cos(p*t),&nbsp;sin(p*t),&nbsp;cos(q*t)]<br />
+&nbsp;&nbsp;circle&nbsp;:=&nbsp;(u:DFLOAT,&nbsp;t:DFLOAT):&nbsp;Point&nbsp;DFLOAT&nbsp;+-&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;cross&nbsp;section<br />
+&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;*&nbsp;point&nbsp;[cos&nbsp;u,&nbsp;sin&nbsp;u]<br />
+&nbsp;&nbsp;ntubeDrawOpt(knot,&nbsp;circle,&nbsp;0..2*%pi,&nbsp;0..2*%pi,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw&nbsp;the&nbsp;circle&nbsp;around&nbsp;the&nbsp;knot<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var1Steps&nbsp;==&nbsp;uSteps,&nbsp;var2Steps&nbsp;==&nbsp;tSteps)<br />
+<br />
+</div>
+
+
+
+<p><!--\input{gallery/ntube.htex}-->
+</p>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-21.8.xhtml" style="margin-right: 10px;">Previous Section 21.8 conformal.input</a><a href="section-21.10.xhtml" style="margin-right: 10px;">Next Section 21.10 ntube.input</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-3.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-3.0.xhtml
new file mode 100644
index 0000000..4c24ffe
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-3.0.xhtml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section3.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.12.xhtml" style="margin-right: 10px;">Previous Section 2.12  Commands for Snooping</a><a href="section-3.1.xhtml" style="margin-right: 10px;">Next Section 3.1 Headings</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-3.0">
+<h2 class="sectiontitle">3.0 Using HyperDoc</h2>
+<a name="ugHyper" class="label"/>
+
+<div class="image">
+<img src="ps/h-root.png" alt="picture"/>
+<div class="figcaption">The HyperDoc root window page.</div>
+</div>
+
+<p>HyperDoc is the gateway to Axiom.  <span class="index">HyperDoc</span><a name="chapter-3-0"/> It's both an
+on-line tutorial and an on-line reference manual.  It also enables you
+to use Axiom simply by using the mouse and filling in templates.
+HyperDoc is available to you if you are running Axiom under the X
+Window System.
+</p>
+
+
+<p>Pages usually have active areas, marked in <span style="font-weight: bold;"> this font</span> (bold
+face).  As you move the mouse pointer to an active area, the pointer
+changes from a filled dot to an open circle.  The active areas are
+usually linked to other pages.  When you click on an active area, you
+move to the linked page.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-2.12.xhtml" style="margin-right: 10px;">Previous Section 2.12  Commands for Snooping</a><a href="section-3.1.xhtml" style="margin-right: 10px;">Next Section 3.1 Headings</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-3.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-3.1.xhtml
new file mode 100644
index 0000000..16f50a6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-3.1.xhtml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section3.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-3.0.xhtml" style="margin-right: 10px;">Previous Section 3.0 Using HyperDoc</a><a href="section-3.2.xhtml" style="margin-right: 10px;">Next Section 3.2 Key Definitions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-3.1">
+<h2 class="sectiontitle">3.1  Headings</h2>
+
+
+<a name="ugHyperHeadings" class="label"/>
+
+<p>Most pages have a standard set of buttons at the top of the page.
+This is what they mean:
+</p>
+
+
+<p><dl>
+<dt>Help</dt>
+<dd> Click on this to get help.  The button only appears
+if there is specific help for the page you are viewing.  You can get
+<span class="italic">general</span> help for HyperDoc by clicking the help button on the
+home page.
+</dd>
+<dt>Up</dt>
+<dd> Click here to go back one page.
+By clicking on this button repeatedly, you can go back several pages and
+then take off in a new direction.
+</dd>
+<dt>Return</dt>
+<dd> Go back to the home page, that is, the page on
+which you started.  Use HyperDoc to explore, to make forays into new
+topics.  Don't worry about how to get back.  HyperDoc remembers where
+you came from.  Just click on this button to return.
+</dd>
+<dt>Exit</dt>
+<dd> From the root window (the one that is displayed
+when you start the system) this button leaves the HyperDoc program,
+and it must be restarted if you want to use it again.  From any other
+HyperDoc window, it just makes that one window go away.  You <span class="italic">must</span> 
+use this button to get rid of a window.  If you use the window
+manager ``Close'' button, then all of HyperDoc goes away.
+</dd>
+</dl>
+</p>
+
+
+<p>The buttons are not displayed if they are not applicable to the page
+you are viewing.  For example, there is no <span style="font-weight: bold;"> Home</span> button on the
+top-level menu.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-3.0.xhtml" style="margin-right: 10px;">Previous Section 3.0 Using HyperDoc</a><a href="section-3.2.xhtml" style="margin-right: 10px;">Next Section 3.2 Key Definitions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-3.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-3.2.xhtml
new file mode 100644
index 0000000..69eba2b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-3.2.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section3.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-3.1.xhtml" style="margin-right: 10px;">Previous Section 3.1 Headings</a><a href="section-3.3.xhtml" style="margin-right: 10px;">Next Section 3.3 Scroll Bars</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-3.2">
+<h2 class="sectiontitle">3.2  Key Definitions</h2>
+
+
+<a name="ugHyperKeys" class="label"/>
+
+
+<p>The following keyboard definitions are in effect throughout HyperDoc.
+See <a href="section-3.3.xhtml#ugHyperScroll" class="ref" >ugHyperScroll</a>  and 
+<a href="section-3.4.xhtml#ugHyperInput" class="ref" >ugHyperInput</a>  for some contextual key
+definitions.
+</p>
+
+
+<p><dl>
+<dt>F1</dt>
+<dd> Display the main help page.
+</dd>
+<dt>F3</dt>
+<dd> Same as <span style="font-weight: bold;"> Exit</span>, makes the window go away if you are not at the top-level window or quits the HyperDoc facility if you are at the top-level.
+</dd>
+<dt>F5</dt>
+<dd> Rereads the HyperDoc database, if necessary (for system developers).
+</dd>
+<dt>F9</dt>
+<dd> Displays this information about key definitions.
+</dd>
+<dt>F12</dt>
+<dd> Same as <span style="font-weight: bold;"> F3</span>.
+</dd>
+<dt>Up Arrow</dt>
+<dd> Scroll up one line.
+</dd>
+<dt>Down Arrow</dt>
+<dd> Scroll down one line.
+</dd>
+<dt>Page Up</dt>
+<dd> Scroll up one page.
+</dd>
+<dt>Page Down</dt>
+<dd> Scroll down one page.
+</dd>
+</dl>
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-3.1.xhtml" style="margin-right: 10px;">Previous Section 3.1 Headings</a><a href="section-3.3.xhtml" style="margin-right: 10px;">Next Section 3.3 Scroll Bars</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-3.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-3.3.xhtml
new file mode 100644
index 0000000..d8791a3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-3.3.xhtml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section3.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-3.2.xhtml" style="margin-right: 10px;">Previous Section 3.2 Key Definitions</a><a href="section-3.4.xhtml" style="margin-right: 10px;">Next Section 3.4 Input Areas</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-3.3">
+<h2 class="sectiontitle">3.3  Scroll Bars</h2>
+
+
+<a name="ugHyperScroll" class="label"/>
+
+
+<p>Whenever there is too much text to fit on a page, a 
+<span class="italic">scroll <span class="index">scroll bar</span><a name="chapter-3-1"/> bar</span> 
+automatically appears along the right side.
+</p>
+
+
+<p>With a scroll bar, your page becomes an aperture, that is, a window
+into a larger amount of text than can be displayed at one time.  The
+scroll bar lets you move up and down in the text to see different
+parts.  It also shows where the aperture is relative to the whole
+text.  The aperture is indicated by a strip on the scroll bar.
+</p>
+
+
+<p>Move the cursor with the mouse to the ``down-arrow'' at the bottom of
+the scroll bar and click.  See that the aperture moves down one line.
+Do it several times.  Each time you click, the aperture moves down one
+line.  Move the mouse to the ``up-arrow'' at the top of the scroll bar
+and click.  The aperture moves up one line each time you click.
+</p>
+
+
+<p>Next move the mouse to any position along the middle of the scroll bar
+and click.  HyperDoc attempts to move the top of the aperture to this
+point in the text.
+</p>
+
+
+<p>You cannot make the aperture go off the bottom edge.  When the
+aperture is about half the size of text, the lowest you can move the
+aperture is halfway down.
+</p>
+
+
+<p>To move up or down one screen at a time, use the <span style="font-weight: bold;"> PageUp</span> and 
+<span style="font-weight: bold;"> PageDown</span> keys on your keyboard.  They move the visible part of the
+region up and down one page each time you press them.
+</p>
+
+
+<p>If the HyperDoc page does not contain an input area (see
+<a href="section-3.4.xhtml#ugHyperInput" class="ref" >ugHyperInput</a> ), you can also use
+the <span style="font-weight: bold;"> Home</span> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2191;</mo></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2193;</mo></mstyle></math>
+arrow keys to navigate.  When you press the <span style="font-weight: bold;"> Home</span> key, the
+screen is positioned at the very top of the page.  Use the
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2191;</mo></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2193;</mo></mstyle></math> arrow keys to move the
+screen up and down one line at a time, respectively.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-3.2.xhtml" style="margin-right: 10px;">Previous Section 3.2 Key Definitions</a><a href="section-3.4.xhtml" style="margin-right: 10px;">Next Section 3.4 Input Areas</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-3.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-3.4.xhtml
new file mode 100644
index 0000000..bb89325
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-3.4.xhtml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section3.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-3.3.xhtml" style="margin-right: 10px;">Previous Section 3.3 Scroll Bars</a><a href="section-3.5.xhtml" style="margin-right: 10px;">Next Section 3.5 Radio Buttons and Toggles</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-3.4">
+<h2 class="sectiontitle">3.4  Input Areas</h2>
+
+
+<a name="ugHyperInput" class="label"/>
+
+
+<p>Input areas are boxes where you can put data.
+</p>
+
+
+<p>To enter characters, first move your mouse cursor to somewhere within
+the HyperDoc page.  Characters that you type are inserted in front of
+the underscore.  This means that when you type characters at your
+keyboard, they go into this first input area.
+</p>
+
+
+<p>The input area grows to accommodate as many characters as you type.
+Use the <span style="font-weight: bold;"> Backspace</span> key to erase characters to the left.  To
+modify what you type, use the right-arrow  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2192;</mo></mstyle></math> and
+left-arrow keys  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2190;</mo></mstyle></math> and the keys <span style="font-weight: bold;"> Insert</span>,
+<span style="font-weight: bold;"> Delete</span>, <span style="font-weight: bold;"> Home</span> and <span style="font-weight: bold;"> End</span>.  These keys are
+found immediately on the right of the standard IBM keyboard.
+</p>
+
+
+<p>If you press the <span style="font-weight: bold;"> Home</span> key, the cursor moves to the
+beginning of the line and if you press the <span style="font-weight: bold;"> End</span> key, the
+cursor moves to the end of the line.  Pressing 
+<span style="font-weight: bold;"> Ctrl</span>--<span style="font-weight: bold;"> End</span> deletes all the text from the 
+cursor to the end of the line.
+</p>
+
+
+<p>A page may have more than one input area.  Only one input area has an
+underscore cursor.  When you first see apage, the top-most input area
+contains the cursor.  To type information into another input area, use
+the <span style="font-weight: bold;"> Enter</span> or <span style="font-weight: bold;"> Tab</span> key to move from one input area to
+xanother.  To move in the reverse order, use <span style="font-weight: bold;"> Shift</span>--<span style="font-weight: bold;"> Tab</span>.
+</p>
+
+
+<p>You can also move from one input area to another using your mouse.
+Notice that each input area is active. Click on one of the areas.
+As you can see, the underscore cursor moves to that window.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-3.3.xhtml" style="margin-right: 10px;">Previous Section 3.3 Scroll Bars</a><a href="section-3.5.xhtml" style="margin-right: 10px;">Next Section 3.5 Radio Buttons and Toggles</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-3.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-3.5.xhtml
new file mode 100644
index 0000000..dccfa17
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-3.5.xhtml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section3.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-3.4.xhtml" style="margin-right: 10px;">Previous Section 3.4 Input Areas</a><a href="section-3.6.xhtml" style="margin-right: 10px;">Next Section 3.6 Search Strings</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-3.5">
+<h2 class="sectiontitle">3.5  Radio Buttons and Toggles</h2>
+
+
+<a name="ugHyperButtons" class="label"/>
+
+
+<p>Some pages have <span class="italic">radio buttons</span> and <span class="italic">toggles</span>.
+Radio buttons are a group of buttons like those on car radios: you can
+select only one at a time.
+</p>
+
+
+<p>Once you have selected a button, it appears to be inverted and
+contains a checkmark.  To change the selection, move the cursor with
+the mouse to a different radio button and click.
+</p>
+
+
+<p>A toggle is an independent button that displays some on/off state.
+When ``on'', the button appears to be inverted and contains a
+checkmark.  When ``off'', the button is raised.
+</p>
+
+
+<p>Unlike radio buttons, you can set a group of them any way you like.
+To change toggle the selection, move the cursor with the mouse to the
+button and click.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-3.4.xhtml" style="margin-right: 10px;">Previous Section 3.4 Input Areas</a><a href="section-3.6.xhtml" style="margin-right: 10px;">Next Section 3.6 Search Strings</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-3.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-3.6.xhtml
new file mode 100644
index 0000000..916a4f7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-3.6.xhtml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section3.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-3.5.xhtml" style="margin-right: 10px;">Previous Section 3.5 Radio Buttons and Toggles</a><a href="section-3.7.xhtml" style="margin-right: 10px;">Next Section 3.7 Example Pages</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-3.6">
+<h2 class="sectiontitle">3.6  Search Strings</h2>
+
+
+<a name="ugHyperSearch" class="label"/>
+
+
+<p>A <span class="italic">search string</span> is used for searching some database.  To learn
+about search strings, we suggest that you bring up the HyperDoc
+glossary.  To do this from the top-level page of HyperDoc:
+</p>
+
+
+
+<ol>
+<li>
+ Click on Reference, bringing up the Axiom Reference page.
+</li>
+<li> Click on Glossary, bringing up the glossary.
+</li>
+</ol>
+
+
+
+<p>The glossary has an input area at its bottom.  We review the various
+kinds of search strings you can enter to search the glossary.
+</p>
+
+
+<p>The simplest search string is a word, for example, <span class="teletype">operation</span>.  A
+word only matches an entry having exactly that spelling.  Enter the
+word <span class="teletype">operation</span> into the input area above then click on 
+<span style="font-weight: bold;"> Search</span>.  As you can see, <span class="teletype">operation</span> matches only one entry,
+namely with <span class="teletype">operation</span> itself.
+</p>
+
+
+<p>Normally matching is insensitive to whether the alphabetic characters
+of your search string are in uppercase or lowercase.  Thus 
+<span class="teletype">operation</span> and <span class="teletype">OperAtion</span> both have the same effect.
+If you prefer that matching be case-sensitive, issue the command
+<span class="teletype">set HHyperName mixedCase</span> command to the interpreter.
+</p>
+
+
+<p>You will very often want to use the wildcard ``<span class="teletype">*</span>'' in your search
+string so as to match multiple entries in the list.  The search key
+``<span class="teletype">*</span>'' matches every entry in the list.  You can also use ``<span class="teletype">*</span>''
+anywhere within a search string to match an arbitrary substring.  Try
+``<span class="teletype">cat*</span>'' for example: enter ``<span class="teletype">cat*</span>'' into the input area and click
+on <span style="font-weight: bold;"> Search</span>.  This matches several entries.
+</p>
+
+
+<p>You use any number of wildcards in a search string as long as they are
+not adjacent.  Try search strings such as ``<span class="teletype">*dom*</span>''.  As you see,
+this search string matches ``<span class="teletype">domain</span>'', ``<span class="teletype">domain constructor</span>'',
+``<span class="teletype">subdomain</span>'', and so on.
+</p>
+
+
+
+<a name="subsec-3.6.1"/>
+<div class="subsection"  id="subsec-3.6.1">
+<h3 class="subsectitle">3.6.1  Logical Searches</h3>
+
+
+<a name="ugLogicalSearches" class="label"/>
+
+
+<p>For more complicated searches, you can use ``<span class="teletype">and</span>'', ``<span class="teletype">or</span>'', and
+``<span class="teletype">not</span>'' with basic search strings; write logical expressions using
+these three operators just as in the Axiom language.  For example,
+<span class="teletype">domain or package</span> matches the two entries <span class="teletype">domain</span> and 
+<span class="teletype">package</span>.  Similarly, ``<span class="teletype">dom* and *con*</span>'' matches 
+``<span class="teletype">domain constructor</span>'' and others.  Also ``<span class="teletype">not *a*</span>'' matches 
+every entry that does not contain the letter ``<span class="teletype">a</span>'' somewhere.
+</p>
+
+
+<p>Use parentheses for grouping.  For example, ``<span class="teletype">dom* and (not *con*)</span>''
+matches ``<span class="teletype">domain</span>'' but not ``<span class="teletype">domain constructor</span>''.
+</p>
+
+
+<p>There is no limit to how complex your logical expression can be.
+For example,
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">a* or b* or c* or d* or e* and (not *a*)</span>
+</p>
+
+
+
+</div>
+
+
+<p>is a valid expression.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-3.5.xhtml" style="margin-right: 10px;">Previous Section 3.5 Radio Buttons and Toggles</a><a href="section-3.7.xhtml" style="margin-right: 10px;">Next Section 3.7 Example Pages</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-3.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-3.7.xhtml
new file mode 100644
index 0000000..8bae56d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-3.7.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section3.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-3.6.xhtml" style="margin-right: 10px;">Previous Section 3.6 Search Strings</a><a href="section-3.8.xhtml" style="margin-right: 10px;">Next Section 3.8 X Window Resources for HyperDoc</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-3.7">
+<h2 class="sectiontitle">3.7  Example Pages</h2>
+
+
+<a name="ugHyperExample" class="label"/>
+
+
+<p>Many pages have Axiom example commands.
+</p>
+
+
+<p>Each command has an active ``button'' along the left margin.  When you
+click on this button, the output for the command is ``pasted-in.''
+Click again on the button and you see that the pasted-in output
+disappears.
+</p>
+
+
+<p>Maybe you would like to run an example?  To do so, just click on any
+part of its text!  When you do, the example line is copied into a new
+interactive Axiom buffer for this HyperDoc page.
+</p>
+
+
+<p>Sometimes one example line cannot be run before you run an earlier one.
+Don't worry---HyperDoc automatically runs all the necessary
+lines in the right order!
+</p>
+
+
+<p>The new interactive Axiom buffer disappears when you leave HyperDoc.
+If you want to get rid of it beforehand, use the <span style="font-weight: bold;"> Cancel</span> button
+of the X Window manager or issue the Axiom system command 
+<span class="teletype">)close.</span>  <span class="index">close</span><a name="chapter-3-2"/>
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-3.6.xhtml" style="margin-right: 10px;">Previous Section 3.6 Search Strings</a><a href="section-3.8.xhtml" style="margin-right: 10px;">Next Section 3.8 X Window Resources for HyperDoc</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-3.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-3.8.xhtml
new file mode 100644
index 0000000..c379b2e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-3.8.xhtml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section3.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-3.7.xhtml" style="margin-right: 10px;">Previous Section 3.7 Example Pages</a><a href="section-4.0.xhtml" style="margin-right: 10px;">Next Section 4.0 Input Files and Output Styles</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-3.8">
+<h2 class="sectiontitle">3.8  X Window Resources for HyperDoc</h2>
+
+
+<a name="ugHyperResources" class="label"/>
+
+
+<p>You can control the appearance of HyperDoc while running under Version
+11 <span class="index">HyperDoc X Window System defaults</span><a name="chapter-3-3"/> of the X Window System by
+placing the following resources <span class="index">X Window System</span><a name="chapter-3-4"/> in the file
+<span style="font-weight: bold;"> .Xdefaults</span> in your home directory.  <span class="index">file:.Xdefaults</span><a name="chapter-3-5"/> 
+In what follows, <span class="italic">font</span> is any valid X11 font name
+<span class="index">font</span><a name="chapter-3-6"/> (for example, <span class="teletype">Rom14</span>) and <span class="italic">color</span> is any valid
+X11 color <span class="index">color</span><a name="chapter-3-7"/> specification (for example, <span class="teletype">NavyBlue</span>).
+For more information about fonts and colors, refer to the X Window
+documentation for your system.
+</p>
+
+
+
+<dl>
+<dt><span class="teletype">Axiom.hyperdoc.RmFont:</span> <span class="italic">font</span></dt>
+<dd> &nbsp;
+This is the standard text font.  
+The default value is <span class="teletype">Rom14</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.RmColor:</span> <span class="italic">color</span></dt>
+<dd> &nbsp;
+This is the standard text color.  
+The default value is <span class="teletype">black</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.ActiveFont:</span> <span class="italic">font</span></dt>
+<dd> &nbsp;
+This is the font used for HyperDoc link buttons.  
+The default value is <span class="teletype">Bld14</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.ActiveColor:</span> <span class="italic">color</span></dt>
+<dd> &nbsp;
+This is the color used for HyperDoc link buttons.  
+The default value is <span class="teletype">black</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.AxiomFont:</span> <span class="italic">font</span></dt>
+<dd> &nbsp;
+This is the font used for active Axiom commands.
+The default value is <span class="teletype">Bld14</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.AxiomColor:</span> <span class="italic">color</span></dt>
+<dd> &nbsp;
+This is the color used for active Axiom commands.
+The default value is <span class="teletype">black</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.BoldFont:</span> <span class="italic">font</span></dt>
+<dd> &nbsp;
+This is the font used for bold face.  
+The default value is <span class="teletype">Bld14</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.BoldColor:</span> <span class="italic">color</span></dt>
+<dd> &nbsp;
+This is the color used for bold face.  
+The default value is <span class="teletype">black</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.TtFont:</span> <span class="italic">font</span></dt>
+<dd> &nbsp;
+This is the font used for Axiom output in HyperDoc.
+This font must be fixed-width.  
+The default value is <span class="teletype">Rom14</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.TtColor:</span> <span class="italic">color</span></dt>
+<dd> &nbsp;
+This is the color used for Axiom output in HyperDoc.
+The default value is <span class="teletype">black</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.EmphasizeFont:</span> <span class="italic">font</span></dt>
+<dd> &nbsp;
+This is the font used for italics.  
+The default value is <span class="teletype">Itl14</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.EmphasizeColor:</span> <span class="italic">color</span></dt>
+<dd> &nbsp;
+This is the color used for italics.  
+The default value is <span class="teletype">black</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.InputBackground:</span> <span class="italic">color</span></dt>
+<dd> &nbsp;
+This is the color used as the background for input areas.
+The default value is <span class="teletype">black</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.InputForeground:</span> <span class="italic">color</span></dt>
+<dd> &nbsp;
+This is the color used as the foreground for input areas.
+The default value is <span class="teletype">white</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.BorderColor:</span> <span class="italic">color</span></dt>
+<dd> &nbsp;
+This is the color used for drawing border lines.
+The default value is <span class="teletype">black</span>
+</dd>
+<dt><span class="teletype">Axiom.hyperdoc.Background:</span> <span class="italic">color</span></dt>
+<dd> &nbsp;
+This is the color used for the background of all windows.
+The default value is <span class="teletype">white</span>
+</dd>
+</dl>
+
+
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-3.7.xhtml" style="margin-right: 10px;">Previous Section 3.7 Example Pages</a><a href="section-4.0.xhtml" style="margin-right: 10px;">Next Section 4.0 Input Files and Output Styles</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-4.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-4.0.xhtml
new file mode 100644
index 0000000..98063c9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-4.0.xhtml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section4.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-3.8.xhtml" style="margin-right: 10px;">Previous Section 3.8  X Window Resources for HyperDoc</a><a href="section-4.1.xhtml" style="margin-right: 10px;">Next Section 4.1 Input Files</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-4.0">
+<h2 class="sectiontitle">4.0 Input Files and Output Styles</h2>
+<a name="ugInOut" class="label"/>
+
+<p>In this chapter we discuss how to collect Axiom statements
+and commands into files and then read the contents into the
+workspace.
+We also show how to display the results of your computations in
+several different styles including <span class="texlogo">TeX</span>, FORTRAN and
+monospace two-dimensional format.<span class="footnote"><span class="texlogo">TeX</span> is a
+trademark of the American Mathematical Society.</span>
+</p>
+
+
+<p>The printed version of this book uses the Axiom <span class="texlogo">TeX</span> output formatter.
+When we demonstrate a particular output style, we will need to turn
+<span class="texlogo">TeX</span> formatting off and the output style on so that the correct output
+is shown in the text.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-3.8.xhtml" style="margin-right: 10px;">Previous Section 3.8  X Window Resources for HyperDoc</a><a href="section-4.1.xhtml" style="margin-right: 10px;">Next Section 4.1 Input Files</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-4.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-4.1.xhtml
new file mode 100644
index 0000000..12cfb80
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-4.1.xhtml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section4.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-4.0.xhtml" style="margin-right: 10px;">Previous Section 4.0 Input Files and Output Styles</a><a href="section-4.2.xhtml" style="margin-right: 10px;">Next Section 4.2 The .axiom.input File</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-4.1">
+<h2 class="sectiontitle">4.1  Input Files</h2>
+
+
+<a name="ugInOutIn" class="label"/>
+
+
+<p>In this section we explain what an <span class="italic">input file</span> is and
+<span class="index">file:input</span><a name="chapter-4-0"/> why you would want to know about it.  We discuss
+where Axiom looks for input files and how you can direct it to look
+elsewhere.  We also show how to read the contents of an input file
+into the <span class="italic">workspace</span> and how to use the <span class="italic">history</span> facility to
+generate an input file from the statements you have entered directly
+into the workspace.
+</p>
+
+
+<p>An <span class="italic">input</span> file contains Axiom expressions and system commands.
+Anything that you can enter directly to Axiom can be put into an input
+file.  This is how you save input functions and expressions that you
+wish to read into Axiom more than one time.
+</p>
+
+
+<p>To read an input file into Axiom, use the <span class="teletype">)read</span> system command.
+<span class="index">read</span><a name="chapter-4-1"/> For example, you can read a file in a particular
+directory by issuing
+</p>
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;/spad/src/input/matrix.input<br />
+</div>
+
+
+
+<p>The ``<span style="font-weight: bold;">.input</span>'' is optional; this also works:
+</p>
+
+
+
+<div class="verbatim"><br />
+)read&nbsp;/spad/src/input/matrix<br />
+</div>
+
+
+
+<p>What happens if you just enter <span class="teletype">)read matrix.input</span> or even <span class="teletype">)read matrix</span>?  Axiom looks in your current working directory for
+input files that are not qualified by a directory name.  Typically,
+this directory is the directory from which you invoked Axiom.
+</p>
+
+
+<p>To change the current working directory, use the <span class="teletype">)cd</span> system
+command.  The command <span class="teletype">)cd</span> by itself shows the current working
+<span class="index">directory:default for searching</span><a name="chapter-4-2"/> directory.  <span class="index">cd</span><a name="chapter-4-3"/> To
+change it to <span class="index">file:input:where found</span><a name="chapter-4-4"/> the <span class="teletype">src/input</span>
+subdirectory for user ``babar'', issue
+</p>
+
+
+
+<div class="verbatim"><br />
+)cd&nbsp;/u/babar/src/input<br />
+</div>
+
+
+<p>Axiom looks first in this directory for an input file.  If it is not
+found, it looks in the system's directories, assuming you meant some
+input file that was provided with Axiom.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>If you have the Axiom history facility turned on (which it is
+by default), you can save all the lines you have entered into the
+workspace by entering
+</p>
+
+
+<p>)history )write
+</p>
+
+
+<p><span class="index">history )write</span><a name="chapter-4-5"/>
+</p>
+
+
+<p>Axiom tells you what input file to edit to see your statements.  The
+file is in your home directory or in the directory you specified with
+<span class="index">cd</span><a name="chapter-4-6"/> <span class="teletype">)cd</span>.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>In <a href="section-5.2.xhtml#ugLangBlocks" class="ref" >ugLangBlocks</a>  
+we discuss using indentation in input files to
+group statements into <span class="italic">blocks.</span>
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-4.0.xhtml" style="margin-right: 10px;">Previous Section 4.0 Input Files and Output Styles</a><a href="section-4.2.xhtml" style="margin-right: 10px;">Next Section 4.2 The .axiom.input File</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-4.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-4.2.xhtml
new file mode 100644
index 0000000..d96d1dc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-4.2.xhtml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section4.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-4.1.xhtml" style="margin-right: 10px;">Previous Section 4.1 Input Files</a><a href="section-4.3.xhtml" style="margin-right: 10px;">Next Section 4.3 Common Features of Using Output Formats</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-4.2">
+<h2 class="sectiontitle">4.2  The .axiom.input File</h2>
+
+
+<a name="ugInOutSpadprof" class="label"/>
+
+
+<p>When Axiom starts up, it tries to read the input file <span style="font-weight: bold;">
+.axiom.input</span>  (<span class="footnote"><span style="font-weight: bold;">.axiom.input</span> used to be called 
+<span style="font-weight: bold;">axiom.input</span> in the NAG version</span>)
+from your home <span class="index">start-up profile file</span><a name="chapter-4-7"/>
+directory. <span class="index">file:start-up profile</span><a name="chapter-4-8"/> It
+there is no <span style="font-weight: bold;">.axiom.input</span> in your home directory, it reads the
+copy located in its own <span style="font-weight: bold;">src/input</span> directory.
+<span class="index">file:.axiom.input @<span style="font-weight: bold;">.axiom.input</span><a name="chapter-4-9"/></span> The file usually
+contains system commands to personalize your Axiom environment.  In
+the remainder of this section we mention a few things that users
+frequently place in their <span style="font-weight: bold;">.axiom.input</span> files.
+</p>
+
+
+<p>In order to have FORTRAN output always produced from your
+computations, place the system command <span class="teletype">)set output fortran on</span> in
+<span style="font-weight: bold;">.axiom.input</span>.  <span class="index">quit</span><a name="chapter-4-10"/> If you do not want to be prompted
+for confirmation when you issue the <span class="teletype">)quit</span> system command, place
+<span class="teletype">)set quit unprotected</span> in <span style="font-weight: bold;">.axiom.input</span>.  
+<span class="index">set quit unprotected</span><a name="chapter-4-11"/> 
+If you then decide that you do want to be prompted, issue
+<span class="teletype">)set quit protected</span>.  <span class="index">set quit protected</span><a name="chapter-4-12"/> This is the
+default setting so that new users do not leave Axiom
+inadvertently.<span class="footnote">The system command <span class="teletype">)pquit</span> always
+prompts you for confirmation.</span>
+</p>
+
+
+<p>To see the other system variables you can set, issue <span class="teletype">)set</span>
+or use the HyperDoc <span style="font-weight: bold;">Settings</span> facility to view and change
+Axiom system variables.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-4.1.xhtml" style="margin-right: 10px;">Previous Section 4.1 Input Files</a><a href="section-4.3.xhtml" style="margin-right: 10px;">Next Section 4.3 Common Features of Using Output Formats</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-4.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-4.3.xhtml
new file mode 100644
index 0000000..b23b96f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-4.3.xhtml
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section4.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-4.2.xhtml" style="margin-right: 10px;">Previous Section 4.2 The .axiom.input File</a><a href="section-4.4.xhtml" style="margin-right: 10px;">Next Section 4.4 Monospace Two-Dimensional Mathematical Format</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-4.3">
+<h2 class="sectiontitle">4.3  Common Features of Using Output Formats</h2>
+
+
+<a name="ugInOutOut" class="label"/>
+
+
+<p>In this section we discuss how to start and stop the display
+<span class="index">output formats:common features</span><a name="chapter-4-13"/> of the different output formats
+and how to send the output to the screen or to a file.
+<span class="index">file:sending output to</span><a name="chapter-4-14"/> To fix ideas, we use FORTRAN output
+format for most of the examples.
+</p>
+
+
+<p>You can use the <span class="teletype">)set output</span> system <span class="index">output
+formats:starting</span><a name="chapter-4-15"/> command to <span class="index">output formats:stopping</span><a name="chapter-4-16"/> toggle or
+redirect the different kinds of output.  <span class="index">set output</span><a name="chapter-4-17"/> The name
+of the kind of output follows ``output'' in the command.  The names are
+</p>
+
+
+<p><table class="begintabular">
+<tr><td><span style="font-weight: bold;">fortran</span> </td><td> for FORTRAN output. </td></tr>
+<tr><td><span style="font-weight: bold;">algebra</span> </td><td> for monospace two-dimensional mathematical output. </td></tr>
+<tr><td><span style="font-weight: bold;">tex</span>     </td><td> for <span class="texlogo">TeX</span> output. </td></tr>
+<tr><td><span style="font-weight: bold;">script</span>  </td><td> for IBM Script Formula Format output. </td></tr>
+</table>
+</p>
+
+
+<p>For example, issue <span class="teletype">)set output fortran on</span> to turn on FORTRAN
+format and issue <span class="teletype">)set output fortran off</span> to turn it off.  By
+default, <span class="teletype">algebra</span> is <span class="teletype">on</span> and all others are <span class="teletype">off</span>.
+<span class="index">set output fortran</span><a name="chapter-4-18"/> When output is started, it is sent to the
+screen.  To send the output to a file, give the file name without
+<span class="index">output formats:sending to file</span><a name="chapter-4-19"/> directory or extension.  Axiom
+appends a file extension depending on the kind of output being
+produced.
+</p>
+
+
+<p>Issue this to redirect FORTRAN output to, for example, the file
+<span style="font-weight: bold;">linalg.sfort</span>.
+</p>
+
+
+
+<div id="spadComm4-1" class="spadComm" >
+<form id="formComm4-1" action="javascript:makeRequest('4-1');" >
+<input id="comm4-1" type="text" class="command" style="width: 18em;" value=")set output fortran linalg" />
+</form>
+<span id="commSav4-1" class="commSav" >)set output fortran linalg</span>
+<div id="mathAns4-1" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;FORTRAN&nbsp;output&nbsp;will&nbsp;be&nbsp;written&nbsp;to&nbsp;file&nbsp;linalg.sfort&nbsp;.<br />
+</div>
+
+
+
+<p>You must <span class="italic">also</span> turn on the creation of FORTRAN output.
+The above just says where it goes if it is created.
+</p>
+
+
+
+<div id="spadComm4-2" class="spadComm" >
+<form id="formComm4-2" action="javascript:makeRequest('4-2');" >
+<input id="comm4-2" type="text" class="command" style="width: 15em;" value=")set output fortran on" />
+</form>
+<span id="commSav4-2" class="commSav" >)set output fortran on</span>
+<div id="mathAns4-2" ></div>
+</div>
+
+
+
+<p>In what directory is this output placed?  It goes into the directory
+from which you started Axiom, or if you have used the <span class="teletype">)cd</span>
+system command, the one that you specified with <span class="teletype">)cd</span>.
+<span class="index">cd</span><a name="chapter-4-20"/> You should use <span class="teletype">)cd</span> before you send the output to the file.
+</p>
+
+
+<p>You can always direct output back to the screen by issuing this.
+<span class="index">output formats:sending to screen</span><a name="chapter-4-21"/>
+</p>
+
+
+
+<div id="spadComm4-3" class="spadComm" >
+<form id="formComm4-3" action="javascript:makeRequest('4-3');" >
+<input id="comm4-3" type="text" class="command" style="width: 18em;" value=")set output fortran console" />
+</form>
+<span id="commSav4-3" class="commSav" >)set output fortran console</span>
+<div id="mathAns4-3" ></div>
+</div>
+
+
+
+<p>Let's make sure FORTRAN formatting is off so that nothing we
+do from now on produces FORTRAN output.
+</p>
+
+
+
+<div id="spadComm4-4" class="spadComm" >
+<form id="formComm4-4" action="javascript:makeRequest('4-4');" >
+<input id="comm4-4" type="text" class="command" style="width: 16em;" value=")set output fortran off" />
+</form>
+<span id="commSav4-4" class="commSav" >)set output fortran off</span>
+<div id="mathAns4-4" ></div>
+</div>
+
+
+
+<p>We also delete the demonstrated output file we created.
+</p>
+
+
+
+<div id="spadComm4-5" class="spadComm" >
+<form id="formComm4-5" action="javascript:makeRequest('4-5');" >
+<input id="comm4-5" type="text" class="command" style="width: 16em;" value=")system rm linalg.sfort" />
+</form>
+<span id="commSav4-5" class="commSav" >)system rm linalg.sfort</span>
+<div id="mathAns4-5" ></div>
+</div>
+
+
+
+<p>You can abbreviate the words ``<span class="teletype">on</span>,'' ``<span class="teletype">off</span>,'' and 
+``<span class="teletype">console</span>'' to the minimal number of characters needed to distinguish
+them.  Because of this, you cannot send output to files called 
+<span style="font-weight: bold;">on.sfort, off.sfort, of.sfort, console.sfort, consol.sfort</span> and so on.
+</p>
+
+
+<p>The width of the output on the page is set by <span class="index">output
+formats:line length</span><a name="chapter-4-22"/> <span class="teletype">)set output length</span> for all formats except
+FORTRAN.  <span class="index">set output length</span><a name="chapter-4-23"/> Use <span class="teletype">)set fortran fortlength</span>
+to change the FORTRAN line length from its default value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>72</mn></mstyle></math>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-4.2.xhtml" style="margin-right: 10px;">Previous Section 4.2 The .axiom.input File</a><a href="section-4.4.xhtml" style="margin-right: 10px;">Next Section 4.4 Monospace Two-Dimensional Mathematical Format</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-4.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-4.4.xhtml
new file mode 100644
index 0000000..98f8182
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-4.4.xhtml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section4.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-4.3.xhtml" style="margin-right: 10px;">Previous Section 4.3 Common Features of Using Output Formats</a><a href="section-4.5.xhtml" style="margin-right: 10px;">Next Section 4.5 TeX Format</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-4.4">
+<h2 class="sectiontitle">4.4  Monospace Two-Dimensional Mathematical Format</h2>
+
+
+<a name="ugInOutAlgebra" class="label"/>
+
+
+<p>This is the default output format for Axiom.  
+It is usually on when you start the system.  
+<span class="index">set output algebra</span><a name="chapter-4-24"/> 
+<span class="index">output formats:monospace 2D</span><a name="chapter-4-25"/> 
+<span class="index">monospace 2D output format</span><a name="chapter-4-26"/>
+</p>
+
+
+<p>If it is not, issue this.
+</p>
+
+
+
+<div id="spadComm4-6" class="spadComm" >
+<form id="formComm4-6" action="javascript:makeRequest('4-6');" >
+<input id="comm4-6" type="text" class="command" style="width: 15em;" value=")set output algebra on" />
+</form>
+<span id="commSav4-6" class="commSav" >)set output algebra on</span>
+<div id="mathAns4-6" ></div>
+</div>
+
+
+
+<p>Since the printed version of this book (as opposed to the HyperDoc
+version) shows output produced by the <span class="texlogo">TeX</span> output formatter, let us
+temporarily turn off <span class="texlogo">TeX</span> output.
+</p>
+
+
+
+<div id="spadComm4-7" class="spadComm" >
+<form id="formComm4-7" action="javascript:makeRequest('4-7');" >
+<input id="comm4-7" type="text" class="command" style="width: 13em;" value=")set output tex off" />
+</form>
+<span id="commSav4-7" class="commSav" >)set output tex off</span>
+<div id="mathAns4-7" ></div>
+</div>
+
+
+
+<p>Here is an example of what it looks like.
+</p>
+
+
+
+<div id="spadComm4-8" class="spadComm" >
+<form id="formComm4-8" action="javascript:makeRequest('4-8');" >
+<input id="comm4-8" type="text" class="command" style="width: 40em;" value="matrix [ [i*x**i + j*%i*y**j for i in 1..2] for j in 3..4]" />
+</form>
+<span id="commSav4-8" class="commSav" >matrix [ [i*x**i + j*%i*y**j for i in 1..2] for j in 3..4]</span>
+<div id="mathAns4-8" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|3%i&nbsp;y&nbsp;&nbsp;+&nbsp;x&nbsp;&nbsp;3%i&nbsp;y&nbsp;&nbsp;+&nbsp;2x&nbsp;|<br />
+&nbsp;&nbsp;&nbsp;(1)&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2|<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+4%i&nbsp;y&nbsp;&nbsp;+&nbsp;x&nbsp;&nbsp;4%i&nbsp;y&nbsp;&nbsp;+&nbsp;2x&nbsp;+<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Complex Integer
+</div>
+
+
+
+<p>Issue this to turn off this kind of formatting.
+</p>
+
+
+
+<div id="spadComm4-9" class="spadComm" >
+<form id="formComm4-9" action="javascript:makeRequest('4-9');" >
+<input id="comm4-9" type="text" class="command" style="width: 16em;" value=")set output algebra off" />
+</form>
+<span id="commSav4-9" class="commSav" >)set output algebra off</span>
+<div id="mathAns4-9" ></div>
+</div>
+
+
+
+<p>Turn <span class="texlogo">TeX</span> output on again.
+</p>
+
+
+
+<div id="spadComm4-10" class="spadComm" >
+<form id="formComm4-10" action="javascript:makeRequest('4-10');" >
+<input id="comm4-10" type="text" class="command" style="width: 12em;" value=")set output tex on" />
+</form>
+<span id="commSav4-10" class="commSav" >)set output tex on</span>
+<div id="mathAns4-10" ></div>
+</div>
+
+
+
+<p>The characters used for the matrix brackets above are rather ugly.
+You get this character set when you issue <span class="index">character set</span><a name="chapter-4-27"/> 
+<span class="teletype">)set output characters plain</span>.  <span class="index">set output characters</span><a name="chapter-4-28"/> This
+character set should be used when you are running on a machine that
+does not support the IBM extended ASCII character set.  If you are
+running on an IBM workstation, for example, issue 
+<span class="teletype">)set output characters default</span> to get better looking output.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-4.3.xhtml" style="margin-right: 10px;">Previous Section 4.3 Common Features of Using Output Formats</a><a href="section-4.5.xhtml" style="margin-right: 10px;">Next Section 4.5 TeX Format</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-4.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-4.5.xhtml
new file mode 100644
index 0000000..1a1844e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-4.5.xhtml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section4.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-4.4.xhtml" style="margin-right: 10px;">Previous Section 4.4 Monospace Two-Dimensional Mathematical Format</a><a href="section-4.6.xhtml" style="margin-right: 10px;">Next Section 4.6 IBM Script Formula Format</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-4.5">
+<h2 class="sectiontitle">4.5  TeX Format</h2>
+
+
+<a name="ugInOutTeX" class="label"/>
+
+
+<p>Axiom can produce <span class="texlogo">TeX</span> output for your <span class="index">output formats:TeX
+@{<span class="texlogo">TeX</span>}</span><a name="chapter-4-29"/> expressions.  <span class="index">TeX output format @{<span class="texlogo">TeX</span>} output format</span><a name="chapter-4-30"/>
+The output is produced using macros from the LaTeX document
+preparation system by Leslie Lamport\cite{1}. The printed version
+of this book was produced using this formatter.
+</p>
+
+
+<p>To turn on <span class="texlogo">TeX</span> output formatting, issue this.
+<span class="index">set output tex</span><a name="chapter-4-31"/>
+</p>
+
+
+
+<div id="spadComm4-11" class="spadComm" >
+<form id="formComm4-11" action="javascript:makeRequest('4-11');" >
+<input id="comm4-11" type="text" class="command" style="width: 12em;" value=")set output tex on" />
+</form>
+<span id="commSav4-11" class="commSav" >)set output tex on</span>
+<div id="mathAns4-11" ></div>
+</div>
+
+
+
+<p>Here is an example of its output.
+</p>
+
+
+
+<div class="verbatim"><br />
+matrix&nbsp;[&nbsp;[i*x**i&nbsp;+&nbsp;j*%i*y**j&nbsp;for&nbsp;i&nbsp;in&nbsp;1..2]&nbsp;for&nbsp;j&nbsp;in&nbsp;3..4]<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+\left[<br />
+\begin{array}{cc}<br />
+{{3&nbsp;&amp;nbsp;&nbsp;i&nbsp;&amp;nbsp;&nbsp;{y&nbsp;\sp&nbsp;3}}+x}&nbsp;&amp;&nbsp;<br />
+{{3&nbsp;&amp;nbsp;&nbsp;i&nbsp;&amp;nbsp;&nbsp;{y&nbsp;\sp&nbsp;3}}+{2&nbsp;&amp;nbsp;&nbsp;{x&nbsp;\sp&nbsp;2}}}&nbsp;\&amp;nbsp;<br />
+{{4&nbsp;&amp;nbsp;&nbsp;i&nbsp;&amp;nbsp;&nbsp;{y&nbsp;\sp&nbsp;4}}+x}&nbsp;&amp;&nbsp;<br />
+{{4&nbsp;&amp;nbsp;&nbsp;i&nbsp;&amp;nbsp;&nbsp;{y&nbsp;\sp&nbsp;4}}+{2&nbsp;&amp;nbsp;&nbsp;{x&nbsp;\sp&nbsp;2}}}&nbsp;<br />
+\end{array}<br />
+\right]<br />
+</div>
+
+
+
+
+<p>This formats as
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>i</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mi>x</mi></mrow></mtd><mtd><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>i</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>i</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mi>x</mi></mrow></mtd><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>i</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</p>
+
+
+<p>To turn <span class="texlogo">TeX</span> output formatting off, issue 
+<span class="teletype">)set output tex off</span>.
+The LaTeX macros in the output generated by Axiom
+are all standard except for the following definitions:
+</p>
+
+
+
+<div class="verbatim"><br />
+\def\csch{\mathop&nbsp;csch\nolimits}<br />
+<br />
+\def\erf{\mathop&nbsp;erf\nolimits}<br />
+<br />
+\def\zag#1#2{<br />
+&nbsp;&nbsp;{{&nbsp;\left.&nbsp;{#1}&nbsp;\right|}<br />
+&nbsp;&nbsp;&nbsp;\over<br />
+&nbsp;&nbsp;&nbsp;{\left|&nbsp;{#2}&nbsp;\right.&nbsp;}<br />
+&nbsp;&nbsp;}<br />
+}<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-4.4.xhtml" style="margin-right: 10px;">Previous Section 4.4 Monospace Two-Dimensional Mathematical Format</a><a href="section-4.6.xhtml" style="margin-right: 10px;">Next Section 4.6 IBM Script Formula Format</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-4.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-4.6.xhtml
new file mode 100644
index 0000000..4af90a2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-4.6.xhtml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section4.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-4.5.xhtml" style="margin-right: 10px;">Previous Section 4.5 TeX Format</a><a href="section-4.7.xhtml" style="margin-right: 10px;">Next Section 4.7 FORTRAN Format</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-4.6">
+<h2 class="sectiontitle">4.6  IBM Script Formula Format</h2>
+
+
+<a name="ugInOutScript" class="label"/>
+
+
+<p>Axiom can <span class="index">output formats:IBM Script Formula Format</span><a name="chapter-4-32"/> produce IBM
+Script Formula Format output for your 
+<span class="index">IBM Script Formula Format</span><a name="chapter-4-33"/> expressions.
+</p>
+
+
+<p>To turn IBM Script Formula Format on, issue this.
+<span class="index">set output script</span><a name="chapter-4-34"/>
+</p>
+
+
+
+<div id="spadComm4-12" class="spadComm" >
+<form id="formComm4-12" action="javascript:makeRequest('4-12');" >
+<input id="comm4-12" type="text" class="command" style="width: 14em;" value=")set output script on" />
+</form>
+<span id="commSav4-12" class="commSav" >)set output script on</span>
+<div id="mathAns4-12" ></div>
+</div>
+
+
+
+<p>Here is an example of its output.
+</p>
+
+
+
+<div class="verbatim"><br />
+matrix&nbsp;[&nbsp;[i*x**i&nbsp;+&nbsp;j*%i*y**j&nbsp;for&nbsp;i&nbsp;in&nbsp;1..2]&nbsp;for&nbsp;j&nbsp;in&nbsp;3..4]<br />
+<br />
+.eq&nbsp;set&nbsp;blank&nbsp;@<br />
+:df.<br />
+&lt;left&nbsp;lb&nbsp;&lt;&nbsp;&lt;&nbsp;&lt;&nbsp;&lt;3&nbsp;@@&nbsp;%i&nbsp;@@&nbsp;&lt;y&nbsp;sup&nbsp;3&gt;&nbsp;&gt;+x&gt;&nbsp;here&nbsp;&lt;&nbsp;&lt;3&nbsp;@@&nbsp;%i&nbsp;@@<br />
+&lt;y&nbsp;sup&nbsp;3&gt;&nbsp;&gt;+&lt;2&nbsp;@@&nbsp;&lt;x&nbsp;sup&nbsp;2&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;habove&nbsp;&lt;&nbsp;&lt;&nbsp;&lt;4&nbsp;@@&nbsp;%i&nbsp;@@<br />
+&lt;y&nbsp;sup&nbsp;4&gt;&nbsp;&gt;+x&gt;&nbsp;here&nbsp;&lt;&nbsp;&lt;4&nbsp;@@&nbsp;%i&nbsp;@@&nbsp;&lt;y&nbsp;sup&nbsp;4&gt;&nbsp;&gt;+&lt;2&nbsp;@@<br />
+&lt;x&nbsp;up&nbsp;2>&nbsp;>&nbsp;>&nbsp;>&nbsp;>&nbsp;right&nbsp;rb><br />
+:edf.<br />
+</div>
+
+
+
+<p>To turn IBM Script Formula Format output formatting off, issue this.
+</p>
+
+
+
+<div id="spadComm4-13" class="spadComm" >
+<form id="formComm4-13" action="javascript:makeRequest('4-13');" >
+<input id="comm4-13" type="text" class="command" style="width: 15em;" value=")set output script off" />
+</form>
+<span id="commSav4-13" class="commSav" >)set output script off</span>
+<div id="mathAns4-13" ></div>
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-4.5.xhtml" style="margin-right: 10px;">Previous Section 4.5 TeX Format</a><a href="section-4.7.xhtml" style="margin-right: 10px;">Next Section 4.7 FORTRAN Format</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-4.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-4.7.xhtml
new file mode 100644
index 0000000..87155bb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-4.7.xhtml
@@ -0,0 +1,698 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section4.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-4.6.xhtml" style="margin-right: 10px;">Previous Section 4.6 IBM Script Formula Format</a><a href="section-5.0.xhtml" style="margin-right: 10px;">Next Section 5.0 Interactive Language</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-4.7">
+<h2 class="sectiontitle">4.7  FORTRAN Format</h2>
+
+
+<a name="ugInOutFortran" class="label"/>
+
+
+<p>In addition to turning FORTRAN output on and off and stating where the
+<span class="index">output formats:FORTRAN</span><a name="chapter-4-35"/> output should be placed, there are many
+options that control the <span class="index">FORTRAN output format</span><a name="chapter-4-36"/> appearance of
+the generated code.  In this section we describe some of the basic
+options.  Issue <span class="teletype">)set fortran</span> to see a full list with their
+current settings.
+</p>
+
+
+<p>The output FORTRAN expression usually begins in column 7.  If the
+expression needs more than one line, the ampersand character <span class="teletype">&amp;</span>
+is used in column 6.  Since some versions of FORTRAN have restrictions
+on the number of lines per statement, Axiom breaks long expressions
+into segments with a maximum of 1320 characters (20 lines of 66
+characters) per segment.  <span class="index">set fortran</span><a name="chapter-4-37"/> If you want to change
+this, say, to 660 characters, issue the system command 
+<span class="index">set fortran explength</span><a name="chapter-4-38"/> <span class="teletype">)set fortran explength 660</span>.  
+<span class="index">FORTRAN output format:breaking into multiple statements</span><a name="chapter-4-39"/> 
+You can turn off the line breaking by issuing <span class="teletype">)set fortran segment off</span>.
+<span class="index">set fortran segment</span><a name="chapter-4-40"/> Various code optimization levels are available.
+</p>
+
+
+<p>FORTRAN output is produced after you issue this.
+<span class="index">set output fortran</span><a name="chapter-4-41"/>
+</p>
+
+
+
+<div id="spadComm4-14" class="spadComm" >
+<form id="formComm4-14" action="javascript:makeRequest('4-14');" >
+<input id="comm4-14" type="text" class="command" style="width: 15em;" value=")set output fortran on" />
+</form>
+<span id="commSav4-14" class="commSav" >)set output fortran on</span>
+<div id="mathAns4-14" ></div>
+</div>
+
+
+
+<p>For the initial examples, we set the optimization level to 0, which is the
+lowest level.
+<span class="index">set fortran optlevel</span><a name="chapter-4-42"/>
+</p>
+
+
+
+<div id="spadComm4-15" class="spadComm" >
+<form id="formComm4-15" action="javascript:makeRequest('4-15');" >
+<input id="comm4-15" type="text" class="command" style="width: 16em;" value=")set fortran optlevel 0" />
+</form>
+<span id="commSav4-15" class="commSav" >)set fortran optlevel 0</span>
+<div id="mathAns4-15" ></div>
+</div>
+
+
+
+<p>The output is usually in columns 7 through 72, although fewer columns
+are used in the following examples so that the output
+<span class="index">FORTRAN output format:line length</span><a name="chapter-4-43"/>
+fits nicely on the page.
+</p>
+
+
+
+<div id="spadComm4-16" class="spadComm" >
+<form id="formComm4-16" action="javascript:makeRequest('4-16');" >
+<input id="comm4-16" type="text" class="command" style="width: 18em;" value=")set fortran fortlength 60" />
+</form>
+<span id="commSav4-16" class="commSav" >)set fortran fortlength 60</span>
+<div id="mathAns4-16" ></div>
+</div>
+
+
+
+<p>By default, the output goes to the screen and is displayed before the
+standard Axiom two-dimensional output.  In this example, an assignment
+to the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R1</mi></mstyle></math> was generated because this is the result of step 1.
+</p>
+
+
+
+<div id="spadComm4-17" class="spadComm" >
+<form id="formComm4-17" action="javascript:makeRequest('4-17');" >
+<input id="comm4-17" type="text" class="command" style="width: 6em;" value="(x+y)**3" />
+</form>
+<span id="commSav4-17" class="commSav" >(x+y)**3</span>
+<div id="mathAns4-17" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1=y**3+3*x*y*y+3*x*x*y+x**3<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Here is an example that illustrates the line breaking.
+</p>
+
+
+
+<div id="spadComm4-18" class="spadComm" >
+<form id="formComm4-18" action="javascript:makeRequest('4-18');" >
+<input id="comm4-18" type="text" class="command" style="width: 7em;" value="(x+y+z)**3" />
+</form>
+<span id="commSav4-18" class="commSav" >(x+y+z)**3</span>
+<div id="mathAns4-18" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R2=z**3+(3*y+3*x)*z*z+(3*y*y+6*x*y+3*x*x)*z+y**3+3*x*y<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;*y+3*x*x*y+x**3<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Note in the above examples that integers are generally converted to
+<span class="index">FORTRAN output format:integers vs. floats</span><a name="chapter-4-44"/> floating point
+numbers, except in exponents.  This is the default behavior but can be
+turned off by issuing <span class="teletype">)set fortran ints2floats off</span>.  
+<span class="index">set fortran ints2floats</span><a name="chapter-4-45"/> The rules governing when the conversion 
+is done are:
+</p>
+
+
+
+<ol>
+<li>
+ If an integer is an exponent, convert it to a floating point
+number if it is greater than 32767 in absolute value, otherwise leave it
+as an integer.
+</li>
+<li> Convert all other integers in an expression to floating point numbers.
+</li>
+</ol>
+
+
+<p>These rules only govern integers in expressions.  Numbers generated by
+Axiom for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>DIMENSION</mi></mstyle></math> statements are also integers.
+</p>
+
+
+<p>To set the type of generated FORTRAN data, 
+<span class="index">FORTRAN output format:data types</span><a name="chapter-4-46"/>
+use one of the following:
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;fortran&nbsp;defaulttype&nbsp;REAL<br />
+)set&nbsp;fortran&nbsp;defaulttype&nbsp;INTEGER<br />
+)set&nbsp;fortran&nbsp;defaulttype&nbsp;COMPLEX<br />
+)set&nbsp;fortran&nbsp;defaulttype&nbsp;LOGICAL<br />
+)set&nbsp;fortran&nbsp;defaulttype&nbsp;CHARACTER<br />
+</div>
+
+
+
+<p>When temporaries are created, they are given a default type of <span class="teletype">REAL.</span>  
+Also, the <span class="teletype">REAL</span> versions of functions are used by default.
+</p>
+
+
+
+<div id="spadComm4-19" class="spadComm" >
+<form id="formComm4-19" action="javascript:makeRequest('4-19');" >
+<input id="comm4-19" type="text" class="command" style="width: 4em;" value="sin(x)" />
+</form>
+<span id="commSav4-19" class="commSav" >sin(x)</span>
+<div id="mathAns4-19" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3=DSIN(x)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>At optimization level 1, Axiom removes common subexpressions.
+<span class="index">FORTRAN output format:optimization level</span><a name="chapter-4-47"/>
+<span class="index">set fortran optlevel</span><a name="chapter-4-48"/>
+</p>
+
+
+
+<div id="spadComm4-20" class="spadComm" >
+<form id="formComm4-20" action="javascript:makeRequest('4-20');" >
+<input id="comm4-20" type="text" class="command" style="width: 16em;" value=")set fortran optlevel 1" />
+</form>
+<span id="commSav4-20" class="commSav" >)set fortran optlevel 1</span>
+<div id="mathAns4-20" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm4-21" class="spadComm" >
+<form id="formComm4-21" action="javascript:makeRequest('4-21');" >
+<input id="comm4-21" type="text" class="command" style="width: 7em;" value="(x+y+z)**3" />
+</form>
+<span id="commSav4-21" class="commSav" >(x+y+z)**3</span>
+<div id="mathAns4-21" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T2=y*y<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T3=x*x<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R4=z**3+(3*y+3*x)*z*z+(3*T2+6*x*y+3*T3)*z+y**3+3*x*T2+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;3*T3*y+x**3<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>This changes the precision to <span class="teletype">DOUBLE</span>.  <span class="index">set fortran
+precision double</span><a name="chapter-4-49"/> Substitute <span class="teletype">single</span> for <span class="teletype">double</span>
+<span class="index">FORTRAN output format:precision</span><a name="chapter-4-50"/> to return to single precision.  
+<span class="index">set fortran precision single</span><a name="chapter-4-51"/>
+</p>
+
+
+
+
+<div id="spadComm4-22" class="spadComm" >
+<form id="formComm4-22" action="javascript:makeRequest('4-22');" >
+<input id="comm4-22" type="text" class="command" style="width: 20em;" value=")set fortran precision double" />
+</form>
+<span id="commSav4-22" class="commSav" >)set fortran precision double</span>
+<div id="mathAns4-22" ></div>
+</div>
+
+
+
+<p>Complex constants display the precision.
+</p>
+
+
+
+<div id="spadComm4-23" class="spadComm" >
+<form id="formComm4-23" action="javascript:makeRequest('4-23');" >
+<input id="comm4-23" type="text" class="command" style="width: 10em;" value="2.3 + 5.6*%i " />
+</form>
+<span id="commSav4-23" class="commSav" >2.3 + 5.6*%i </span>
+<div id="mathAns4-23" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R5=(2.3D0,5.6D0)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo>.</mo><mn>3</mn></mrow><mo>+</mo><mrow><mrow><mn>5</mn><mo>.</mo><mn>6</mn></mrow><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+<p>The function names that Axiom generates depend on the chosen precision.
+</p>
+
+
+
+<div id="spadComm4-24" class="spadComm" >
+<form id="formComm4-24" action="javascript:makeRequest('4-24');" >
+<input id="comm4-24" type="text" class="command" style="width: 5em;" value="sin %e" />
+</form>
+<span id="commSav4-24" class="commSav" >sin %e</span>
+<div id="mathAns4-24" ></div>
+</div>
+
+
+
+<p><!-- NOTE: the book shows DSIN(DEXP(1.0D0)) -->
+</p>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6=DSIN(DEXP(1))<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>sin</mo><mo>(</mo><mi>e</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Reset the precision to <span class="teletype">single</span> and look at these two examples again.
+</p>
+
+
+
+<div id="spadComm4-25" class="spadComm" >
+<form id="formComm4-25" action="javascript:makeRequest('4-25');" >
+<input id="comm4-25" type="text" class="command" style="width: 20em;" value=")set fortran precision single" />
+</form>
+<span id="commSav4-25" class="commSav" >)set fortran precision single</span>
+<div id="mathAns4-25" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm4-26" class="spadComm" >
+<form id="formComm4-26" action="javascript:makeRequest('4-26');" >
+<input id="comm4-26" type="text" class="command" style="width: 9em;" value="2.3 + 5.6*%i" />
+</form>
+<span id="commSav4-26" class="commSav" >2.3 + 5.6*%i</span>
+<div id="mathAns4-26" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R7=(2.3,5.6)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo>.</mo><mn>3</mn></mrow><mo>+</mo><mrow><mrow><mn>5</mn><mo>.</mo><mn>6</mn></mrow><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+
+
+<div id="spadComm4-27" class="spadComm" >
+<form id="formComm4-27" action="javascript:makeRequest('4-27');" >
+<input id="comm4-27" type="text" class="command" style="width: 5em;" value="sin %e" />
+</form>
+<span id="commSav4-27" class="commSav" >sin %e</span>
+<div id="mathAns4-27" ></div>
+</div>
+
+
+
+<p><!-- NOTE: the book shows SIN(EXP(1.)) -->
+</p>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R8=SIN(EXP(1))<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>sin</mo><mo>(</mo><mi>e</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+<p>Expressions that look like lists, streams, sets or matrices cause
+array code to be generated.
+</p>
+
+
+
+<div id="spadComm4-28" class="spadComm" >
+<form id="formComm4-28" action="javascript:makeRequest('4-28');" >
+<input id="comm4-28" type="text" class="command" style="width: 9em;" value="[x+1,y+1,z+1]" />
+</form>
+<span id="commSav4-28" class="commSav" >[x+1,y+1,z+1]</span>
+<div id="mathAns4-28" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(1)=x+1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(2)=y+1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(3)=z+1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R9=T1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+
+<p>A temporary variable is generated to be the name of the array.
+<span class="index">FORTRAN output format:arrays</span><a name="chapter-4-52"/> This may have to be changed in
+your particular application.
+</p>
+
+
+
+<div id="spadComm4-29" class="spadComm" >
+<form id="formComm4-29" action="javascript:makeRequest('4-29');" >
+<input id="comm4-29" type="text" class="command" style="width: 10em;" value="set[2,3,4,3,5]" />
+</form>
+<span id="commSav4-29" class="commSav" >set[2,3,4,3,5]</span>
+<div id="mathAns4-29" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(1)=2<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(2)=3<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(3)=4<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(4)=5<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R10=T1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PositiveInteger
+</div>
+
+
+
+<p>By default, the starting index for generated FORTRAN arrays is  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm4-30" class="spadComm" >
+<form id="formComm4-30" action="javascript:makeRequest('4-30');" >
+<input id="comm4-30" type="text" class="command" style="width: 22em;" value="matrix [ [2.3,9.7],[0.0,18.778] ]" />
+</form>
+<span id="commSav4-30" class="commSav" >matrix [ [2.3,9.7],[0.0,18.778] ]</span>
+<div id="mathAns4-30" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(0,0)=2.3<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(0,1)=9.7<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(1,0)=0.0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(1,1)=18.778<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mn>2</mn><mo>.</mo><mn>3</mn></mrow></mtd><mtd><mrow><mn>9</mn><mo>.</mo><mn>7</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>18</mn><mo>.</mo><mn>778</mn></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Float
+</div>
+
+
+
+<p>To change the starting index for generated FORTRAN arrays to be  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>,
+<span class="index">set fortran startindex</span><a name="chapter-4-53"/> issue this.  This value can only be  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>
+or  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm4-31" class="spadComm" >
+<form id="formComm4-31" action="javascript:makeRequest('4-31');" >
+<input id="comm4-31" type="text" class="command" style="width: 17em;" value=")set fortran startindex 1" />
+</form>
+<span id="commSav4-31" class="commSav" >)set fortran startindex 1</span>
+<div id="mathAns4-31" ></div>
+</div>
+
+
+
+<p>Look at the code generated for the matrix again.
+</p>
+
+
+
+<div id="spadComm4-32" class="spadComm" >
+<form id="formComm4-32" action="javascript:makeRequest('4-32');" >
+<input id="comm4-32" type="text" class="command" style="width: 22em;" value="matrix [ [2.3,9.7],[0.0,18.778] ]" />
+</form>
+<span id="commSav4-32" class="commSav" >matrix [ [2.3,9.7],[0.0,18.778] ]</span>
+<div id="mathAns4-32" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(1,1)=2.3<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(1,2)=9.7<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(2,1)=0.0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1(2,2)=18.778<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mn>2</mn><mo>.</mo><mn>3</mn></mrow></mtd><mtd><mrow><mn>9</mn><mo>.</mo><mn>7</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>18</mn><mo>.</mo><mn>778</mn></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Float
+</div>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-4.6.xhtml" style="margin-right: 10px;">Previous Section 4.6 IBM Script Formula Format</a><a href="section-5.0.xhtml" style="margin-right: 10px;">Next Section 5.0 Interactive Language</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-5.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-5.0.xhtml
new file mode 100644
index 0000000..07c7837
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-5.0.xhtml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section5.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-4.7.xhtml" style="margin-right: 10px;">Previous Section 4.7  FORTRAN Format</a><a href="section-5.1.xhtml" style="margin-right: 10px;">Next Section 5.1 Immediate and Delayed Assignments</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-5.0">
+<h2 class="sectiontitle">5.0 Interactive Language</h2>
+<a name="ugLang" class="label"/>
+
+<p>In this chapter we look at some of the basic components of the Axiom
+language that you can use interactively.  We show how to create a <span class="italic">block</span> of expressions, how to form loops and list iterations, how to
+modify the sequential evaluation of a block and how to use 
+<span class="teletype">if-then-else</span> to evaluate parts of your program conditionally.  We
+suggest you first read the boxed material in each section and then
+proceed to a more thorough reading of the chapter.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-4.7.xhtml" style="margin-right: 10px;">Previous Section 4.7  FORTRAN Format</a><a href="section-5.1.xhtml" style="margin-right: 10px;">Next Section 5.1 Immediate and Delayed Assignments</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-5.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-5.1.xhtml
new file mode 100644
index 0000000..c5c8a8b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-5.1.xhtml
@@ -0,0 +1,683 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section5.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-5.0.xhtml" style="margin-right: 10px;">Previous Section 5.0 Interactive Language</a><a href="section-5.2.xhtml" style="margin-right: 10px;">Next Section 5.2 Blocks</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-5.1">
+<h2 class="sectiontitle">5.1  Immediate and Delayed Assignments</h2>
+
+
+<a name="ugLangAssign" class="label"/>
+
+
+<p>A <span class="italic">variable</span> in Axiom refers to a value.  A variable has a name
+beginning with an uppercase or lowercase alphabetic character, 
+``<span class="teletype">%</span>'', or ``<span class="teletype">!</span>''.  Successive characters (if any) can be any of
+the above, digits, or ``<span class="teletype">?</span>''.  Case is distinguished.  The
+following are all examples of valid, distinct variable names:
+</p>
+
+
+
+
+<div class="verbatim"><br />
+a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tooBig?&nbsp;&nbsp;&nbsp;&nbsp;a1B2c3%!?<br />
+A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%j&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberOfPoints<br />
+beta6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%J&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberofpoints<br />
+</div>
+
+
+
+<p>The ``<span class="teletype">:=</span>'' operator is the immediate <span class="italic">assignment</span> operator.
+<span class="index">assignment:immediate</span><a name="chapter-5-0"/> Use it to associate a value with a
+variable.  <span class="index">immediate assignment</span><a name="chapter-5-1"/>
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The syntax for immediate assignment for a single variable is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="italic">variable</span>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>:</mo><mo>=</mo></mrow></mstyle></math> <span class="italic">expression</span>
+</p>
+
+
+
+</div>
+
+
+<p>The value returned by an immediate assignment is the value of 
+<span class="italic">expression</span>.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>The right-hand side of the expression is evaluated, yielding  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+This value is then assigned to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-1" class="spadComm" >
+<form id="formComm5-1" action="javascript:makeRequest('5-1');" >
+<input id="comm5-1" type="text" class="command" style="width: 4em;" value="a := 1" />
+</form>
+<span id="commSav5-1" class="commSav" >a := 1</span>
+<div id="mathAns5-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The right-hand side of the expression is evaluated, yielding  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+This value is then assigned to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math>.  Thus  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> both have the
+value  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> after the sequence of assignments.
+</p>
+
+
+
+<div id="spadComm5-2" class="spadComm" >
+<form id="formComm5-2" action="javascript:makeRequest('5-2');" >
+<input id="comm5-2" type="text" class="command" style="width: 4em;" value="b := a" />
+</form>
+<span id="commSav5-2" class="commSav" >b := a</span>
+<div id="mathAns5-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>What is the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> if  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> is assigned the value  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math>?
+</p>
+
+
+
+<div id="spadComm5-3" class="spadComm" >
+<form id="formComm5-3" action="javascript:makeRequest('5-3');" >
+<input id="comm5-3" type="text" class="command" style="width: 4em;" value="a := 2" />
+</form>
+<span id="commSav5-3" class="commSav" >a := 2</span>
+<div id="mathAns5-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>As you see, the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> is left unchanged.
+</p>
+
+
+
+<div id="spadComm5-4" class="spadComm" >
+<form id="formComm5-4" action="javascript:makeRequest('5-4');" >
+<input id="comm5-4" type="text" class="command" style="width: 1em;" value="b" />
+</form>
+<span id="commSav5-4" class="commSav" >b</span>
+<div id="mathAns5-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is what we mean when we say this kind of assignment is <span class="italic">immediate</span>;  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> has no dependency on  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> after the initial assignment.
+This is the usual notion of assignment found in programming languages
+such as C, <span class="index">C language:assignment</span><a name="chapter-5-2"/> PASCAL
+<span class="index">PASCAL:assignment</span><a name="chapter-5-3"/> and FORTRAN.  <span class="index">FORTRAN:assignment</span><a name="chapter-5-4"/>
+</p>
+
+
+<p>Axiom provides delayed assignment with ``<span class="teletype">==</span>''.
+<span class="index">assignment:delayed</span><a name="chapter-5-5"/> This implements a <span class="index">delayed
+assignment</span><a name="chapter-5-6"/> delayed evaluation of the right-hand side and dependency
+checking.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The syntax for delayed assignment is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="italic">variable</span>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>=</mo><mo>=</mo></mrow></mstyle></math> <span class="italic">expression</span>
+</p>
+
+
+
+</div>
+
+
+<p>The value returned by a delayed assignment is the unique value of <span class="teletype">Void</span>.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>Using  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> as above, these are the corresponding delayed assignments.
+</p>
+
+
+
+<div id="spadComm5-5" class="spadComm" >
+<form id="formComm5-5" action="javascript:makeRequest('5-5');" >
+<input id="comm5-5" type="text" class="command" style="width: 4em;" value="a == 1" />
+</form>
+<span id="commSav5-5" class="commSav" >a == 1</span>
+<div id="mathAns5-5" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm5-6" class="spadComm" >
+<form id="formComm5-6" action="javascript:makeRequest('5-6');" >
+<input id="comm5-6" type="text" class="command" style="width: 4em;" value="b == a" />
+</form>
+<span id="commSav5-6" class="commSav" >b == a</span>
+<div id="mathAns5-6" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The right-hand side of each delayed assignment is left unevaluated
+until the variables on the left-hand sides are evaluated.  Therefore
+this evaluation and ...
+</p>
+
+
+
+<div id="spadComm5-7" class="spadComm" >
+<form id="formComm5-7" action="javascript:makeRequest('5-7');" >
+<input id="comm5-7" type="text" class="command" style="width: 1em;" value="a" />
+</form>
+<span id="commSav5-7" class="commSav" >a</span>
+<div id="mathAns5-7" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;a&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;PositiveInteger&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>this evaluation seem the same as before.
+</p>
+
+
+
+<div id="spadComm5-8" class="spadComm" >
+<form id="formComm5-8" action="javascript:makeRequest('5-8');" >
+<input id="comm5-8" type="text" class="command" style="width: 1em;" value="b" />
+</form>
+<span id="commSav5-8" class="commSav" >b</span>
+<div id="mathAns5-8" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;b&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;PositiveInteger&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>If we change  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math>
+</p>
+
+
+
+<div id="spadComm5-9" class="spadComm" >
+<form id="formComm5-9" action="javascript:makeRequest('5-9');" >
+<input id="comm5-9" type="text" class="command" style="width: 4em;" value="a == 2" />
+</form>
+<span id="commSav5-9" class="commSav" >a == 2</span>
+<div id="mathAns5-9" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;a&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;b&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;a&nbsp;<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>then  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> evaluates to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math>, as expected, but
+</p>
+
+
+
+<div id="spadComm5-10" class="spadComm" >
+<form id="formComm5-10" action="javascript:makeRequest('5-10');" >
+<input id="comm5-10" type="text" class="command" style="width: 1em;" value="a" />
+</form>
+<span id="commSav5-10" class="commSav" >a</span>
+<div id="mathAns5-10" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;a&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;PositiveInteger&nbsp;<br />
+<br />
++++&nbsp;|*0;a;1;G82322|&nbsp;redefined<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> reflects the change to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-11" class="spadComm" >
+<form id="formComm5-11" action="javascript:makeRequest('5-11');" >
+<input id="comm5-11" type="text" class="command" style="width: 1em;" value="b" />
+</form>
+<span id="commSav5-11" class="commSav" >b</span>
+<div id="mathAns5-11" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;b&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;PositiveInteger&nbsp;<br />
+<br />
++++&nbsp;|*0;b;1;G82322|&nbsp;redefined<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>It is possible to set several variables at the same time
+<span class="index">assignment:multiple immediate</span><a name="chapter-5-7"/> by using <span class="index">multiple
+immediate assignment</span><a name="chapter-5-8"/> a <span class="italic">tuple</span> of variables and a tuple of
+expressions. Note that a <span class="italic">tuple</span> is a collection of things
+separated by commas, often surrounded by parentheses.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The syntax for multiple immediate assignments is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">(  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>var</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>var</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>, ..., 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>var</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math> ) := (  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expr</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expr</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>, 
+...,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expr</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math> ) </span>
+</p>
+
+
+
+</div>
+
+
+<p>The value returned by an immediate assignment is the value of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expr</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math>.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>This sets  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-12" class="spadComm" >
+<form id="formComm5-12" action="javascript:makeRequest('5-12');" >
+<input id="comm5-12" type="text" class="command" style="width: 10em;" value="(x,y) := (1,2)" />
+</form>
+<span id="commSav5-12" class="commSav" >(x,y) := (1,2)</span>
+<div id="mathAns5-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Multiple immediate assigments are parallel in the sense that the
+expressions on the right are all evaluated before any assignments on
+the left are made.  However, the order of evaluation of these
+expressions is undefined.
+</p>
+
+
+<p>You can use multiple immediate assignment to swap the values held by
+variables.
+</p>
+
+
+
+<div id="spadComm5-13" class="spadComm" >
+<form id="formComm5-13" action="javascript:makeRequest('5-13');" >
+<input id="comm5-13" type="text" class="command" style="width: 10em;" value="(x,y) := (y,x)" />
+</form>
+<span id="commSav5-13" class="commSav" >(x,y) := (y,x)</span>
+<div id="mathAns5-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> has the previous value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-14" class="spadComm" >
+<form id="formComm5-14" action="javascript:makeRequest('5-14');" >
+<input id="comm5-14" type="text" class="command" style="width: 1em;" value="x" />
+</form>
+<span id="commSav5-14" class="commSav" >x</span>
+<div id="mathAns5-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> has the previous value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-15" class="spadComm" >
+<form id="formComm5-15" action="javascript:makeRequest('5-15');" >
+<input id="comm5-15" type="text" class="command" style="width: 1em;" value="y" />
+</form>
+<span id="commSav5-15" class="commSav" >y</span>
+<div id="mathAns5-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>There is no syntactic form for multiple delayed assignments.  See the
+discussion in section <a href="section-6.8.xhtml#ugUserDelay" class="ref" >ugUserDelay</a> 
+about how Axiom differentiates between delayed assignments and user
+functions of no arguments.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-5.0.xhtml" style="margin-right: 10px;">Previous Section 5.0 Interactive Language</a><a href="section-5.2.xhtml" style="margin-right: 10px;">Next Section 5.2 Blocks</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-5.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-5.2.xhtml
new file mode 100644
index 0000000..08a90ea
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-5.2.xhtml
@@ -0,0 +1,473 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section5.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-5.1.xhtml" style="margin-right: 10px;">Previous Section 5.1 Immediate and Delayed Assignments</a><a href="section-5.3.xhtml" style="margin-right: 10px;">Next Section 5.3 if-then-else</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-5.2">
+<h2 class="sectiontitle">5.2  Blocks</h2>
+
+
+<a name="ugLangBlocks" class="label"/>
+
+
+<p>A <span class="italic">block</span> is a sequence of expressions evaluated in the order that
+they appear, except as modified by control expressions such as
+<span class="teletype">break</span>, <span class="index">break</span><a name="chapter-5-9"/> <span class="teletype">return</span>, <span class="index">return</span><a name="chapter-5-10"/> <span class="teletype">iterate</span> and
+<span class="index">iterate</span><a name="chapter-5-11"/> <span class="teletype">if-then-else</span> constructions.  The value of a block is
+the value of the expression last evaluated in the block.
+</p>
+
+
+<p>To leave a block early, use ``<span class="teletype">=></span>''.  For example,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>i</mi><mo>&lt;</mo><mn>0</mn><mo>=</mo><mo>&gt;</mo><mi>x</mi></mrow></mstyle></math>.  The
+expression before the ``<span class="teletype">=></span>'' must evaluate to <span class="teletype">true</span> or <span class="teletype">false</span>.
+The expression following the ``<span class="teletype">=></span>'' is the return value for the block.
+</p>
+
+
+<p>A block can be constructed in two ways:
+</p>
+
+
+
+<ol>
+<li>
+ the expressions can be separated by semicolons
+and the resulting expression surrounded by parentheses, and
+</li>
+<li> the expressions can be written on succeeding lines with each line
+indented the same number of spaces (which must be greater than zero).
+<span class="index">indentation</span><a name="chapter-5-12"/>
+A block entered in this form is
+called a <span class="italic">pile</span>.
+</li>
+</ol>
+
+
+<p>Only the first form is available if you are entering expressions
+directly to Axiom.  Both forms are available in <span style="font-weight: bold;">.input</span> files.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The syntax for a simple block of expressions entered interactively is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">(  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>;  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>; ...; 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math> )</span>
+</p>
+
+
+
+</div>
+
+
+<p>The value returned by a block is the value of an <span class="teletype">=></span> expression,
+or  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math> if no <span class="teletype">=></span> is encountered.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>In <span style="font-weight: bold;">.input</span> files, blocks can also be written using piles.  The
+examples throughout this book are assumed to come from <span style="font-weight: bold;">.input</span> files.
+</p>
+
+
+<p>In this example, we assign a rational number to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> using a block
+consisting of three expressions.  This block is written as a pile.
+Each expression in the pile has the same indentation, in this case two
+spaces to the right of the first line.
+</p>
+
+
+
+<div class="verbatim"><br />
+a&nbsp;:=<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;gcd(234,672)<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;3*i**5&nbsp;-&nbsp;i&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;1&nbsp;/&nbsp;i<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>1</mn><mn>23323</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Here is the same block written on one line.  This is how you are
+required to enter it at the input prompt.
+</p>
+
+
+
+<div id="spadComm5-16" class="spadComm" >
+<form id="formComm5-16" action="javascript:makeRequest('5-16');" >
+<input id="comm5-16" type="text" class="command" style="width: 35em;" value="a := (i := gcd(234,672); i := 3*i**5 - i + 1; 1 / i)" />
+</form>
+<span id="commSav5-16" class="commSav" >a := (i := gcd(234,672); i := 3*i**5 - i + 1; 1 / i)</span>
+<div id="mathAns5-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>1</mn><mn>23323</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Blocks can be used to put several expressions on one line.  The value
+returned is that of the last expression.
+</p>
+
+
+
+<div id="spadComm5-17" class="spadComm" >
+<form id="formComm5-17" action="javascript:makeRequest('5-17');" >
+<input id="comm5-17" type="text" class="command" style="width: 22em;" value="(a := 1; b := 2; c := 3; [a,b,c])" />
+</form>
+<span id="commSav5-17" class="commSav" >(a := 1; b := 2; c := 3; [a,b,c])</span>
+<div id="mathAns5-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Axiom gives you two ways of writing a block and the preferred way in
+an <span style="font-weight: bold;">.input</span> file is to use a pile.  <span class="index">file:input</span><a name="chapter-5-13"/> Roughly
+speaking, a pile is a block whose constituent expressions are indented
+the same amount.  You begin a pile by starting a new line for the
+first expression, indenting it to the right of the previous line.  You
+then enter the second expression on a new line, vertically aligning it
+with the first line. And so on.  If you need to enter an inner pile,
+further indent its lines to the right of the outer pile.  Axiom knows
+where a pile ends.  It ends when a subsequent line is indented to the
+left of the pile or the end of the file.
+</p>
+
+
+<p>Blocks can be used to perform several steps before an assignment
+(immediate or delayed) is made.
+</p>
+
+
+
+<div class="verbatim"><br />
+d&nbsp;:=<br />
+&nbsp;&nbsp;&nbsp;c&nbsp;:=&nbsp;a**2&nbsp;+&nbsp;b**2<br />
+&nbsp;&nbsp;&nbsp;sqrt(c&nbsp;*&nbsp;1.3)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>5495097567</mn><mn>96392415</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Blocks can be used in the arguments to functions.  (Here  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>h</mi></mstyle></math> is
+assigned  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>1</mn><mo>+</mo><mn>3</mn><mo>.</mo><mn>5</mn></mrow></mstyle></math>.)
+</p>
+
+
+
+<div class="verbatim"><br />
+h&nbsp;:=&nbsp;2.1&nbsp;+<br />
+&nbsp;&nbsp;&nbsp;1.0<br />
+&nbsp;&nbsp;&nbsp;3.5<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>5</mn><mo>.</mo><mn>6</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Here the second argument to <span style="font-weight: bold;">eval</span> is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>z</mi></mrow></mstyle></math>, where the value of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> is computed in the first line of the block starting on the second
+line.
+</p>
+
+
+
+<div class="verbatim"><br />
+eval(x**2&nbsp;-&nbsp;x*y**2,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;:=&nbsp;%pi/2.0&nbsp;-&nbsp;exp(4.1)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;z<br />
+&nbsp;&nbsp;&nbsp;)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>58</mn><mo>.</mo><mn>7694912705</mn><mn>67072878</mn></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3453</mn><mo>.</mo><mn>8531042012</mn><mn>59382</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Float
+</div>
+
+
+
+<p>Blocks can be used in the clauses of <span class="teletype">if-then-else</span> expressions 
+(see <a href="section-5.3.xhtml#ugLangIf" class="ref" >ugLangIf</a> ).
+</p>
+
+
+
+
+<div id="spadComm5-18" class="spadComm" >
+<form id="formComm5-18" action="javascript:makeRequest('5-18');" >
+<input id="comm5-18" type="text" class="command" style="width: 34em;" value="if h > 3.1 then 1.0 else (z := cos(h); max(z,0.5))" />
+</form>
+<span id="commSav5-18" class="commSav" >if h > 3.1 then 1.0 else (z := cos(h); max(z,0.5))</span>
+<div id="mathAns5-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>This is the pile version of the last block.
+</p>
+
+
+
+<div class="verbatim"><br />
+if&nbsp;h&nbsp;&gt;&nbsp;3.1&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;1.0<br />
+&nbsp;&nbsp;else<br />
+&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;:=&nbsp;cos(h)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;max(z,0.5)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Blocks can be nested.
+</p>
+
+
+
+<div id="spadComm5-19" class="spadComm" >
+<form id="formComm5-19" action="javascript:makeRequest('5-19');" >
+<input id="comm5-19" type="text" class="command" style="width: 46em;" value="a := (b := factorial(12); c := (d := eulerPhi(22); factorial(d));b+c)" />
+</form>
+<span id="commSav5-19" class="commSav" >a := (b := factorial(12); c := (d := eulerPhi(22); factorial(d));b+c)</span>
+<div id="mathAns5-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>482630400</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is the pile version of the last block.
+</p>
+
+
+
+<div class="verbatim"><br />
+a&nbsp;:=<br />
+&nbsp;&nbsp;b&nbsp;:=&nbsp;factorial(12)<br />
+&nbsp;&nbsp;c&nbsp;:=<br />
+&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;:=&nbsp;eulerPhi(22)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;factorial(d)<br />
+&nbsp;&nbsp;b+c<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>482630400</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Since  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>c</mi><mo>+</mo><mi>d</mi></mrow></mstyle></math> does equal  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3628855</mn></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> has the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>c</mi></mstyle></math> and the
+last line is never evaluated.
+</p>
+
+
+
+<div class="verbatim"><br />
+a&nbsp;:=<br />
+&nbsp;&nbsp;c&nbsp;:=&nbsp;factorial&nbsp;10<br />
+&nbsp;&nbsp;d&nbsp;:=&nbsp;fibonacci&nbsp;10<br />
+&nbsp;&nbsp;c&nbsp;+&nbsp;d&nbsp;=&nbsp;3628855&nbsp;=&gt;&nbsp;c<br />
+&nbsp;&nbsp;d<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3628800</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-5.1.xhtml" style="margin-right: 10px;">Previous Section 5.1 Immediate and Delayed Assignments</a><a href="section-5.3.xhtml" style="margin-right: 10px;">Next Section 5.3 if-then-else</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-5.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-5.3.xhtml
new file mode 100644
index 0000000..a3377fc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-5.3.xhtml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section5.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-5.2.xhtml" style="margin-right: 10px;">Previous Section 5.2 Blocks</a><a href="section-5.4.xhtml" style="margin-right: 10px;">Next Section 5.4 Loops</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-5.3">
+<h2 class="sectiontitle">5.3  if-then-else</h2>
+
+
+<a name="ugLangIf" class="label"/>
+
+
+<p>Like many other programming languages, Axiom uses the three keywords
+<span class="index">if</span><a name="chapter-5-14"/> <span class="teletype">if</span>, <span class="teletype">then</span> <span class="index">then</span><a name="chapter-5-15"/> and <span class="teletype">else</span>
+<span class="index">else</span><a name="chapter-5-16"/> to form <span class="index">conditional</span><a name="chapter-5-17"/> conditional expressions.  The
+<span class="teletype">else</span> part of the conditional is optional.  The expression
+between the <span class="teletype">if</span> and <span class="teletype">then</span> keywords is a <span class="italic">predicate</span>: an
+expression that evaluates to or is convertible to either <span class="teletype">true</span> or
+<span class="teletype">false</span>, that is, a <span class="teletype">Boolean</span>.  <span class="index">Boolean</span><a name="chapter-5-18"/>
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The syntax for conditional expressions is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">if&nbsp;</span><span class="italic">predicate</span> 
+<span class="teletype">then&nbsp;</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math> 
+<span class="teletype">else&nbsp;</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>
+</p>
+
+
+
+</div>
+
+
+<p>where the <span class="teletype">else</span>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math> part is optional.  The
+value returned from a conditional expression is 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math> if the predicate evaluates to <span class="teletype">true</span> and 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math> otherwise.  If no <span class="teletype">else</span> clause is given, 
+the value is always the unique value of <span class="teletype">Void</span>.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>An <span class="teletype">if-then-else</span> expression always returns a value.  If the 
+<span class="teletype">else</span> clause is missing then the entire expression returns the unique
+value of <span class="teletype">Void</span>.  If both clauses are present, the type of the
+value returned by <span class="teletype">if</span> is obtained by resolving the types of the
+values of the two clauses.  See <a href="section-2.10.xhtml#ugTypesResolve" class="ref" >ugTypesResolve</a>  for more information.
+</p>
+
+
+<p>The predicate must evaluate to, or be convertible to, an object of
+type <span class="teletype">Boolean</span>: <span class="teletype">true</span> or <span class="teletype">false</span>.  By default, the equal
+sign <span class="spadopFrom" title="Equation">=</span> creates <span class="index">equation</span><a name="chapter-5-19"/> an equation.
+</p>
+
+
+<p>This is an equation.  <span class="index">Equation</span><a name="chapter-5-20"/> In particular, it is an object
+of type <span class="teletype">Equation Polynomial Integer</span>.
+</p>
+
+
+
+
+<div id="spadComm5-20" class="spadComm" >
+<form id="formComm5-20" action="javascript:makeRequest('5-20');" >
+<input id="comm5-20" type="text" class="command" style="width: 6em;" value="x + 1 = y" />
+</form>
+<span id="commSav5-20" class="commSav" >x + 1 = y</span>
+<div id="mathAns5-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mi>y</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Polynomial Integer
+</div>
+
+
+
+<p>However, for predicates in <span class="teletype">if</span> expressions, Axiom <span class="index">equality
+testing</span><a name="chapter-5-21"/> places a default target type of <span class="teletype">Boolean</span> on the
+predicate and equality testing is performed.  <span class="index">Boolean</span><a name="chapter-5-22"/> Thus you
+need not qualify the ``<span class="teletype">=</span>'' in any way.  In other contexts you
+may need to tell Axiom that you want to test for equality rather than
+create an equation.  In those cases, use ``<span class="teletype">@</span>'' and a target type
+of <span class="teletype">Boolean</span>.  See section <a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a>  for more information.
+</p>
+
+
+<p>The compound symbol meaning ``not equal'' in Axiom is
+<span class="index">inequality testing</span><a name="chapter-5-23"/> ``<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&#x223c;</mo><mo>=</mo></mrow></mstyle></math>''.  <span class="index">_notequal@ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&#x223c;</mo><mo>=</mo></mrow></mstyle></math></span><a name="chapter-5-24"/> 
+This can be used directly without a package call or a target
+specification.  The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>&#x223c;</mo><mo>=</mo><mi>b</mi></mrow></mstyle></math> is directly translated
+into <span class="teletype">not</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>a</mi><mo>=</mo><mi>b</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>Many other functions have return values of type <span class="teletype">Boolean</span>.  These
+include ``<span class="teletype">&lt;</span>'', ``<span class="teletype">&lt;=</span>'', ``<span class="teletype">></span>'', ``<span class="teletype">>=</span>'', 
+``<span class="teletype"><math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&#x223c;</mo><mo>=</mo></mrow></mstyle></math></span>'' and ``<span style="font-weight: bold;">member?</span>''.  By convention,
+operations with names ending in ``<span class="teletype">?</span>''  return <span class="teletype">Boolean</span> values.
+</p>
+
+
+<p>The usual rules for piles are suspended for conditional expressions.
+In <span style="font-weight: bold;">.input</span> files, the <span class="teletype">then</span> and <span class="teletype">else</span> keywords can begin in the
+same column as the corresponding <span class="teletype">if</span> but may also appear to the
+right.  Each of the following styles of writing <span class="teletype">if-then-else</span>
+expressions is acceptable:
+</p>
+
+
+
+<div class="verbatim"><br />
+if&nbsp;i&gt;0&nbsp;then&nbsp;output("positive")&nbsp;else&nbsp;output("nonpositive")<br />
+<br />
+if&nbsp;i&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;output("positive")<br />
+&nbsp;&nbsp;else&nbsp;output("nonpositive")<br />
+<br />
+if&nbsp;i&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;output("positive")<br />
+else&nbsp;output("nonpositive")<br />
+<br />
+if&nbsp;i&nbsp;&gt;&nbsp;0<br />
+then&nbsp;output("positive")<br />
+else&nbsp;output("nonpositive")<br />
+<br />
+if&nbsp;i&nbsp;&gt;&nbsp;0<br />
+&nbsp;&nbsp;then&nbsp;output("positive")<br />
+&nbsp;&nbsp;else&nbsp;output("nonpositive")<br />
+</div>
+
+
+
+<p>A block can follow the <span class="teletype">then</span> or <span class="teletype">else</span> keywords.  In the following
+two assignments to <span class="teletype">a</span>, the <span class="teletype">then</span> and <span class="teletype">else</span> clauses each are
+followed by two-line piles.  The value returned in each is the value
+of the second line.
+</p>
+
+
+
+<div class="verbatim"><br />
+a&nbsp;:=<br />
+&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;0&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;:=&nbsp;sin(i&nbsp;*&nbsp;pi())<br />
+&nbsp;&nbsp;&nbsp;&nbsp;exp(j&nbsp;+&nbsp;1/j)<br />
+&nbsp;&nbsp;else<br />
+&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;:=&nbsp;cos(i&nbsp;*&nbsp;0.5&nbsp;*&nbsp;pi())<br />
+&nbsp;&nbsp;&nbsp;&nbsp;log(abs(j)**5&nbsp;+&nbsp;1)<br />
+<br />
+a&nbsp;:=<br />
+&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;0<br />
+&nbsp;&nbsp;&nbsp;&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;:=&nbsp;sin(i&nbsp;*&nbsp;pi())<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exp(j&nbsp;+&nbsp;1/j)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;else<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;:=&nbsp;cos(i&nbsp;*&nbsp;0.5&nbsp;*&nbsp;pi())<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(abs(j)**5&nbsp;+&nbsp;1)<br />
+</div>
+
+
+
+<p>These are both equivalent to the following:
+</p>
+
+
+
+<div class="verbatim"><br />
+a&nbsp;:=<br />
+&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(j&nbsp;:=&nbsp;sin(i&nbsp;*&nbsp;pi());&nbsp;exp(j&nbsp;+&nbsp;1/j))<br />
+&nbsp;&nbsp;else&nbsp;(j&nbsp;:=&nbsp;cos(i&nbsp;*&nbsp;0.5&nbsp;*&nbsp;pi());&nbsp;log(abs(j)**5&nbsp;+&nbsp;1))<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-5.2.xhtml" style="margin-right: 10px;">Previous Section 5.2 Blocks</a><a href="section-5.4.xhtml" style="margin-right: 10px;">Next Section 5.4 Loops</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-5.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-5.4.xhtml
new file mode 100644
index 0000000..53e5b52
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-5.4.xhtml
@@ -0,0 +1,2419 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section5.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-5.3.xhtml" style="margin-right: 10px;">Previous Section 5.3 if-then-else</a><a href="section-5.5.xhtml" style="margin-right: 10px;">Next Section 5.5 Creating Lists and Streams with Iterators</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-5.4">
+<h2 class="sectiontitle">5.4  Loops</h2>
+
+
+<a name="ugLangLoops" class="label"/>
+
+
+<p>A <span class="italic">loop</span> is an expression that contains another expression,
+<span class="index">loop</span><a name="chapter-5-25"/> called the <span class="italic">loop body</span>, which is to be evaluated zero
+or more <span class="index">loop:body</span><a name="chapter-5-26"/> times.  All loops contain the <span class="teletype">repeat</span>
+keyword and return the unique value of <span class="teletype">Void</span>.  Loops can contain
+inner loops to any depth.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The most basic loop is of the form
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">repeat&nbsp;</span><span class="italic">loopBody</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>Unless <span class="italic">loopBody</span> contains a <span class="teletype">break</span> or <span class="teletype">return</span> expression, the
+loop repeats forever.  The value returned by the loop is the unique
+value of <span class="teletype">Void</span>.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+
+<a name="subsec-5.4.1"/>
+<div class="subsection"  id="subsec-5.4.1">
+<h3 class="subsectitle">5.4.1  Compiling vs. Interpreting Loops</h3>
+
+
+<a name="ugLangLoopsCompInt" class="label"/>
+
+
+<p>Axiom tries to determine completely the type of every object in a loop
+and then to translate the loop body to LISP or even to machine code.
+This translation is called compilation.
+</p>
+
+
+<p>If Axiom decides that it cannot compile the loop, it issues a
+<span class="index">loop:compilation</span><a name="chapter-5-27"/> message stating the problem and then the
+following message:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span style="font-weight: bold;">We will attempt to step through and interpret the code.</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>It is still possible that Axiom can evaluate the loop but in <span class="italic">interpret-code mode</span>.  See section <a href="section-6.10.xhtml#ugUserCompInt" class="ref" >ugUserCompInt</a>  where this is discussed in terms
+<span class="index">panic:avoiding</span><a name="chapter-5-28"/> of compiling versus interpreting functions.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.2"/>
+<div class="subsection"  id="subsec-5.4.2">
+<h3 class="subsectitle">5.4.2  return in Loops</h3>
+
+
+<a name="ugLangLoopsReturn" class="label"/>
+
+
+<p>A <span class="teletype">return</span> expression is used to exit a function with
+<span class="index">loop:leaving via return</span><a name="chapter-5-29"/> a particular value.  In particular, if
+a <span class="teletype">return</span> is in a loop within the <span class="index">return</span><a name="chapter-5-30"/> function, the loop
+is terminated whenever the <span class="teletype">return</span> is evaluated.
+</p>
+
+
+<p><!-- This is a bug! The compiler should never accept allow
+ Void to be the return type of a function when it has to use
+ resolve to determine it. -->
+</p>
+
+
+<p>Suppose we start with this.
+</p>
+
+
+
+<div class="verbatim"><br />
+f()&nbsp;==<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;1<br />
+&nbsp;&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;factorial(i)&nbsp;&gt;&nbsp;1000&nbsp;then&nbsp;return&nbsp;i<br />
+&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>When <span class="teletype">factorial(i)</span> is big enough, control passes from inside the loop
+all the way outside the function, returning the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> (or so we
+think).
+</p>
+
+
+
+<div id="spadComm5-21" class="spadComm" >
+<form id="formComm5-21" action="javascript:makeRequest('5-21');" >
+<input id="comm5-21" type="text" class="command" style="width: 2em;" value="f()" />
+</form>
+<span id="commSav5-21" class="commSav" >f()</span>
+<div id="mathAns5-21" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>What went wrong?  Isn't it obvious that this function should return an
+integer?  Well, Axiom makes no attempt to analyze the structure of a
+loop to determine if it always returns a value because, in general,
+this is impossible.  So Axiom has this simple rule: the type of the
+function is determined by the type of its body, in this case a block.
+The normal value of a block is the value of its last expression, in
+this case, a loop.  And the value of every loop is the unique value of
+<span class="teletype">Void</span>.!  So the return type of <span style="font-weight: bold;">f</span> is <span class="teletype">Void</span>.
+</p>
+
+
+<p>There are two ways to fix this.  The best way is for you to tell Axiom
+what the return type of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> is.  You do this by giving  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> a
+declaration <span class="teletype">f:()->Integer</span> prior to calling for its value.  This
+tells Axiom: ``trust me---an integer is returned.''  We'll explain
+more about this in the next chapter.  Another clumsy way is to add a
+dummy expression as follows.
+</p>
+
+
+<p>Since we want an integer, let's stick in a dummy final expression that is
+an integer and will never be evaluated.
+</p>
+
+
+
+<div class="verbatim"><br />
+f()&nbsp;==<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;1<br />
+&nbsp;&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;factorial(i)&nbsp;&gt;&nbsp;1000&nbsp;then&nbsp;return&nbsp;i<br />
+&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;0<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>When we try <span style="font-weight: bold;">f</span> again we get what we wanted.  See
+<a href="section-6.15.xhtml#ugUserBlocks" class="ref" >ugUserBlocks</a>  for more information.
+</p>
+
+
+
+
+<div id="spadComm5-22" class="spadComm" >
+<form id="formComm5-22" action="javascript:makeRequest('5-22');" >
+<input id="comm5-22" type="text" class="command" style="width: 2em;" value="f()" />
+</form>
+<span id="commSav5-22" class="commSav" >f()</span>
+<div id="mathAns5-22" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;with&nbsp;type&nbsp;()&nbsp;-&gt;&nbsp;NonNegativeInteger&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.3"/>
+<div class="subsection"  id="subsec-5.4.3">
+<h3 class="subsectitle">5.4.3  break in Loops</h3>
+
+
+<a name="ugLangLoopsBreak" class="label"/>
+
+
+<p>The <span class="teletype">break</span> keyword is often more useful <span class="index">break</span><a name="chapter-5-31"/> in terminating
+<span class="index">loop:leaving via break</span><a name="chapter-5-32"/> a loop.  A <span class="teletype">break</span> causes control to
+transfer to the expression immediately following the loop.  As loops
+always return the unique value of <span class="teletype">Void</span>., you cannot return a
+value with <span class="teletype">break</span>.  That is, <span class="teletype">break</span> takes no argument.
+</p>
+
+
+<p>This example is a modification of the last example in the previous
+section <a href="section-5.4.xhtml#ugLangLoopsReturn" class="ref" >ugLangLoopsReturn</a> .
+Instead of using <span class="teletype">return</span>, we'll use <span class="teletype">break</span>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+f()&nbsp;==<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;1<br />
+&nbsp;&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;factorial(i)&nbsp;&gt;&nbsp;1000&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;i<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;f&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;f&nbsp;<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The loop terminates when <span class="teletype">factorial(i)</span> gets big enough, the last line
+of the function evaluates to the corresponding ``good'' value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>,
+and the function terminates, returning that value.
+</p>
+
+
+
+
+<div id="spadComm5-23" class="spadComm" >
+<form id="formComm5-23" action="javascript:makeRequest('5-23');" >
+<input id="comm5-23" type="text" class="command" style="width: 2em;" value="f()" />
+</form>
+<span id="commSav5-23" class="commSav" >f()</span>
+<div id="mathAns5-23" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;with&nbsp;type&nbsp;()&nbsp;-&gt;&nbsp;PositiveInteger&nbsp;<br />
+<br />
++++&nbsp;|*0;f;1;G82322|&nbsp;redefined<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>You can only use <span class="teletype">break</span> to terminate the evaluation of one loop.
+Let's consider a loop within a loop, that is, a loop with a nested
+loop.  First, we initialize two counter variables.
+</p>
+
+
+
+
+<div id="spadComm5-24" class="spadComm" >
+<form id="formComm5-24" action="javascript:makeRequest('5-24');" >
+<input id="comm5-24" type="text" class="command" style="width: 10em;" value="(i,j) := (1, 1)" />
+</form>
+<span id="commSav5-24" class="commSav" >(i,j) := (1, 1)</span>
+<div id="mathAns5-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Nested loops must have multiple <span class="teletype">break</span> <span class="index">loop:nested</span><a name="chapter-5-33"/>
+expressions at the appropriate nesting level.  How would you rewrite
+this so <span class="teletype">(i + j) > 10</span> is only evaluated once?
+</p>
+
+
+
+<div class="verbatim"><br />
+repeat<br />
+&nbsp;&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i&nbsp;+&nbsp;j)&nbsp;&gt;&nbsp;10&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;:=&nbsp;j&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;if&nbsp;(i&nbsp;+&nbsp;j)&nbsp;&gt;&nbsp;10&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.4"/>
+<div class="subsection"  id="subsec-5.4.4">
+<h3 class="subsectitle">5.4.4  break vs. <span class="teletype">=></span> in Loop Bodies</h3>
+
+
+<a name="ugLangLoopsBreakVs" class="label"/>
+
+
+<p>Compare the following two loops:
+</p>
+
+
+
+<div class="verbatim"><br />
+i&nbsp;:=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;:=&nbsp;1<br />
+repeat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repeat<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;i&nbsp;&gt;&nbsp;3&nbsp;=&gt;&nbsp;i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;3&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;output(i)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output(i)<br />
+</div>
+
+
+
+<p>In the example on the left, the values  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math> for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> are
+displayed but then the ``<span class="teletype">=></span>'' does not allow control to reach the
+call to <span class="spadfunFrom" >output</span><span class="index">output</span><a name="chapter-5-34"/><span class="index">OutputForm</span><a name="chapter-5-35"/> again.  The loop will not
+terminate until you run out of space or interrupt the execution.  The
+variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> will continue to be incremented because the ``<span class="teletype">=></span>'' only
+means to leave the <span class="italic">block</span>, not the loop.
+</p>
+
+
+<p>In the example on the right, upon reaching  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>4</mn></mstyle></math>, the <span class="teletype">break</span> will be
+executed, and both the block and the loop will terminate.  This is one
+of the reasons why both ``<span class="teletype">=></span>'' and <span class="teletype">break</span> are provided.  Using a
+<span class="teletype">while</span> clause (see below) with the ``<span class="teletype">=></span>'' <span class="index">while</span><a name="chapter-5-36"/> lets you
+simulate the action of <span class="teletype">break</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.5"/>
+<div class="subsection"  id="subsec-5.4.5">
+<h3 class="subsectitle">5.4.5  More Examples of break</h3>
+
+
+<a name="ugLangLoopsBreakMore" class="label"/>
+
+
+<p>Here we give four examples of <span class="teletype">repeat</span> loops that terminate when a
+value exceeds a given bound.
+</p>
+
+
+<p>First, initialize  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> as the loop counter.
+</p>
+
+
+
+<div id="spadComm5-25" class="spadComm" >
+<form id="formComm5-25" action="javascript:makeRequest('5-25');" >
+<input id="comm5-25" type="text" class="command" style="width: 4em;" value="i := 0" />
+</form>
+<span id="commSav5-25" class="commSav" >i := 0</span>
+<div id="mathAns5-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>Here is the first loop.  When the square of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> exceeds  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>100</mn></mstyle></math>, the
+loop terminates.
+</p>
+
+
+
+<div class="verbatim"><br />
+repeat<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;if&nbsp;i**2&nbsp;&gt;&nbsp;100&nbsp;then&nbsp;break<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Upon completion,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> should have the value  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>11</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-26" class="spadComm" >
+<form id="formComm5-26" action="javascript:makeRequest('5-26');" >
+<input id="comm5-26" type="text" class="command" style="width: 1em;" value="i" />
+</form>
+<span id="commSav5-26" class="commSav" >i</span>
+<div id="mathAns5-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>11</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>Do the same thing except use ``<span class="teletype">=></span>'' instead an <span class="teletype">if-then</span> expression.
+</p>
+
+
+
+
+<div id="spadComm5-27" class="spadComm" >
+<form id="formComm5-27" action="javascript:makeRequest('5-27');" >
+<input id="comm5-27" type="text" class="command" style="width: 4em;" value="i := 0" />
+</form>
+<span id="commSav5-27" class="commSav" >i := 0</span>
+<div id="mathAns5-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+repeat<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;i**2&nbsp;&gt;&nbsp;100&nbsp;=&gt;&nbsp;break<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm5-28" class="spadComm" >
+<form id="formComm5-28" action="javascript:makeRequest('5-28');" >
+<input id="comm5-28" type="text" class="command" style="width: 1em;" value="i" />
+</form>
+<span id="commSav5-28" class="commSav" >i</span>
+<div id="mathAns5-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>11</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>As a third example, we use a simple loop to compute  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>!</mo></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-29" class="spadComm" >
+<form id="formComm5-29" action="javascript:makeRequest('5-29');" >
+<input id="comm5-29" type="text" class="command" style="width: 16em;" value="(n, i, f) := (100, 1, 1)" />
+</form>
+<span id="commSav5-29" class="commSav" >(n, i, f) := (100, 1, 1)</span>
+<div id="mathAns5-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Use  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> as the iteration variable and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> to compute the factorial.
+</p>
+
+
+
+<div class="verbatim"><br />
+repeat<br />
+&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;n&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;f&nbsp;:=&nbsp;f&nbsp;*&nbsp;i<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Look at the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-30" class="spadComm" >
+<form id="formComm5-30" action="javascript:makeRequest('5-30');" >
+<input id="comm5-30" type="text" class="command" style="width: 1em;" value="f" />
+</form>
+<span id="commSav5-30" class="commSav" >f</span>
+<div id="mathAns5-30" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;93326215443944152681699238856266700490715968264381621468_<br />
+&nbsp;59296389521759999322991560894146397615651828625369792082_<br />
+&nbsp;7223758251185210916864000000000000000000000000<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Finally, we show an example of nested loops.  First define a four by
+four matrix.
+</p>
+
+
+
+<div id="spadComm5-31" class="spadComm" >
+<form id="formComm5-31" action="javascript:makeRequest('5-31');" >
+<input id="comm5-31" type="text" class="command" style="width: 50em;" value="m := matrix [ [21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13] ]" />
+</form>
+<span id="commSav5-31" class="commSav" >m := matrix [ [21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13] ]</span>
+<div id="mathAns5-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>21</mn></mtd><mtd><mn>37</mn></mtd><mtd><mn>53</mn></mtd><mtd><mn>14</mn></mtd></mtr><mtr><mtd><mn>8</mn></mtd><mtd><mo>-</mo><mn>24</mn></mtd><mtd><mn>22</mn></mtd><mtd><mo>-</mo><mn>16</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>10</mn></mtd><mtd><mn>15</mn></mtd><mtd><mn>14</mn></mtd></mtr><mtr><mtd><mn>26</mn></mtd><mtd><mn>33</mn></mtd><mtd><mn>55</mn></mtd><mtd><mo>-</mo><mn>13</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>Next, set row counter  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> and column counter  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>c</mi></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.  Note: if we
+were writing a function, these would all be local variables rather
+than global workspace variables.
+</p>
+
+
+
+<div id="spadComm5-32" class="spadComm" >
+<form id="formComm5-32" action="javascript:makeRequest('5-32');" >
+<input id="comm5-32" type="text" class="command" style="width: 11em;" value="(r, c) := (1, 1)" />
+</form>
+<span id="commSav5-32" class="commSav" >(r, c) := (1, 1)</span>
+<div id="mathAns5-32" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Also, let <span class="teletype">lastrow</span> and <span class="teletype">lastcol</span> be the final row and column index.
+</p>
+
+
+
+
+<div id="spadComm5-33" class="spadComm" >
+<form id="formComm5-33" action="javascript:makeRequest('5-33');" >
+<input id="comm5-33" type="text" class="command" style="width: 28em;" value="(lastrow, lastcol) := (nrows(m), ncols(m))" />
+</form>
+<span id="commSav5-33" class="commSav" >(lastrow, lastcol) := (nrows(m), ncols(m))</span>
+<div id="mathAns5-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Scan the rows looking for the first negative element.  We remark that
+you can reformulate this example in a better, more concise form by
+using a <span class="teletype">for</span> clause with <span class="teletype">repeat</span>.  See
+<a href="section-5.4.xhtml#ugLangLoopsForIn" class="ref" >ugLangLoopsForIn</a>  for more
+information.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+repeat<br />
+&nbsp;&nbsp;if&nbsp;r&nbsp;&gt;&nbsp;lastrow&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;c&nbsp;:=&nbsp;1<br />
+&nbsp;&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;c&nbsp;&gt;&nbsp;lastcol&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;elt(m,r,c)&nbsp;&lt;&nbsp;0&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[r,&nbsp;c,&nbsp;elt(m,r,c)]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;lastrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;don't&nbsp;look&nbsp;any&nbsp;further<br />
+&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;:=&nbsp;c&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;r&nbsp;:=&nbsp;r&nbsp;+&nbsp;1<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[2,2,-&nbsp;24]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.6"/>
+<div class="subsection"  id="subsec-5.4.6">
+<h3 class="subsectitle">5.4.6  iterate in Loops</h3>
+
+
+<a name="ugLangLoopsIterate" class="label"/>
+
+
+<p>Axiom provides an <span class="teletype">iterate</span> expression that <span class="index">iterate</span><a name="chapter-5-37"/> skips over
+the remainder of a loop body and starts the next loop iteration.
+</p>
+
+
+<p>We first initialize a counter.
+</p>
+
+
+
+
+<div id="spadComm5-34" class="spadComm" >
+<form id="formComm5-34" action="javascript:makeRequest('5-34');" >
+<input id="comm5-34" type="text" class="command" style="width: 4em;" value="i := 0" />
+</form>
+<span id="commSav5-34" class="commSav" >i := 0</span>
+<div id="mathAns5-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>Display the even integers from  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>5</mn></mstyle></math>.
+</p>
+
+
+
+<div class="verbatim"><br />
+repeat<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;5&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;if&nbsp;odd?(i)&nbsp;then&nbsp;iterate<br />
+&nbsp;&nbsp;output(i)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;4<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.7"/>
+<div class="subsection"  id="subsec-5.4.7">
+<h3 class="subsectitle">5.4.7  while Loops</h3>
+
+
+<a name="ugLangLoopsWhile" class="label"/>
+
+
+<p>The <span class="teletype">repeat</span> in a loop can be modified by adding one or more <span class="teletype">while</span>
+clauses.  <span class="index">while</span><a name="chapter-5-38"/> Each clause contains a <span class="italic">predicate</span>
+immediately following the <span class="teletype">while</span> keyword.  The predicate is tested
+<span class="italic">before</span> the evaluation of the body of the loop.  The loop body is
+evaluated whenever the predicates in a <span class="teletype">while</span> clause are all <span class="teletype">true</span>.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The syntax for a simple loop using <span class="teletype">while</span> is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">while</span> <span class="italic">predicate</span> <span class="teletype">repeat</span> <span class="italic">loopBody</span>
+</p>
+
+
+
+</div>
+
+
+<p>The <span class="italic">predicate</span> is evaluated before <span class="italic">loopBody</span> is evaluated.
+A <span class="teletype">while</span> loop terminates immediately when <span class="italic">predicate</span> evaluates
+to <span class="teletype">false</span> or when a <span class="teletype">break</span> or <span class="teletype">return</span> expression is evaluated in
+<span class="italic">loopBody</span>.  The value returned by the loop is the unique value of
+<span class="teletype">Void</span>.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>Here is a simple example of using <span class="teletype">while</span> in a loop.  We first
+initialize the counter.
+</p>
+
+
+
+<div id="spadComm5-35" class="spadComm" >
+<form id="formComm5-35" action="javascript:makeRequest('5-35');" >
+<input id="comm5-35" type="text" class="command" style="width: 4em;" value="i := 1" />
+</form>
+<span id="commSav5-35" class="commSav" >i := 1</span>
+<div id="mathAns5-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The steps involved in computing this example are<br/>
+(1) set  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>,<br/>
+(2) test the condition  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>i</mi><mo>&lt;</mo><mn>1</mn></mrow></mstyle></math> and determine that it is not <span class="teletype">true</span>, and<br/>
+(3) do not evaluate the loop body and therefore do not display  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>"</mo><mi>hello</mi><mo>"</mo></mrow></mstyle></math>.
+</p>
+
+
+
+<div class="verbatim"><br />
+while&nbsp;i&nbsp;&lt;&nbsp;1&nbsp;repeat<br />
+&nbsp;&nbsp;output&nbsp;"hello"<br />
+&nbsp;&nbsp;i&nbsp;:=&nbsp;i&nbsp;+&nbsp;1<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>If you have multiple predicates to be tested use the logical <span class="teletype">and</span>
+operation to separate them.  Axiom evaluates these predicates from
+left to right.
+</p>
+
+
+
+<div id="spadComm5-36" class="spadComm" >
+<form id="formComm5-36" action="javascript:makeRequest('5-36');" >
+<input id="comm5-36" type="text" class="command" style="width: 11em;" value="(x, y) := (1, 1)" />
+</form>
+<span id="commSav5-36" class="commSav" >(x, y) := (1, 1)</span>
+<div id="mathAns5-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+while&nbsp;x&nbsp;&lt;&nbsp;4&nbsp;and&nbsp;y&nbsp;&lt;&nbsp;10&nbsp;repeat<br />
+&nbsp;&nbsp;output&nbsp;[x,y]<br />
+&nbsp;&nbsp;x&nbsp;:=&nbsp;x&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;y&nbsp;:=&nbsp;y&nbsp;+&nbsp;2<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[1,1]<br />
+&nbsp;&nbsp;&nbsp;[2,3]<br />
+&nbsp;&nbsp;&nbsp;[3,5]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>A <span class="teletype">break</span> expression can be included in a loop body to terminate a
+loop even if the predicate in any <span class="teletype">while</span> clauses are not <span class="teletype">false</span>.
+</p>
+
+
+
+<div id="spadComm5-37" class="spadComm" >
+<form id="formComm5-37" action="javascript:makeRequest('5-37');" >
+<input id="comm5-37" type="text" class="command" style="width: 11em;" value="(x, y) := (1, 1)" />
+</form>
+<span id="commSav5-37" class="commSav" >(x, y) := (1, 1)</span>
+<div id="mathAns5-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This loop has multiple <span class="teletype">while</span> clauses and the loop terminates
+before any one of their conditions evaluates to <span class="teletype">false</span>.
+</p>
+
+
+
+<div class="verbatim"><br />
+while&nbsp;x&nbsp;&lt;&nbsp;4&nbsp;while&nbsp;y&nbsp;&lt;&nbsp;10&nbsp;repeat<br />
+&nbsp;&nbsp;if&nbsp;x&nbsp;+&nbsp;y&nbsp;&gt;&nbsp;7&nbsp;then&nbsp;break<br />
+&nbsp;&nbsp;output&nbsp;[x,y]<br />
+&nbsp;&nbsp;x&nbsp;:=&nbsp;x&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;y&nbsp;:=&nbsp;y&nbsp;+&nbsp;2<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[1,1]<br />
+&nbsp;&nbsp;&nbsp;[2,3]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Here's a different version of the nested loops that looked for the
+first negative element in a matrix.
+</p>
+
+
+
+<div id="spadComm5-38" class="spadComm" >
+<form id="formComm5-38" action="javascript:makeRequest('5-38');" >
+<input id="comm5-38" type="text" class="command" style="width: 50em;" value="m := matrix [ [21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13] ]" />
+</form>
+<span id="commSav5-38" class="commSav" >m := matrix [ [21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13] ]</span>
+<div id="mathAns5-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>21</mn></mtd><mtd><mn>37</mn></mtd><mtd><mn>53</mn></mtd><mtd><mn>14</mn></mtd></mtr><mtr><mtd><mn>8</mn></mtd><mtd><mo>-</mo><mn>24</mn></mtd><mtd><mn>22</mn></mtd><mtd><mo>-</mo><mn>16</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>10</mn></mtd><mtd><mn>15</mn></mtd><mtd><mn>14</mn></mtd></mtr><mtr><mtd><mn>26</mn></mtd><mtd><mn>33</mn></mtd><mtd><mn>55</mn></mtd><mtd><mo>-</mo><mn>13</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>Initialized the row index to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and get the number of rows and
+columns.  If we were writing a function, these would all be local
+variables.
+</p>
+
+
+
+<div id="spadComm5-39" class="spadComm" >
+<form id="formComm5-39" action="javascript:makeRequest('5-39');" >
+<input id="comm5-39" type="text" class="command" style="width: 4em;" value="r := 1" />
+</form>
+<span id="commSav5-39" class="commSav" >r := 1</span>
+<div id="mathAns5-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm5-40" class="spadComm" >
+<form id="formComm5-40" action="javascript:makeRequest('5-40');" >
+<input id="comm5-40" type="text" class="command" style="width: 28em;" value="(lastrow, lastcol) := (nrows(m), ncols(m))" />
+</form>
+<span id="commSav5-40" class="commSav" >(lastrow, lastcol) := (nrows(m), ncols(m))</span>
+<div id="mathAns5-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Scan the rows looking for the first negative element.
+</p>
+
+
+
+<div class="verbatim"><br />
+while&nbsp;r&nbsp;&lt;=&nbsp;lastrow&nbsp;repeat<br />
+&nbsp;&nbsp;c&nbsp;:=&nbsp;1&nbsp;&nbsp;--&nbsp;index&nbsp;of&nbsp;first&nbsp;column<br />
+&nbsp;&nbsp;while&nbsp;c&nbsp;&lt;=&nbsp;lastcol&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;elt(m,r,c)&nbsp;&lt;&nbsp;0&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[r,&nbsp;c,&nbsp;elt(m,r,c)]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;lastrow<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;don't&nbsp;look&nbsp;any&nbsp;further<br />
+&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;:=&nbsp;c&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;r&nbsp;:=&nbsp;r&nbsp;+&nbsp;1<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[2,2,-&nbsp;24]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.8"/>
+<div class="subsection"  id="subsec-5.4.8">
+<h3 class="subsectitle">5.4.8  for Loops</h3>
+
+
+<a name="ugLangLoopsForIn" class="label"/>
+
+
+<p>Axiom provides the <span class="teletype">for</span> <span class="index">for</span><a name="chapter-5-39"/> and <span class="teletype">in&nbsp;</span> <span class="index">in</span><a name="chapter-5-40"/> keywords in
+<span class="teletype">repeat</span> loops, allowing you to iterate across all <span class="index">iteration</span><a name="chapter-5-41"/>
+elements of a list, or to have a variable take on integral values from
+a lower bound to an upper bound.  We shall refer to these modifying
+clauses of <span class="teletype">repeat</span> loops as <span class="teletype">for</span> clauses.  These clauses can be
+present in addition to <span class="teletype">while</span> clauses.  As with all other types of
+<span class="teletype">repeat</span> loops, <span class="teletype">break</span> can <span class="index">break</span><a name="chapter-5-42"/> be used to prematurely
+terminate the evaluation of the loop.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The syntax for a simple loop using <span class="teletype">for</span> is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">for</span> <span class="italic">iterator</span> <span class="teletype">repeat</span> <span class="italic">loopBody</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>The <span class="italic">iterator</span> has several forms.  Each form has an end test which
+is evaluated before <span class="italic">loopBody</span> is evaluated.  A <span class="teletype">for</span> loop
+terminates immediately when the end test succeeds (evaluates to 
+<span class="teletype">true</span>) or when a <span class="teletype">break</span> or <span class="teletype">return</span> expression is evaluated
+in <span class="italic">loopBody</span>.  The value returned by the loop is the unique value
+of <span class="teletype">Void</span>.\&nbsp;
+</p>
+
+
+</div>
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.9"/>
+<div class="subsection"  id="subsec-5.4.9">
+<h3 class="subsectitle">5.4.9  for i in n..m repeat</h3>
+
+
+<a name="ugLangLoopsForInNM" class="label"/>
+
+
+<p>If <span class="teletype">for</span> <span class="index">for</span><a name="chapter-5-43"/> is followed by a variable name, the <span class="teletype">in&nbsp;</span>
+<span class="index">in</span><a name="chapter-5-44"/> keyword and then an integer segment of the form  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>.</mo><mo>.</mo><mi>m</mi></mrow></mstyle></math>,
+<span class="index">segment</span><a name="chapter-5-45"/> the end test for this loop is the predicate  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>i</mi><mo>&gt;</mo><mi>m</mi></mrow></mstyle></math>.
+The body of the loop is evaluated  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>m</mi><mo>-</mo><mi>n</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math> times if this number is
+greater than 0.  If this number is less than or equal to 0, the loop
+body is not evaluated at all.
+</p>
+
+
+<p>The variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> has the value  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>,</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi></mrow></mstyle></math> for successive iterations
+of the loop body.The loop variable is a <span class="italic">local variable</span>
+within the loop body: its value is not available outside the loop body
+and its value and type within the loop body completely mask any outer
+definition of a variable with the same name.
+</p>
+
+
+<p>This loop prints the values of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>10</mn><mn>3</mn></msup></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>11</mn><mn>3</mn></msup></mrow></mstyle></math>, and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>12</mn><mn>3</mn></msup></mrow></mstyle></math>:
+</p>
+
+
+
+<div id="spadComm5-41" class="spadComm" >
+<form id="formComm5-41" action="javascript:makeRequest('5-41');" >
+<input id="comm5-41" type="text" class="command" style="width: 24em;" value="for i in 10..12 repeat output(i**3)" />
+</form>
+<span id="commSav5-41" class="commSav" >for i in 10..12 repeat output(i**3)</span>
+<div id="mathAns5-41" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;1000<br />
+&nbsp;&nbsp;&nbsp;1331<br />
+&nbsp;&nbsp;&nbsp;1728<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Here is a sample list.
+</p>
+
+
+
+<div id="spadComm5-42" class="spadComm" >
+<form id="formComm5-42" action="javascript:makeRequest('5-42');" >
+<input id="comm5-42" type="text" class="command" style="width: 8em;" value="a := [1,2,3]" />
+</form>
+<span id="commSav5-42" class="commSav" >a := [1,2,3]</span>
+<div id="mathAns5-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Iterate across this list, using ``<span class="teletype">.</span>'' to access the elements of
+a list and the ``<span style="font-weight: bold;">#</span>'' operation to count its elements.
+</p>
+
+
+
+
+<div id="spadComm5-43" class="spadComm" >
+<form id="formComm5-43" action="javascript:makeRequest('5-43');" >
+<input id="comm5-43" type="text" class="command" style="width: 23em;" value="for i in 1.. #a repeat output(a.i)" />
+</form>
+<span id="commSav5-43" class="commSav" >for i in 1.. #a repeat output(a.i)</span>
+<div id="mathAns5-43" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;3<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This type of iteration is applicable to anything that uses ``<span class="teletype">.</span>''.
+You can also use it with functions that use indices to extract elements.
+</p>
+
+
+<p>Define  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> to be a matrix.
+</p>
+
+
+
+<div id="spadComm5-44" class="spadComm" >
+<form id="formComm5-44" action="javascript:makeRequest('5-44');" >
+<input id="comm5-44" type="text" class="command" style="width: 22em;" value="m := matrix [ [1,2],[4,3],[9,0] ]" />
+</form>
+<span id="commSav5-44" class="commSav" >m := matrix [ [1,2],[4,3],[9,0] ]</span>
+<div id="mathAns5-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>9</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>Display the rows of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-45" class="spadComm" >
+<form id="formComm5-45" action="javascript:makeRequest('5-45');" >
+<input id="comm5-45" type="text" class="command" style="width: 29em;" value="for i in 1..nrows(m) repeat output row(m,i)" />
+</form>
+<span id="commSav5-45" class="commSav" >for i in 1..nrows(m) repeat output row(m,i)</span>
+<div id="mathAns5-45" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;[1,2]<br />
+&nbsp;&nbsp;&nbsp;[4,3]<br />
+&nbsp;&nbsp;&nbsp;[9,0]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>You can use <span class="teletype">iterate</span> with <span class="teletype">for</span>-loops.<span class="index">iterate</span><a name="chapter-5-46"/>
+</p>
+
+
+<p>Display the even integers in a segment.
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;1..5&nbsp;repeat<br />
+&nbsp;&nbsp;if&nbsp;odd?(i)&nbsp;then&nbsp;iterate<br />
+&nbsp;&nbsp;output(i)<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;4<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>See section <a href="section-9.69.xhtml#SegmentXmpPage" class="ref" >SegmentXmpPage</a>  for
+more information about segments.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.10"/>
+<div class="subsection"  id="subsec-5.4.10">
+<h3 class="subsectitle">5.4.10  for i in n..m by s repeat</h3>
+
+
+<a name="ugLangLoopsForInNMS" class="label"/>
+
+
+<p>By default, the difference between values taken on by a variable in
+loops such as <span class="teletype">for i in n..m repeat ...</span> is  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.  It is possible to
+supply another, possibly negative, step value by using the <span class="teletype">by</span>
+<span class="index">by</span><a name="chapter-5-47"/> keyword along with <span class="teletype">for</span> and <span class="teletype">in&nbsp;</span>.  Like the upper and
+lower bounds, the step value following the <span class="teletype">by</span> keyword must be an
+integer.  Note that the loop <span class="teletype">for i in 1..2 by 0 repeat output(i)</span>
+will not terminate by itself, as the step value does not change the
+index from its initial value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+</p>
+
+
+<p>This expression displays the odd integers between two bounds.
+</p>
+
+
+
+<div id="spadComm5-46" class="spadComm" >
+<form id="formComm5-46" action="javascript:makeRequest('5-46');" >
+<input id="comm5-46" type="text" class="command" style="width: 24em;" value="for i in 1..5 by 2 repeat output(i)" />
+</form>
+<span id="commSav5-46" class="commSav" >for i in 1..5 by 2 repeat output(i)</span>
+<div id="mathAns5-46" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;3<br />
+&nbsp;&nbsp;&nbsp;5<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Use this to display the numbers in reverse order.
+</p>
+
+
+
+<div id="spadComm5-47" class="spadComm" >
+<form id="formComm5-47" action="javascript:makeRequest('5-47');" >
+<input id="comm5-47" type="text" class="command" style="width: 24em;" value="for i in 5..1 by -2 repeat output(i)" />
+</form>
+<span id="commSav5-47" class="commSav" >for i in 5..1 by -2 repeat output(i)</span>
+<div id="mathAns5-47" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;5<br />
+&nbsp;&nbsp;&nbsp;3<br />
+&nbsp;&nbsp;&nbsp;1<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.11"/>
+<div class="subsection"  id="subsec-5.4.11">
+<h3 class="subsectitle">5.4.11  for i in n.. repeat</h3>
+
+
+<a name="ugLangLoopsForInN" class="label"/>
+
+
+<p>If the value after the ``<span class="teletype">..</span>''  is omitted, the loop has no end test.
+A potentially infinite loop is thus created.  The variable is given
+the successive values  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>,</mo><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>n</mi><mo>+</mo><mn>2</mn></mrow><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo></mrow></mstyle></math> and the loop is terminated
+only if a <span class="teletype">break</span> or <span class="teletype">return</span> expression is evaluated in the loop
+body.  However you may also add some other modifying clause on the
+<span class="teletype">repeat</span> (for example, a <span class="teletype">while</span> clause) to stop the loop.
+</p>
+
+
+<p>This loop displays the integers greater than or equal to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>15</mn></mstyle></math>
+and less than the first prime greater than  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>15</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-48" class="spadComm" >
+<form id="formComm5-48" action="javascript:makeRequest('5-48');" >
+<input id="comm5-48" type="text" class="command" style="width: 34em;" value="for i in 15.. while not prime?(i) repeat output(i)" />
+</form>
+<span id="commSav5-48" class="commSav" >for i in 15.. while not prime?(i) repeat output(i)</span>
+<div id="mathAns5-48" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;15<br />
+&nbsp;&nbsp;&nbsp;16<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.12"/>
+<div class="subsection"  id="subsec-5.4.12">
+<h3 class="subsectitle">5.4.12  for x in l repeat</h3>
+
+
+<a name="ugLangLoopsForInXL" class="label"/>
+
+
+<p>Another variant of the <span class="teletype">for</span> loop has the form:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="italic"><span class="teletype">for</span> x <span class="teletype">in&nbsp;</span> list <span class="teletype">repeat</span> loopBody</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>This form is used when you want to iterate directly over the elements
+of a list.  In this form of the <span class="teletype">for</span> loop, the variable <span class="teletype">x</span> takes on
+the value of each successive element in <span class="teletype">l</span>.  The end test is most
+simply stated in English: ``are there no more <span class="teletype">x</span> in <span class="teletype">l</span>?''
+</p>
+
+
+<p>If <span class="teletype">l</span> is this list,
+</p>
+
+
+
+<div id="spadComm5-49" class="spadComm" >
+<form id="formComm5-49" action="javascript:makeRequest('5-49');" >
+<input id="comm5-49" type="text" class="command" style="width: 9em;" value="l := [0,-5,3]" />
+</form>
+<span id="commSav5-49" class="commSav" >l := [0,-5,3]</span>
+<div id="mathAns5-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mo>-</mo><mn>5</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>display all elements of <span class="teletype">l</span>, one per line.
+</p>
+
+
+
+<div id="spadComm5-50" class="spadComm" >
+<form id="formComm5-50" action="javascript:makeRequest('5-50');" >
+<input id="comm5-50" type="text" class="command" style="width: 18em;" value="for x in l repeat output(x)" />
+</form>
+<span id="commSav5-50" class="commSav" >for x in l repeat output(x)</span>
+<div id="mathAns5-50" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;0<br />
+&nbsp;&nbsp;&nbsp;-&nbsp;5<br />
+&nbsp;&nbsp;&nbsp;3<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Since the list constructing expression <span style="font-weight: bold;">expand</span><span class="teletype">[n..m]</span> creates the
+list  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>n</mi><mo>,</mo><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi><mo>]</mo></mrow></mstyle></math>. Note that this list is empty if  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>&gt;</mo><mi>m</mi></mrow></mstyle></math>.  You
+might be tempted to think that the loops
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;n..m&nbsp;repeat&nbsp;output(i)<br />
+</div>
+
+
+
+<p>and
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;x&nbsp;in&nbsp;expand&nbsp;[n..m]&nbsp;repeat&nbsp;output(x)<br />
+</div>
+
+
+
+<p>are equivalent.  The second form first creates the list <span style="font-weight: bold;">
+expand</span><span class="teletype">[n..m]</span> (no matter how large it might be) and then does
+the iteration.  The first form potentially runs in much less space, as
+the index variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> is simply incremented once per loop and the
+list is not actually created.  Using the first form is much more
+efficient.
+</p>
+
+
+<p>Of course, sometimes you really want to iterate across a specific list.
+This displays each of the factors of  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2400000</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-51" class="spadComm" >
+<form id="formComm5-51" action="javascript:makeRequest('5-51');" >
+<input id="comm5-51" type="text" class="command" style="width: 34em;" value="for f in factors(factor(2400000)) repeat output(f)" />
+</form>
+<span id="commSav5-51" class="commSav" >for f in factors(factor(2400000)) repeat output(f)</span>
+<div id="mathAns5-51" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;[factor=&nbsp;2,exponent=&nbsp;8]<br />
+&nbsp;&nbsp;&nbsp;[factor=&nbsp;3,exponent=&nbsp;1]<br />
+&nbsp;&nbsp;&nbsp;[factor=&nbsp;5,exponent=&nbsp;5]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.13"/>
+<div class="subsection"  id="subsec-5.4.13">
+<h3 class="subsectitle">5.4.13  ``Such that'' Predicates</h3>
+
+
+<a name="ugLangLoopsForInPred" class="label"/>
+
+
+<p>A <span class="teletype">for</span> loop can be followed by a ``<span class="teletype">|</span>'' and then a predicate.  The
+predicate qualifies the use of the values from the iterator following
+the <span class="teletype">for</span>.  Think of the vertical bar ``<span class="teletype">|</span>'' as the phrase ``such
+that.''
+</p>
+
+
+<p>This loop expression prints out the integers  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> in the given segment
+such that  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> is odd.
+</p>
+
+
+
+<div id="spadComm5-52" class="spadComm" >
+<form id="formComm5-52" action="javascript:makeRequest('5-52');" >
+<input id="comm5-52" type="text" class="command" style="width: 26em;" value="for n in 0..4 | odd? n repeat output n" />
+</form>
+<span id="commSav5-52" class="commSav" >for n in 0..4 | odd? n repeat output n</span>
+<div id="mathAns5-52" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;3<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>A <span class="teletype">for</span> loop can also be written
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mtext>for</mtext></mrow><mspace width="0.5 em" /><mrow><mtext mathvariant='sans-serif-italic'>iterator</mtext></mrow><mspace width="0.5 em" /><mo>|</mo><mspace width="0.5 em" /><mrow><mtext mathvariant='sans-serif-italic'>predicate</mtext></mrow><mspace width="0.5 em" /><mrow><mtext>repeat</mtext></mrow><mspace width="0.5 em" /><mrow><mtext mathvariant='sans-serif-italic'>loopBody</mtext></mrow></mrow></mstyle></math>
+</p>
+
+
+<p>which is equivalent to:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mtext>for</mtext></mrow><mrow><mtext mathvariant='sans-serif-italic'>&nbsp;iterator&nbsp;</mtext></mrow><mrow><mtext>repeat&nbsp;if</mtext></mrow><mrow><mtext mathvariant='sans-serif-italic'>&nbsp;predicate&nbsp;</mtext></mrow><mrow><mtext>then</mtext></mrow><mrow><mtext mathvariant='sans-serif-italic'>&nbsp;loopBody&nbsp;</mtext></mrow><mrow><mtext>else&nbsp;</mtext></mrow><mi>iterate</mi></mrow></mstyle></math>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>The predicate need not refer only to the variable in the <span class="teletype">for</span> clause:
+any variable in an outer scope can be part of the predicate.
+</p>
+
+
+<p>In this example, the predicate on the inner <span class="teletype">for</span> loop uses  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> from
+the outer loop and the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>j</mi></mstyle></math> from the <span class="teletype">for</span> <span class="index">iteration:nested</span><a name="chapter-5-48"/>
+clause that it directly modifies.
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;1..50&nbsp;repeat<br />
+&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;1..50&nbsp;|&nbsp;factorial(i+j)&nbsp;&lt;&nbsp;25&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[i,j]<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[1,1]<br />
+&nbsp;&nbsp;&nbsp;[1,2]<br />
+&nbsp;&nbsp;&nbsp;[1,3]<br />
+&nbsp;&nbsp;&nbsp;[2,1]<br />
+&nbsp;&nbsp;&nbsp;[2,2]<br />
+&nbsp;&nbsp;&nbsp;[3,1]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.14"/>
+<div class="subsection"  id="subsec-5.4.14">
+<h3 class="subsectitle">5.4.14  Parallel Iteration</h3>
+
+
+<a name="ugLangLoopsPar" class="label"/>
+
+
+<p>The last example of the previous section 
+<a href="section-5.4.xhtml#ugLangLoopsForInPred" class="ref" >ugLangLoopsForInPred</a> 
+gives an example of <span class="italic">nested iteration</span>: a loop is contained
+<span class="index">iteration:nested</span><a name="chapter-5-49"/> in another loop.  <span class="index">iteration:parallel</span><a name="chapter-5-50"/>
+Sometimes you want to iterate across two lists in parallel, or perhaps
+you want to traverse a list while incrementing a variable.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The general syntax of a repeat loop is 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>iterator</mi><mn>1</mn></msub><mspace width="0.5 em" /><msub><mi>iterator</mi><mn>2</mn></msub><mspace width="0.5 em" /><mo>&#x2026;</mo><mspace width="0.5 em" /><msub><mi>iterator</mi><mi>N</mi></msub><mrow><mtext>&nbsp;repeat&nbsp;</mtext></mrow><mi>loopBody</mi></mrow></mstyle></math>
+where each <span class="italic">iterator</span> is either a <span class="teletype">for</span> or a <span class="teletype">while</span> clause.  The
+loop terminates immediately when the end test of any <span class="italic">iterator</span>
+succeeds or when a <span class="teletype">break</span> or <span class="teletype">return</span> expression is evaluated in <span class="italic">loopBody</span>.  The value returned by the loop is the unique value of <span class="teletype">Void</span>.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>Here we write a loop to iterate across two lists, computing the sum of
+the pairwise product of elements. Here is the first list.
+</p>
+
+
+
+<div id="spadComm5-53" class="spadComm" >
+<form id="formComm5-53" action="javascript:makeRequest('5-53');" >
+<input id="comm5-53" type="text" class="command" style="width: 10em;" value="l := [1,3,5,7]" />
+</form>
+<span id="commSav5-53" class="commSav" >l := [1,3,5,7]</span>
+<div id="mathAns5-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>And the second.
+</p>
+
+
+
+<div id="spadComm5-54" class="spadComm" >
+<form id="formComm5-54" action="javascript:makeRequest('5-54');" >
+<input id="comm5-54" type="text" class="command" style="width: 10em;" value="m := [100,200]" />
+</form>
+<span id="commSav5-54" class="commSav" >m := [100,200]</span>
+<div id="mathAns5-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>100</mn><mo>,</mo><mn>200</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>The initial value of the sum counter.
+</p>
+
+
+
+<div id="spadComm5-55" class="spadComm" >
+<form id="formComm5-55" action="javascript:makeRequest('5-55');" >
+<input id="comm5-55" type="text" class="command" style="width: 6em;" value="sum := 0" />
+</form>
+<span id="commSav5-55" class="commSav" >sum := 0</span>
+<div id="mathAns5-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>The last two elements of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>l</mi></mstyle></math> are not used in the calculation because
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> has two fewer elements than  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>l</mi></mstyle></math>.
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;x&nbsp;in&nbsp;l&nbsp;for&nbsp;y&nbsp;in&nbsp;m&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;:=&nbsp;sum&nbsp;+&nbsp;x*y<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Display the ``dot product.''
+</p>
+
+
+
+<div id="spadComm5-56" class="spadComm" >
+<form id="formComm5-56" action="javascript:makeRequest('5-56');" >
+<input id="comm5-56" type="text" class="command" style="width: 2em;" value="sum" />
+</form>
+<span id="commSav5-56" class="commSav" >sum</span>
+<div id="mathAns5-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>700</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>Next, we write a loop to compute the sum of the products of the loop
+elements with their positions in the loop.
+</p>
+
+
+
+<div id="spadComm5-57" class="spadComm" >
+<form id="formComm5-57" action="javascript:makeRequest('5-57');" >
+<input id="comm5-57" type="text" class="command" style="width: 26em;" value="l := [2,3,5,7,11,13,17,19,23,29,31,37]" />
+</form>
+<span id="commSav5-57" class="commSav" >l := [2,3,5,7,11,13,17,19,23,29,31,37]</span>
+<div id="mathAns5-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>19</mn><mo>,</mo><mn>23</mn><mo>,</mo><mn>29</mn><mo>,</mo><mn>31</mn><mo>,</mo><mn>37</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>The initial sum.
+</p>
+
+
+
+<div id="spadComm5-58" class="spadComm" >
+<form id="formComm5-58" action="javascript:makeRequest('5-58');" >
+<input id="comm5-58" type="text" class="command" style="width: 6em;" value="sum := 0" />
+</form>
+<span id="commSav5-58" class="commSav" >sum := 0</span>
+<div id="mathAns5-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>Here looping stops when the list  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>l</mi></mstyle></math> is exhausted, even though
+the  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>for</mi><mi>i</mi><mi>in</mi><mn>0</mn><mo>.</mo><mo>.</mo></mrow></mstyle></math> specifies no terminating condition.
+</p>
+
+
+
+
+<div id="spadComm5-59" class="spadComm" >
+<form id="formComm5-59" action="javascript:makeRequest('5-59');" >
+<input id="comm5-59" type="text" class="command" style="width: 29em;" value="for i in 0.. for x in l repeat sum := i * x" />
+</form>
+<span id="commSav5-59" class="commSav" >for i in 0.. for x in l repeat sum := i * x</span>
+<div id="mathAns5-59" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Display this weighted sum.
+</p>
+
+
+
+<div id="spadComm5-60" class="spadComm" >
+<form id="formComm5-60" action="javascript:makeRequest('5-60');" >
+<input id="comm5-60" type="text" class="command" style="width: 2em;" value="sum" />
+</form>
+<span id="commSav5-60" class="commSav" >sum</span>
+<div id="mathAns5-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>407</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>When ``<span class="teletype">|</span>'' is used to qualify any of the <span class="teletype">for</span> clauses in a parallel
+iteration, the variables in the predicates can be from an outer scope
+or from a <span class="teletype">for</span> clause in or to the left of a modified clause.
+</p>
+
+
+<p>This is correct:
+</p>
+
+
+<p><!-- output from following is too long to show -->
+</p>
+
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;1..10&nbsp;repeat<br />
+&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;200..300&nbsp;|&nbsp;odd?&nbsp;(i+j)&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[i,j]<br />
+</div>
+
+
+
+<p>This is not correct since the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>j</mi></mstyle></math> has not been defined
+outside the inner loop.
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;1..10&nbsp;|&nbsp;odd?&nbsp;(i+j)&nbsp;repeat&nbsp;&nbsp;--&nbsp;wrong,&nbsp;j&nbsp;not&nbsp;defined<br />
+&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;200..300&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[i,j]<br />
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-5.4.15"/>
+<div class="subsection"  id="subsec-5.4.15">
+<h3 class="subsectitle">5.4.15  Mixing Loop Modifiers</h3>
+
+
+<a name="ugLangLoopsMix" class="label"/>
+
+
+<p>This example shows that it is possible to mix several of the
+<span class="index">loop:mixing modifiers</span><a name="chapter-5-51"/> forms of <span class="teletype">repeat</span> modifying clauses on a loop.
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;i&nbsp;in&nbsp;1..10<br />
+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;151..160&nbsp;|&nbsp;odd?&nbsp;j<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;i&nbsp;+&nbsp;j&nbsp;&lt;&nbsp;160&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[i,j]<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;[1,151]<br />
+&nbsp;&nbsp;&nbsp;[3,153]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Here are useful rules for composing loop expressions:
+</p>
+
+
+
+<ol>
+<li>
+ <span class="teletype">while</span> predicates can only refer to variables that
+are global (or in an outer scope)
+or that are defined in <span class="teletype">for</span> clauses to the left of the
+predicate.
+</li>
+<li> A ``such that'' predicate (something following ``<span class="teletype">|</span>'')
+must directly follow a <span class="teletype">for</span> clause and can only refer to
+variables that are global (or in an outer scope)
+or defined in the modified <span class="teletype">for</span> clause
+or any <span class="teletype">for</span> clause to the left.
+</li>
+</ol>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-5.3.xhtml" style="margin-right: 10px;">Previous Section 5.3 if-then-else</a><a href="section-5.5.xhtml" style="margin-right: 10px;">Next Section 5.5 Creating Lists and Streams with Iterators</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-5.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-5.5.xhtml
new file mode 100644
index 0000000..2c0f5ae
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-5.5.xhtml
@@ -0,0 +1,458 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section5.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-5.4.xhtml" style="margin-right: 10px;">Previous Section 5.4 Loops</a><a href="section-5.6.xhtml" style="margin-right: 10px;">Next Section 5.6 An Example: Streams of Primes</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-5.5">
+<h2 class="sectiontitle">5.5  Creating Lists and Streams with Iterators</h2>
+
+
+<a name="ugLangIts" class="label"/>
+
+
+<p>All of what we did for loops in 
+<a href="section-5.4.xhtml#ugLangLoops" class="ref" >ugLangLoops</a>  <span class="index">iteration</span><a name="chapter-5-52"/>
+can be transformed into expressions that create lists
+<span class="index">list:created by iterator</span><a name="chapter-5-53"/> and streams.  <span class="index">stream:created
+by iterator</span><a name="chapter-5-54"/> The <span class="teletype">repeat</span>, <span class="teletype">break</span> or <span class="teletype">iterate</span> words are not used but
+all the other ideas carry over.  Before we give you the general rule,
+here are some examples which give you the idea.
+</p>
+
+
+<p>This creates a simple list of the integers from  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-61" class="spadComm" >
+<form id="formComm5-61" action="javascript:makeRequest('5-61');" >
+<input id="comm5-61" type="text" class="command" style="width: 18em;" value="list := [i for i in 1..10]" />
+</form>
+<span id="commSav5-61" class="commSav" >list := [i for i in 1..10]</span>
+<div id="mathAns5-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Create a stream of the integers greater than or equal to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-62" class="spadComm" >
+<form id="formComm5-62" action="javascript:makeRequest('5-62');" >
+<input id="comm5-62" type="text" class="command" style="width: 18em;" value="stream := [i for i in 1..]" />
+</form>
+<span id="commSav5-62" class="commSav" >stream := [i for i in 1..]</span>
+<div id="mathAns5-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream PositiveInteger
+</div>
+
+
+
+<p>This is a list of the prime integers between  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math>, inclusive.
+</p>
+
+
+
+<div id="spadComm5-63" class="spadComm" >
+<form id="formComm5-63" action="javascript:makeRequest('5-63');" >
+<input id="comm5-63" type="text" class="command" style="width: 20em;" value="[i for i in 1..10 | prime? i]" />
+</form>
+<span id="commSav5-63" class="commSav" >[i for i in 1..10 | prime? i]</span>
+<div id="mathAns5-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>This is a stream of the prime integers greater than or equal to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-64" class="spadComm" >
+<form id="formComm5-64" action="javascript:makeRequest('5-64');" >
+<input id="comm5-64" type="text" class="command" style="width: 20em;" value="[i for i in 1..   | prime? i]" />
+</form>
+<span id="commSav5-64" class="commSav" >[i for i in 1..   | prime? i]</span>
+<div id="mathAns5-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>19</mn><mo>,</mo><mn>23</mn><mo>,</mo><mn>29</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream PositiveInteger
+</div>
+
+
+
+<p>This is a list of the integers between  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math>, inclusive, whose
+squares are less than  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>700</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-65" class="spadComm" >
+<form id="formComm5-65" action="javascript:makeRequest('5-65');" >
+<input id="comm5-65" type="text" class="command" style="width: 23em;" value="[i for i in 1..10 while i*i &lt; 700]" />
+</form>
+<span id="commSav5-65" class="commSav" >[i for i in 1..10 while i*i &lt; 700]</span>
+<div id="mathAns5-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>This is a stream of the integers greater than or equal to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>
+whose squares are less than  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>700</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm5-66" class="spadComm" >
+<form id="formComm5-66" action="javascript:makeRequest('5-66');" >
+<input id="comm5-66" type="text" class="command" style="width: 23em;" value="[i for i in 1..   while i*i &lt; 700]" />
+</form>
+<span id="commSav5-66" class="commSav" >[i for i in 1..   while i*i &lt; 700]</span>
+<div id="mathAns5-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream PositiveInteger
+</div>
+
+
+
+<p>Here is the general rule.
+<span class="index">collection</span><a name="chapter-5-55"/>
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The general syntax of a collection is
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">[ <span class="italic">collectExpression</span>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>iterator</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>  
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>iterator</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math> ...  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>iterator</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math> ]</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>where each  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>iterator</mtext></mrow><mi>i</mi></msub></mrow></mstyle></math> is either a <span class="teletype">for</span> or a <span class="teletype">while</span>
+clause.  The loop terminates immediately when the end test of any
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>iterator</mtext></mrow><mi>i</mi></msub></mrow></mstyle></math> succeeds or when a <span class="teletype">return</span> expression is
+evaluated in <span class="italic">collectExpression</span>.  The value returned by the
+collection is either a list or a stream of elements, one for each
+iteration of the <span class="italic">collectExpression</span>.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>Be careful when you use <span class="teletype">while</span> 
+<span class="index">stream:using while @{using <span class="teletype">while</span><a name="chapter-5-56"/>}</span> 
+to create a stream.  By default, Axiom tries to compute and
+display the first ten elements of a stream.  If the <span class="teletype">while</span> condition
+is not satisfied quickly, Axiom can spend a long (possibly infinite)
+time trying to compute <span class="index">stream:number of elements computed</span><a name="chapter-5-57"/> the
+elements.  Use <span class="teletype">)set streams calculate</span> to change the default to
+something else.  <span class="index">set streams calculate</span><a name="chapter-5-58"/> This also affects the
+number of terms computed and displayed for power series.  For the
+purposes of this book, we have used this system command to display
+fewer than ten terms.
+</p>
+
+
+<p>Use nested iterators to create lists of <span class="index">iteration:nested</span><a name="chapter-5-59"/> lists
+which can then be given as an argument to <span style="font-weight: bold;">matrix</span>.
+</p>
+
+
+
+<div id="spadComm5-67" class="spadComm" >
+<form id="formComm5-67" action="javascript:makeRequest('5-67');" >
+<input id="comm5-67" type="text" class="command" style="width: 32em;" value="matrix [ [x**i+j for i in 1..3] for j in 10..12]" />
+</form>
+<span id="commSav5-67" class="commSav" >matrix [ [x**i+j for i in 1..3] for j in 10..12]</span>
+<div id="mathAns5-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mi>x</mi><mo>+</mo><mn>10</mn></mrow></mtd><mtd><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>10</mn></mrow></mtd><mtd><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mn>10</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>x</mi><mo>+</mo><mn>11</mn></mrow></mtd><mtd><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>11</mn></mrow></mtd><mtd><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mn>11</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>x</mi><mo>+</mo><mn>12</mn></mrow></mtd><mtd><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>12</mn></mrow></mtd><mtd><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mn>12</mn></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Integer
+</div>
+
+
+
+<p>You can also create lists of streams, streams of lists and streams of
+streams.  Here is a stream of streams.
+</p>
+
+
+
+<div id="spadComm5-68" class="spadComm" >
+<form id="formComm5-68" action="javascript:makeRequest('5-68');" >
+<input id="comm5-68" type="text" class="command" style="width: 24em;" value="[ [i/j for i in j+1..] for j in 1..]" />
+</form>
+<span id="commSav5-68" class="commSav" >[ [i/j for i in j+1..] for j in 1..]</span>
+<div id="mathAns5-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>11</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo><mn>2</mn><mo>,</mo><mfrac><mn>5</mn><mn>2</mn></mfrac><mo>,</mo><mn>3</mn><mo>,</mo><mfrac><mn>7</mn><mn>2</mn></mfrac><mo>,</mo><mn>4</mn><mo>,</mo><mfrac><mn>9</mn><mn>2</mn></mfrac><mo>,</mo><mn>5</mn><mo>,</mo><mfrac><mn>11</mn><mn>2</mn></mfrac><mo>,</mo><mn>6</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow><mo>,</mo><mo>.</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mfrac><mn>4</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>5</mn><mn>3</mn></mfrac><mo>,</mo><mn>2</mn><mo>,</mo><mfrac><mn>7</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>8</mn><mn>3</mn></mfrac><mo>,</mo><mn>3</mn><mo>,</mo><mfrac><mn>10</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>11</mn><mn>3</mn></mfrac><mo>,</mo><mn>4</mn><mo>,</mo><mfrac><mn>13</mn><mn>3</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mfrac><mn>5</mn><mn>4</mn></mfrac><mo>,</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo><mfrac><mn>7</mn><mn>4</mn></mfrac><mo>,</mo><mn>2</mn><mo>,</mo><mfrac><mn>9</mn><mn>4</mn></mfrac><mo>,</mo><mfrac><mn>5</mn><mn>2</mn></mfrac><mo>,</mo><mfrac><mn>11</mn><mn>4</mn></mfrac><mo>,</mo><mn>3</mn><mo>,</mo><mfrac><mn>13</mn><mn>4</mn></mfrac><mo>,</mo><mfrac><mn>7</mn><mn>2</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mfrac><mn>6</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>7</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>8</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>9</mn><mn>5</mn></mfrac><mo>,</mo><mn>2</mn><mo>,</mo><mfrac><mn>11</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>12</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>13</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>14</mn><mn>5</mn></mfrac><mo>,</mo><mn>3</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mfrac><mn>7</mn><mn>6</mn></mfrac><mo>,</mo><mfrac><mn>4</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo><mfrac><mn>5</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>11</mn><mn>6</mn></mfrac><mo>,</mo><mn>2</mn><mo>,</mo><mfrac><mn>13</mn><mn>6</mn></mfrac><mo>,</mo><mfrac><mn>7</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>5</mn><mn>2</mn></mfrac><mo>,</mo><mfrac><mn>8</mn><mn>3</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mfrac><mn>8</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>9</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>10</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>11</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>12</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>13</mn><mn>7</mn></mfrac><mo>,</mo><mn>2</mn><mo>,</mo><mfrac><mn>15</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>16</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>17</mn><mn>7</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mfrac><mn>9</mn><mn>8</mn></mfrac><mo>,</mo><mfrac><mn>5</mn><mn>4</mn></mfrac><mo>,</mo><mfrac><mn>11</mn><mn>8</mn></mfrac><mo>,</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo><mfrac><mn>13</mn><mn>8</mn></mfrac><mo>,</mo><mfrac><mn>7</mn><mn>4</mn></mfrac><mo>,</mo><mfrac><mn>15</mn><mn>8</mn></mfrac><mo>,</mo><mn>2</mn><mo>,</mo><mfrac><mn>17</mn><mn>8</mn></mfrac><mo>,</mo><mfrac><mn>9</mn><mn>4</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mfrac><mn>10</mn><mn>9</mn></mfrac><mo>,</mo><mfrac><mn>11</mn><mn>9</mn></mfrac><mo>,</mo><mfrac><mn>4</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>13</mn><mn>9</mn></mfrac><mo>,</mo><mfrac><mn>14</mn><mn>9</mn></mfrac><mo>,</mo><mfrac><mn>5</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>16</mn><mn>9</mn></mfrac><mo>,</mo><mfrac><mn>17</mn><mn>9</mn></mfrac><mo>,</mo><mn>2</mn><mo>,</mo><mfrac><mn>19</mn><mn>9</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>.</mo><mrow><mo>[</mo><mfrac><mn>11</mn><mn>10</mn></mfrac><mo>,</mo><mfrac><mn>6</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>13</mn><mn>10</mn></mfrac><mo>,</mo><mfrac><mn>7</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo><mfrac><mn>8</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>17</mn><mn>10</mn></mfrac><mo>,</mo><mfrac><mn>9</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>19</mn><mn>10</mn></mfrac><mo>,</mo><mn>2</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Stream Fraction Integer
+</div>
+
+
+
+<p>You can use parallel iteration across lists and streams to create
+<span class="index">iteration:parallel</span><a name="chapter-5-60"/> new lists.
+</p>
+
+
+
+<div id="spadComm5-69" class="spadComm" >
+<form id="formComm5-69" action="javascript:makeRequest('5-69');" >
+<input id="comm5-69" type="text" class="command" style="width: 25em;" value="[i/j for i in 3.. by 10 for j in 2..]" />
+</form>
+<span id="commSav5-69" class="commSav" >[i/j for i in 3.. by 10 for j in 2..]</span>
+<div id="mathAns5-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo><mfrac><mn>13</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>23</mn><mn>4</mn></mfrac><mo>,</mo><mfrac><mn>33</mn><mn>5</mn></mfrac><mo>,</mo><mfrac><mn>43</mn><mn>6</mn></mfrac><mo>,</mo><mfrac><mn>53</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>63</mn><mn>8</mn></mfrac><mo>,</mo><mfrac><mn>73</mn><mn>9</mn></mfrac><mo>,</mo><mfrac><mn>83</mn><mn>10</mn></mfrac><mo>,</mo><mfrac><mn>93</mn><mn>11</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Fraction Integer
+</div>
+
+
+
+<p>Iteration stops if the end of a list or stream is reached.
+</p>
+
+
+
+<div id="spadComm5-70" class="spadComm" >
+<form id="formComm5-70" action="javascript:makeRequest('5-70');" >
+<input id="comm5-70" type="text" class="command" style="width: 23em;" value="[i**j for i in 1..7 for j in 2.. ]" />
+</form>
+<span id="commSav5-70" class="commSav" >[i**j for i in 1..7 for j in 2.. ]</span>
+<div id="mathAns5-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>1024</mn><mo>,</mo><mn>15625</mn><mo>,</mo><mn>279936</mn><mo>,</mo><mn>5764801</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>As with loops, you can combine these modifiers to make very
+complicated conditions.
+</p>
+
+
+
+<div id="spadComm5-71" class="spadComm" >
+<form id="formComm5-71" action="javascript:makeRequest('5-71');" >
+<input id="comm5-71" type="text" class="command" style="width: 52em;" value="[ [ [i,j] for i in 10..15 | prime? i] for j in 17..22 | j = squareFreePart j]" />
+</form>
+<span id="commSav5-71" class="commSav" >[ [ [i,j] for i in 10..15 | prime? i] for j in 17..22 | j = squareFreePart j]</span>
+<div id="mathAns5-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>17</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>13</mn><mo>,</mo><mn>17</mn><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>19</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>13</mn><mo>,</mo><mn>19</mn><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>21</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>22</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>13</mn><mo>,</mo><mn>22</mn><mo>]</mo></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List List PositiveInteger
+</div>
+
+
+
+<p>See List 
+(section <a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> ) and Stream 
+(section <a href="section-9.76.xhtml#StreamXmpPage" class="ref" >StreamXmpPage</a> )
+for more information on creating and
+manipulating lists and streams, respectively.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-5.4.xhtml" style="margin-right: 10px;">Previous Section 5.4 Loops</a><a href="section-5.6.xhtml" style="margin-right: 10px;">Next Section 5.6 An Example: Streams of Primes</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-5.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-5.6.xhtml
new file mode 100644
index 0000000..4534415
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-5.6.xhtml
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section5.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-5.5.xhtml" style="margin-right: 10px;">Previous Section 5.5 Creating Lists and Streams with Iterators</a><a href="section-6.0.xhtml" style="margin-right: 10px;">Next Section 6.0 Functions, Macros and Rules</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-5.6">
+<h2 class="sectiontitle">5.6  An Example: Streams of Primes</h2>
+
+
+<a name="ugLangStreamsPrimes" class="label"/>
+
+
+<p>We conclude this chapter with an example of the creation and
+manipulation of infinite streams of prime integers.  This might be
+useful for experiments with numbers or other applications where you
+are using sequences of primes over and over again.  As for all
+streams, the stream of primes is only computed as far out as you need.
+Once computed, however, all the primes up to that point are saved for
+future reference.
+</p>
+
+
+<p>Two useful operations provided by the Axiom library are
+<span class="spadfunFrom" >prime?</span><span class="index">prime?</span><a name="chapter-5-61"/><span class="index">IntegerPrimesPackage</span><a name="chapter-5-62"/> and
+<span class="spadfunFrom" >nextPrime</span><span class="index">nextPrime</span><a name="chapter-5-63"/><span class="index">IntegerPrimesPackage</span><a name="chapter-5-64"/>.  A straight-forward way
+to create a stream of prime numbers is to start with the stream of
+positive integers  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>]</mo></mrow></mstyle></math> and filter out those that are prime.
+</p>
+
+
+<p>Create a stream of primes.
+</p>
+
+
+
+<div id="spadComm5-72" class="spadComm" >
+<form id="formComm5-72" action="javascript:makeRequest('5-72');" >
+<input id="comm5-72" type="text" class="command" style="width: 36em;" value="primes : Stream Integer := [i for i in 2.. | prime? i]" />
+</form>
+<span id="commSav5-72" class="commSav" >primes : Stream Integer := [i for i in 2.. | prime? i]</span>
+<div id="mathAns5-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>19</mn><mo>,</mo><mn>23</mn><mo>,</mo><mn>29</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>A more elegant way, however, is to use the
+<span class="spadfunFrom" >generate</span><span class="index">generate</span><a name="chapter-5-65"/><span class="index">Stream</span><a name="chapter-5-66"/> operation from <span class="teletype">Stream</span>.  Given an
+initial value  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> and a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>, <span class="spadfunFrom" >generate</span><span class="index">generate</span><a name="chapter-5-67"/><span class="index">Stream</span><a name="chapter-5-68"/>
+constructs the stream  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>a</mi><mo>,</mo><mi>f</mi><mo>(</mo><mi>a</mi><mo>)</mo><mo>,</mo><mi>f</mi><mo>(</mo><mi>f</mi><mo>(</mo><mi>a</mi><mo>)</mo><mo>)</mo><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>]</mo></mrow></mstyle></math>.  This function gives
+you the quickest method of getting the stream of primes.
+</p>
+
+
+<p>This is how you use <span class="spadfunFrom" >generate</span><span class="index">generate</span><a name="chapter-5-69"/><span class="index">Stream</span><a name="chapter-5-70"/> to generate an
+infinite stream of primes.
+</p>
+
+
+
+<div id="spadComm5-73" class="spadComm" >
+<form id="formComm5-73" action="javascript:makeRequest('5-73');" >
+<input id="comm5-73" type="text" class="command" style="width: 21em;" value="primes := generate(nextPrime,2)" />
+</form>
+<span id="commSav5-73" class="commSav" >primes := generate(nextPrime,2)</span>
+<div id="mathAns5-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>19</mn><mo>,</mo><mn>23</mn><mo>,</mo><mn>29</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Once the stream is generated, you might only be interested in primes
+starting at a particular value.
+</p>
+
+
+
+<div id="spadComm5-74" class="spadComm" >
+<form id="formComm5-74" action="javascript:makeRequest('5-74');" >
+<input id="comm5-74" type="text" class="command" style="width: 30em;" value="smallPrimes := [p for p in primes | p > 1000]" />
+</form>
+<span id="commSav5-74" class="commSav" >smallPrimes := [p for p in primes | p > 1000]</span>
+<div id="mathAns5-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1009</mn><mo>,</mo><mn>1013</mn><mo>,</mo><mn>1019</mn><mo>,</mo><mn>1021</mn><mo>,</mo><mn>1031</mn><mo>,</mo><mn>1033</mn><mo>,</mo><mn>1039</mn><mo>,</mo><mn>1049</mn><mo>,</mo><mn>1051</mn><mo>,</mo><mn>1061</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Here are the first 11 primes greater than 1000.
+</p>
+
+
+
+<div id="spadComm5-75" class="spadComm" >
+<form id="formComm5-75" action="javascript:makeRequest('5-75');" >
+<input id="comm5-75" type="text" class="command" style="width: 26em;" value="[p for p in smallPrimes for i in 1..11]" />
+</form>
+<span id="commSav5-75" class="commSav" >[p for p in smallPrimes for i in 1..11]</span>
+<div id="mathAns5-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1009</mn><mo>,</mo><mn>1013</mn><mo>,</mo><mn>1019</mn><mo>,</mo><mn>1021</mn><mo>,</mo><mn>1031</mn><mo>,</mo><mn>1033</mn><mo>,</mo><mn>1039</mn><mo>,</mo><mn>1049</mn><mo>,</mo><mn>1051</mn><mo>,</mo><mn>1061</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Here is a stream of primes between 1000 and 1200.
+</p>
+
+
+
+<div id="spadComm5-76" class="spadComm" >
+<form id="formComm5-76" action="javascript:makeRequest('5-76');" >
+<input id="comm5-76" type="text" class="command" style="width: 26em;" value="[p for p in smallPrimes while p &lt; 1200]" />
+</form>
+<span id="commSav5-76" class="commSav" >[p for p in smallPrimes while p &lt; 1200]</span>
+<div id="mathAns5-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1009</mn><mo>,</mo><mn>1013</mn><mo>,</mo><mn>1019</mn><mo>,</mo><mn>1021</mn><mo>,</mo><mn>1031</mn><mo>,</mo><mn>1033</mn><mo>,</mo><mn>1039</mn><mo>,</mo><mn>1049</mn><mo>,</mo><mn>1051</mn><mo>,</mo><mn>1061</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>To get these expanded into a finite stream, you call
+<span class="spadfunFrom" >complete</span><span class="index">complete</span><a name="chapter-5-71"/><span class="index">Stream</span><a name="chapter-5-72"/> on the stream.
+</p>
+
+
+
+<div id="spadComm5-77" class="spadComm" >
+<form id="formComm5-77" action="javascript:makeRequest('5-77');" >
+<input id="comm5-77" type="text" class="command" style="width: 8em;" value="complete %" />
+</form>
+<span id="commSav5-77" class="commSav" >complete %</span>
+<div id="mathAns5-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1009</mn><mo>,</mo><mn>1013</mn><mo>,</mo><mn>1019</mn><mo>,</mo><mn>1021</mn><mo>,</mo><mn>1031</mn><mo>,</mo><mn>1033</mn><mo>,</mo><mn>1039</mn><mo>,</mo><mn>1049</mn><mo>,</mo><mn>1051</mn><mo>,</mo><mn>1061</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Twin primes are consecutive odd number pairs which are prime.
+Here is the stream of twin primes.
+</p>
+
+
+
+<div id="spadComm5-78" class="spadComm" >
+<form id="formComm5-78" action="javascript:makeRequest('5-78');" >
+<input id="comm5-78" type="text" class="command" style="width: 38em;" value="twinPrimes := [ [p,p+2] for p in primes | prime?(p + 2)]" />
+</form>
+<span id="commSav5-78" class="commSav" >twinPrimes := [ [p,p+2] for p in primes | prime?(p + 2)]</span>
+<div id="mathAns5-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>13</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>17</mn><mo>,</mo><mn>19</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>29</mn><mo>,</mo><mn>31</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>41</mn><mo>,</mo><mn>43</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>59</mn><mo>,</mo><mn>61</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>71</mn><mo>,</mo><mn>73</mn><mo>]</mo></mrow><mo>,</mo><mo>.</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>.</mo><mrow><mo>[</mo><mn>101</mn><mo>,</mo><mn>103</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>107</mn><mo>,</mo><mn>109</mn><mo>]</mo></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream List Integer
+</div>
+
+
+
+<p>Since we already have the primes computed we can avoid the call to
+<span class="spadfunFrom" >prime?</span><span class="index">prime?</span><a name="chapter-5-73"/><span class="index">IntegerPrimesPackage</span><a name="chapter-5-74"/> by using a double
+iteration.  This time we'll just generate a stream of the first of the
+twin primes.
+</p>
+
+
+
+<div id="spadComm5-79" class="spadComm" >
+<form id="formComm5-79" action="javascript:makeRequest('5-79');" >
+<input id="comm5-79" type="text" class="command" style="width: 42em;" value="firstOfTwins:= [p for p in primes for q in rest primes | q=p+2]" />
+</form>
+<span id="commSav5-79" class="commSav" >firstOfTwins:= [p for p in primes for q in rest primes | q=p+2]</span>
+<div id="mathAns5-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>29</mn><mo>,</mo><mn>41</mn><mo>,</mo><mn>59</mn><mo>,</mo><mn>71</mn><mo>,</mo><mn>101</mn><mo>,</mo><mn>107</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Let's try to compute the infinite stream of triplet primes, the set of
+primes  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> such that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>p</mi><mo>,</mo><mi>p</mi><mo>+</mo><mn>2</mn><mo>,</mo><mi>p</mi><mo>+</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math> are primes. For example,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+is a triple prime.  We could do this by a triple <span class="teletype">for</span> iteration.  A
+more economical way is to use <span style="font-weight: bold;">firstOfTwins</span>.  This time however,
+put a semicolon at the end of the line.
+</p>
+
+
+<p>Create the stream of firstTriplets.  Put a semicolon at the end so
+that no elements are computed.
+</p>
+
+
+
+<div id="spadComm5-80" class="spadComm" >
+<form id="formComm5-80" action="javascript:makeRequest('5-80');" >
+<input id="comm5-80" type="text" class="command" style="width: 54em;" value="firstTriplets := [p for p in firstOfTwins for q in rest firstOfTwins | q = p+2];" />
+</form>
+<span id="commSav5-80" class="commSav" >firstTriplets := [p for p in firstOfTwins for q in rest firstOfTwins | q = p+2];</span>
+<div id="mathAns5-80" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>What happened?  As you know, by default Axiom displays the first ten
+elements of a stream when you first display it.  And, therefore, it
+needs to compute them!  If you want <span class="italic">no</span> elements computed, just
+terminate the expression by a semicolon (``<span class="teletype">;</span>'').  The semi-colon
+prevents the display of the result of evaluating the expression.
+Since no stream elements are needed for display (or anything else, so
+far), none are computed.
+</p>
+
+
+<p>Compute the first triplet prime.
+</p>
+
+
+
+<div id="spadComm5-81" class="spadComm" >
+<form id="formComm5-81" action="javascript:makeRequest('5-81');" >
+<input id="comm5-81" type="text" class="command" style="width: 10em;" value="firstTriplets.1" />
+</form>
+<span id="commSav5-81" class="commSav" >firstTriplets.1</span>
+<div id="mathAns5-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>If you want to compute another, just ask for it.  But wait a second!
+Given three consecutive odd integers, one of them must be divisible by
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math>. Thus there is only one triplet prime.  But suppose that you did not
+know this and wanted to know what was the tenth triplet prime.
+</p>
+
+
+
+<div class="verbatim"><br />
+firstTriples.10<br />
+</div>
+
+
+
+<p>To compute the tenth triplet prime, Axiom first must compute the
+second, the third, and so on.  But since there isn't even a second
+triplet prime, Axiom will compute forever.  Nonetheless, this effort
+can produce a useful result.  After waiting a bit, hit <span style="font-weight: bold;">Ctrl-c</span>.
+The system responds as follows.
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&gt;&gt;&nbsp;System&nbsp;error:<br />
+&nbsp;&nbsp;&nbsp;Console&nbsp;interrupt.<br />
+&nbsp;&nbsp;&nbsp;You&nbsp;are&nbsp;being&nbsp;returned&nbsp;to&nbsp;the&nbsp;top&nbsp;level&nbsp;of<br />
+&nbsp;&nbsp;&nbsp;the&nbsp;interpreter.<br />
+</div>
+
+
+
+<p>If you want to know how many primes have been computed, type:
+</p>
+
+
+
+<div class="verbatim"><br />
+numberOfComputedEntries&nbsp;primes<br />
+</div>
+
+
+
+<p>and, for this discussion, let's say that the result is  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2045</mn></mstyle></math>.
+How big is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2045</mn></mstyle></math>-th prime?
+</p>
+
+
+
+<div id="spadComm5-82" class="spadComm" >
+<form id="formComm5-82" action="javascript:makeRequest('5-82');" >
+<input id="comm5-82" type="text" class="command" style="width: 8em;" value="primes.2045" />
+</form>
+<span id="commSav5-82" class="commSav" >primes.2045</span>
+<div id="mathAns5-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>17837</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>What you have learned is that there are no triplet primes between 5
+and 17837.  Although this result is well known (some might even say
+trivial), there are many experiments you could make where the result
+is not known.  What you see here is a paradigm for testing of
+hypotheses.  Here our hypothesis could have been: ``there is more than
+one triplet prime.''  We have tested this hypothesis for 17837 cases.
+With streams, you can let your machine run, interrupt it to see how
+far it has progressed, then start it up and let it continue from where
+it left off.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-5.5.xhtml" style="margin-right: 10px;">Previous Section 5.5 Creating Lists and Streams with Iterators</a><a href="section-6.0.xhtml" style="margin-right: 10px;">Next Section 6.0 Functions, Macros and Rules</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.0.xhtml
new file mode 100644
index 0000000..4065bed
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.0.xhtml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-5.6.xhtml" style="margin-right: 10px;">Previous Section 5.6  An Example: Streams of Primes</a><a href="section-6.1.xhtml" style="margin-right: 10px;">Next Section 6.1 Functions vs. Macros</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.0">
+<h2 class="sectiontitle">6.0 Functions, Macros and Rules</h2>
+<a name="ugUser" class="label"/>
+
+<p>In this chapter we show you how to write functions and macros,
+and we explain how Axiom looks for and applies them.
+We show some simple one-line examples of functions, together
+with larger ones that are defined piece-by-piece or through the use of
+piles.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-5.6.xhtml" style="margin-right: 10px;">Previous Section 5.6  An Example: Streams of Primes</a><a href="section-6.1.xhtml" style="margin-right: 10px;">Next Section 6.1 Functions vs. Macros</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.1.xhtml
new file mode 100644
index 0000000..40548d9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.1.xhtml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.0.xhtml" style="margin-right: 10px;">Previous Section 6.0 Functions, Macros and Rules</a><a href="section-6.2.xhtml" style="margin-right: 10px;">Next Section 6.2 Macros</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.1">
+<h2 class="sectiontitle">6.1  Functions vs. Macros</h2>
+
+
+<a name="ugUserFunMac" class="label"/>
+
+
+<p>A function is a program to perform some <span class="index">function:vs. macro</span><a name="chapter-6-0"/>
+computation.  <span class="index">macro:vs. function</span><a name="chapter-6-1"/> Most functions have names so
+that it is easy to refer to them.  A simple example of a function is
+one named <span class="spadfunFrom" >abs</span><span class="index">abs</span><a name="chapter-6-2"/><span class="index">Integer</span><a name="chapter-6-3"/> which computes the absolute value
+of an integer.
+</p>
+
+
+<p>This is a use of the ``absolute value'' library function for integers.
+</p>
+
+
+
+<div id="spadComm6-1" class="spadComm" >
+<form id="formComm6-1" action="javascript:makeRequest('6-1');" >
+<input id="comm6-1" type="text" class="command" style="width: 5em;" value="abs(-8)" />
+</form>
+<span id="commSav6-1" class="commSav" >abs(-8)</span>
+<div id="mathAns6-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is an unnamed function that does the same thing, using the
+``maps-to'' syntax <span class="teletype">+-></span> that we discuss in 
+section <a href="section-6.17.xhtml#ugUserAnon" class="ref" >ugUserAnon</a> .
+</p>
+
+
+
+<div id="spadComm6-2" class="spadComm" >
+<form id="formComm6-2" action="javascript:makeRequest('6-2');" >
+<input id="comm6-2" type="text" class="command" style="width: 24em;" value="(x +-> if x &lt; 0 then -x else x)(-8)" />
+</form>
+<span id="commSav6-2" class="commSav" >(x +-> if x &lt; 0 then -x else x)(-8)</span>
+<div id="mathAns6-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Functions can be used alone or serve as the building blocks for larger
+programs.  Usually they return a value that you might want to use in
+the next stage of a computation, but not always (for example, see
+<a href="chapter-9.13-26.xhtml#ExitXmpPage" class="ref" >ExitXmpPage</a>  and <a href="section-9.86.xhtml#VoidXmpPage" class="ref" >VoidXmpPage</a>
+).  They may also read data from your
+keyboard, move information from one place to another, or format and
+display results on your screen.
+</p>
+
+
+<p>In Axiom, as in mathematics, functions <span class="index">function:parameters</span><a name="chapter-6-4"/> are
+usually parameterized.  Each time you <span class="italic">call</span> (some people say 
+<span class="italic">apply</span> or invoke) a function, you give <span class="index">parameters to a
+function</span><a name="chapter-6-5"/> values to the parameters (variables).  Such a value is
+called an <span class="italic">argument</span> of <span class="index">function:arguments</span><a name="chapter-6-6"/> the function.
+Axiom uses the arguments for the computation.  In this way you get
+different results depending on what you ``feed'' the function.
+</p>
+
+
+<p>Functions can have local variables or refer to global variables in the
+workspace.  Axiom can often compile functions so that they execute
+very efficiently.  Functions can be passed as arguments to other
+functions.
+</p>
+
+
+<p>Macros are textual substitutions.  They are used to clarify the
+meaning of constants or expressions and to be templates for frequently
+used expressions.  Macros can be parameterized but they are not
+objects that can be passed as arguments to functions.  In effect,
+macros are extensions to the Axiom expression parser.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.0.xhtml" style="margin-right: 10px;">Previous Section 6.0 Functions, Macros and Rules</a><a href="section-6.2.xhtml" style="margin-right: 10px;">Next Section 6.2 Macros</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.10.xhtml
new file mode 100644
index 0000000..66c9625
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.10.xhtml
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.9.xhtml" style="margin-right: 10px;">Previous Section 6.9 How Axiom Determines What Function to Use</a><a href="section-6.11.xhtml" style="margin-right: 10px;">Next Section 6.11 Piece-Wise Function Definitions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.10">
+<h2 class="sectiontitle">6.10  Compiling vs. Interpreting</h2>
+
+
+<a name="ugUserCompInt" class="label"/>
+
+
+<p>When possible, Axiom completely determines the type of every object in
+a function, then translates the function definition to Common Lisp or
+to machine code (see the next section).  This translation,
+<span class="index">function:compiler</span><a name="chapter-6-15"/> called compilation, happens the first time
+you call the function and results in a computational delay.
+Subsequent function calls with the same argument types use the
+compiled version of the code without delay.
+</p>
+
+
+<p>If Axiom cannot determine the type of everything, the function may
+still be executed <span class="index">function:interpretation</span><a name="chapter-6-16"/> but
+<span class="index">interpret-code mode</span><a name="chapter-6-17"/> in interpret-code mode: each statement in
+the function is analyzed and executed as the control flow indicates.
+This process is slower than executing a compiled function, but it
+allows the execution of code that may involve objects whose types
+change.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>If Axiom decides that it cannot compile the code, it issues a message
+stating the problem and then the following message:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span style="font-weight: bold;"> We will attempt to step through and interpret the code.</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>This is not a time to panic.  <span class="index">panic:avoiding</span><a name="chapter-6-18"/> Rather, it just
+means that what you gave to Axiom is somehow ambiguous: either it is
+not specific enough to be analyzed completely, or it is beyond Axiom's
+present interactive compilation abilities.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>This function runs in interpret-code mode, but it does not compile.
+</p>
+
+
+
+<div class="verbatim"><br />
+varPolys(vars)&nbsp;==<br />
+&nbsp;&nbsp;for&nbsp;var&nbsp;in&nbsp;vars&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;output(1&nbsp;::&nbsp;UnivariatePolynomial(var,Integer))<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>For <math xmlns="&mathml;" mathsize="big"><mstyle><mi>vars</mi></mstyle></math> equal to <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mtext mathvariant="monospace">'</mtext><mi>x</mi><mo>,</mo><mtext mathvariant="monospace">'</mtext><mi>y</mi><mo>,</mo><mtext mathvariant="monospace">'</mtext><mi>z</mi><mo>]</mo></mrow></mstyle></math>, this function displays <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> three times.
+</p>
+
+
+
+<div id="spadComm6-57" class="spadComm" >
+<form id="formComm6-57" action="javascript:makeRequest('6-57');" >
+<input id="comm6-57" type="text" class="command" style="width: 13em;" value="varPolys ['x,'y,'z]" />
+</form>
+<span id="commSav6-57" class="commSav" >varPolys ['x,'y,'z]</span>
+<div id="mathAns6-57" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Cannot&nbsp;compile&nbsp;conversion&nbsp;for&nbsp;types&nbsp;involving&nbsp;local&nbsp;variables.&nbsp;<br />
+&nbsp;&nbsp;&nbsp;In&nbsp;particular,&nbsp;could&nbsp;not&nbsp;compile&nbsp;the&nbsp;expression&nbsp;involving&nbsp;::&nbsp;<br />
+&nbsp;&nbsp;&nbsp;UnivariatePolynomial(var,Integer)&nbsp;<br />
+&nbsp;AXIOM&nbsp;will&nbsp;attempt&nbsp;to&nbsp;step&nbsp;through&nbsp;and&nbsp;interpret&nbsp;the&nbsp;code.<br />
+&nbsp;1<br />
+&nbsp;1<br />
+&nbsp;1<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The type of the argument to <span style="font-weight: bold;"> output</span> changes in each iteration, so
+Axiom cannot compile the function.  In this case, even the inner loop
+by itself would have a problem:
+</p>
+
+
+
+<div class="verbatim"><br />
+for&nbsp;var&nbsp;in&nbsp;['x,'y,'z]&nbsp;repeat<br />
+&nbsp;&nbsp;output(1&nbsp;::&nbsp;UnivariatePolynomial(var,Integer))<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Cannot&nbsp;compile&nbsp;conversion&nbsp;for&nbsp;types&nbsp;involving&nbsp;local&nbsp;variables.&nbsp;<br />
+&nbsp;&nbsp;&nbsp;In&nbsp;particular,&nbsp;could&nbsp;not&nbsp;compile&nbsp;the&nbsp;expression&nbsp;involving&nbsp;::&nbsp;<br />
+&nbsp;&nbsp;&nbsp;UnivariatePolynomial(var,Integer)&nbsp;<br />
+&nbsp;AXIOM&nbsp;will&nbsp;attempt&nbsp;to&nbsp;step&nbsp;through&nbsp;and&nbsp;interpret&nbsp;the&nbsp;code.<br />
+&nbsp;1<br />
+&nbsp;1<br />
+&nbsp;1<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Sometimes you can help a function to compile by using an extra
+conversion or by using <math xmlns="&mathml;" mathsize="big"><mstyle><mi>pretend</mi></mstyle></math>.  <span class="index">pretend</span><a name="chapter-6-19"/> See
+<a href="section-2.8.xhtml#ugTypesSubdomains" class="ref" >ugTypesSubdomains</a>  for details.
+</p>
+
+
+<p>When a function is compilable, you have the choice of whether it is
+compiled to Common Lisp and then interpreted by the Common Lisp
+interpreter or then further compiled from Common Lisp to machine code.
+<span class="index">machine code</span><a name="chapter-6-20"/> The option is controlled via 
+<span class="teletype">)set functions compile</span>.  
+<span class="index">set function compile</span><a name="chapter-6-21"/> Issue <span class="teletype">)set functions compile on</span> 
+to compile all the way to machine code.  With the default
+setting <span class="teletype">)set functions compile off</span>, Axiom has its Common Lisp
+code interpreted because the overhead of further compilation is larger
+than the run-time of most of the functions our users have defined.
+You may find that selectively turning this option on and off will
+<span class="index">performance</span><a name="chapter-6-22"/> give you the best performance in your particular
+application.  For example, if you are writing functions for graphics
+applications where hundreds of points are being computed, it is almost
+certainly true that you will get the best performance by issuing 
+<span class="teletype">)set functions compile on</span>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.9.xhtml" style="margin-right: 10px;">Previous Section 6.9 How Axiom Determines What Function to Use</a><a href="section-6.11.xhtml" style="margin-right: 10px;">Next Section 6.11 Piece-Wise Function Definitions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.11.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.11.xhtml
new file mode 100644
index 0000000..6b7b089
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.11.xhtml
@@ -0,0 +1,1124 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.11</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.10.xhtml" style="margin-right: 10px;">Previous Section 6.10 Compiling vs. Interpreting</a><a href="section-6.12.xhtml" style="margin-right: 10px;">Next Section 6.12 Caching Previously Computed Results</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.11">
+<h2 class="sectiontitle">6.11  Piece-Wise Function Definitions</h2>
+
+
+<a name="ugUserPiece" class="label"/>
+
+
+<p>To move beyond functions defined in one line, we introduce in this
+section functions that are defined piece-by-piece.  That is, we say
+``use this definition when the argument is such-and-such and use this
+other definition when the argument is that-and-that.''
+</p>
+
+
+
+<a name="subsec-6.11.1"/>
+<div class="subsection"  id="subsec-6.11.1">
+<h3 class="subsectitle">6.11.1  A Basic Example</h3>
+
+
+<a name="ugUserPieceBasic" class="label"/>
+
+
+<p>There are many other ways to define a factorial function for
+nonnegative integers.  You might 
+<span class="index">function:piece-wise definition</span><a name="chapter-6-23"/> 
+say <span class="index">piece-wise function definition</span><a name="chapter-6-24"/> factorial of
+<math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> is <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>, otherwise factorial of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> is <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> times factorial of
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math>.  Here is one way to do this in Axiom.
+</p>
+
+
+<p>Here is the value for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-58" class="spadComm" >
+<form id="formComm6-58" action="javascript:makeRequest('6-58');" >
+<input id="comm6-58" type="text" class="command" style="width: 8em;" value="fact(0) == 1" />
+</form>
+<span id="commSav6-58" class="commSav" >fact(0) == 1</span>
+<div id="mathAns6-58" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Here is the value for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>&gt;</mo><mn>0</mn></mrow></mstyle></math>.  The vertical bar ``<span class="teletype">|</span>'' means ``such
+that''. <span class="index">such that</span><a name="chapter-6-25"/>
+</p>
+
+
+
+<div id="spadComm6-59" class="spadComm" >
+<form id="formComm6-59" action="javascript:makeRequest('6-59');" >
+<input id="comm6-59" type="text" class="command" style="width: 23em;" value="fact(n | n > 0) == n * fact(n - 1)" />
+</form>
+<span id="commSav6-59" class="commSav" >fact(n | n > 0) == n * fact(n - 1)</span>
+<div id="mathAns6-59" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>What is the value for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>3</mn></mrow></mstyle></math>?
+</p>
+
+
+
+<div id="spadComm6-60" class="spadComm" >
+<form id="formComm6-60" action="javascript:makeRequest('6-60');" >
+<input id="comm6-60" type="text" class="command" style="width: 5em;" value="fact(3)" />
+</form>
+<span id="commSav6-60" class="commSav" >fact(3)</span>
+<div id="mathAns6-60" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;fact&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;fact&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>6</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>What is the value for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mo>-</mo><mn>3</mn></mrow></mstyle></math>?
+</p>
+
+
+
+<div id="spadComm6-61" class="spadComm" >
+<form id="formComm6-61" action="javascript:makeRequest('6-61');" >
+<input id="comm6-61" type="text" class="command" style="width: 6em;" value="fact(-3)" />
+</form>
+<span id="commSav6-61" class="commSav" >fact(-3)</span>
+<div id="mathAns6-61" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;You&nbsp;did&nbsp;not&nbsp;define&nbsp;fact&nbsp;for&nbsp;argument&nbsp;-3&nbsp;.<br />
+</div>
+
+
+
+<p>Now for a second definition.  Here is the value for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-62" class="spadComm" >
+<form id="formComm6-62" action="javascript:makeRequest('6-62');" >
+<input id="comm6-62" type="text" class="command" style="width: 9em;" value="facto(0) == 1" />
+</form>
+<span id="commSav6-62" class="commSav" >facto(0) == 1</span>
+<div id="mathAns6-62" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Give an error message if <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>&lt;</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-63" class="spadComm" >
+<form id="formComm6-63" action="javascript:makeRequest('6-63');" >
+<input id="comm6-63" type="text" class="command" style="width: 45em;" value='facto(n | n &lt; 0) == error "arguments to facto must be non-negative"' />
+</form>
+<span id="commSav6-63" class="commSav" >facto(n | n &lt; 0) == error "arguments to facto must be non-negative"</span>
+<div id="mathAns6-63" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Here is the value otherwise.
+</p>
+
+
+
+<div id="spadComm6-64" class="spadComm" >
+<form id="formComm6-64" action="javascript:makeRequest('6-64');" >
+<input id="comm6-64" type="text" class="command" style="width: 19em;" value="facto(n) == n * facto(n - 1)" />
+</form>
+<span id="commSav6-64" class="commSav" >facto(n) == n * facto(n - 1)</span>
+<div id="mathAns6-64" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>What is the value for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>7</mn></mrow></mstyle></math>?
+</p>
+
+
+
+<div id="spadComm6-65" class="spadComm" >
+<form id="formComm6-65" action="javascript:makeRequest('6-65');" >
+<input id="comm6-65" type="text" class="command" style="width: 6em;" value="facto(3)" />
+</form>
+<span id="commSav6-65" class="commSav" >facto(3)</span>
+<div id="mathAns6-65" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;facto&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>6</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>What is the value for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mo>-</mo><mn>7</mn></mrow></mstyle></math>?
+</p>
+
+
+
+<div id="spadComm6-66" class="spadComm" >
+<form id="formComm6-66" action="javascript:makeRequest('6-66');" >
+<input id="comm6-66" type="text" class="command" style="width: 6em;" value="facto(-7)" />
+</form>
+<span id="commSav6-66" class="commSav" >facto(-7)</span>
+<div id="mathAns6-66" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Error&nbsp;signalled&nbsp;from&nbsp;user&nbsp;code&nbsp;in&nbsp;function&nbsp;facto:&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arguments&nbsp;to&nbsp;facto&nbsp;must&nbsp;be&nbsp;non-negative<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>To see the current piece-wise definition of a function, use 
+<span class="teletype">)display value</span>.
+</p>
+
+
+
+<div id="spadComm6-67" class="spadComm" >
+<form id="formComm6-67" action="javascript:makeRequest('6-67');" >
+<input id="comm6-67" type="text" class="command" style="width: 14em;" value=")display value facto" />
+</form>
+<span id="commSav6-67" class="commSav" >)display value facto</span>
+<div id="mathAns6-67" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Definition:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;facto&nbsp;0&nbsp;==&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;facto&nbsp;(n&nbsp;|&nbsp;n&nbsp;&lt;&nbsp;0)&nbsp;==&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(arguments&nbsp;to&nbsp;facto&nbsp;must&nbsp;be&nbsp;non-negative)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;facto&nbsp;n&nbsp;==&nbsp;n&nbsp;facto(n&nbsp;-&nbsp;1)<br />
+</div>
+
+
+
+<p>In general a <span class="italic">piece-wise definition</span> of a function consists of two
+or more parts.  Each part gives a ``piece'' of the entire definition.
+Axiom collects the pieces of a function as you enter them.  When you
+ask for a value of the function, it then ``glues'' the pieces together
+to form a function.
+</p>
+
+
+<p>The two piece-wise definitions for the factorial function are examples
+of recursive functions, that is, functions that are defined in terms
+of themselves.  Here is an interesting doubly-recursive function.
+This function returns the value <math xmlns="&mathml;" mathsize="big"><mstyle><mn>11</mn></mstyle></math> for all positive integer
+arguments.
+</p>
+
+
+<p>Here is the first of two pieces.
+</p>
+
+
+
+<div id="spadComm6-68" class="spadComm" >
+<form id="formComm6-68" action="javascript:makeRequest('6-68');" >
+<input id="comm6-68" type="text" class="command" style="width: 18em;" value="eleven(n | n &lt; 1) == n + 11" />
+</form>
+<span id="commSav6-68" class="commSav" >eleven(n | n &lt; 1) == n + 11</span>
+<div id="mathAns6-68" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>And the general case.
+</p>
+
+
+
+<div id="spadComm6-69" class="spadComm" >
+<form id="formComm6-69" action="javascript:makeRequest('6-69');" >
+<input id="comm6-69" type="text" class="command" style="width: 24em;" value="eleven(m) == eleven(eleven(m - 12))" />
+</form>
+<span id="commSav6-69" class="commSav" >eleven(m) == eleven(eleven(m - 12))</span>
+<div id="mathAns6-69" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Compute <math xmlns="&mathml;" mathsize="big"><mstyle><mi>elevens</mi></mstyle></math>, the infinite stream of values of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>eleven</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-70" class="spadComm" >
+<form id="formComm6-70" action="javascript:makeRequest('6-70');" >
+<input id="comm6-70" type="text" class="command" style="width: 24em;" value="elevens := [eleven(i) for i in 0..]" />
+</form>
+<span id="commSav6-70" class="commSav" >elevens := [eleven(i) for i in 0..]</span>
+<div id="mathAns6-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>What is the value at <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>200</mn></mrow></mstyle></math>?
+</p>
+
+
+
+<div id="spadComm6-71" class="spadComm" >
+<form id="formComm6-71" action="javascript:makeRequest('6-71');" >
+<input id="comm6-71" type="text" class="command" style="width: 8em;" value="elevens 200" />
+</form>
+<span id="commSav6-71" class="commSav" >elevens 200</span>
+<div id="mathAns6-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>11</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>What is the Axiom's definition of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>eleven</mi></mstyle></math>?
+</p>
+
+
+
+<div id="spadComm6-72" class="spadComm" >
+<form id="formComm6-72" action="javascript:makeRequest('6-72');" >
+<input id="comm6-72" type="text" class="command" style="width: 14em;" value=")display value eleven" />
+</form>
+<span id="commSav6-72" class="commSav" >)display value eleven</span>
+<div id="mathAns6-72" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Definition:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eleven&nbsp;(m&nbsp;|&nbsp;m&nbsp;&lt;&nbsp;1)&nbsp;==&nbsp;m&nbsp;+&nbsp;11<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eleven&nbsp;m&nbsp;==&nbsp;eleven(eleven(m&nbsp;-&nbsp;12))<br />
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-6.11.2"/>
+<div class="subsection"  id="subsec-6.11.2">
+<h3 class="subsectitle">6.11.2  Picking Up the Pieces</h3>
+
+
+<a name="ugUserPiecePicking" class="label"/>
+
+
+<p>Here are the details about how Axiom creates a function from its
+pieces.  Axiom converts the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>-th piece of a function definition
+into a conditional expression of the form: 
+<span class="teletype">if</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>pred</mtext></mrow><mi>i</mi></msub></mrow></mstyle></math> <span class="teletype">then</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mi>i</mi></msub></mrow></mstyle></math>.  
+If any new piece has a <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>pred</mtext></mrow><mi>i</mi></msub></mrow></mstyle></math> that is 
+identical (after all variables are uniformly named) to 
+an earlier <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>pred</mtext></mrow><mi>j</mi></msub></mrow></mstyle></math>, the earlier piece is removed.  
+Otherwise, the new piece is always added at the end.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>If there are <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> pieces to a function definition for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>, the function
+defined <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> is: <br />
+<span class="hspace300pc">
+<span class="teletype">if</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>pred</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math> <span class="teletype">then</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math> <span class="teletype">else</span></span><br />
+<span class="hspace600pc">. . . </span><br />
+<span class="hspace300pc">
+<span class="teletype">if</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>pred</mtext></mrow><mi>n</mi></msub></mrow></mstyle></math> <span class="teletype">then</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>expression</mtext></mrow><mi>n</mi></msub></mrow></mstyle></math> <span class="teletype">else</span></span><br />
+<span class="hspace300pc">
+<span class="teletype"> error "You did not define f for argument &lt;arg&gt;."</span></span><br />
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>You can give definitions of any number of mutually recursive function
+definitions, piece-wise or otherwise.  No computation is done until
+you ask for a value.  When you do ask for a value, all the relevant
+definitions are gathered, analyzed, and translated into separate
+functions and compiled.
+</p>
+
+
+<p>Let's recall the definition of <span style="font-weight: bold;"> eleven</span> from
+the previous section. 
+</p>
+
+
+
+<div id="spadComm6-73" class="spadComm" >
+<form id="formComm6-73" action="javascript:makeRequest('6-73');" >
+<input id="comm6-73" type="text" class="command" style="width: 18em;" value="eleven(n | n &lt; 1) == n + 11" />
+</form>
+<span id="commSav6-73" class="commSav" >eleven(n | n &lt; 1) == n + 11</span>
+<div id="mathAns6-73" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-74" class="spadComm" >
+<form id="formComm6-74" action="javascript:makeRequest('6-74');" >
+<input id="comm6-74" type="text" class="command" style="width: 24em;" value="eleven(m) == eleven(eleven(m - 12))" />
+</form>
+<span id="commSav6-74" class="commSav" >eleven(m) == eleven(eleven(m - 12))</span>
+<div id="mathAns6-74" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>A similar doubly-recursive function below produces <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>11</mn></mrow></mstyle></math> for all
+negative positive integers.  If you haven't worked out why or how 
+<span style="font-weight: bold;"> eleven</span> works, the structure of this definition gives a clue.
+</p>
+
+
+<p>This definition we write as a block.
+</p>
+
+
+
+<div class="verbatim"><br />
+minusEleven(n)&nbsp;==<br />
+&nbsp;&nbsp;n&nbsp;&gt;=&nbsp;0&nbsp;=&gt;&nbsp;n&nbsp;-&nbsp;11<br />
+&nbsp;&nbsp;minusEleven&nbsp;(5&nbsp;+&nbsp;minusEleven(n&nbsp;+&nbsp;7))<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Define <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>s</mi><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mstyle></math> to be the sum of plus and minus ``eleven'' functions
+divided by <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>.  Since <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>11</mn><mo>-</mo><mn>11</mn><mo>=</mo><mn>0</mn></mrow></mstyle></math>, we define <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>s</mi><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mstyle></math> to be <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-75" class="spadComm" >
+<form id="formComm6-75" action="javascript:makeRequest('6-75');" >
+<input id="comm6-75" type="text" class="command" style="width: 6em;" value="s(0) == 1" />
+</form>
+<span id="commSav6-75" class="commSav" >s(0) == 1</span>
+<div id="mathAns6-75" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>And the general term.
+</p>
+
+
+
+<div id="spadComm6-76" class="spadComm" >
+<form id="formComm6-76" action="javascript:makeRequest('6-76');" >
+<input id="comm6-76" type="text" class="command" style="width: 26em;" value="s(n) == (eleven(n) + minusEleven(n))/n" />
+</form>
+<span id="commSav6-76" class="commSav" >s(n) == (eleven(n) + minusEleven(n))/n</span>
+<div id="mathAns6-76" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>What are the first ten values of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>s</mi></mstyle></math>?
+</p>
+
+
+
+<div id="spadComm6-77" class="spadComm" >
+<form id="formComm6-77" action="javascript:makeRequest('6-77');" >
+<input id="comm6-77" type="text" class="command" style="width: 13em;" value="[s(n) for n in 0..]" />
+</form>
+<span id="commSav6-77" class="commSav" >[s(n) for n in 0..]</span>
+<div id="mathAns6-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Fraction Integer
+</div>
+
+
+
+
+<p>Axiom can create infinite streams in the positive direction (for
+example, for index values <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>&#x2026;</mo></mrow></mstyle></math>) or negative direction (for
+example, for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>2</mn><mo>,</mo><mo>&#x2026;</mo></mrow></mstyle></math>).  Here we would like a
+stream of values of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>s</mi><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mstyle></math> that is infinite in both directions.  The
+function <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>t</mi><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mstyle></math> below returns the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th term of the infinite stream 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>s</mi><mo>(</mo><mn>0</mn><mo>)</mo><mo>,</mo><mi>s</mi><mo>(</mo><mn>1</mn><mo>)</mo><mo>,</mo><mi>s</mi><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo><mo>,</mo><mi>s</mi><mo>(</mo><mn>2</mn><mo>)</mo><mo>,</mo><mi>s</mi><mo>(</mo><mo>-</mo><mn>2</mn><mo>)</mo><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math> 
+Its definition has three pieces.
+</p>
+
+
+<p>Define the initial term.
+</p>
+
+
+
+<div id="spadComm6-78" class="spadComm" >
+<form id="formComm6-78" action="javascript:makeRequest('6-78');" >
+<input id="comm6-78" type="text" class="command" style="width: 8em;" value="t(1) == s(0)" />
+</form>
+<span id="commSav6-78" class="commSav" >t(1) == s(0)</span>
+<div id="mathAns6-78" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The even numbered terms are the <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>s</mi><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mstyle></math> for positive <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>.  We use
+``<span class="teletype">quo</span>'' rather than ``<span class="teletype">/</span>'' since we want the result to be
+an integer.
+</p>
+
+
+
+
+<div id="spadComm6-79" class="spadComm" >
+<form id="formComm6-79" action="javascript:makeRequest('6-79');" >
+<input id="comm6-79" type="text" class="command" style="width: 20em;" value="t(n | even?(n)) == s(n quo 2)" />
+</form>
+<span id="commSav6-79" class="commSav" >t(n | even?(n)) == s(n quo 2)</span>
+<div id="mathAns6-79" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Finally, the odd numbered terms are the <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>s</mi><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mstyle></math> for negative <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>.  In
+piece-wise definitions, you can use different variables to define
+different pieces. Axiom will not get confused.
+</p>
+
+
+
+<div id="spadComm6-80" class="spadComm" >
+<form id="formComm6-80" action="javascript:makeRequest('6-80');" >
+<input id="comm6-80" type="text" class="command" style="width: 14em;" value="t(p) == s(- p quo 2)" />
+</form>
+<span id="commSav6-80" class="commSav" >t(p) == s(- p quo 2)</span>
+<div id="mathAns6-80" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Look at the definition of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math>.  In the first piece, the variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>
+was used; in the second piece, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>.  Axiom always uses your last
+variable to display your definitions back to you.
+</p>
+
+
+
+<div id="spadComm6-81" class="spadComm" >
+<form id="formComm6-81" action="javascript:makeRequest('6-81');" >
+<input id="comm6-81" type="text" class="command" style="width: 11em;" value=")display value t" />
+</form>
+<span id="commSav6-81" class="commSav" >)display value t</span>
+<div id="mathAns6-81" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Definition:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;1&nbsp;==&nbsp;s(0)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;(p&nbsp;|&nbsp;even?(p))&nbsp;==&nbsp;s(p&nbsp;quo&nbsp;2)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;p&nbsp;==&nbsp;s(-&nbsp;p&nbsp;quo&nbsp;2)<br />
+</div>
+
+
+
+<p>Create a series of values of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>s</mi></mstyle></math> applied to
+alternating positive and negative arguments.
+</p>
+
+
+
+<div id="spadComm6-82" class="spadComm" >
+<form id="formComm6-82" action="javascript:makeRequest('6-82');" >
+<input id="comm6-82" type="text" class="command" style="width: 13em;" value="[t(i) for i in 1..]" />
+</form>
+<span id="commSav6-82" class="commSav" >[t(i) for i in 1..]</span>
+<div id="mathAns6-82" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;s&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Fraction&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;t&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;Fraction&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Fraction Integer
+</div>
+
+
+
+<p>Evidently <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>t</mi><mo>(</mo><mi>n</mi><mo>)</mo><mo>=</mo><mn>1</mn></mrow></mstyle></math> for all <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>. Check it at <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>100</mn></mrow></mstyle></math>. 
+</p>
+
+
+
+
+<div id="spadComm6-83" class="spadComm" >
+<form id="formComm6-83" action="javascript:makeRequest('6-83');" >
+<input id="comm6-83" type="text" class="command" style="width: 4em;" value="t(100)" />
+</form>
+<span id="commSav6-83" class="commSav" >t(100)</span>
+<div id="mathAns6-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-6.11.3"/>
+<div class="subsection"  id="subsec-6.11.3">
+<h3 class="subsectitle">6.11.3  Predicates</h3>
+
+
+<a name="ugUserPiecePred" class="label"/>
+
+
+<p>We have already seen some examples of <span class="index">function:predicate</span><a name="chapter-6-26"/>
+predicates <span class="index">predicate:in function definition</span><a name="chapter-6-27"/>
+(<a href="section-6.11.xhtml#ugUserPieceBasic" class="ref" >ugUserPieceBasic</a> ).
+Predicates are <span class="teletype">Boolean</span>-valued expressions and Axiom uses them
+for filtering collections (see <a href="section-5.5.xhtml#ugLangIts" class="ref" >ugLangIts</a> ) and for placing constraints on function
+arguments.  In this section we discuss their latter usage.
+</p>
+
+
+<p>The simplest use of a predicate is one you don't see at all.
+</p>
+
+
+
+<div id="spadComm6-84" class="spadComm" >
+<form id="formComm6-84" action="javascript:makeRequest('6-84');" >
+<input id="comm6-84" type="text" class="command" style="width: 16em;" value="opposite 'right == 'left" />
+</form>
+<span id="commSav6-84" class="commSav" >opposite 'right == 'left</span>
+<div id="mathAns6-84" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Here is a longer way to give the ``opposite definition.''
+</p>
+
+
+
+<div id="spadComm6-85" class="spadComm" >
+<form id="formComm6-85" action="javascript:makeRequest('6-85');" >
+<input id="comm6-85" type="text" class="command" style="width: 23em;" value="opposite (x | x = 'left) == 'right" />
+</form>
+<span id="commSav6-85" class="commSav" >opposite (x | x = 'left) == 'right</span>
+<div id="mathAns6-85" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Try it out.
+</p>
+
+
+
+<div id="spadComm6-86" class="spadComm" >
+<form id="formComm6-86" action="javascript:makeRequest('6-86');" >
+<input id="comm6-86" type="text" class="command" style="width: 40em;" value="for x in ['right,'left,'inbetween] repeat output opposite x" />
+</form>
+<span id="commSav6-86" class="commSav" >for x in ['right,'left,'inbetween] repeat output opposite x</span>
+<div id="mathAns6-86" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;function&nbsp;opposite&nbsp;with&nbsp;type&nbsp;<br />
+&nbsp;&nbsp;&nbsp;OrderedVariableList&nbsp;[right,&nbsp;left,inbetween]&nbsp;-&gt;&nbsp;Symbol&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;left<br />
+&nbsp;right<br />
+&nbsp;<br />
+The&nbsp;function&nbsp;opposite&nbsp;is&nbsp;not&nbsp;defined&nbsp;for&nbsp;the&nbsp;given&nbsp;argument(s).<br />
+</div>
+
+
+
+<p>Explicit predicates tell Axiom that the given function definition
+piece is to be applied if the predicate evaluates to <span class="teletype">true</span> for
+the arguments to the function.  You can use such ``constant''
+arguments for integers, <span class="index">function:constant argument</span><a name="chapter-6-28"/> strings,
+and quoted symbols.  <span class="index">constant function argument</span><a name="chapter-6-29"/> The <span class="teletype">Boolean</span> values <span class="teletype">true</span> and <span class="teletype">false</span> can also be used if qualified with
+``<math xmlns="&mathml;" mathsize="big"><mstyle><mo>@</mo></mstyle></math>'' or ``<math xmlns="&mathml;" mathsize="big"><mstyle><mi> $</mi></mstyle></math>'' and <span class="teletype">Boolean</span>.  The following are all valid
+function definition fragments using constant arguments.
+</p>
+
+
+
+<div class="verbatim"><br />
+a(1)&nbsp;==&nbsp;...<br />
+b("unramified")&nbsp;==&nbsp;...<br />
+c('untested)&nbsp;==&nbsp;...<br />
+d(true@Boolean)&nbsp;==&nbsp;...<br />
+</div>
+
+
+
+<p>If a function has more than one argument, each argument can have its
+own predicate.  However, if a predicate involves two or more
+arguments, it must be given <span class="italic">after</span> all the arguments mentioned in
+the predicate have been given.  You are always safe to give a single
+predicate at the end of the argument list.
+</p>
+
+
+<p>A function involving predicates on two arguments.
+</p>
+
+
+
+<div id="spadComm6-87" class="spadComm" >
+<form id="formComm6-87" action="javascript:makeRequest('6-87');" >
+<input id="comm6-87" type="text" class="command" style="width: 32em;" value="inFirstHalfQuadrant(x | x > 0,y | y &lt; x) == true" />
+</form>
+<span id="commSav6-87" class="commSav" >inFirstHalfQuadrant(x | x > 0,y | y &lt; x) == true</span>
+<div id="mathAns6-87" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This is incorrect as it gives a predicate on <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> before the argument
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> is given.
+</p>
+
+
+
+<div id="spadComm6-88" class="spadComm" >
+<form id="formComm6-88" action="javascript:makeRequest('6-88');" >
+<input id="comm6-88" type="text" class="command" style="width: 34em;" value="inFirstHalfQuadrant(x | x > 0 and y &lt; x,y) == true" />
+</form>
+<span id="commSav6-88" class="commSav" >inFirstHalfQuadrant(x | x > 0 and y &lt; x,y) == true</span>
+<div id="mathAns6-88" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;inFirstHalfQuadrant<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>It is always correct to write the predicate at the end.
+</p>
+
+
+
+<div id="spadComm6-89" class="spadComm" >
+<form id="formComm6-89" action="javascript:makeRequest('6-89');" >
+<input id="comm6-89" type="text" class="command" style="width: 34em;" value="inFirstHalfQuadrant(x,y | x > 0 and y &lt; x) == true" />
+</form>
+<span id="commSav6-89" class="commSav" >inFirstHalfQuadrant(x,y | x > 0 and y &lt; x) == true</span>
+<div id="mathAns6-89" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;inFirstHalfQuadrant<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Here is the rest of the definition.
+</p>
+
+
+
+<div id="spadComm6-90" class="spadComm" >
+<form id="formComm6-90" action="javascript:makeRequest('6-90');" >
+<input id="comm6-90" type="text" class="command" style="width: 22em;" value="inFirstHalfQuadrant(x,y) == false" />
+</form>
+<span id="commSav6-90" class="commSav" >inFirstHalfQuadrant(x,y) == false</span>
+<div id="mathAns6-90" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Try it out.
+</p>
+
+
+
+<div id="spadComm6-91" class="spadComm" >
+<form id="formComm6-91" action="javascript:makeRequest('6-91');" >
+<input id="comm6-91" type="text" class="command" style="width: 27em;" value="[inFirstHalfQuadrant(i,3) for i in 1..5]" />
+</form>
+<span id="commSav6-91" class="commSav" >[inFirstHalfQuadrant(i,3) for i in 1..5]</span>
+<div id="mathAns6-91" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;inFirstHalfQuadrant&nbsp;with&nbsp;type&nbsp;(PositiveInteger,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PositiveInteger)&nbsp;-&gt;&nbsp;Boolean&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Boolean
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.10.xhtml" style="margin-right: 10px;">Previous Section 6.10 Compiling vs. Interpreting</a><a href="section-6.12.xhtml" style="margin-right: 10px;">Next Section 6.12 Caching Previously Computed Results</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.12.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.12.xhtml
new file mode 100644
index 0000000..d89c989
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.12.xhtml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.11.xhtml" style="margin-right: 10px;">Previous Section 6.11 Piece-Wise Function Definitions</a><a href="section-6.13.xhtml" style="margin-right: 10px;">Next Section 6.13 Recurrence Relations</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.12">
+<h2 class="sectiontitle">6.12  Caching Previously Computed Results</h2>
+
+
+<a name="ugUserCache" class="label"/>
+
+
+<p>By default, Axiom does not save the values of any function.
+<span class="index">function:caching values</span><a name="chapter-6-30"/> You can cause it to save values and
+not to recompute unnecessarily <span class="index">remembering function values</span><a name="chapter-6-31"/> by
+using <span class="teletype">)set functions cache</span>.  <span class="index">set functions cache</span><a name="chapter-6-32"/> This
+should be used before the functions are defined or, at least, before
+they are executed.  The word following ``cache'' should be <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> to turn
+off caching, a positive integer <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> to save the last <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> computed
+values or ``all'' to save all computed values.  If you then give a
+list of names of functions, the caching only affects those functions.
+Use no list of names or ``all'' when you want to define the default
+behavior for functions not specifically mentioned in other 
+<span class="teletype">)set functions cache</span> statements.  If you give no list of names, all
+functions will have the caching behavior.  If you explicitly turn on
+caching for one or more names, you must explicitly turn off caching
+for those names when you want to stop saving their values.
+</p>
+
+
+<p>This causes the functions <span style="font-weight: bold;"> f</span> and <span style="font-weight: bold;"> g</span> to have the last three
+computed values saved.
+</p>
+
+
+
+<div id="spadComm6-92" class="spadComm" >
+<form id="formComm6-92" action="javascript:makeRequest('6-92');" >
+<input id="comm6-92" type="text" class="command" style="width: 18em;" value=")set functions cache 3 f g" />
+</form>
+<span id="commSav6-92" class="commSav" >)set functions cache 3 f g</span>
+<div id="mathAns6-92" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;function&nbsp;f&nbsp;will&nbsp;cache&nbsp;the&nbsp;last&nbsp;3&nbsp;values.<br />
+&nbsp;&nbsp;&nbsp;function&nbsp;g&nbsp;will&nbsp;cache&nbsp;the&nbsp;last&nbsp;3&nbsp;values.<br />
+</div>
+
+
+
+<p>This is a sample definition for <span style="font-weight: bold;"> f</span>.
+</p>
+
+
+
+<div id="spadComm6-93" class="spadComm" >
+<form id="formComm6-93" action="javascript:makeRequest('6-93');" >
+<input id="comm6-93" type="text" class="command" style="width: 15em;" value="f x == factorial(2**x)" />
+</form>
+<span id="commSav6-93" class="commSav" >f x == factorial(2**x)</span>
+<div id="mathAns6-93" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>A message is displayed stating what <span style="font-weight: bold;"> f</span> will cache.
+</p>
+
+
+
+<div id="spadComm6-94" class="spadComm" >
+<form id="formComm6-94" action="javascript:makeRequest('6-94');" >
+<input id="comm6-94" type="text" class="command" style="width: 3em;" value="f(4)" />
+</form>
+<span id="commSav6-94" class="commSav" >f(4)</span>
+<div id="mathAns6-94" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;f&nbsp;will&nbsp;cache&nbsp;3&nbsp;most&nbsp;recently&nbsp;computed&nbsp;value(s).<br />
+<br />
++++&nbsp;|*1;f;1;G82322|&nbsp;redefined<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>20922789888000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This causes all other functions to have all computed values saved by default.
+</p>
+
+
+
+<div id="spadComm6-95" class="spadComm" >
+<form id="formComm6-95" action="javascript:makeRequest('6-95');" >
+<input id="comm6-95" type="text" class="command" style="width: 16em;" value=")set functions cache all" />
+</form>
+<span id="commSav6-95" class="commSav" >)set functions cache all</span>
+<div id="mathAns6-95" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;In&nbsp;general,&nbsp;interpreter&nbsp;functions&nbsp;will&nbsp;cache&nbsp;all&nbsp;values.<br />
+</div>
+
+
+
+<p>This causes all functions that have not been specifically cached in some way
+to have no computed values saved.
+</p>
+
+
+
+<div id="spadComm6-96" class="spadComm" >
+<form id="formComm6-96" action="javascript:makeRequest('6-96');" >
+<input id="comm6-96" type="text" class="command" style="width: 15em;" value=")set functions cache 0" />
+</form>
+<span id="commSav6-96" class="commSav" >)set functions cache 0</span>
+<div id="mathAns6-96" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;In&nbsp;general,&nbsp;functions&nbsp;will&nbsp;cache&nbsp;no&nbsp;returned&nbsp;values.<br />
+</div>
+
+
+
+<p>We also make <span style="font-weight: bold;"> f</span> and <span style="font-weight: bold;"> g</span> uncached.
+</p>
+
+
+
+<div id="spadComm6-97" class="spadComm" >
+<form id="formComm6-97" action="javascript:makeRequest('6-97');" >
+<input id="comm6-97" type="text" class="command" style="width: 18em;" value=")set functions cache 0 f g" />
+</form>
+<span id="commSav6-97" class="commSav" >)set functions cache 0 f g</span>
+<div id="mathAns6-97" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Caching&nbsp;for&nbsp;function&nbsp;f&nbsp;is&nbsp;turned&nbsp;off<br />
+&nbsp;&nbsp;&nbsp;Caching&nbsp;for&nbsp;function&nbsp;g&nbsp;is&nbsp;turned&nbsp;off<br />
+</div>
+
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>Be careful about caching functions that have side effects.  Such a
+function might destructively modify the elements of an array or issue
+a <span style="font-weight: bold;"> draw</span> command, for example.  A function that you expect to
+execute every time it is called should not be cached.  Also, it is
+highly unlikely that a function with no arguments should be cached.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>You should also be careful about caching functions that depend on free
+variables.  See <a href="section-6.16.xhtml#ugUserFreeLocal" class="ref" >ugUserFreeLocal</a>  for an example.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.11.xhtml" style="margin-right: 10px;">Previous Section 6.11 Piece-Wise Function Definitions</a><a href="section-6.13.xhtml" style="margin-right: 10px;">Next Section 6.13 Recurrence Relations</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.13.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.13.xhtml
new file mode 100644
index 0000000..96c666c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.13.xhtml
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.13</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.12.xhtml" style="margin-right: 10px;">Previous Section 6.12 Caching Previously Computed Results</a><a href="section-6.14.xhtml" style="margin-right: 10px;">Next Section 6.14 Making Functions from Objects</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.13">
+<h2 class="sectiontitle">6.13  Recurrence Relations</h2>
+
+
+<a name="ugUserRecur" class="label"/>
+
+
+<p>One of the most useful classes of function are those defined via a
+``recurrence relation.''  A <span class="italic">recurrence relation</span> makes each
+successive <span class="index">recurrence relation</span><a name="chapter-6-33"/> value depend on some or all of
+the previous values.  A simple example is the ordinary ``factorial'' function:
+</p>
+
+
+
+<div class="verbatim"><br />
+fact(0)&nbsp;==&nbsp;1<br />
+fact(n&nbsp;|&nbsp;n&nbsp;&gt;&nbsp;0)&nbsp;==&nbsp;n&nbsp;*&nbsp;fact(n-1)<br />
+</div>
+
+
+
+<p>The value of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fact</mi><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mstyle></math> depends on the value of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fact</mi><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fact</mi><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mstyle></math>
+on <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fact</mi><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mstyle></math>, and so on.  Because it depends on only one previous
+value, it is usually called a <span class="italic">first order recurrence relation.</span>
+You can easily imagine a function based on two, three or more previous
+values.  The Fibonacci numbers are probably the most famous function
+defined by a <span class="index">Fibonacci numbers</span><a name="chapter-6-34"/> second order recurrence relation.
+</p>
+
+
+<p>The library function <span style="font-weight: bold;"> fibonacci</span> computes Fibonacci numbers.
+It is obviously optimized for speed.
+</p>
+
+
+
+<div id="spadComm6-98" class="spadComm" >
+<form id="formComm6-98" action="javascript:makeRequest('6-98');" >
+<input id="comm6-98" type="text" class="command" style="width: 18em;" value="[fibonacci(i) for i in 0..]" />
+</form>
+<span id="commSav6-98" class="commSav" >[fibonacci(i) for i in 0..]</span>
+<div id="mathAns6-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Define the Fibonacci numbers ourselves using a piece-wise definition.
+</p>
+
+
+
+<div id="spadComm6-99" class="spadComm" >
+<form id="formComm6-99" action="javascript:makeRequest('6-99');" >
+<input id="comm6-99" type="text" class="command" style="width: 8em;" value="fib(1) == 1" />
+</form>
+<span id="commSav6-99" class="commSav" >fib(1) == 1</span>
+<div id="mathAns6-99" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-100" class="spadComm" >
+<form id="formComm6-100" action="javascript:makeRequest('6-100');" >
+<input id="comm6-100" type="text" class="command" style="width: 8em;" value="fib(2) == 1" />
+</form>
+<span id="commSav6-100" class="commSav" >fib(2) == 1</span>
+<div id="mathAns6-100" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-101" class="spadComm" >
+<form id="formComm6-101" action="javascript:makeRequest('6-101');" >
+<input id="comm6-101" type="text" class="command" style="width: 20em;" value="fib(n) == fib(n-1) + fib(n-2)" />
+</form>
+<span id="commSav6-101" class="commSav" >fib(n) == fib(n-1) + fib(n-2)</span>
+<div id="mathAns6-101" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>As defined, this recurrence relation is obviously doubly-recursive.
+To compute <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mstyle></math>, we need to compute <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mstyle></math>.  And
+to <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mstyle></math>, we need to compute <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mstyle></math>.  And so on.  It
+seems that to compute <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mstyle></math> we need to compute <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mstyle></math> once,
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mstyle></math> twice, <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mstyle></math> three times.  Look familiar?  The number of
+function calls needed to compute <span class="italic">any</span> second order recurrence
+relation in the obvious way is exactly <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mstyle></math>.  These numbers grow!
+For example, if Axiom actually did this, then <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>fib</mi><mo>(</mo><mn>500</mn><mo>)</mo></mrow></mstyle></math> requires more
+than <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>10</mn><mn>104</mn></msup></mrow></mstyle></math> function calls.  And, given all
+this, our definition of <span style="font-weight: bold;"> fib</span> obviously could not be used to
+calculate the five-hundredth Fibonacci number.
+</p>
+
+
+<p>Let's try it anyway.
+</p>
+
+
+
+<div id="spadComm6-102" class="spadComm" >
+<form id="formComm6-102" action="javascript:makeRequest('6-102');" >
+<input id="comm6-102" type="text" class="command" style="width: 6em;" value="fib(500)" />
+</form>
+<span id="commSav6-102" class="commSav" >fib(500)</span>
+<div id="mathAns6-102" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;fib&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;PositiveInteger&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;fib&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+<br />
+13942322456169788013972438287040728395007025658769730726410_<br />
+8962948325571622863290691557658876222521294125<br />
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Since this takes a short time to compute, it obviously didn't do as
+many as <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>10</mn><mn>104</mn></msup></mrow></mstyle></math> operations!  By default, Axiom transforms any
+recurrence relation it recognizes into an iteration.  Iterations are
+efficient.  To compute the value of the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th term of a recurrence
+relation using an iteration requires only <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> function calls. Note
+that if you compare the speed of our <span style="font-weight: bold;"> fib</span> function to the library
+function, our version is still slower.  This is because the library
+<span class="spadfunFrom" >fibonacci</span><span class="index">fibonacci</span><a name="chapter-6-35"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-6-36"/> uses a
+``powering algorithm'' with a computing time proportional to
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mo>log</mo><mn>3</mn></msup><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mstyle></math> to compute <span class="teletype">fibonacci(n)</span>.
+</p>
+
+
+<p>To turn off this special recurrence relation compilation, issue
+<span class="index">set function recurrence</span><a name="chapter-6-37"/>
+</p>
+
+
+
+<div class="verbatim"><br />
+)set&nbsp;functions&nbsp;recurrence&nbsp;off<br />
+</div>
+
+
+<p>To turn it back on, substitute ``<span class="teletype">on</span>'' for ``<span class="teletype">off</span>''.
+</p>
+
+
+<p>The transformations that Axiom uses for <span style="font-weight: bold;"> fib</span> caches the last two
+values. For a more general <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math>-th order recurrence relation, Axiom
+caches the last <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math> values.  If, after computing a value for <span style="font-weight: bold;">
+fib</span>, you ask for some larger value, Axiom picks up the cached values
+and continues computing from there.  See <a href="section-6.16.xhtml#ugUserFreeLocal" class="ref" >ugUserFreeLocal</a>  for an example of a function definition
+that has this same behavior.  Also see <a href="section-6.12.xhtml#ugUserCache" class="ref" >ugUserCache</a>  for a more general discussion of how you
+can cache function values.
+</p>
+
+
+<p>Recurrence relations can be used for defining recurrence relations
+involving polynomials, rational functions, or anything you like.
+Here we compute the infinite stream of Legendre polynomials.
+</p>
+
+
+<p>The Legendre polynomial of degree <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+<div id="spadComm6-103" class="spadComm" >
+<form id="formComm6-103" action="javascript:makeRequest('6-103');" >
+<input id="comm6-103" type="text" class="command" style="width: 6em;" value="p(0) == 1" />
+</form>
+<span id="commSav6-103" class="commSav" >p(0) == 1</span>
+<div id="mathAns6-103" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The Legendre polynomial of degree <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+<div id="spadComm6-104" class="spadComm" >
+<form id="formComm6-104" action="javascript:makeRequest('6-104');" >
+<input id="comm6-104" type="text" class="command" style="width: 6em;" value="p(1) == x" />
+</form>
+<span id="commSav6-104" class="commSav" >p(1) == x</span>
+<div id="mathAns6-104" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The Legendre polynomial of degree <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-105" class="spadComm" >
+<form id="formComm6-105" action="javascript:makeRequest('6-105');" >
+<input id="comm6-105" type="text" class="command" style="width: 29em;" value="p(n) == ((2*n-1)*x*p(n-1) - (n-1)*p(n-2))/n" />
+</form>
+<span id="commSav6-105" class="commSav" >p(n) == ((2*n-1)*x*p(n-1) - (n-1)*p(n-2))/n</span>
+<div id="mathAns6-105" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Compute the Legendre polynomial of degree <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>6</mn><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+<div id="spadComm6-106" class="spadComm" >
+<form id="formComm6-106" action="javascript:makeRequest('6-106');" >
+<input id="comm6-106" type="text" class="command" style="width: 3em;" value="p(6)" />
+</form>
+<span id="commSav6-106" class="commSav" >p(6)</span>
+<div id="mathAns6-106" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;p&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Polynomial&nbsp;Fraction&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;p&nbsp;as&nbsp;a&nbsp;recurrence&nbsp;relation.<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>231</mn><mn>16</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>315</mn><mn>16</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>105</mn><mn>16</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mfrac><mn>5</mn><mn>16</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.12.xhtml" style="margin-right: 10px;">Previous Section 6.12 Caching Previously Computed Results</a><a href="section-6.14.xhtml" style="margin-right: 10px;">Next Section 6.14 Making Functions from Objects</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.14.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.14.xhtml
new file mode 100644
index 0000000..6fe9257
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.14.xhtml
@@ -0,0 +1,606 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.14</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.13.xhtml" style="margin-right: 10px;">Previous Section 6.13 Recurrence Relations</a><a href="section-6.15.xhtml" style="margin-right: 10px;">Next Section 6.15 Functions Defined with Blocks</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.14">
+<h2 class="sectiontitle">6.14  Making Functions from Objects</h2>
+
+
+<a name="ugUserMake" class="label"/>
+
+
+<p>There are many times when you compute a complicated expression and
+then wish to use that expression as the body of a function.  Axiom
+provides an operation called <span style="font-weight: bold;"> function</span> to do <span class="index">function:from
+an object</span><a name="chapter-6-38"/> this. <span class="index">function:made by function @{made by 
+<span style="font-weight: bold;"> function</span><a name="chapter-6-39"/>}</span> It creates a function object and places it into the
+workspace.  There are several versions, depending on how many
+arguments the function has.  The first argument to <span style="font-weight: bold;"> function</span> is
+always the expression to be converted into the function body, and the
+second is always the name to be used for the function.  For more
+information, see section <a href="section-9.50.xhtml#MakeFunctionXmpPage" class="ref" >MakeFunctionXmpPage</a> .
+</p>
+
+
+<p>Start with a simple example of a polynomial in three variables.
+</p>
+
+
+
+<div id="spadComm6-107" class="spadComm" >
+<form id="formComm6-107" action="javascript:makeRequest('6-107');" >
+<input id="comm6-107" type="text" class="command" style="width: 14em;" value="p := -x + y**2 - z**3" />
+</form>
+<span id="commSav6-107" class="commSav" >p := -x + y**2 - z**3</span>
+<div id="mathAns6-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>To make this into a function of no arguments that simply returns the
+polynomial, use the two argument form of <span style="font-weight: bold;"> function</span>.
+</p>
+
+
+
+<div id="spadComm6-108" class="spadComm" >
+<form id="formComm6-108" action="javascript:makeRequest('6-108');" >
+<input id="comm6-108" type="text" class="command" style="width: 10em;" value="function(p,'f0)" />
+</form>
+<span id="commSav6-108" class="commSav" >function(p,'f0)</span>
+<div id="mathAns6-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>f0</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>To avoid possible conflicts (see below), it is a good idea to
+quote always this second argument.
+</p>
+
+
+
+<div id="spadComm6-109" class="spadComm" >
+<form id="formComm6-109" action="javascript:makeRequest('6-109');" >
+<input id="comm6-109" type="text" class="command" style="width: 2em;" value="f0" />
+</form>
+<span id="commSav6-109" class="commSav" >f0</span>
+<div id="mathAns6-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>f0</mi><mo></mo><mrow><mo>(</mo><mo>)</mo></mrow><mo></mo><mo>=</mo><mo>=</mo><mo></mo><mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>x</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FunctionCalled f0
+</div>
+
+
+
+<p>This is what you get when you evaluate the function.
+</p>
+
+
+
+<div id="spadComm6-110" class="spadComm" >
+<form id="formComm6-110" action="javascript:makeRequest('6-110');" >
+<input id="comm6-110" type="text" class="command" style="width: 3em;" value="f0()" />
+</form>
+<span id="commSav6-110" class="commSav" >f0()</span>
+<div id="mathAns6-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>To make a function in <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>, use a version of <span style="font-weight: bold;"> function</span> that takes
+three arguments.  The last argument is the name of the variable to use
+as the parameter.  Typically, this variable occurs in the expression
+and, like the function name, you should quote it to avoid possible confusion.
+</p>
+
+
+
+<div id="spadComm6-111" class="spadComm" >
+<form id="formComm6-111" action="javascript:makeRequest('6-111');" >
+<input id="comm6-111" type="text" class="command" style="width: 12em;" value="function(p,'f1,'x)" />
+</form>
+<span id="commSav6-111" class="commSav" >function(p,'f1,'x)</span>
+<div id="mathAns6-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>f1</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>This is what the new function looks like.
+</p>
+
+
+
+<div id="spadComm6-112" class="spadComm" >
+<form id="formComm6-112" action="javascript:makeRequest('6-112');" >
+<input id="comm6-112" type="text" class="command" style="width: 2em;" value="f1" />
+</form>
+<span id="commSav6-112" class="commSav" >f1</span>
+<div id="mathAns6-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>f1</mi><mo></mo><mi>x</mi><mo></mo><mo>=</mo><mo>=</mo><mo></mo><mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>x</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FunctionCalled f1
+</div>
+
+
+
+<p>This is the value of <span style="font-weight: bold;"> f1</span> at <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>3</mn></mrow></mstyle></math>.  Notice that the return type
+of the function is <span class="teletype">Polynomial (Integer)</span>, the same as <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-113" class="spadComm" >
+<form id="formComm6-113" action="javascript:makeRequest('6-113');" >
+<input id="comm6-113" type="text" class="command" style="width: 4em;" value="f1(3)" />
+</form>
+<span id="commSav6-113" class="commSav" >f1(3)</span>
+<div id="mathAns6-113" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f1&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;Polynomial&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>To use <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> as parameters, use the four argument form of <span style="font-weight: bold;"> function</span>.
+</p>
+
+
+
+<div id="spadComm6-114" class="spadComm" >
+<form id="formComm6-114" action="javascript:makeRequest('6-114');" >
+<input id="comm6-114" type="text" class="command" style="width: 14em;" value="function(p,'f2,'x,'y)" />
+</form>
+<span id="commSav6-114" class="commSav" >function(p,'f2,'x,'y)</span>
+<div id="mathAns6-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>f2</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm6-115" class="spadComm" >
+<form id="formComm6-115" action="javascript:makeRequest('6-115');" >
+<input id="comm6-115" type="text" class="command" style="width: 2em;" value="f2" />
+</form>
+<span id="commSav6-115" class="commSav" >f2</span>
+<div id="mathAns6-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>f2</mi><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo></mo><mo>=</mo><mo>=</mo><mo></mo><mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>x</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FunctionCalled f2
+</div>
+
+
+
+<p>Evaluate <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f2</mi></mstyle></math> at <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>3</mn></mrow></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.  The return type of <span style="font-weight: bold;"> f2</span> is
+still <span class="teletype">Polynomial(Integer)</span> because the variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> is still
+present and not one of the parameters.
+</p>
+
+
+
+<div id="spadComm6-116" class="spadComm" >
+<form id="formComm6-116" action="javascript:makeRequest('6-116');" >
+<input id="comm6-116" type="text" class="command" style="width: 5em;" value="f2(3,0)" />
+</form>
+<span id="commSav6-116" class="commSav" >f2(3,0)</span>
+<div id="mathAns6-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Finally, use all three variables as parameters.  There is no five
+argument form of <span style="font-weight: bold;"> function</span>, so use the one with three arguments,
+the third argument being a list of the parameters.
+</p>
+
+
+
+<div id="spadComm6-117" class="spadComm" >
+<form id="formComm6-117" action="javascript:makeRequest('6-117');" >
+<input id="comm6-117" type="text" class="command" style="width: 18em;" value="function(p,'f3,['x,'y,'z])" />
+</form>
+<span id="commSav6-117" class="commSav" >function(p,'f3,['x,'y,'z])</span>
+<div id="mathAns6-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>f3</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>Evaluate this using the same values for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> as above, but let
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> be <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>6</mn></mrow></mstyle></math>.  The result type of <span style="font-weight: bold;"> f3</span> is <span class="teletype">Integer</span>.
+</p>
+
+
+
+<div id="spadComm6-118" class="spadComm" >
+<form id="formComm6-118" action="javascript:makeRequest('6-118');" >
+<input id="comm6-118" type="text" class="command" style="width: 2em;" value="f3" />
+</form>
+<span id="commSav6-118" class="commSav" >f3</span>
+<div id="mathAns6-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>f3</mi><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow><mo></mo><mo>=</mo><mo>=</mo><mo></mo><mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>x</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FunctionCalled f3
+</div>
+
+
+
+
+
+<div id="spadComm6-119" class="spadComm" >
+<form id="formComm6-119" action="javascript:makeRequest('6-119');" >
+<input id="comm6-119" type="text" class="command" style="width: 7em;" value="f3(3,0,-6)" />
+</form>
+<span id="commSav6-119" class="commSav" >f3(3,0,-6)</span>
+<div id="mathAns6-119" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f3&nbsp;with&nbsp;type&nbsp;(PositiveInteger,NonNegativeInteger,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer)&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>213</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The four functions we have defined via <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> have been undeclared.  To
+declare a function whose body is to be generated by 
+<span class="index">function:declaring</span><a name="chapter-6-40"/> <span style="font-weight: bold;"> function</span>, issue the declaration 
+<span class="italic">before</span> the function is created.
+</p>
+
+
+
+<div id="spadComm6-120" class="spadComm" >
+<form id="formComm6-120" action="javascript:makeRequest('6-120');" >
+<input id="comm6-120" type="text" class="command" style="width: 20em;" value="g: (Integer, Integer) -> Float" />
+</form>
+<span id="commSav6-120" class="commSav" >g: (Integer, Integer) -> Float</span>
+<div id="mathAns6-120" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-121" class="spadComm" >
+<form id="formComm6-121" action="javascript:makeRequest('6-121');" >
+<input id="comm6-121" type="text" class="command" style="width: 15em;" value="D(sin(x-y)/cos(x+y),x)" />
+</form>
+<span id="commSav6-121" class="commSav" >D(sin(x-y)/cos(x+y),x)</span>
+<div id="mathAns6-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>-</mo><mrow><mrow><mo>sin</mo><mo>(</mo><mrow><mi>y</mi><mo>-</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mi>x</mi></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><mo>cos</mo><mo>(</mo><mrow><mi>y</mi><mo>-</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>cos</mo><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mi>x</mi></mrow><mo>)</mo></mrow></mrow></mrow><mrow><msup><mrow><mo>cos</mo><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mi>x</mi></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm6-122" class="spadComm" >
+<form id="formComm6-122" action="javascript:makeRequest('6-122');" >
+<input id="comm6-122" type="text" class="command" style="width: 14em;" value="function(%,'g,'x,'y)" />
+</form>
+<span id="commSav6-122" class="commSav" >function(%,'g,'x,'y)</span>
+<div id="mathAns6-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>g</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm6-123" class="spadComm" >
+<form id="formComm6-123" action="javascript:makeRequest('6-123');" >
+<input id="comm6-123" type="text" class="command" style="width: 1em;" value="g" />
+</form>
+<span id="commSav6-123" class="commSav" >g</span>
+<div id="mathAns6-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>g</mi><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo></mo><mo>=</mo><mo>=</mo><mo></mo><mfrac><mrow><mo>-</mo><mrow><mrow><mo>sin</mo><mo>(</mo><mrow><mi>y</mi><mo>-</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mi>x</mi></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><mo>cos</mo><mo>(</mo><mrow><mi>y</mi><mo>-</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>cos</mo><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mi>x</mi></mrow><mo>)</mo></mrow></mrow></mrow><mrow><msup><mrow><mo>cos</mo><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mi>x</mi></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FunctionCalled g
+</div>
+
+
+
+<p>It is an error to use <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> without the quote in the penultimate
+expression since <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> had been declared but did not have a value.
+Similarly, since it is common to overuse variable names like <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>,
+and so on, you avoid problems if you always quote the variable names
+for <span style="font-weight: bold;"> function</span>.  In general, if <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> has a value and you use <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>
+without a quote in a call to <span style="font-weight: bold;"> function</span>, then Axiom does not know
+what you are trying to do.
+</p>
+
+
+<p>What kind of object is allowable as the first argument to 
+<span style="font-weight: bold;"> function</span>?  Let's use the Browse facility of HyperDoc to find out.
+<span class="index">Browse@Browse</span><a name="chapter-6-41"/> At the main Browse menu, enter the string 
+<span class="teletype">function</span> and then click on <span style="font-weight: bold;"> Operations.</span>  The exposed operations
+called <span style="font-weight: bold;"> function</span> all take an object whose type belongs to
+category <span class="teletype">ConvertibleTo InputForm</span>.  What domains are those?  Go
+back to the main Browse menu, erase <span class="teletype">function</span>, enter 
+<span class="teletype">ConvertibleTo</span> in the input area, and click on <span style="font-weight: bold;"> categories</span> on the
+<span class="teletype">Constructors</span> line.  At the bottom of the page, enter 
+<span class="teletype">InputForm</span> in the input area following <span style="font-weight: bold;"> S =</span>.  Click on 
+<span class="teletype">Cross Reference</span> and then on <span class="teletype">Domains</span>.  
+The list you see contains over forty domains that belong to the 
+category <span class="teletype">ConvertibleTo InputForm</span>.  Thus you can use <span style="font-weight: bold;"> function</span> 
+for <span class="teletype">Integer</span>, <span class="teletype">Float</span>, <span class="teletype">String</span>, <span class="teletype">Complex</span>, 
+<span class="teletype">Expression</span>, and so on.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.13.xhtml" style="margin-right: 10px;">Previous Section 6.13 Recurrence Relations</a><a href="section-6.15.xhtml" style="margin-right: 10px;">Next Section 6.15 Functions Defined with Blocks</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.15.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.15.xhtml
new file mode 100644
index 0000000..40891d5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.15.xhtml
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.15</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.14.xhtml" style="margin-right: 10px;">Previous Section 6.14 Making Functions from Objects</a><a href="section-6.16.xhtml" style="margin-right: 10px;">Next Section 6.16 Free and Local Variables</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.15">
+<h2 class="sectiontitle">6.15  Functions Defined with Blocks</h2>
+
+
+<a name="ugUserBlocks" class="label"/>
+
+
+<p>You need not restrict yourself to functions that only fit on one line
+or are written in a piece-wise manner.  The body of the function can
+be a block, as discussed in <a href="section-5.2.xhtml#ugLangBlocks" class="ref" >ugLangBlocks</a> .
+</p>
+
+
+<p>Here is a short function that swaps two elements of a list, array or vector.
+</p>
+
+
+
+<div class="verbatim"><br />
+swap(m,i,j)&nbsp;==<br />
+&nbsp;&nbsp;temp&nbsp;:=&nbsp;m.i<br />
+&nbsp;&nbsp;m.i&nbsp;:=&nbsp;m.j<br />
+&nbsp;&nbsp;m.j&nbsp;:=&nbsp;temp<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The significance of <span style="font-weight: bold;"> swap</span> is that it has a destructive
+effect on its first argument.
+</p>
+
+
+
+<div id="spadComm6-124" class="spadComm" >
+<form id="formComm6-124" action="javascript:makeRequest('6-124');" >
+<input id="comm6-124" type="text" class="command" style="width: 11em;" value="k := [1,2,3,4,5]" />
+</form>
+<span id="commSav6-124" class="commSav" >k := [1,2,3,4,5]</span>
+<div id="mathAns6-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm6-125" class="spadComm" >
+<form id="formComm6-125" action="javascript:makeRequest('6-125');" >
+<input id="comm6-125" type="text" class="command" style="width: 8em;" value="swap(k,2,4)" />
+</form>
+<span id="commSav6-125" class="commSav" >swap(k,2,4)</span>
+<div id="mathAns6-125" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;swap&nbsp;with&nbsp;type&nbsp;(List&nbsp;PositiveInteger,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PositiveInteger,PositiveInteger)&nbsp;-&gt;&nbsp;PositiveInteger&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>You see that the second and fourth elements are interchanged.
+</p>
+
+
+
+<div id="spadComm6-126" class="spadComm" >
+<form id="formComm6-126" action="javascript:makeRequest('6-126');" >
+<input id="comm6-126" type="text" class="command" style="width: 1em;" value="k" />
+</form>
+<span id="commSav6-126" class="commSav" >k</span>
+<div id="mathAns6-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>5</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Using this, we write a couple of different sort functions.  First, a
+simple bubble sort.  <span class="index">sort:bubble</span><a name="chapter-6-42"/> The operation
+<span class="spadopFrom" title="List">#</span> returns the number of elements in an aggregate.
+</p>
+
+
+
+<div class="verbatim"><br />
+bubbleSort(m)&nbsp;==<br />
+&nbsp;&nbsp;n&nbsp;:=&nbsp;#m<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;1..(n-1)&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;n..(i+1)&nbsp;by&nbsp;-1&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;m.j&nbsp;&lt;&nbsp;m.(j-1)&nbsp;then&nbsp;swap(m,j,j-1)<br />
+&nbsp;&nbsp;m<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Let this be the list we want to sort.
+</p>
+
+
+
+<div id="spadComm6-127" class="spadComm" >
+<form id="formComm6-127" action="javascript:makeRequest('6-127');" >
+<input id="comm6-127" type="text" class="command" style="width: 10em;" value="m := [8,4,-3,9]" />
+</form>
+<span id="commSav6-127" class="commSav" >m := [8,4,-3,9]</span>
+<div id="mathAns6-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>8</mn><mo>,</mo><mn>4</mn><mo>,</mo><mo>-</mo><mn>3</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>This is the result of sorting.
+</p>
+
+
+
+<div id="spadComm6-128" class="spadComm" >
+<form id="formComm6-128" action="javascript:makeRequest('6-128');" >
+<input id="comm6-128" type="text" class="command" style="width: 9em;" value="bubbleSort(m)" />
+</form>
+<span id="commSav6-128" class="commSav" >bubbleSort(m)</span>
+<div id="mathAns6-128" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;swap&nbsp;with&nbsp;type&nbsp;(List&nbsp;Integer,Integer,Integer)&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+<br />
++++&nbsp;|*3;swap;1;G82322|&nbsp;redefined<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;bubbleSort&nbsp;with&nbsp;type&nbsp;List&nbsp;Integer&nbsp;-&gt;&nbsp;List&nbsp;Integer<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>Moreover, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> is destructively changed to be the sorted version.
+</p>
+
+
+
+<div id="spadComm6-129" class="spadComm" >
+<form id="formComm6-129" action="javascript:makeRequest('6-129');" >
+<input id="comm6-129" type="text" class="command" style="width: 1em;" value="m" />
+</form>
+<span id="commSav6-129" class="commSav" >m</span>
+<div id="mathAns6-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>This function implements an insertion sort.  <span class="index">sort:insertion</span><a name="chapter-6-43"/>
+The basic idea is to traverse the list and insert the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>-th element
+in its correct position among the <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math> previous elements.  Since we
+start at the beginning of the list, the list elements before the
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>-th element have already been placed in ascending order.
+</p>
+
+
+
+<div class="verbatim"><br />
+insertionSort(m)&nbsp;==<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;2..#m&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;:=&nbsp;i<br />
+&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;j&nbsp;&gt;&nbsp;1&nbsp;and&nbsp;m.j&nbsp;&lt;&nbsp;m.(j-1)&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(m,j,j-1)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;:=&nbsp;j&nbsp;-&nbsp;1<br />
+&nbsp;&nbsp;m<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>As with our bubble sort, this is a destructive function.
+</p>
+
+
+
+<div id="spadComm6-130" class="spadComm" >
+<form id="formComm6-130" action="javascript:makeRequest('6-130');" >
+<input id="comm6-130" type="text" class="command" style="width: 10em;" value="m := [8,4,-3,9]" />
+</form>
+<span id="commSav6-130" class="commSav" >m := [8,4,-3,9]</span>
+<div id="mathAns6-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>8</mn><mo>,</mo><mn>4</mn><mo>,</mo><mo>-</mo><mn>3</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm6-131" class="spadComm" >
+<form id="formComm6-131" action="javascript:makeRequest('6-131');" >
+<input id="comm6-131" type="text" class="command" style="width: 11em;" value="insertionSort(m)" />
+</form>
+<span id="commSav6-131" class="commSav" >insertionSort(m)</span>
+<div id="mathAns6-131" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;insertionSort&nbsp;with&nbsp;type&nbsp;List&nbsp;Integer&nbsp;-&gt;&nbsp;List&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm6-132" class="spadComm" >
+<form id="formComm6-132" action="javascript:makeRequest('6-132');" >
+<input id="comm6-132" type="text" class="command" style="width: 1em;" value="m" />
+</form>
+<span id="commSav6-132" class="commSav" >m</span>
+<div id="mathAns6-132" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>Neither of the above functions is efficient for sorting large lists
+since they reference elements by asking for the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>j</mi></mstyle></math>-th element of the
+structure <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math>.
+</p>
+
+
+<p>Here is a more efficient bubble sort for lists.
+</p>
+
+
+
+<div class="verbatim"><br />
+bubbleSort2(m:&nbsp;List&nbsp;Integer):&nbsp;List&nbsp;Integer&nbsp;==<br />
+&nbsp;&nbsp;null&nbsp;m&nbsp;=&gt;&nbsp;m<br />
+&nbsp;&nbsp;l&nbsp;:=&nbsp;m<br />
+&nbsp;&nbsp;while&nbsp;not&nbsp;null&nbsp;(r&nbsp;:=&nbsp;l.rest)&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;bubbleSort2&nbsp;r<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;:=&nbsp;l.first<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;x&nbsp;&lt;&nbsp;r.first&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l.first&nbsp;:=&nbsp;r.first<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r.first&nbsp;:=&nbsp;x<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l.rest&nbsp;:=&nbsp;r<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;:=&nbsp;l.rest<br />
+&nbsp;&nbsp;m<br />
+<br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;bubbleSort2&nbsp;:&nbsp;List&nbsp;Integer&nbsp;-&gt;&nbsp;List&nbsp;Integer&nbsp;has&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Try it out.
+</p>
+
+
+
+<div id="spadComm6-133" class="spadComm" >
+<form id="formComm6-133" action="javascript:makeRequest('6-133');" >
+<input id="comm6-133" type="text" class="command" style="width: 13em;" value="bubbleSort2 [3,7,2]" />
+</form>
+<span id="commSav6-133" class="commSav" >bubbleSort2 [3,7,2]</span>
+<div id="mathAns6-133" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>This definition is both recursive and iterative, and is tricky!
+Unless you are <span class="italic">really</span> curious about this definition, we suggest
+you skip immediately to the next section.
+</p>
+
+
+<p>Here are the key points in the definition.  First notice that if you
+are sorting a list with less than two elements, there is nothing to
+do: just return the list.  This definition returns immediately if
+there are zero elements, and skips the entire <span class="teletype">while</span> loop if there is
+just one element.
+</p>
+
+
+<p>The second point to realize is that on each outer iteration, the
+bubble sort ensures that the minimum element is propagated leftmost.
+Each iteration of the <span class="teletype">while</span> loop calls <span style="font-weight: bold;"> bubbleSort2</span> recursively
+to sort all but the first element.  When finished, the minimum element
+is either in the first or second position.  The conditional expression
+ensures that it comes first.  If it is in the second, then a swap
+occurs.  In any case, the <span style="font-weight: bold;"> rest</span> of the original list must be
+updated to hold the result of the recursive call.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.14.xhtml" style="margin-right: 10px;">Previous Section 6.14 Making Functions from Objects</a><a href="section-6.16.xhtml" style="margin-right: 10px;">Next Section 6.16 Free and Local Variables</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.16.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.16.xhtml
new file mode 100644
index 0000000..0cb26e9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.16.xhtml
@@ -0,0 +1,927 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.16</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.15.xhtml" style="margin-right: 10px;">Previous Section 6.15 Functions Defined with Blocks</a><a href="section-6.17.xhtml" style="margin-right: 10px;">Next Section 6.17 Anonymous Functions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.16">
+<h2 class="sectiontitle">6.16  Free and Local Variables</h2>
+
+
+<a name="ugUserFreeLocal" class="label"/>
+
+
+<p>When you want to refer to a variable that is not local to your
+function, use a ``<span class="teletype">free</span>'' declaration.  <span class="index">free</span><a name="chapter-6-44"/> Variables
+declared to be <span class="teletype">free</span> <span class="index">free variable</span><a name="chapter-6-45"/> are assumed to be defined
+globally <span class="index">variable:free</span><a name="chapter-6-46"/> in the <span class="index">variable:global</span><a name="chapter-6-47"/>
+workspace.  <span class="index">global variable</span><a name="chapter-6-48"/>
+</p>
+
+
+<p>This is a global workspace variable.
+</p>
+
+
+
+<div id="spadComm6-134" class="spadComm" >
+<form id="formComm6-134" action="javascript:makeRequest('6-134');" >
+<input id="comm6-134" type="text" class="command" style="width: 8em;" value="counter := 0" />
+</form>
+<span id="commSav6-134" class="commSav" >counter := 0</span>
+<div id="mathAns6-134" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>This function refers to the global <math xmlns="&mathml;" mathsize="big"><mstyle><mi>counter</mi></mstyle></math>.
+</p>
+
+
+
+<div class="verbatim"><br />
+f()&nbsp;==<br />
+&nbsp;&nbsp;free&nbsp;counter<br />
+&nbsp;&nbsp;counter&nbsp;:=&nbsp;counter&nbsp;+&nbsp;1<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The global <math xmlns="&mathml;" mathsize="big"><mstyle><mi>counter</mi></mstyle></math> is incremented by <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-135" class="spadComm" >
+<form id="formComm6-135" action="javascript:makeRequest('6-135');" >
+<input id="comm6-135" type="text" class="command" style="width: 2em;" value="f()" />
+</form>
+<span id="commSav6-135" class="commSav" >f()</span>
+<div id="mathAns6-135" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;with&nbsp;type&nbsp;()&nbsp;-&gt;&nbsp;NonNegativeInteger&nbsp;<br />
+<br />
++++&nbsp;|*0;f;1;G82322|&nbsp;redefined<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm6-136" class="spadComm" >
+<form id="formComm6-136" action="javascript:makeRequest('6-136');" >
+<input id="comm6-136" type="text" class="command" style="width: 5em;" value="counter" />
+</form>
+<span id="commSav6-136" class="commSav" >counter</span>
+<div id="mathAns6-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+
+<p>Usually Axiom can tell that you mean to refer to a global variable and
+so <span class="teletype">free</span> isn't always necessary.  However, for clarity and the sake
+of self-documentation, we encourage you to use it.
+</p>
+
+
+<p>Declare a variable to be ``<span class="teletype">local</span>'' when you do not want to refer to
+<span class="index">variable:local</span><a name="chapter-6-49"/> a global variable by the same name.
+<span class="index">local variable</span><a name="chapter-6-50"/>
+</p>
+
+
+<p>This function uses <math xmlns="&mathml;" mathsize="big"><mstyle><mi>counter</mi></mstyle></math> as a local variable.
+</p>
+
+
+
+<div class="verbatim"><br />
+g()&nbsp;==<br />
+&nbsp;&nbsp;local&nbsp;counter<br />
+&nbsp;&nbsp;counter&nbsp;:=&nbsp;7<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Apply the function.
+</p>
+
+
+
+<div id="spadComm6-137" class="spadComm" >
+<form id="formComm6-137" action="javascript:makeRequest('6-137');" >
+<input id="comm6-137" type="text" class="command" style="width: 2em;" value="g()" />
+</form>
+<span id="commSav6-137" class="commSav" >g()</span>
+<div id="mathAns6-137" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Check that the global value of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>counter</mi></mstyle></math> is unchanged.
+</p>
+
+
+
+<div id="spadComm6-138" class="spadComm" >
+<form id="formComm6-138" action="javascript:makeRequest('6-138');" >
+<input id="comm6-138" type="text" class="command" style="width: 5em;" value="counter" />
+</form>
+<span id="commSav6-138" class="commSav" >counter</span>
+<div id="mathAns6-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>Parameters to a function are local variables in the function.  Even if
+you issue a <span class="teletype">free</span> declaration for a parameter, it is still local.
+</p>
+
+
+<p>What happens if you do not declare that a variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> in the body of
+your function is <span class="teletype">local</span> or <span class="teletype">free</span>?  Well, Axiom decides on this basis:
+</p>
+
+
+
+<ol>
+<li>
+ Axiom scans your function line-by-line, from top-to-bottom.
+The right-hand side of an assignment is looked at before the left-hand
+side.
+</li>
+<li> If <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is referenced before it is assigned a value, it is a
+<span class="teletype">free</span> (global) variable.
+</li>
+<li> If <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is assigned a value before it is referenced, it is a
+<span class="teletype">local</span> variable.
+</li>
+</ol>
+
+
+
+<p>Set two global variables to 1.
+</p>
+
+
+
+<div id="spadComm6-139" class="spadComm" >
+<form id="formComm6-139" action="javascript:makeRequest('6-139');" >
+<input id="comm6-139" type="text" class="command" style="width: 8em;" value="a := b := 1" />
+</form>
+<span id="commSav6-139" class="commSav" >a := b := 1</span>
+<div id="mathAns6-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Refer to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> before it is assigned a value, but assign a value to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math>
+before it is referenced.
+</p>
+
+
+
+<div class="verbatim"><br />
+h()&nbsp;==<br />
+&nbsp;&nbsp;b&nbsp;:=&nbsp;a&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;a&nbsp;:=&nbsp;b&nbsp;+&nbsp;a<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Can you predict this result?
+</p>
+
+
+
+<div id="spadComm6-140" class="spadComm" >
+<form id="formComm6-140" action="javascript:makeRequest('6-140');" >
+<input id="comm6-140" type="text" class="command" style="width: 2em;" value="h()" />
+</form>
+<span id="commSav6-140" class="commSav" >h()</span>
+<div id="mathAns6-140" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;h&nbsp;with&nbsp;type&nbsp;()&nbsp;-&gt;&nbsp;PositiveInteger&nbsp;<br />
+<br />
++++&nbsp;|*0;h;1;G82322|&nbsp;redefined<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>How about this one?
+</p>
+
+
+
+<div id="spadComm6-141" class="spadComm" >
+<form id="formComm6-141" action="javascript:makeRequest('6-141');" >
+<input id="comm6-141" type="text" class="command" style="width: 4em;" value="[a, b]" />
+</form>
+<span id="commSav6-141" class="commSav" >[a, b]</span>
+<div id="mathAns6-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>What happened?  In the first line of the function body for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>h</mi></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> is
+referenced on the right-hand side of the assignment.  Thus <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> is a
+free variable.  The variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> is not referenced in that line, but
+it is assigned a value.  Thus <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> is a local variable and is given the
+value <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>+</mo><mn>1</mn><mo>=</mo><mn>2</mn></mrow></mstyle></math>.  In the second line, the free variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> is
+assigned the value <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>b</mi><mo>+</mo><mi>a</mi></mrow></mstyle></math> which equals <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>+</mo><mn>1</mn><mo>=</mo><mn>3</mn><mo>.</mo></mrow></mstyle></math> This is the value
+returned by the function.  Since <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> was free in <span style="font-weight: bold;"> h</span>, the global
+variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> has value <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>3</mn><mo>.</mo></mrow></mstyle></math> Since <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> was local in <span style="font-weight: bold;"> h</span>, the global
+variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> is unchanged---it still has the value <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+</p>
+
+
+<p>It is good programming practice always to declare global variables.
+However, by far the most common situation is to have local variables
+in your functions.  No declaration is needed for this situation, but
+be sure to initialize their values.
+</p>
+
+
+<p>Be careful if you use free variables and you cache the value of your
+function (see <a href="section-6.12.xhtml#ugUserCache" class="ref" >ugUserCache</a> ).
+Caching <span class="italic">only</span> checks if the values of the function arguments are
+the same as in a function call previously seen.  It does not check if
+any of the free variables on which the function depends have changed
+between function calls.
+</p>
+
+
+<p>Turn on caching for <span style="font-weight: bold;"> p</span>.
+</p>
+
+
+
+<div id="spadComm6-142" class="spadComm" >
+<form id="formComm6-142" action="javascript:makeRequest('6-142');" >
+<input id="comm6-142" type="text" class="command" style="width: 14em;" value=")set fun cache all p" />
+</form>
+<span id="commSav6-142" class="commSav" >)set fun cache all p</span>
+<div id="mathAns6-142" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;function&nbsp;p&nbsp;will&nbsp;cache&nbsp;all&nbsp;values.<br />
+</div>
+
+
+
+<p>Define <span style="font-weight: bold;"> p</span> to depend on the free variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>N</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-143" class="spadComm" >
+<form id="formComm6-143" action="javascript:makeRequest('6-143');" >
+<input id="comm6-143" type="text" class="command" style="width: 42em;" value="p(i,x) == ( free N; reduce( + , [ (x-i)**n for n in 1..N ] ) )" />
+</form>
+<span id="commSav6-143" class="commSav" >p(i,x) == ( free N; reduce( + , [ (x-i)**n for n in 1..N ] ) )</span>
+<div id="mathAns6-143" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Set the value of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>N</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-144" class="spadComm" >
+<form id="formComm6-144" action="javascript:makeRequest('6-144');" >
+<input id="comm6-144" type="text" class="command" style="width: 4em;" value="N := 1" />
+</form>
+<span id="commSav6-144" class="commSav" >N := 1</span>
+<div id="mathAns6-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Evaluate <span style="font-weight: bold;"> p</span> the first time.
+</p>
+
+
+
+<div id="spadComm6-145" class="spadComm" >
+<form id="formComm6-145" action="javascript:makeRequest('6-145');" >
+<input id="comm6-145" type="text" class="command" style="width: 5em;" value="p(0, x)" />
+</form>
+<span id="commSav6-145" class="commSav" >p(0, x)</span>
+<div id="mathAns6-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Change the value of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>N</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-146" class="spadComm" >
+<form id="formComm6-146" action="javascript:makeRequest('6-146');" >
+<input id="comm6-146" type="text" class="command" style="width: 4em;" value="N := 2" />
+</form>
+<span id="commSav6-146" class="commSav" >N := 2</span>
+<div id="mathAns6-146" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Evaluate <span style="font-weight: bold;"> p</span> the second time.
+</p>
+
+
+
+<div id="spadComm6-147" class="spadComm" >
+<form id="formComm6-147" action="javascript:makeRequest('6-147');" >
+<input id="comm6-147" type="text" class="command" style="width: 5em;" value="p(0, x)" />
+</form>
+<span id="commSav6-147" class="commSav" >p(0, x)</span>
+<div id="mathAns6-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>If caching had been turned off, the second evaluation would have
+reflected the changed value of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>N</mi></mstyle></math>.
+</p>
+
+
+<p>Turn off caching for <span style="font-weight: bold;"> p</span>.
+</p>
+
+
+
+<div id="spadComm6-148" class="spadComm" >
+<form id="formComm6-148" action="javascript:makeRequest('6-148');" >
+<input id="comm6-148" type="text" class="command" style="width: 12em;" value=")set fun cache 0 p" />
+</form>
+<span id="commSav6-148" class="commSav" >)set fun cache 0 p</span>
+<div id="mathAns6-148" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Caching&nbsp;for&nbsp;function&nbsp;p&nbsp;is&nbsp;turned&nbsp;off<br />
+</div>
+
+
+
+<p>Axiom does not allow <span class="italic">fluid variables</span>, that is, variables
+<span class="index">variable:fluid</span><a name="chapter-6-51"/> bound by a function <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> that can be referenced
+by functions called by <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.  <span class="index">fluid variable</span><a name="chapter-6-52"/>
+</p>
+
+
+<p>Values are passed to functions by <span class="italic">reference</span>: a pointer to the
+value is passed rather than a copy of the value or a pointer to a
+copy.
+</p>
+
+
+<p>This is a global variable that is bound to a record object.
+</p>
+
+
+
+<div id="spadComm6-149" class="spadComm" >
+<form id="formComm6-149" action="javascript:makeRequest('6-149');" >
+<input id="comm6-149" type="text" class="command" style="width: 20em;" value="r : Record(i : Integer) := [1]" />
+</form>
+<span id="commSav6-149" class="commSav" >r : Record(i : Integer) := [1]</span>
+<div id="mathAns6-149" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(i: Integer)
+</div>
+
+
+
+<p>This function first modifies the one component of its record argument
+and then rebinds the parameter to another record.
+</p>
+
+
+
+<div class="verbatim"><br />
+resetRecord&nbsp;rr&nbsp;==<br />
+&nbsp;&nbsp;rr.i&nbsp;:=&nbsp;2<br />
+&nbsp;&nbsp;rr&nbsp;:=&nbsp;[10]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Pass <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> as an argument to <span style="font-weight: bold;"> resetRecord</span>. 
+</p>
+
+
+
+<div id="spadComm6-150" class="spadComm" >
+<form id="formComm6-150" action="javascript:makeRequest('6-150');" >
+<input id="comm6-150" type="text" class="command" style="width: 9em;" value="resetRecord r" />
+</form>
+<span id="commSav6-150" class="commSav" >resetRecord r</span>
+<div id="mathAns6-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>i</mi><mo>=</mo><mn>10</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(i: Integer)
+</div>
+
+
+
+<p>The value of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> was changed by the expression <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>rr</mi><mo>.</mo><mi>i</mi><mo>:</mo><mo>=</mo><mn>2</mn></mrow></mstyle></math> but not by
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>rr</mi><mo>:</mo><mo>=</mo><mo>[</mo><mn>10</mn><mo>]</mo></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-151" class="spadComm" >
+<form id="formComm6-151" action="javascript:makeRequest('6-151');" >
+<input id="comm6-151" type="text" class="command" style="width: 1em;" value="r" />
+</form>
+<span id="commSav6-151" class="commSav" >r</span>
+<div id="mathAns6-151" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>i</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(i: Integer)
+</div>
+
+
+
+<p>To conclude this section, we give an iterative definition of
+<span class="index">Fibonacci numbers</span><a name="chapter-6-53"/> a function that computes Fibonacci numbers.
+This definition approximates the definition into which Axiom
+transforms the recurrence relation definition of <span style="font-weight: bold;"> fib</span> in
+<a href="section-6.13.xhtml#ugUserRecur" class="ref" >ugUserRecur</a> .
+</p>
+
+
+<p>Global variables <span class="teletype">past</span> and <span class="teletype">present</span> are used to hold the last
+computed Fibonacci numbers.
+</p>
+
+
+
+<div id="spadComm6-152" class="spadComm" >
+<form id="formComm6-152" action="javascript:makeRequest('6-152');" >
+<input id="comm6-152" type="text" class="command" style="width: 14em;" value="past := present := 1" />
+</form>
+<span id="commSav6-152" class="commSav" >past := present := 1</span>
+<div id="mathAns6-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Global variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>index</mi></mstyle></math> gives the current index of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>present</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-153" class="spadComm" >
+<form id="formComm6-153" action="javascript:makeRequest('6-153');" >
+<input id="comm6-153" type="text" class="command" style="width: 7em;" value="index := 2" />
+</form>
+<span id="commSav6-153" class="commSav" >index := 2</span>
+<div id="mathAns6-153" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Here is a recurrence relation defined in terms of these three global
+variables.
+</p>
+
+
+
+<div class="verbatim"><br />
+fib(n)&nbsp;==<br />
+&nbsp;&nbsp;free&nbsp;past,&nbsp;present,&nbsp;index<br />
+&nbsp;&nbsp;n&nbsp;&lt;&nbsp;3&nbsp;=&gt;&nbsp;1<br />
+&nbsp;&nbsp;n&nbsp;=&nbsp;index&nbsp;-&nbsp;1&nbsp;=&gt;&nbsp;past<br />
+&nbsp;&nbsp;if&nbsp;n&nbsp;&lt;&nbsp;index-1&nbsp;then<br />
+&nbsp;&nbsp;&nbsp;&nbsp;(past,present)&nbsp;:=&nbsp;(1,1)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;:=&nbsp;2<br />
+&nbsp;&nbsp;while&nbsp;(index&nbsp;&lt;&nbsp;n)&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;(past,present)&nbsp;:=&nbsp;(present,&nbsp;past+present)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;:=&nbsp;index&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;present<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Compute the infinite stream of Fibonacci numbers.
+</p>
+
+
+
+<div id="spadComm6-154" class="spadComm" >
+<form id="formComm6-154" action="javascript:makeRequest('6-154');" >
+<input id="comm6-154" type="text" class="command" style="width: 20em;" value="fibs := [fib(n) for n in 1..]" />
+</form>
+<span id="commSav6-154" class="commSav" >fibs := [fib(n) for n in 1..]</span>
+<div id="mathAns6-154" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mn>55</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream PositiveInteger
+</div>
+
+
+
+<p>What is the 1000th Fibonacci number?
+</p>
+
+
+
+<div id="spadComm6-155" class="spadComm" >
+<form id="formComm6-155" action="javascript:makeRequest('6-155');" >
+<input id="comm6-155" type="text" class="command" style="width: 6em;" value="fibs 1000" />
+</form>
+<span id="commSav6-155" class="commSav" >fibs 1000</span>
+<div id="mathAns6-155" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;434665576869374564356885276750406258025646605173717804024_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;8172908953655541794905189040387984007925516929592259308_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;0322634775209689623239873322471161642996440906533187938_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;298969649928516003704476137795166849228875<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>As an exercise, we suggest you write a function in an iterative style
+that computes the value of the recurrence relation 
+<math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> 
+having the initial values 
+<math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>. 
+How would you write the function using an element <span class="teletype">OneDimensionalArray</span> 
+or <span class="teletype">Vector</span> to hold the previously computed values?
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.15.xhtml" style="margin-right: 10px;">Previous Section 6.15 Functions Defined with Blocks</a><a href="section-6.17.xhtml" style="margin-right: 10px;">Next Section 6.17 Anonymous Functions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.17.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.17.xhtml
new file mode 100644
index 0000000..a91fc63
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.17.xhtml
@@ -0,0 +1,712 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.17</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.16.xhtml" style="margin-right: 10px;">Previous Section 6.16 Free and Local Variables</a><a href="section-6.18.xhtml" style="margin-right: 10px;">Next Section 6.18 Example: A Database</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.17">
+<h2 class="sectiontitle">6.17  Anonymous Functions</h2>
+
+
+<a name="ugUserAnon" class="label"/>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>An <span class="italic">anonymous function</span> is a function that is
+<span class="index">function:anonymous</span><a name="chapter-6-54"/> defined <span class="index">anonymous function</span><a name="chapter-6-55"/> by
+giving a list of parameters, the ``maps-to'' compound 
+<span class="index">+-> @<span class="teletype">+-></span></span><a name="chapter-6-56"/> symbol ``<span class="teletype">+-></span>'' 
+(from the mathematical symbol <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x21a6;</mo></mstyle></math>), and
+by an expression involving the parameters, the evaluation of which
+determines the return value of the function.
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">( <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>parm</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>parm</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>, ..., 
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>parm</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math> ) <span class="teletype">+-></span> <span class="italic">expression</span></span>
+</p>
+
+
+
+</div>
+
+
+
+
+</div>
+</div>
+
+
+
+<p>You can apply an anonymous function in several ways.
+</p>
+
+
+
+<ol>
+<li>
+ Place the anonymous function definition in parentheses
+directly followed by a list of arguments.
+</li>
+<li> Assign the anonymous function to a variable and then
+use the variable name when you would normally use a function name.
+</li>
+<li> Use ``<span class="teletype">==</span>'' to use the anonymous function definition as
+the arguments and body of a regular function definition.
+</li>
+<li> Have a named function contain a declared anonymous function and
+use the result returned by the named function.
+</li>
+</ol>
+
+
+
+
+<a name="subsec-6.17.1"/>
+<div class="subsection"  id="subsec-6.17.1">
+<h3 class="subsectitle">6.17.1  Some Examples</h3>
+
+
+<a name="ugUserAnonExamp" class="label"/>
+
+
+<p>Anonymous functions are particularly useful for defining functions
+``on the fly.'' That is, they are handy for simple functions that are
+used only in one place.  In the following examples, we show how to
+write some simple anonymous functions.
+</p>
+
+
+<p>This is a simple absolute value function.
+</p>
+
+
+
+<div id="spadComm6-156" class="spadComm" >
+<form id="formComm6-156" action="javascript:makeRequest('6-156');" >
+<input id="comm6-156" type="text" class="command" style="width: 20em;" value="x +-> if x &lt; 0 then -x else x" />
+</form>
+<span id="commSav6-156" class="commSav" >x +-> if x &lt; 0 then -x else x</span>
+<div id="mathAns6-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>&#x21a6;</mo><mrow><mi>if</mi><mo></mo><mrow><mi>x</mi><mo>&lt;</mo><mn>0</mn></mrow><mo></mo><mrow><mtable><mtr><mtd><mrow><mi>then</mi><mo></mo><mo>-</mo><mi>x</mi></mrow></mtd></mtr><mtr><mtd><mrow><mi>else</mi><mo></mo><mi>x</mi></mrow></mtd></mtr></mtable></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AnonymousFunction
+</div>
+
+
+
+
+
+<div id="spadComm6-157" class="spadComm" >
+<form id="formComm6-157" action="javascript:makeRequest('6-157');" >
+<input id="comm6-157" type="text" class="command" style="width: 7em;" value="abs1 := %" />
+</form>
+<span id="commSav6-157" class="commSav" >abs1 := %</span>
+<div id="mathAns6-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>&#x21a6;</mo><mrow><mi>if</mi><mo></mo><mrow><mi>x</mi><mo>&lt;</mo><mn>0</mn></mrow><mo></mo><mrow><mtable><mtr><mtd><mrow><mi>then</mi><mo></mo><mo>-</mo><mi>x</mi></mrow></mtd></mtr><mtr><mtd><mrow><mi>else</mi><mo></mo><mi>x</mi></mrow></mtd></mtr></mtable></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AnonymousFunction
+</div>
+
+
+
+<p>This function returns <span class="teletype">true</span> if the absolute value of
+the first argument is greater than the absolute value of the
+second, <span class="teletype">false</span> otherwise.
+</p>
+
+
+
+
+<div id="spadComm6-158" class="spadComm" >
+<form id="formComm6-158" action="javascript:makeRequest('6-158');" >
+<input id="comm6-158" type="text" class="command" style="width: 18em;" value="(x,y) +-> abs1(x) > abs1(y)" />
+</form>
+<span id="commSav6-158" class="commSav" >(x,y) +-> abs1(x) > abs1(y)</span>
+<div id="mathAns6-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&#x21a6;</mo><mrow><mrow><mi>abs1</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>&lt;</mo><mrow><mi>abs1</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AnonymousFunction
+</div>
+
+
+
+<p>We use the above function to ``sort'' a list of integers.
+</p>
+
+
+
+<div id="spadComm6-159" class="spadComm" >
+<form id="formComm6-159" action="javascript:makeRequest('6-159');" >
+<input id="comm6-159" type="text" class="command" style="width: 21em;" value="sort(%,[3,9,-4,10,-3,-1,-9,5])" />
+</form>
+<span id="commSav6-159" class="commSav" >sort(%,[3,9,-4,10,-3,-1,-9,5])</span>
+<div id="mathAns6-159" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>10</mn><mo>,</mo><mo>-</mo><mn>9</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>5</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>,</mo><mo>-</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>This function returns <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> if <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>i</mi><mo>+</mo><mi>j</mi></mrow></mstyle></math> is even, <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math> otherwise.
+</p>
+
+
+
+<div id="spadComm6-160" class="spadComm" >
+<form id="formComm6-160" action="javascript:makeRequest('6-160');" >
+<input id="comm6-160" type="text" class="command" style="width: 32em;" value="ev := ( (i,j) +-> if even?(i+j) then 1 else -1)" />
+</form>
+<span id="commSav6-160" class="commSav" >ev := ( (i,j) +-> if even?(i+j) then 1 else -1)</span>
+<div id="mathAns6-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AnonymousFunction
+</div>
+
+
+
+<p>We create a four-by-four matrix containing <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> or <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math> depending on
+whether the row plus the column index is even or not.
+</p>
+
+
+
+<div id="spadComm6-161" class="spadComm" >
+<form id="formComm6-161" action="javascript:makeRequest('6-161');" >
+<input id="comm6-161" type="text" class="command" style="width: 38em;" value="matrix([ [ev(row,col) for row in 1..4] for col in 1..4])" />
+</form>
+<span id="commSav6-161" class="commSav" >matrix([ [ev(row,col) for row in 1..4] for col in 1..4])</span>
+<div id="mathAns6-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>This function returns <span class="teletype">true</span> if a polynomial in <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> has multiple
+roots, <span class="teletype">false</span> otherwise.  It is defined and applied in the same
+expression.
+</p>
+
+
+
+<div id="spadComm6-162" class="spadComm" >
+<form id="formComm6-162" action="javascript:makeRequest('6-162');" >
+<input id="comm6-162" type="text" class="command" style="width: 30em;" value="( p +-> not one?(gcd(p,D(p,x))) )(x**2+4*x+4)" />
+</form>
+<span id="commSav6-162" class="commSav" >( p +-> not one?(gcd(p,D(p,x))) )(x**2+4*x+4)</span>
+<div id="mathAns6-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>This and the next expression are equivalent.
+</p>
+
+
+
+<div id="spadComm6-163" class="spadComm" >
+<form id="formComm6-163" action="javascript:makeRequest('6-163');" >
+<input id="comm6-163" type="text" class="command" style="width: 24em;" value="g(x,y,z) == cos(x + sin(y + tan(z)))" />
+</form>
+<span id="commSav6-163" class="commSav" >g(x,y,z) == cos(x + sin(y + tan(z)))</span>
+<div id="mathAns6-163" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The one you use is a matter of taste.
+</p>
+
+
+
+<div id="spadComm6-164" class="spadComm" >
+<form id="formComm6-164" action="javascript:makeRequest('6-164');" >
+<input id="comm6-164" type="text" class="command" style="width: 28em;" value="g == (x,y,z) +-> cos(x + sin(y + tan(z)))" />
+</form>
+<span id="commSav6-164" class="commSav" >g == (x,y,z) +-> cos(x + sin(y + tan(z)))</span>
+<div id="mathAns6-164" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;g&nbsp;<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-6.17.2"/>
+<div class="subsection"  id="subsec-6.17.2">
+<h3 class="subsectitle">6.17.2  Declaring Anonymous Functions</h3>
+
+
+<a name="ugUserAnonDeclare" class="label"/>
+
+
+<p>If you declare any of the arguments you must declare all of them. Thus,
+</p>
+
+
+
+<div class="verbatim"><br />
+(x:&nbsp;INT,y):&nbsp;FRAC&nbsp;INT&nbsp;+-&gt;&nbsp;(x&nbsp;+&nbsp;2*y)/(y&nbsp;-&nbsp;1)<br />
+</div>
+
+
+<p>is not legal.
+</p>
+
+
+<p>This is an example of a fully declared anonymous function.
+<span class="index">function:declaring</span><a name="chapter-6-57"/> <span class="index">function:anonymous:declaring</span><a name="chapter-6-58"/> The
+output shown just indicates that the object you created is a
+particular kind of map, that is, function.
+</p>
+
+
+
+<div id="spadComm6-165" class="spadComm" >
+<form id="formComm6-165" action="javascript:makeRequest('6-165');" >
+<input id="comm6-165" type="text" class="command" style="width: 32em;" value="(x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)" />
+</form>
+<span id="commSav6-165" class="commSav" >(x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)</span>
+<div id="mathAns6-165" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ((Integer,Integer) <span class="teletype">-></span> Fraction Integer)
+</div>
+
+
+
+<p>Axiom allows you to declare the arguments and not declare
+the return type.
+</p>
+
+
+
+<div id="spadComm6-166" class="spadComm" >
+<form id="formComm6-166" action="javascript:makeRequest('6-166');" >
+<input id="comm6-166" type="text" class="command" style="width: 25em;" value="(x: INT,y: INT) +-> (x + 2*y)/(y - 1)" />
+</form>
+<span id="commSav6-166" class="commSav" >(x: INT,y: INT) +-> (x + 2*y)/(y - 1)</span>
+<div id="mathAns6-166" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ((Integer,Integer) <span class="teletype">-></span> Fraction Integer)
+</div>
+
+
+
+<p>The return type is computed from the types of the arguments and the
+body of the function.  You cannot declare the return type if you do
+not declare the arguments.  Therefore,
+</p>
+
+
+
+<div class="verbatim"><br />
+(x,y):&nbsp;FRAC&nbsp;INT&nbsp;+-&gt;&nbsp;(x&nbsp;+&nbsp;2*y)/(y&nbsp;-&nbsp;1)<br />
+</div>
+
+
+
+<p>is not legal. This and the next expression are equivalent.
+</p>
+
+
+
+<div id="spadComm6-167" class="spadComm" >
+<form id="formComm6-167" action="javascript:makeRequest('6-167');" >
+<input id="comm6-167" type="text" class="command" style="width: 32em;" value="h(x: INT,y: INT): FRAC INT == (x + 2*y)/(y - 1)" />
+</form>
+<span id="commSav6-167" class="commSav" >h(x: INT,y: INT): FRAC INT == (x + 2*y)/(y - 1)</span>
+<div id="mathAns6-167" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;h&nbsp;:&nbsp;(Integer,Integer)&nbsp;-&gt;&nbsp;Fraction&nbsp;Integer<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The one you use is a matter of taste.
+</p>
+
+
+
+<div id="spadComm6-168" class="spadComm" >
+<form id="formComm6-168" action="javascript:makeRequest('6-168');" >
+<input id="comm6-168" type="text" class="command" style="width: 35em;" value="h == (x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)" />
+</form>
+<span id="commSav6-168" class="commSav" >h == (x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)</span>
+<div id="mathAns6-168" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;h&nbsp;:&nbsp;(Integer,Integer)&nbsp;-&gt;&nbsp;Fraction&nbsp;Integer<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;h&nbsp;<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>When should you declare an anonymous function?  
+</p>
+
+
+
+<ol>
+<li>
+ If you use an anonymous function and Axiom can't figure out what
+you are trying to do, declare the function.  
+</li>
+<li> If the function has nontrivial argument types or a nontrivial 
+return type that Axiom may be able to determine eventually, but you 
+are not willing to wait that long, declare the function.  
+</li>
+<li> If the function will only be used for arguments of specific types 
+and it is not too much trouble to declare the function, do so.  
+</li>
+<li> If you are using the anonymous function as an argument to another 
+function (such as <span style="font-weight: bold;"> map</span> or <span style="font-weight: bold;"> sort</span>), consider declaring the function.  
+</li>
+<li> If you define an anonymous function inside a named function, 
+you <span class="italic">must</span> declare the anonymous function.  
+</li>
+</ol>
+
+
+
+<p>This is an example of a named function for integers that returns a
+function.
+</p>
+
+
+
+<div id="spadComm6-169" class="spadComm" >
+<form id="formComm6-169" action="javascript:makeRequest('6-169');" >
+<input id="comm6-169" type="text" class="command" style="width: 29em;" value="addx x == ((y: Integer): Integer +-> x + y)" />
+</form>
+<span id="commSav6-169" class="commSav" >addx x == ((y: Integer): Integer +-> x + y)</span>
+<div id="mathAns6-169" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>We define <span style="font-weight: bold;"> g</span> to be a function that adds <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math> to its
+argument.
+</p>
+
+
+
+<div id="spadComm6-170" class="spadComm" >
+<form id="formComm6-170" action="javascript:makeRequest('6-170');" >
+<input id="comm6-170" type="text" class="command" style="width: 8em;" value="g := addx 10" />
+</form>
+<span id="commSav6-170" class="commSav" >g := addx 10</span>
+<div id="mathAns6-170" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;addx&nbsp;with&nbsp;type&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;(Integer&nbsp;-&gt;&nbsp;Integer)&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: (Integer <span class="teletype">-></span> Integer)
+</div>
+
+
+
+<p>Try it out.
+</p>
+
+
+
+<div id="spadComm6-171" class="spadComm" >
+<form id="formComm6-171" action="javascript:makeRequest('6-171');" >
+<input id="comm6-171" type="text" class="command" style="width: 2em;" value="g 3" />
+</form>
+<span id="commSav6-171" class="commSav" >g 3</span>
+<div id="mathAns6-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>13</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm6-172" class="spadComm" >
+<form id="formComm6-172" action="javascript:makeRequest('6-172');" >
+<input id="comm6-172" type="text" class="command" style="width: 4em;" value="g(-4)" />
+</form>
+<span id="commSav6-172" class="commSav" >g(-4)</span>
+<div id="mathAns6-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>6</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p><span class="index">function:anonymous:restrictions</span><a name="chapter-6-59"/>
+An anonymous function cannot be recursive: since it does not have a
+name, you cannot even call it within itself!  If you place an
+anonymous function inside a named function, the anonymous function
+must be declared.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.16.xhtml" style="margin-right: 10px;">Previous Section 6.16 Free and Local Variables</a><a href="section-6.18.xhtml" style="margin-right: 10px;">Next Section 6.18 Example: A Database</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.18.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.18.xhtml
new file mode 100644
index 0000000..328d89e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.18.xhtml
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.18</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.17.xhtml" style="margin-right: 10px;">Previous Section 6.17 Anonymous Functions</a><a href="section-6.19.xhtml" style="margin-right: 10px;">Next Section 6.19 Example: A Famous Triangle</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.18">
+<h2 class="sectiontitle">6.18  Example: A Database</h2>
+
+
+<a name="ugUserDatabase" class="label"/>
+
+
+<p>This example shows how you can use Axiom to organize a database of
+lineage data and then query the database for relationships.
+</p>
+
+
+<p>The database is entered as ``assertions'' that are really pieces of a
+function definition.
+</p>
+
+
+
+<div id="spadComm6-173" class="spadComm" >
+<form id="formComm6-173" action="javascript:makeRequest('6-173');" >
+<input id="comm6-173" type="text" class="command" style="width: 35em;" value='children("albert") == ["albertJr","richard","diane"]' />
+</form>
+<span id="commSav6-173" class="commSav" >children("albert") == ["albertJr","richard","diane"]</span>
+<div id="mathAns6-173" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Each piece <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>children</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>=</mo><mo>=</mo><mi>y</mi></mrow></mstyle></math> means ``the children of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> are <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>''.
+</p>
+
+
+
+<div id="spadComm6-174" class="spadComm" >
+<form id="formComm6-174" action="javascript:makeRequest('6-174');" >
+<input id="comm6-174" type="text" class="command" style="width: 34em;" value='children("richard") == ["douglas","daniel","susan"]' />
+</form>
+<span id="commSav6-174" class="commSav" >children("richard") == ["douglas","daniel","susan"]</span>
+<div id="mathAns6-174" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This family tree thus spans four generations.
+</p>
+
+
+
+<div id="spadComm6-175" class="spadComm" >
+<form id="formComm6-175" action="javascript:makeRequest('6-175');" >
+<input id="comm6-175" type="text" class="command" style="width: 29em;" value='children("douglas") == ["dougie","valerie"]' />
+</form>
+<span id="commSav6-175" class="commSav" >children("douglas") == ["dougie","valerie"]</span>
+<div id="mathAns6-175" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Say ``no one else has children.''
+</p>
+
+
+
+<div id="spadComm6-176" class="spadComm" >
+<form id="formComm6-176" action="javascript:makeRequest('6-176');" >
+<input id="comm6-176" type="text" class="command" style="width: 12em;" value="children(x) == []" />
+</form>
+<span id="commSav6-176" class="commSav" >children(x) == []</span>
+<div id="mathAns6-176" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>We need some functions for computing lineage.  Start with <span class="teletype">childOf</span>.
+</p>
+
+
+
+<div id="spadComm6-177" class="spadComm" >
+<form id="formComm6-177" action="javascript:makeRequest('6-177');" >
+<input id="comm6-177" type="text" class="command" style="width: 26em;" value="childOf(x,y) == member?(x,children(y))" />
+</form>
+<span id="commSav6-177" class="commSav" >childOf(x,y) == member?(x,children(y))</span>
+<div id="mathAns6-177" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>To find the <span class="teletype">parentOf</span> someone, you have to scan the database of
+people applying <span class="teletype">children</span>.
+</p>
+
+
+
+<div class="verbatim"><br />
+parentOf(x)&nbsp;==<br />
+&nbsp;&nbsp;for&nbsp;y&nbsp;in&nbsp;people&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;childOf(x,y)&nbsp;then&nbsp;return&nbsp;y)<br />
+&nbsp;&nbsp;"unknown"<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>And a grandparent of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is just a parent of a parent of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-178" class="spadComm" >
+<form id="formComm6-178" action="javascript:makeRequest('6-178');" >
+<input id="comm6-178" type="text" class="command" style="width: 26em;" value="grandParentOf(x) == parentOf parentOf x" />
+</form>
+<span id="commSav6-178" class="commSav" >grandParentOf(x) == parentOf parentOf x</span>
+<div id="mathAns6-178" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The grandchildren of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> are the people <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> such that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is a
+grandparent of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-179" class="spadComm" >
+<form id="formComm6-179" action="javascript:makeRequest('6-179');" >
+<input id="comm6-179" type="text" class="command" style="width: 42em;" value="grandchildren(x) == [y for y in people | grandParentOf(y) = x]" />
+</form>
+<span id="commSav6-179" class="commSav" >grandchildren(x) == [y for y in people | grandParentOf(y) = x]</span>
+<div id="mathAns6-179" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Suppose you want to make a list of all great-grandparents.  Well, a
+great-grandparent is a grandparent of a person who has children.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+greatGrandParents&nbsp;==&nbsp;[x&nbsp;for&nbsp;x&nbsp;in&nbsp;people&nbsp;|<br />
+&nbsp;&nbsp;reduce(_or,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;[not&nbsp;empty?&nbsp;children(y)&nbsp;for&nbsp;y&nbsp;in&nbsp;grandchildren(x)],false)]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Define <span class="teletype">descendants</span> to include the parent as well.
+</p>
+
+
+
+<div class="verbatim"><br />
+descendants(x)&nbsp;==<br />
+&nbsp;&nbsp;kids&nbsp;:=&nbsp;children(x)<br />
+&nbsp;&nbsp;null&nbsp;kids&nbsp;=&gt;&nbsp;[x]<br />
+&nbsp;&nbsp;concat(x,reduce(concat,[descendants(y)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;y&nbsp;in&nbsp;kids],[]))<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Finally, we need a list of people.  Since all people are descendants
+of ``albert'', let's say so.
+</p>
+
+
+
+<div id="spadComm6-180" class="spadComm" >
+<form id="formComm6-180" action="javascript:makeRequest('6-180');" >
+<input id="comm6-180" type="text" class="command" style="width: 20em;" value='people == descendants "albert"' />
+</form>
+<span id="commSav6-180" class="commSav" >people == descendants "albert"</span>
+<div id="mathAns6-180" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>We have used ``<span class="teletype">==</span>'' to define the database and some functions to
+query the database.  But no computation is done until we ask for some
+information.  Then, once and for all, the functions are analyzed and
+compiled to machine code for run-time efficiency.  Notice that no
+types are given anywhere in this example.  They are not needed.
+</p>
+
+
+<p>Who are the grandchildren of ``richard''?
+</p>
+
+
+
+<div id="spadComm6-181" class="spadComm" >
+<form id="formComm6-181" action="javascript:makeRequest('6-181');" >
+<input id="comm6-181" type="text" class="command" style="width: 16em;" value='grandchildren "richard"' />
+</form>
+<span id="commSav6-181" class="commSav" >grandchildren "richard"</span>
+<div id="mathAns6-181" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;function&nbsp;children&nbsp;with&nbsp;type&nbsp;String&nbsp;-&gt;&nbsp;List&nbsp;String&nbsp;<br />
+Compiling&nbsp;function&nbsp;descendants&nbsp;with&nbsp;type&nbsp;String&nbsp;-&gt;&nbsp;List&nbsp;String&nbsp;<br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;people&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;List&nbsp;String&nbsp;<br />
+Compiling&nbsp;function&nbsp;childOf&nbsp;with&nbsp;type&nbsp;(String,String)&nbsp;-&gt;&nbsp;Boolean&nbsp;<br />
+Compiling&nbsp;function&nbsp;parentOf&nbsp;with&nbsp;type&nbsp;String&nbsp;-&gt;&nbsp;String&nbsp;<br />
+Compiling&nbsp;function&nbsp;grandParentOf&nbsp;with&nbsp;type&nbsp;String&nbsp;-&gt;&nbsp;String&nbsp;<br />
+Compiling&nbsp;function&nbsp;grandchildren&nbsp;with&nbsp;type&nbsp;String&nbsp;-&gt;&nbsp;List&nbsp;String&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtext><mrow><mtext mathvariant='monospace'>"dougie"</mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"valerie"</mtext></mrow></mtext><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List String
+</div>
+
+
+
+<p>Who are the great-grandparents?
+</p>
+
+
+
+<div id="spadComm6-182" class="spadComm" >
+<form id="formComm6-182" action="javascript:makeRequest('6-182');" >
+<input id="comm6-182" type="text" class="command" style="width: 12em;" value="greatGrandParents" />
+</form>
+<span id="commSav6-182" class="commSav" >greatGrandParents</span>
+<div id="mathAns6-182" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;greatGrandParents&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;<br />
+&nbsp;&nbsp;&nbsp;type&nbsp;List&nbsp;String&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtext><mrow><mtext mathvariant='monospace'>"albert"</mtext></mrow></mtext><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List String
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.17.xhtml" style="margin-right: 10px;">Previous Section 6.17 Anonymous Functions</a><a href="section-6.19.xhtml" style="margin-right: 10px;">Next Section 6.19 Example: A Famous Triangle</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.19.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.19.xhtml
new file mode 100644
index 0000000..c8a765b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.19.xhtml
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.19</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.18.xhtml" style="margin-right: 10px;">Previous Section 6.18 Example: A Database</a><a href="section-6.20.xhtml" style="margin-right: 10px;">Next Section 6.20 Example: Testing for Palindromes</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.19">
+<h2 class="sectiontitle">6.19  Example: A Famous Triangle</h2>
+
+
+<a name="ugUserTriangle" class="label"/>
+
+
+<p>In this example we write some functions that display Pascal's
+triangle.  <span class="index">Pascal's triangle</span><a name="chapter-6-60"/> It demonstrates the use of
+piece-wise definitions and some output operations you probably haven't
+seen before.
+</p>
+
+
+<p>To make these output operations available, we have to <span class="italic">expose</span> the
+domain <span class="teletype">OutputForm</span>.  <span class="index">OutputForm</span><a name="chapter-6-61"/> See 
+<a href="section-2.11.xhtml#ugTypesExpose" class="ref" >ugTypesExpose</a> 
+for more information about exposing domains and packages.
+</p>
+
+
+
+<div id="spadComm6-183" class="spadComm" >
+<form id="formComm6-183" action="javascript:makeRequest('6-183');" >
+<input id="comm6-183" type="text" class="command" style="width: 26em;" value=")set expose add constructor OutputForm" />
+</form>
+<span id="commSav6-183" class="commSav" >)set expose add constructor OutputForm</span>
+<div id="mathAns6-183" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;OutputForm&nbsp;is&nbsp;now&nbsp;explicitly&nbsp;exposed&nbsp;in&nbsp;frame&nbsp;G82322&nbsp;<br />
+</div>
+
+
+
+<p>Define the values along the first row and any column <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-184" class="spadComm" >
+<form id="formComm6-184" action="javascript:makeRequest('6-184');" >
+<input id="comm6-184" type="text" class="command" style="width: 11em;" value="pascal(1,i) == 1" />
+</form>
+<span id="commSav6-184" class="commSav" >pascal(1,i) == 1</span>
+<div id="mathAns6-184" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Define the values for when the row and column index <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> are equal.
+Repeating the argument name indicates that the two index values are equal.
+</p>
+
+
+
+<div id="spadComm6-185" class="spadComm" >
+<form id="formComm6-185" action="javascript:makeRequest('6-185');" >
+<input id="comm6-185" type="text" class="command" style="width: 11em;" value="pascal(n,n) == 1" />
+</form>
+<span id="commSav6-185" class="commSav" >pascal(n,n) == 1</span>
+<div id="mathAns6-185" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+pascal(i,j&nbsp;|&nbsp;1&nbsp;&lt;&nbsp;i&nbsp;and&nbsp;i&nbsp;&lt;&nbsp;j)&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;pascal(i-1,j-1)+pascal(i,j-1)<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Now that we have defined the coefficients in Pascal's triangle, let's
+write a couple of one-liners to display it. 
+</p>
+
+
+<p>First, define a function that gives the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th row.
+</p>
+
+
+
+<div id="spadComm6-186" class="spadComm" >
+<form id="formComm6-186" action="javascript:makeRequest('6-186');" >
+<input id="comm6-186" type="text" class="command" style="width: 29em;" value="pascalRow(n) == [pascal(i,n) for i in 1..n]" />
+</form>
+<span id="commSav6-186" class="commSav" >pascalRow(n) == [pascal(i,n) for i in 1..n]</span>
+<div id="mathAns6-186" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Next, we write the function <span style="font-weight: bold;"> displayRow</span> to display the row,
+separating entries by blanks and centering.
+</p>
+
+
+
+<div id="spadComm6-187" class="spadComm" >
+<form id="formComm6-187" action="javascript:makeRequest('6-187');" >
+<input id="comm6-187" type="text" class="command" style="width: 38em;" value="displayRow(n) == output center blankSeparate pascalRow(n)" />
+</form>
+<span id="commSav6-187" class="commSav" >displayRow(n) == output center blankSeparate pascalRow(n)</span>
+<div id="mathAns6-187" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Here we have used three output operations.  Operation
+<span class="spadfunFrom" >output</span><span class="index">output</span><a name="chapter-6-62"/><span class="index">OutputForm</span><a name="chapter-6-63"/> displays the printable form of
+objects on the screen, <span class="spadfunFrom" >center</span><span class="index">center</span><a name="chapter-6-64"/><span class="index">OutputForm</span><a name="chapter-6-65"/> centers a
+printable form in the width of the screen, and
+<span class="spadfunFrom" >blankSeparate</span><span class="index">blankSeparate</span><a name="chapter-6-66"/><span class="index">OutputForm</span><a name="chapter-6-67"/> takes a list of nprintable
+forms and inserts a blank between successive elements.
+</p>
+
+
+<p>Look at the result.
+</p>
+
+
+
+<div id="spadComm6-188" class="spadComm" >
+<form id="formComm6-188" action="javascript:makeRequest('6-188');" >
+<input id="comm6-188" type="text" class="command" style="width: 22em;" value="for i in 1..7 repeat displayRow i" />
+</form>
+<span id="commSav6-188" class="commSav" >for i in 1..7 repeat displayRow i</span>
+<div id="mathAns6-188" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;pascal&nbsp;with&nbsp;type&nbsp;(Integer,Integer)&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PositiveInteger&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;pascalRow&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;List&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PositiveInteger&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;displayRow&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;Void&nbsp;<br />
+<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;2&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;3&nbsp;3&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;4&nbsp;6&nbsp;4&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;5&nbsp;10&nbsp;10&nbsp;5&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;6&nbsp;15&nbsp;20&nbsp;15&nbsp;6&nbsp;1<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Being purists, we find this less than satisfactory.  Traditionally,
+elements of Pascal's triangle are centered between the left and right
+elements on the line above.
+</p>
+
+
+<p>To fix this misalignment, we go back and redefine <span style="font-weight: bold;"> pascalRow</span> to
+right adjust the entries within the triangle within a width of four
+characters.
+</p>
+
+
+
+
+<div id="spadComm6-189" class="spadComm" >
+<form id="formComm6-189" action="javascript:makeRequest('6-189');" >
+<input id="comm6-189" type="text" class="command" style="width: 35em;" value="pascalRow(n) == [right(pascal(i,n),4) for i in 1..n]" />
+</form>
+<span id="commSav6-189" class="commSav" >pascalRow(n) == [right(pascal(i,n),4) for i in 1..n]</span>
+<div id="mathAns6-189" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;pascalRow&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;displayRow&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;pascalRow&nbsp;<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Finally let's look at our purely reformatted triangle.
+</p>
+
+
+
+<div id="spadComm6-190" class="spadComm" >
+<form id="formComm6-190" action="javascript:makeRequest('6-190');" >
+<input id="comm6-190" type="text" class="command" style="width: 22em;" value="for i in 1..7 repeat displayRow i" />
+</form>
+<span id="commSav6-190" class="commSav" >for i in 1..7 repeat displayRow i</span>
+<div id="mathAns6-190" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;pascalRow&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;List&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputForm&nbsp;<br />
+<br />
++++&nbsp;|*1;pascalRow;1;G82322|&nbsp;redefined<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;displayRow&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;Void&nbsp;<br />
+<br />
++++&nbsp;|*1;displayRow;1;G82322|&nbsp;redefined<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;15&nbsp;&nbsp;&nbsp;20&nbsp;&nbsp;&nbsp;15&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Unexpose <span class="teletype">OutputForm</span> so we don't get unexpected results later.
+</p>
+
+
+
+<div id="spadComm6-191" class="spadComm" >
+<form id="formComm6-191" action="javascript:makeRequest('6-191');" >
+<input id="comm6-191" type="text" class="command" style="width: 26em;" value=")set expose drop constructor OutputForm" />
+</form>
+<span id="commSav6-191" class="commSav" >)set expose drop constructor OutputForm</span>
+<div id="mathAns6-191" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;OutputForm&nbsp;is&nbsp;now&nbsp;explicitly&nbsp;hidden&nbsp;in&nbsp;frame&nbsp;G82322&nbsp;<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.18.xhtml" style="margin-right: 10px;">Previous Section 6.18 Example: A Database</a><a href="section-6.20.xhtml" style="margin-right: 10px;">Next Section 6.20 Example: Testing for Palindromes</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.2.xhtml
new file mode 100644
index 0000000..eb0c932
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.2.xhtml
@@ -0,0 +1,523 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.1.xhtml" style="margin-right: 10px;">Previous Section 6.1 Functions vs. Macros</a><a href="section-6.3.xhtml" style="margin-right: 10px;">Next Section 6.3 Introduction to Functions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.2">
+<h2 class="sectiontitle">6.2  Macros</h2>
+
+
+<a name="ugUserMacros" class="label"/>
+
+
+<p>A <span class="italic">macro</span> provides general textual substitution of <span class="index">macro</span><a name="chapter-6-7"/>
+an Axiom expression for a name.  You can think of a macro as being a
+generalized abbreviation.  You can only have one macro in your
+workspace with a given name, no matter how many arguments it has.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The two general forms for macros are
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">macro</span> <span class="italic">name</span> <span class="teletype">==</span> <span class="italic">body</span> <br/>
+<span class="teletype">macro</span> <span class="italic">name(arg1,...)</span> <span class="teletype">==</span> <span class="italic">body</span>
+</p>
+
+
+
+</div>
+
+
+<p>where the body of the macro can be any Axiom expression.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>For example, suppose you decided that you like to use <span class="teletype">df</span> for 
+<span class="teletype">D</span>.  You define the macro <span class="teletype">df</span> like this.
+</p>
+
+
+
+<div id="spadComm6-3" class="spadComm" >
+<form id="formComm6-3" action="javascript:makeRequest('6-3');" >
+<input id="comm6-3" type="text" class="command" style="width: 9em;" value="macro df == D" />
+</form>
+<span id="commSav6-3" class="commSav" >macro df == D</span>
+<div id="mathAns6-3" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Whenever you type <span class="teletype">df</span>, the system expands it to <span class="teletype">D</span>.
+</p>
+
+
+
+<div id="spadComm6-4" class="spadComm" >
+<form id="formComm6-4" action="javascript:makeRequest('6-4');" >
+<input id="comm6-4" type="text" class="command" style="width: 12em;" value="df(x**2 + x + 1,x)" />
+</form>
+<span id="commSav6-4" class="commSav" >df(x**2 + x + 1,x)</span>
+<div id="mathAns6-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Macros can be parameterized and so can be used for many different
+kinds of objects.
+</p>
+
+
+
+<div id="spadComm6-5" class="spadComm" >
+<form id="formComm6-5" action="javascript:makeRequest('6-5');" >
+<input id="comm6-5" type="text" class="command" style="width: 16em;" value="macro ff(x) == x**2 + 1" />
+</form>
+<span id="commSav6-5" class="commSav" >macro ff(x) == x**2 + 1</span>
+<div id="mathAns6-5" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Apply it to a number, a symbol, or an expression.
+</p>
+
+
+
+<div id="spadComm6-6" class="spadComm" >
+<form id="formComm6-6" action="javascript:makeRequest('6-6');" >
+<input id="comm6-6" type="text" class="command" style="width: 3em;" value="ff z" />
+</form>
+<span id="commSav6-6" class="commSav" >ff z</span>
+<div id="mathAns6-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Macros can also be nested, but you get an error message if you
+run out of space because of an infinite nesting loop.
+</p>
+
+
+
+<div id="spadComm6-7" class="spadComm" >
+<form id="formComm6-7" action="javascript:makeRequest('6-7');" >
+<input id="comm6-7" type="text" class="command" style="width: 19em;" value="macro gg(x) == ff(2*x - 2/3)" />
+</form>
+<span id="commSav6-7" class="commSav" >macro gg(x) == ff(2*x - 2/3)</span>
+<div id="mathAns6-7" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This new macro is fine as it does not produce a loop.
+</p>
+
+
+
+<div id="spadComm6-8" class="spadComm" >
+<form id="formComm6-8" action="javascript:makeRequest('6-8');" >
+<input id="comm6-8" type="text" class="command" style="width: 5em;" value="gg(1/w)" />
+</form>
+<span id="commSav6-8" class="commSav" >gg(1/w)</span>
+<div id="mathAns6-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>13</mn><mo></mo><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>24</mn><mo></mo><mi>w</mi></mrow><mo>+</mo><mn>36</mn></mrow><mrow><mn>9</mn><mo></mo><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+<p>This, however, loops since <span class="teletype">gg</span> is defined in terms of <span class="teletype">ff</span>.
+</p>
+
+
+
+<div id="spadComm6-9" class="spadComm" >
+<form id="formComm6-9" action="javascript:makeRequest('6-9');" >
+<input id="comm6-9" type="text" class="command" style="width: 14em;" value="macro ff(x) == gg(-x)" />
+</form>
+<span id="commSav6-9" class="commSav" >macro ff(x) == gg(-x)</span>
+<div id="mathAns6-9" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The body of a macro can be a block.
+</p>
+
+
+
+<div id="spadComm6-10" class="spadComm" >
+<form id="formComm6-10" action="javascript:makeRequest('6-10');" >
+<input id="comm6-10" type="text" class="command" style="width: 51em;" value="macro next == (past := present; present := future; future := past + present)" />
+</form>
+<span id="commSav6-10" class="commSav" >macro next == (past := present; present := future; future := past + present)</span>
+<div id="mathAns6-10" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Before entering <span class="teletype">next</span>, we need values for <span class="teletype">present</span> and <span class="teletype">future</span>.
+</p>
+
+
+
+<div id="spadComm6-11" class="spadComm" >
+<form id="formComm6-11" action="javascript:makeRequest('6-11');" >
+<input id="comm6-11" type="text" class="command" style="width: 15em;" value="present : Integer := 0" />
+</form>
+<span id="commSav6-11" class="commSav" >present : Integer := 0</span>
+<div id="mathAns6-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+
+
+<div id="spadComm6-12" class="spadComm" >
+<form id="formComm6-12" action="javascript:makeRequest('6-12');" >
+<input id="comm6-12" type="text" class="command" style="width: 14em;" value="future : Integer := 1" />
+</form>
+<span id="commSav6-12" class="commSav" >future : Integer := 1</span>
+<div id="mathAns6-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>Repeatedly evaluating <span class="teletype">next</span> produces the next Fibonacci number.
+</p>
+
+
+
+<div id="spadComm6-13" class="spadComm" >
+<form id="formComm6-13" action="javascript:makeRequest('6-13');" >
+<input id="comm6-13" type="text" class="command" style="width: 3em;" value="next" />
+</form>
+<span id="commSav6-13" class="commSav" >next</span>
+<div id="mathAns6-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>And the next one.
+</p>
+
+
+
+<div id="spadComm6-14" class="spadComm" >
+<form id="formComm6-14" action="javascript:makeRequest('6-14');" >
+<input id="comm6-14" type="text" class="command" style="width: 3em;" value="next" />
+</form>
+<span id="commSav6-14" class="commSav" >next</span>
+<div id="mathAns6-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>Here is the infinite stream of the rest of the Fibonacci numbers.
+</p>
+
+
+
+<div id="spadComm6-15" class="spadComm" >
+<form id="formComm6-15" action="javascript:makeRequest('6-15');" >
+<input id="comm6-15" type="text" class="command" style="width: 13em;" value="[next for i in 1..]" />
+</form>
+<span id="commSav6-15" class="commSav" >[next for i in 1..]</span>
+<div id="mathAns6-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mn>55</mn><mo>,</mo><mn>89</mn><mo>,</mo><mn>144</mn><mo>,</mo><mn>233</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Bundle all the above lines into a single macro.
+</p>
+
+
+
+<div class="verbatim"><br />
+macro&nbsp;fibStream&nbsp;==<br />
+&nbsp;&nbsp;present&nbsp;:&nbsp;Integer&nbsp;:=&nbsp;1<br />
+&nbsp;&nbsp;future&nbsp;:&nbsp;Integer&nbsp;:=&nbsp;1<br />
+&nbsp;&nbsp;[next&nbsp;for&nbsp;i&nbsp;in&nbsp;1..]&nbsp;where<br />
+&nbsp;&nbsp;&nbsp;&nbsp;macro&nbsp;next&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;past&nbsp;:=&nbsp;present<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;present&nbsp;:=&nbsp;future<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;future&nbsp;:=&nbsp;past&nbsp;+&nbsp;present<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >concat</span><span class="index">concat</span><a name="chapter-6-8"/><span class="index">Stream</span><a name="chapter-6-9"/> to start with the first two
+<span class="index">Fibonacci numbers</span><a name="chapter-6-10"/> Fibonacci numbers.
+</p>
+
+
+
+<div id="spadComm6-16" class="spadComm" >
+<form id="formComm6-16" action="javascript:makeRequest('6-16');" >
+<input id="comm6-16" type="text" class="command" style="width: 16em;" value="concat([0,1],fibStream)" />
+</form>
+<span id="commSav6-16" class="commSav" >concat([0,1],fibStream)</span>
+<div id="mathAns6-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mn>55</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>The library operation <span style="font-weight: bold;"> fibonacci</span> is an easier way to compute
+these numbers.
+</p>
+
+
+
+
+<div id="spadComm6-17" class="spadComm" >
+<form id="formComm6-17" action="javascript:makeRequest('6-17');" >
+<input id="comm6-17" type="text" class="command" style="width: 18em;" value="[fibonacci i for i in 1..]" />
+</form>
+<span id="commSav6-17" class="commSav" >[fibonacci i for i in 1..]</span>
+<div id="mathAns6-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mn>55</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.1.xhtml" style="margin-right: 10px;">Previous Section 6.1 Functions vs. Macros</a><a href="section-6.3.xhtml" style="margin-right: 10px;">Next Section 6.3 Introduction to Functions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.20.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.20.xhtml
new file mode 100644
index 0000000..170eba2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.20.xhtml
@@ -0,0 +1,358 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.20</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.19.xhtml" style="margin-right: 10px;">Previous Section 6.19 Example: A Famous Triangle</a><a href="section-6.21.xhtml" style="margin-right: 10px;">Next Section 6.21 Rules and Pattern Matching</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.20">
+<h2 class="sectiontitle">6.20  Example: Testing for Palindromes</h2>
+
+
+<a name="ugUserPal" class="label"/>
+
+
+<p>In this section we define a function <span style="font-weight: bold;"> pal?</span> that tests whether its
+<span class="index">palindrome</span><a name="chapter-6-68"/> argument is a <span class="italic">palindrome</span>, that is, something
+that reads the same backwards and forwards.  For example, the string
+``Madam I'm Adam'' is a palindrome (excluding blanks and punctuation)
+and so is the number <math xmlns="&mathml;" mathsize="big"><mstyle><mn>123454321</mn></mstyle></math>.  The definition works for any
+datatype that has <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> components that are accessed by the indices
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>&#x2026;</mo><mi>n</mi></mrow></mstyle></math>.
+</p>
+
+
+<p>Here is the definition for <span style="font-weight: bold;"> pal?</span>.  It is simply a call to an
+auxiliary function called <span style="font-weight: bold;"> palAux?</span>.  We are following the
+convention of ending a function's name with <span class="teletype">?</span> if the function
+returns a <span class="teletype">Boolean</span> value.
+</p>
+
+
+
+<div id="spadComm6-192" class="spadComm" >
+<form id="formComm6-192" action="javascript:makeRequest('6-192');" >
+<input id="comm6-192" type="text" class="command" style="width: 18em;" value="pal? s ==  palAux?(s,1,#s)" />
+</form>
+<span id="commSav6-192" class="commSav" >pal? s ==  palAux?(s,1,#s)</span>
+<div id="mathAns6-192" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Here is <span style="font-weight: bold;"> palAux?</span>.  It works by comparing elements that are
+equidistant from the start and end of the object.
+</p>
+
+
+
+<div class="verbatim"><br />
+palAux?(s,i,j)&nbsp;==<br />
+&nbsp;&nbsp;j&nbsp;&gt;&nbsp;i&nbsp;=&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;(s.i&nbsp;=&nbsp;s.j)&nbsp;and&nbsp;palAux?(s,i+1,i-1)<br />
+&nbsp;&nbsp;true<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Try <span style="font-weight: bold;"> pal?</span> on some examples.  First, a string.
+</p>
+
+
+
+<div id="spadComm6-193" class="spadComm" >
+<form id="formComm6-193" action="javascript:makeRequest('6-193');" >
+<input id="comm6-193" type="text" class="command" style="width: 9em;" value='pal? "Oxford"' />
+</form>
+<span id="commSav6-193" class="commSav" >pal? "Oxford"</span>
+<div id="mathAns6-193" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;palAux?&nbsp;with&nbsp;type&nbsp;(String,Integer,Integer)&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;pal?&nbsp;with&nbsp;type&nbsp;String&nbsp;-&gt;&nbsp;Boolean&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>A list of polynomials.
+</p>
+
+
+
+<div id="spadComm6-194" class="spadComm" >
+<form id="formComm6-194" action="javascript:makeRequest('6-194');" >
+<input id="comm6-194" type="text" class="command" style="width: 16em;" value="pal? [4,a,x-1,0,x-1,a,4]" />
+</form>
+<span id="commSav6-194" class="commSav" >pal? [4,a,x-1,0,x-1,a,4]</span>
+<div id="mathAns6-194" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;palAux?&nbsp;with&nbsp;type&nbsp;(List&nbsp;Polynomial&nbsp;Integer,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer,Integer)&nbsp;-&gt;&nbsp;Boolean&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;pal?&nbsp;with&nbsp;type&nbsp;List&nbsp;Polynomial&nbsp;Integer&nbsp;-&gt;&nbsp;Boolean<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>A list of integers from the example in the last section. 
+</p>
+
+
+
+<div id="spadComm6-195" class="spadComm" >
+<form id="formComm6-195" action="javascript:makeRequest('6-195');" >
+<input id="comm6-195" type="text" class="command" style="width: 16em;" value="pal? [1,6,15,20,15,6,1]" />
+</form>
+<span id="commSav6-195" class="commSav" >pal? [1,6,15,20,15,6,1]</span>
+<div id="mathAns6-195" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;palAux?&nbsp;with&nbsp;type&nbsp;(List&nbsp;PositiveInteger,Integer,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer)&nbsp;-&gt;&nbsp;Boolean&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;pal?&nbsp;with&nbsp;type&nbsp;List&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;Boolean&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>To use <span style="font-weight: bold;"> pal?</span> on an integer, first convert it to a string.
+</p>
+
+
+
+<div id="spadComm6-196" class="spadComm" >
+<form id="formComm6-196" action="javascript:makeRequest('6-196');" >
+<input id="comm6-196" type="text" class="command" style="width: 12em;" value="pal?(1441::String)" />
+</form>
+<span id="commSav6-196" class="commSav" >pal?(1441::String)</span>
+<div id="mathAns6-196" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Compute an infinite stream of decimal numbers, each of which is an
+obvious palindrome.
+</p>
+
+
+
+<div id="spadComm6-197" class="spadComm" >
+<form id="formComm6-197" action="javascript:makeRequest('6-197');" >
+<input id="comm6-197" type="text" class="command" style="width: 36em;" value="ones := [reduce(+,[10**j for j in 0..i]) for i in 1..]" />
+</form>
+<span id="commSav6-197" class="commSav" >ones := [reduce(+,[10**j for j in 0..i]) for i in 1..]</span>
+<div id="mathAns6-197" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mn>11</mn><mo>,</mo><mn>111</mn><mo>,</mo><mn>1111</mn><mo>,</mo><mn>11111</mn><mo>,</mo><mn>111111</mn><mo>,</mo><mn>1111111</mn><mo>,</mo><mo>.</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>.</mo><mn>11111111</mn><mo>,</mo><mn>111111111</mn><mo>,</mo><mn>1111111111</mn><mo>,</mo><mn>11111111111</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm6-198" class="spadComm" >
+<form id="formComm6-198" action="javascript:makeRequest('6-198');" >
+<input id="comm6-198" type="text" class="command" style="width: 16em;" value=")set streams calculate 9" />
+</form>
+<span id="commSav6-198" class="commSav" >)set streams calculate 9</span>
+<div id="mathAns6-198" ></div>
+</div>
+
+
+
+<p>How about their squares?
+</p>
+
+
+
+<div id="spadComm6-199" class="spadComm" >
+<form id="formComm6-199" action="javascript:makeRequest('6-199');" >
+<input id="comm6-199" type="text" class="command" style="width: 21em;" value="squares := [x**2 for x in ones]" />
+</form>
+<span id="commSav6-199" class="commSav" >squares := [x**2 for x in ones]</span>
+<div id="mathAns6-199" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mn>121</mn><mo>,</mo><mn>12321</mn><mo>,</mo><mn>1234321</mn><mo>,</mo><mn>123454321</mn><mo>,</mo><mn>12345654321</mn><mo>,</mo><mn>1234567654321</mn><mo>,</mo><mo>.</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mn>123456787654321</mn><mo>,</mo><mn>12345678987654321</mn><mo>,</mo><mn>1234567900987654321</mn><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>.</mo><mn>123456790120987654321</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream PositiveInteger
+</div>
+
+
+
+<p>Well, let's test them all.
+</p>
+
+
+
+<div id="spadComm6-200" class="spadComm" >
+<form id="formComm6-200" action="javascript:makeRequest('6-200');" >
+<input id="comm6-200" type="text" class="command" style="width: 23em;" value="[pal?(x::String) for x in squares]" />
+</form>
+<span id="commSav6-200" class="commSav" >[pal?(x::String) for x in squares]</span>
+<div id="mathAns6-200" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Boolean
+</div>
+
+
+
+
+
+<div id="spadComm6-201" class="spadComm" >
+<form id="formComm6-201" action="javascript:makeRequest('6-201');" >
+<input id="comm6-201" type="text" class="command" style="width: 16em;" value=")set streams calculate 7" />
+</form>
+<span id="commSav6-201" class="commSav" >)set streams calculate 7</span>
+<div id="mathAns6-201" ></div>
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.19.xhtml" style="margin-right: 10px;">Previous Section 6.19 Example: A Famous Triangle</a><a href="section-6.21.xhtml" style="margin-right: 10px;">Next Section 6.21 Rules and Pattern Matching</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.21.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.21.xhtml
new file mode 100644
index 0000000..5443f74
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.21.xhtml
@@ -0,0 +1,1071 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.21</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.20.xhtml" style="margin-right: 10px;">Previous Section 6.20 Example: Testing for Palindromes</a><a href="section-7.0.xhtml" style="margin-right: 10px;">Next Section 7.0 Graphics</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.21">
+<h2 class="sectiontitle">6.21  Rules and Pattern Matching</h2>
+
+
+<a name="ugUserRules" class="label"/>
+
+
+<p>A common mathematical formula is 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>+</mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>=</mo><mrow><mrow><mo>log</mo><mo>(</mo><mrow><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>)</mo></mrow></mrow></mrow><mspace width="1em"/><mo>&#x2200;</mo><mi>x</mi><mspace width="0.5em"/><mtext>and</mtext><mspace width="0.5em"/><mi>y</mi></mstyle></math>
+
+The presence of ``<math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2200;</mo></mstyle></math>'' indicates that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> can stand for
+arbitrary mathematical expressions in the above formula.  You can use
+such mathematical formulas in Axiom to specify ``rewrite rules''.
+Rewrite rules are objects in Axiom that can be assigned to variables
+for later use, often for the purpose of simplification.  Rewrite rules
+look like ordinary function definitions except that they are preceded
+by the reserved word <math xmlns="&mathml;" mathsize="big"><mstyle><mi>rule</mi></mstyle></math>.  <span class="index">rule</span><a name="chapter-6-69"/> For example, a rewrite rule
+for the above formula is:
+</p>
+
+
+
+<div class="verbatim"><br />
+rule&nbsp;log(x)&nbsp;+&nbsp;log(y)&nbsp;==&nbsp;log(x&nbsp;*&nbsp;y)<br />
+</div>
+
+
+
+<p>Like function definitions, no action is taken when a rewrite rule is
+issued.  Think of rewrite rules as functions that take one argument.
+When a rewrite rule <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>A</mi><mo>=</mo><mi>B</mi></mrow></mstyle></math> is applied to an argument <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>, its meaning
+is: ``rewrite every subexpression of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> that <span class="italic">matches</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>A</mi></mstyle></math> by
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>B</mi><mo>.</mo></mrow></mstyle></math>'' The left-hand side of a rewrite rule is called a <span class="italic">pattern</span>;
+its right-side side is called its <span class="italic">substitution</span>.
+</p>
+
+
+<p>Create a rewrite rule named <span style="font-weight: bold;"> logrule</span>.  The generated symbol
+beginning with a ``<span class="teletype">%</span>'' is a place-holder for any other terms that
+might occur in the sum.
+</p>
+
+
+
+<div id="spadComm6-202" class="spadComm" >
+<form id="formComm6-202" action="javascript:makeRequest('6-202');" >
+<input id="comm6-202" type="text" class="command" style="width: 30em;" value="logrule := rule log(x) + log(y) == log(x * y)" />
+</form>
+<span id="commSav6-202" class="commSav" >logrule := rule log(x) + log(y) == log(x * y)</span>
+<div id="mathAns6-202" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>+</mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mo>%</mo><mi>C</mi></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><mrow><mo>log</mo><mo>(</mo><mrow><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>)</mo></mrow><mo>+</mo><mo>%</mo><mi>C</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RewriteRule(Integer,Integer,Expression Integer)
+</div>
+
+
+
+<p>Create an expression with logarithms.
+</p>
+
+
+
+<div id="spadComm6-203" class="spadComm" >
+<form id="formComm6-203" action="javascript:makeRequest('6-203');" >
+<input id="comm6-203" type="text" class="command" style="width: 15em;" value="f := log sin x + log x" />
+</form>
+<span id="commSav6-203" class="commSav" >f := log sin x + log x</span>
+<div id="mathAns6-203" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>log</mo><mo>(</mo><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Apply <span style="font-weight: bold;"> logrule</span> to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-204" class="spadComm" >
+<form id="formComm6-204" action="javascript:makeRequest('6-204');" >
+<input id="comm6-204" type="text" class="command" style="width: 6em;" value="logrule f" />
+</form>
+<span id="commSav6-204" class="commSav" >logrule f</span>
+<div id="mathAns6-204" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>log</mo><mo>(</mo><mrow><mi>x</mi><mo></mo><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>The meaning of our example rewrite rule is: ``for all expressions <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>
+and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>, rewrite <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>log</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>+</mo><mi>log</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> by <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>log</mi><mo>(</mo><mi>x</mi><mo>*</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>.''  Patterns
+generally have both operation names (here, <span style="font-weight: bold;"> log</span> and ``<span class="teletype">+</span>'') and
+variables (here, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>).  By default, every operation name
+stands for itself.  Thus <span style="font-weight: bold;"> log</span> matches only ``<math xmlns="&mathml;" mathsize="big"><mstyle><mi>log</mi></mstyle></math>'' and not any
+other operation such as <span style="font-weight: bold;"> sin</span>.  On the other hand, variables do
+not stand for themselves.  Rather, a variable denotes a <span class="italic">pattern
+variable</span> that is free to match any expression whatsoever.
+<span class="index">pattern:variables</span><a name="chapter-6-70"/>
+</p>
+
+
+<p>When a rewrite rule is applied, a process called 
+<span class="italic">pattern matching</span> goes to work by systematically scanning
+<span class="index">pattern:matching</span><a name="chapter-6-71"/> the subexpressions of the argument.  When a
+subexpression is found that ``matches'' the pattern, the subexpression
+is replaced by the right-hand side of the rule.  The details of what
+happens will be covered later.
+</p>
+
+
+<p>The customary Axiom notation for patterns is actually a shorthand for
+a longer, more general notation.  Pattern variables can be made
+explicit by using a percent ``<span class="teletype">%</span>'' as the first character of the
+variable name.  To say that a name stands for itself, you can prefix
+that name with a quote operator ``<span class="teletype">'</span>''.  Although the current Axiom
+parser does not let you quote an operation name, this more general
+notation gives you an alternate way of giving the same rewrite rule:
+</p>
+
+
+
+<div class="verbatim"><br />
+rule&nbsp;log(%x)&nbsp;+&nbsp;log(%y)&nbsp;==&nbsp;log(x&nbsp;*&nbsp;y)<br />
+</div>
+
+
+
+<p>This longer notation gives you patterns that the standard notation
+won't handle.  For example, the rule
+</p>
+
+
+
+<div class="verbatim"><br />
+rule&nbsp;%f(c&nbsp;*&nbsp;'x)&nbsp;==&nbsp;&nbsp;c*%f(x)<br />
+</div>
+
+
+<p>means ``for all <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>c</mi></mstyle></math>, replace <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> by <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>c</mi><mo>*</mo><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> when <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> is
+the product of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>c</mi></mstyle></math> and the explicit variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.''
+</p>
+
+
+<p>Thus the pattern can have several adornments on the names that appear there.
+Normally, all these adornments are dropped in the substitution on the
+right-hand side.
+</p>
+
+
+<p>To summarize:
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>To enter a single rule in Axiom, use the following syntax: <span class="index">rule</span><a name="chapter-6-72"/>
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">rule <span class="italic">leftHandSide</span> == <span class="italic">rightHandSide</span></span>
+</p>
+
+
+
+</div>
+
+
+
+<p>The <span class="italic">leftHandSide</span> is a pattern to be matched and the <span class="italic">
+rightHandSide</span> is its substitution.  The rule is an object of type
+<span class="teletype">RewriteRule</span> that can be assigned to a variable and applied to
+expressions to transform them.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>Rewrite rules can be collected
+into rulesets so that a set of rules can be applied at once.
+Here is another simplification rule for logarithms.
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>y</mi><mo>&InvisibleTimes;</mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>=</mo><mrow><mrow><mo>log</mo><mo>(</mo><mrow><msup><mi>x</mi><mi>y</mi></msup></mrow><mo>)</mo></mrow></mrow></mrow><mspace width="1em"/><mo>&#x2200;</mo><mi>x</mi><mspace width="0.5em"/><mtext>and</mtext><mspace width="0.5em"/><mi>y</mi></mstyle></math>
+
+If instead of giving a single rule following the reserved word <math xmlns="&mathml;" mathsize="big"><mstyle><mi>rule</mi></mstyle></math>
+you give a ``pile'' of rules, you create what is called a <span class="italic">
+ruleset.</span>  <span class="index">ruleset</span><a name="chapter-6-73"/> Like rules, rulesets are objects in Axiom
+and can be assigned to variables.  You will find it useful to group
+commonly used rules into input files, and read them in as needed.
+</p>
+
+
+<p>Create a ruleset named <math xmlns="&mathml;" mathsize="big"><mstyle><mi>logrules</mi></mstyle></math>.
+</p>
+
+
+
+<div class="verbatim"><br />
+logrules&nbsp;:=&nbsp;rule<br />
+&nbsp;&nbsp;log(x)&nbsp;+&nbsp;log(y)&nbsp;==&nbsp;log(x&nbsp;*&nbsp;y)<br />
+&nbsp;&nbsp;y&nbsp;*&nbsp;log&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;log(x&nbsp;**&nbsp;y)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mrow><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>+</mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mo>%</mo><mi>B</mi></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><mrow><mo>log</mo><mo>(</mo><mrow><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>)</mo></mrow><mo>+</mo><mo>%</mo><mi>B</mi></mrow></mrow><mo>,</mo><mrow><mrow><mi>y</mi><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><mo>log</mo><mo>(</mo><mrow><msup><mi>x</mi><mi>y</mi></msup></mrow><mo>)</mo></mrow></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Ruleset(Integer,Integer,Expression Integer)
+</div>
+
+
+
+<p>Again, create an expression <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> containing logarithms.
+</p>
+
+
+
+<div id="spadComm6-205" class="spadComm" >
+<form id="formComm6-205" action="javascript:makeRequest('6-205');" >
+<input id="comm6-205" type="text" class="command" style="width: 21em;" value="f := a * log(sin x) - 2 * log x" />
+</form>
+<span id="commSav6-205" class="commSav" >f := a * log(sin x) - 2 * log x</span>
+<div id="mathAns6-205" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>a</mi><mo></mo><mrow><mo>log</mo><mo>(</mo><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Apply the ruleset <span style="font-weight: bold;"> logrules</span> to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-206" class="spadComm" >
+<form id="formComm6-206" action="javascript:makeRequest('6-206');" >
+<input id="comm6-206" type="text" class="command" style="width: 7em;" value="logrules f" />
+</form>
+<span id="commSav6-206" class="commSav" >logrules f</span>
+<div id="mathAns6-206" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mi>a</mi></msup></mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+<p>We have allowed pattern variables to match arbitrary expressions in
+the above examples.  Often you want a variable only to match
+expressions satisfying some predicate.  For example, we may want to
+apply the transformation 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>y</mi><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo><mo>=</mo><mo>log</mo><mo>(</mo><msup><mi>x</mi><mi>y</mi></msup><mo>)</mo></mrow></mstyle></math> 
+only when <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> is an integer.
+</p>
+
+
+<p>The way to restrict a pattern variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> by a predicate <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>
+<span class="index">pattern:variable:predicate</span><a name="chapter-6-74"/> is by using a vertical bar ``<span class="teletype">|</span>'',
+which means ``such that,'' in <span class="index">such that</span><a name="chapter-6-75"/> much the same way it
+is used in function definitions.  <span class="index">predicate:on a pattern
+variable</span><a name="chapter-6-76"/> You do this only once, but at the earliest (meaning deepest
+and leftmost) part of the pattern.
+</p>
+
+
+<p>This restricts the logarithmic rule to create integer exponents only.
+</p>
+
+
+
+<div class="verbatim"><br />
+logrules2&nbsp;:=&nbsp;rule<br />
+&nbsp;&nbsp;log(x)&nbsp;+&nbsp;log(y)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;log(x&nbsp;*&nbsp;y)<br />
+&nbsp;&nbsp;(y&nbsp;|&nbsp;integer?&nbsp;y)&nbsp;*&nbsp;log&nbsp;x&nbsp;==&nbsp;log(x&nbsp;**&nbsp;y)<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mrow><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>+</mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mo>%</mo><mi>D</mi></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><mrow><mo>log</mo><mo>(</mo><mrow><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>)</mo></mrow><mo>+</mo><mo>%</mo><mi>D</mi></mrow></mrow><mo>,</mo><mrow><mrow><mi>y</mi><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><mo>log</mo><mo>(</mo><mrow><msup><mi>x</mi><mi>y</mi></msup></mrow><mo>)</mo></mrow></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Ruleset(Integer,Integer,Expression Integer)
+</div>
+
+
+
+<p>Compare this with the result of applying the previous set of rules.
+</p>
+
+
+
+<div id="spadComm6-207" class="spadComm" >
+<form id="formComm6-207" action="javascript:makeRequest('6-207');" >
+<input id="comm6-207" type="text" class="command" style="width: 1em;" value="f" />
+</form>
+<span id="commSav6-207" class="commSav" >f</span>
+<div id="mathAns6-207" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>a</mi><mo></mo><mrow><mo>log</mo><mo>(</mo><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm6-208" class="spadComm" >
+<form id="formComm6-208" action="javascript:makeRequest('6-208');" >
+<input id="comm6-208" type="text" class="command" style="width: 8em;" value="logrules2 f" />
+</form>
+<span id="commSav6-208" class="commSav" >logrules2 f</span>
+<div id="mathAns6-208" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>a</mi><mo></mo><mrow><mo>log</mo><mo>(</mo><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mo>log</mo><mo>(</mo><mfrac><mn>1</mn><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>You should be aware that you might need to apply a function like 
+<span class="teletype">integer</span> within your predicate expression to actually apply the test
+function.
+</p>
+
+
+<p>Here we use <span class="teletype">integer</span> because <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> has type <span class="teletype">Expression
+Integer</span> but <span style="font-weight: bold;"> even?</span> is an operation defined on integers.
+</p>
+
+
+
+<div id="spadComm6-209" class="spadComm" >
+<form id="formComm6-209" action="javascript:makeRequest('6-209');" >
+<input id="comm6-209" type="text" class="command" style="width: 56em;" value="evenRule := rule cos(x)**(n | integer? n and even? integer n)==(1-sin(x)**2)**(n/2)" />
+</form>
+<span id="commSav6-209" class="commSav" >evenRule := rule cos(x)**(n | integer? n and even? integer n)==(1-sin(x)**2)**(n/2)</span>
+<div id="mathAns6-209" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mi>n</mi></msup></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><msup><mrow><mo>(</mo><mo>-</mo><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mfrac><mi>n</mi><mn>2</mn></mfrac></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RewriteRule(Integer,Integer,Expression Integer)
+</div>
+
+
+
+<p>Here is the application of the rule.
+</p>
+
+
+
+<div id="spadComm6-210" class="spadComm" >
+<form id="formComm6-210" action="javascript:makeRequest('6-210');" >
+<input id="comm6-210" type="text" class="command" style="width: 14em;" value="evenRule( cos(x)**2 )" />
+</form>
+<span id="commSav6-210" class="commSav" >evenRule( cos(x)**2 )</span>
+<div id="mathAns6-210" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>This is an example of some of the usual identities involving products of
+sines and cosines.
+</p>
+
+
+
+<div class="verbatim"><br />
+sinCosProducts&nbsp;==&nbsp;rule<br />
+&nbsp;&nbsp;sin(x)&nbsp;*&nbsp;sin(y)&nbsp;==&nbsp;(cos(x-y)&nbsp;-&nbsp;cos(x&nbsp;+&nbsp;y))/2<br />
+&nbsp;&nbsp;cos(x)&nbsp;*&nbsp;cos(y)&nbsp;==&nbsp;(cos(x-y)&nbsp;+&nbsp;cos(x+y))/2<br />
+&nbsp;&nbsp;sin(x)&nbsp;*&nbsp;cos(y)&nbsp;==&nbsp;(sin(x-y)&nbsp;+&nbsp;sin(x&nbsp;+&nbsp;y))/2<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-211" class="spadComm" >
+<form id="formComm6-211" action="javascript:makeRequest('6-211');" >
+<input id="comm6-211" type="text" class="command" style="width: 36em;" value="g := sin(a)*sin(b) + cos(b)*cos(a) + sin(2*a)*cos(2*a)" />
+</form>
+<span id="commSav6-211" class="commSav" >g := sin(a)*sin(b) + cos(b)*cos(a) + sin(2*a)*cos(2*a)</span>
+<div id="mathAns6-211" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>sin</mo><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mi>b</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><mo>cos</mo><mo>(</mo><mrow><mn>2</mn><mo></mo><mi>a</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mrow><mn>2</mn><mo></mo><mi>a</mi></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><mo>cos</mo><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mo></mo><mrow><mo>cos</mo><mo>(</mo><mi>b</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm6-212" class="spadComm" >
+<form id="formComm6-212" action="javascript:makeRequest('6-212');" >
+<input id="comm6-212" type="text" class="command" style="width: 11em;" value="sinCosProducts g" />
+</form>
+<span id="commSav6-212" class="commSav" >sinCosProducts g</span>
+<div id="mathAns6-212" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;sinCosProducts&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ruleset(Integer,Integer,Expression&nbsp;Integer)&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mo>sin</mo><mo>(</mo><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>cos</mo><mo>(</mo><mrow><mi>b</mi><mo>-</mo><mi>a</mi></mrow><mo>)</mo></mrow></mrow></mrow><mn>2</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Another qualification you will often want to use is to allow a pattern to
+match an identity element.
+Using the pattern <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mi>y</mi></mrow></mstyle></math>, for example, neither <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> nor <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>
+matches the expression <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>.
+Similarly, if a pattern contains a product <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mi>y</mi></mrow></mstyle></math> or an exponentiation
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mo>*</mo><mi>y</mi></mrow></mstyle></math>, then neither <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> or <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> matches <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>.
+</p>
+
+
+<p>If identical elements were matched, pattern matching would generally loop.
+Here is an expansion rule for exponentials.
+</p>
+
+
+
+<div id="spadComm6-213" class="spadComm" >
+<form id="formComm6-213" action="javascript:makeRequest('6-213');" >
+<input id="comm6-213" type="text" class="command" style="width: 30em;" value="exprule := rule exp(a + b) == exp(a) * exp(b)" />
+</form>
+<span id="commSav6-213" class="commSav" >exprule := rule exp(a + b) == exp(a) * exp(b)</span>
+<div id="mathAns6-213" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>e</mi><mrow><mo>(</mo><mi>b</mi><mo>+</mo><mi>a</mi><mo>)</mo></mrow></msup></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><mrow><msup><mi>e</mi><mi>a</mi></msup></mrow><mo></mo><mrow><msup><mi>e</mi><mi>b</mi></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RewriteRule(Integer,Integer,Expression Integer)
+</div>
+
+
+
+<p>This rule would cause infinite rewriting on this if either <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> or
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> were allowed to match <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-214" class="spadComm" >
+<form id="formComm6-214" action="javascript:makeRequest('6-214');" >
+<input id="comm6-214" type="text" class="command" style="width: 9em;" value="exprule exp x" />
+</form>
+<span id="commSav6-214" class="commSav" >exprule exp x</span>
+<div id="mathAns6-214" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>There are occasions when you do want a pattern variable in a sum or
+product to match <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> or <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>. If so, prefix its name
+with a ``<span class="teletype">?</span>'' whenever it appears in a left-hand side of a rule.
+For example, consider the following rule for the exponential integral:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+This rule is valid for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.  One solution is to create a <span class="teletype">Ruleset</span> with two rules, one with and one without <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.  A better
+solution is to use an ``optional'' pattern variable.
+</p>
+
+
+<p>Define rule <span class="teletype">eirule</span> with
+a pattern variable <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> to indicate
+that an expression may or may not occur.
+</p>
+
+
+
+<div id="spadComm6-215" class="spadComm" >
+<form id="formComm6-215" action="javascript:makeRequest('6-215');" >
+<input id="comm6-215" type="text" class="command" style="width: 45em;" value="eirule := rule integral((?y + exp x)/x,x) == integral(y/x,x) + Ei x" />
+</form>
+<span id="commSav6-215" class="commSav" >eirule := rule integral((?y + exp x)/x,x) == integral(y/x,x) + Ei x</span>
+<div id="mathAns6-215" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>&#x222B;</mo><mrow><mi>x</mi></mrow></msup><mrow><mfrac><mrow><mrow><msup><mi>e</mi><mo>%</mo></msup><mi>M</mi></mrow><mo>+</mo><mi>y</mi></mrow><mrow><mo>%</mo><mi>M</mi></mrow></mfrac><mo></mo><mrow><mi>d</mi><mo>%</mo><mi>M</mi></mrow></mrow></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><mrow><mrow><mrow><mtext mathvariant='monospace'>'</mtext></mrow><mi>integral</mi></mrow><mo>(</mo><mrow><mfrac><mi>y</mi><mi>x</mi></mfrac><mo>,</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mrow><mrow><mtext mathvariant='monospace'>'</mtext></mrow><mi>Ei</mi></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RewriteRule(Integer,Integer,Expression Integer)
+</div>
+
+
+
+<p>Apply rule <span class="teletype">eirule</span> to an integral without this term.
+</p>
+
+
+
+<div id="spadComm6-216" class="spadComm" >
+<form id="formComm6-216" action="javascript:makeRequest('6-216');" >
+<input id="comm6-216" type="text" class="command" style="width: 18em;" value="eirule integral(exp u/u, u)" />
+</form>
+<span id="commSav6-216" class="commSav" >eirule integral(exp u/u, u)</span>
+<div id="mathAns6-216" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>Ei</mi><mo>(</mo><mi>u</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Apply rule <span class="teletype">eirule</span> to an integral with this term.
+</p>
+
+
+
+<div id="spadComm6-217" class="spadComm" >
+<form id="formComm6-217" action="javascript:makeRequest('6-217');" >
+<input id="comm6-217" type="text" class="command" style="width: 24em;" value="eirule integral(sin u + exp u/u, u)" />
+</form>
+<span id="commSav6-217" class="commSav" >eirule integral(sin u + exp u/u, u)</span>
+<div id="mathAns6-217" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>&#x222B;</mo><mrow><mi>u</mi></mrow></msup><mrow><mrow><mo>sin</mo><mo>(</mo><mrow><mo>%</mo><mi>M</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mi>d</mi><mo>%</mo><mi>M</mi></mrow></mrow></mrow><mo>+</mo><mrow><mi>Ei</mi><mo>(</mo><mi>u</mi><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Here is one final adornment you will find useful.  When matching a
+pattern of the form <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mi>y</mi></mrow></mstyle></math> to an expression containing a long sum of
+the form <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>+</mo><mo>&#x2026;</mo><mo>+</mo><mi>b</mi></mrow></mstyle></math>, there is no way to predict in advance which
+subset of the sum matches <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and which matches <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.  Aside from
+efficiency, this is generally unimportant since the rule holds for any
+possible combination of matches for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.  In some situations,
+however, you may want to say which pattern variable is a sum (or
+product) of several terms, and which should match only a single term.
+To do this, put a prefix colon ``<span class="teletype">:</span>'' before the pattern variable
+that you want to match multiple terms.
+<span class="index">pattern:variable:matching several terms</span><a name="chapter-6-77"/>
+</p>
+
+
+<p>The remaining rules involve operators <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math>. <span class="index">operator</span><a name="chapter-6-78"/>
+</p>
+
+
+
+<div id="spadComm6-218" class="spadComm" >
+<form id="formComm6-218" action="javascript:makeRequest('6-218');" >
+<input id="comm6-218" type="text" class="command" style="width: 11em;" value="u := operator 'u" />
+</form>
+<span id="commSav6-218" class="commSav" >u := operator 'u</span>
+<div id="mathAns6-218" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>u</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>These definitions tell Axiom that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math> are formal operators to
+be used in expressions.
+</p>
+
+
+
+<div id="spadComm6-219" class="spadComm" >
+<form id="formComm6-219" action="javascript:makeRequest('6-219');" >
+<input id="comm6-219" type="text" class="command" style="width: 11em;" value="v := operator 'v" />
+</form>
+<span id="commSav6-219" class="commSav" >v := operator 'v</span>
+<div id="mathAns6-219" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>v</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>First define <span class="teletype">myRule</span> with no restrictions on the pattern variables
+<math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-220" class="spadComm" >
+<form id="formComm6-220" action="javascript:makeRequest('6-220');" >
+<input id="comm6-220" type="text" class="command" style="width: 24em;" value="myRule := rule u(x + y) == u x + v y" />
+</form>
+<span id="commSav6-220" class="commSav" >myRule := rule u(x + y) == u x + v y</span>
+<div id="mathAns6-220" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>u</mi><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mi>x</mi></mrow><mo>)</mo></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><mrow><mrow><mrow><mtext mathvariant='monospace'>'</mtext></mrow><mi>v</mi></mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>+</mo><mrow><mrow><mrow><mtext mathvariant='monospace'>'</mtext></mrow><mi>u</mi></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RewriteRule(Integer,Integer,Expression Integer)
+</div>
+
+
+
+<p>Apply <span class="teletype">myRule</span> to an expression.
+</p>
+
+
+
+<div id="spadComm6-221" class="spadComm" >
+<form id="formComm6-221" action="javascript:makeRequest('6-221');" >
+<input id="comm6-221" type="text" class="command" style="width: 16em;" value="myRule u(a + b + c + d)" />
+</form>
+<span id="commSav6-221" class="commSav" >myRule u(a + b + c + d)</span>
+<div id="mathAns6-221" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>v</mi><mo>(</mo><mrow><mi>d</mi><mo>+</mo><mi>c</mi><mo>+</mo><mi>b</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mi>u</mi><mo>(</mo><mi>a</mi><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Define <span class="teletype">myOtherRule</span> to match several terms so that the rule gets
+applied recursively.
+</p>
+
+
+
+<div id="spadComm6-222" class="spadComm" >
+<form id="formComm6-222" action="javascript:makeRequest('6-222');" >
+<input id="comm6-222" type="text" class="command" style="width: 28em;" value="myOtherRule := rule u(:x + y) == u x + v y" />
+</form>
+<span id="commSav6-222" class="commSav" >myOtherRule := rule u(:x + y) == u x + v y</span>
+<div id="mathAns6-222" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>u</mi><mo>(</mo><mrow><mi>y</mi><mo>+</mo><mi>x</mi></mrow><mo>)</mo></mrow><mtext><mrow><mtext>==</mtext></mrow></mtext><mrow><mrow><mrow><mrow><mtext mathvariant='monospace'>'</mtext></mrow><mi>v</mi></mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>+</mo><mrow><mrow><mrow><mtext mathvariant='monospace'>'</mtext></mrow><mi>u</mi></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RewriteRule(Integer,Integer,Expression Integer)
+</div>
+
+
+
+<p>Apply <span class="teletype">myOtherRule</span> to the same expression.
+</p>
+
+
+
+<div id="spadComm6-223" class="spadComm" >
+<form id="formComm6-223" action="javascript:makeRequest('6-223');" >
+<input id="comm6-223" type="text" class="command" style="width: 19em;" value="myOtherRule u(a + b + c + d)" />
+</form>
+<span id="commSav6-223" class="commSav" >myOtherRule u(a + b + c + d)</span>
+<div id="mathAns6-223" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>v</mi><mo>(</mo><mi>c</mi><mo>)</mo></mrow><mo>+</mo><mrow><mi>v</mi><mo>(</mo><mi>b</mi><mo>)</mo></mrow><mo>+</mo><mrow><mi>v</mi><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mo>+</mo><mrow><mi>u</mi><mo>(</mo><mi>d</mi><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>Summary of pattern variable adornments:
+</p>
+
+
+<p><table class="begintabular">
+<tr><td><span class="teletype">(x | predicate?(x))</span> </td><td> means that the substutution <math xmlns="&mathml;" mathsize="big"><mstyle><mi>s</mi></mstyle></math> for <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> must satisfy <span class="teletype">predicate(s) = true.</span> </td></tr>
+<tr><td><span class="teletype">?x</span> </td><td> means that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> can match an identity element (0 or 1). </td></tr>
+<tr><td><span class="teletype">:x</span> </td><td> means that <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> can match several terms in a sum.</td></tr> 
+</table>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>Here are some final remarks on pattern matching.  Pattern matching
+provides a very useful paradigm for solving certain classes of
+problems, namely, those that involve transformations of one form to
+another and back.  However, it is important to recognize its
+limitations.  <span class="index">pattern:matching:caveats</span><a name="chapter-6-79"/>
+</p>
+
+
+<p>First, pattern matching slows down as the number of rules you have to
+apply increases.  Thus it is good practice to organize the sets of
+rules you use optimally so that irrelevant rules are never included.
+</p>
+
+
+<p>Second, careless use of pattern matching can lead to wrong answers.
+You should avoid using pattern matching to handle hidden algebraic
+relationships that can go undetected by other programs.  As a simple
+example, a symbol such as ``J'' can easily be used to represent the
+square root of <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math> or some other important algebraic quantity.  Many
+algorithms branch on whether an expression is zero or not, then divide
+by that expression if it is not.  If you fail to simplify an
+expression involving powers of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>J</mi></mstyle></math> to <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn><mo>,</mo></mrow></mstyle></math> algorithms may incorrectly
+assume an expression is non-zero, take a wrong branch, and produce a
+meaningless result.
+</p>
+
+
+<p>Pattern matching should also not be used as a substitute for a domain.
+In Axiom, objects of one domain are transformed to objects of other
+domains using well-defined <span style="font-weight: bold;"> coerce</span> operations.  Pattern matching
+should be used on objects that are all the same type.  Thus if your
+application can be handled by type <span class="teletype">Expression</span> in Axiom and you
+think you need pattern matching, consider this choice carefully.
+<span class="index">Expression</span><a name="chapter-6-80"/> You may well be better served by extending an
+existing domain or by building a new domain of objects for your
+application.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.20.xhtml" style="margin-right: 10px;">Previous Section 6.20 Example: Testing for Palindromes</a><a href="section-7.0.xhtml" style="margin-right: 10px;">Next Section 7.0 Graphics</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.3.xhtml
new file mode 100644
index 0000000..34c4d78
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.3.xhtml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.2.xhtml" style="margin-right: 10px;">Previous Section 6.2 Macros</a><a href="section-6.4.xhtml" style="margin-right: 10px;">Next Section 6.4 Declaring the Type of Functions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.3">
+<h2 class="sectiontitle">6.3  Introduction to Functions</h2>
+
+
+<a name="ugUserIntro" class="label"/>
+
+
+<p>Each name in your workspace can refer to a single object.  This may be
+any kind of object including a function.  You can use interactively
+any function from the library or any that you define in the workspace.
+In the library the same name can have very many functions, but you can
+have only one function with a given name, although it can have any
+number of arguments that you choose.
+</p>
+
+
+<p>If you define a function in the workspace that has the same name and
+number of arguments as one in the library, then your definition takes
+precedence.  In fact, to get the library function you must
+<span class="slant">package-call</span> it 
+(see section <a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> ).
+</p>
+
+
+<p>To use a function in Axiom, you apply it to its arguments.  Most
+functions are applied by entering the name of the function followed by
+its argument or arguments.
+</p>
+
+
+
+<div id="spadComm6-18" class="spadComm" >
+<form id="formComm6-18" action="javascript:makeRequest('6-18');" >
+<input id="comm6-18" type="text" class="command" style="width: 7em;" value="factor(12)" />
+</form>
+<span id="commSav6-18" class="commSav" >factor(12)</span>
+<div id="mathAns6-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mo></mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>Some functions like ``<span class="teletype">+</span>'' have <span class="italic">infix</span> <span class="italic">operators</span> as names.
+</p>
+
+
+
+<div id="spadComm6-19" class="spadComm" >
+<form id="formComm6-19" action="javascript:makeRequest('6-19');" >
+<input id="comm6-19" type="text" class="command" style="width: 4em;" value="3 + 4" />
+</form>
+<span id="commSav6-19" class="commSav" >3 + 4</span>
+<div id="mathAns6-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The function ``<span class="teletype">+</span>'' has two arguments.  When you give it more than
+two arguments, Axiom groups the arguments to the left.  This
+expression is equivalent to <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mn>1</mn><mo>+</mo><mn>2</mn><mo>)</mo><mo>+</mo><mn>7</mn></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-20" class="spadComm" >
+<form id="formComm6-20" action="javascript:makeRequest('6-20');" >
+<input id="comm6-20" type="text" class="command" style="width: 6em;" value="1 + 2 + 7" />
+</form>
+<span id="commSav6-20" class="commSav" >1 + 2 + 7</span>
+<div id="mathAns6-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>All operations, including infix operators, can be written in prefix
+form, that is, with the operation name followed by the arguments in
+parentheses.  For example, <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>+</mo><mn>3</mn></mrow></mstyle></math> can alternatively be written as
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>+</mo><mo>(</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>)</mo></mrow></mstyle></math>.  But <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>+</mo><mo>(</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>)</mo></mrow></mstyle></math> is an error since <span class="teletype">+</span> takes only two
+arguments.
+</p>
+
+
+<p>Prefix operations are generally applied before the infix operation.
+Thus the form <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mrow><mtext style="fontweight: bold;">factorial&nbsp;</mtext></mrow><mn>3</mn><mo>+</mo><mn>1</mn></mrow></mstyle></math> means <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mrow><mtext style="fontweight: bold;">factorial</mtext></mrow><mo>(</mo><mn>3</mn><mo>)</mo><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+producing <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math>, and <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>2</mn><mo>+</mo><mn>5</mn></mrow></mstyle></math> means <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mo>-</mo><mn>2</mn><mo>)</mo><mo>+</mo><mn>5</mn></mrow></mstyle></math> producing <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math>.  An
+example of a prefix operator is prefix ``<span class="teletype">-</span>''.  For example, <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>2</mn><mo>+</mo><mn>5</mn></mrow></mstyle></math> converts to <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mo>-</mo><mn>2</mn><mo>)</mo><mo>+</mo><mn>5</mn></mrow></mstyle></math> producing the value <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math>.  Any prefix
+function taking two arguments can be written in an infix manner by
+putting an ampersand ``<span class="teletype">&amp;</span>'' before the name.  Thus <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>D</mi><mo>(</mo><mn>2</mn><mo>*</mo><mi>x</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> can
+be written as <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>*</mo><mi>x</mi><mo></mo><mrow><mo>&amp;</mo><mi>D</mi></mrow><mi>x</mi></mrow></mstyle></math> returning <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math>.
+</p>
+
+
+<p>Every function in Axiom is identified by a <span class="italic">name</span> and 
+<span class="italic">type</span>. (An exception is an ``anonymous function'' discussed in
+<a href="section-6.17.xhtml#ugUserAnon" class="ref" >ugUserAnon</a> .)  
+The type of a function is always a mapping of the
+form Source->Target where <span class="teletype">Source</span> and <span class="teletype">Target</span> are types.
+To enter a type from the keyboard, enter the arrow by using a hyphen
+``<span class="teletype">-</span>'' followed by a greater-than sign ``<span class="teletype">></span>'', e.g. 
+<span class="teletype">Integer -> Integer</span>.
+</p>
+
+
+<p>Let's go back to ``<span class="teletype">+</span>''.  There are many ``<span class="teletype">+</span>'' functions in the
+Axiom library: one for integers, one for floats, another for rational
+numbers, and so on.  These ``<span class="teletype">+</span>'' functions have different types and
+thus are different functions.  You've seen examples of this 
+<span class="italic">overloading</span> before---using the same name for different functions.
+Overloading is the rule rather than the exception.  You can add two
+integers, two polynomials, two matrices or two power series.  These
+are all done with the same function name but with different functions.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.2.xhtml" style="margin-right: 10px;">Previous Section 6.2 Macros</a><a href="section-6.4.xhtml" style="margin-right: 10px;">Next Section 6.4 Declaring the Type of Functions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.4.xhtml
new file mode 100644
index 0000000..d8fb649
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.4.xhtml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.3.xhtml" style="margin-right: 10px;">Previous Section 6.3 Introduction to Functions</a><a href="section-6.5.xhtml" style="margin-right: 10px;">Next Section 6.5 One-Line Functions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.4">
+<h2 class="sectiontitle">6.4  Declaring the Type of Functions</h2>
+
+
+<a name="ugUserDeclare" class="label"/>
+
+
+<p>In <a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a>  we discussed
+how to declare a variable to restrict the kind of values that can be
+assigned to it.  In this section we show how to declare a variable
+that refers to function objects.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>A function is an object of type
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>{\sf Source <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2192;</mo></mstyle></math> Type}
+</p>
+
+
+
+</div>
+
+
+
+<p>where <span class="teletype">Source</span> and <span class="teletype">Target</span> can be any type.  A common type
+for <span class="teletype">Source</span> is <span class="teletype">Tuple</span>(<math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>, ..., 
+<math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>), usually written (<math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>, ..., 
+<math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>), to indicate a function of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> arguments.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>If <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> takes an <span class="teletype">Integer</span>, a <span class="teletype">Float</span> and another <span class="teletype">Integer</span>, 
+and returns a <span class="teletype">String</span>, the declaration is written:
+</p>
+
+
+
+<div id="spadComm6-21" class="spadComm" >
+<form id="formComm6-21" action="javascript:makeRequest('6-21');" >
+<input id="comm6-21" type="text" class="command" style="width: 24em;" value="g: (Integer,Float,Integer) -> String" />
+</form>
+<span id="commSav6-21" class="commSav" >g: (Integer,Float,Integer) -> String</span>
+<div id="mathAns6-21" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The types need not be written fully; using abbreviations, the above
+declaration is:
+</p>
+
+
+
+<div id="spadComm6-22" class="spadComm" >
+<form id="formComm6-22" action="javascript:makeRequest('6-22');" >
+<input id="comm6-22" type="text" class="command" style="width: 19em;" value="g: (INT,FLOAT,INT) -> STRING" />
+</form>
+<span id="commSav6-22" class="commSav" >g: (INT,FLOAT,INT) -> STRING</span>
+<div id="mathAns6-22" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>It is possible for a function to take no arguments.  If <math xmlns="&mathml;" mathsize="big"><mstyle><mi>h</mi></mstyle></math> takes no
+arguments but returns a <span class="teletype">Polynomial</span> <span class="teletype">Integer</span>, any of the
+following declarations is acceptable.
+</p>
+
+
+
+<div id="spadComm6-23" class="spadComm" >
+<form id="formComm6-23" action="javascript:makeRequest('6-23');" >
+<input id="comm6-23" type="text" class="command" style="width: 12em;" value="h: () -> POLY INT" />
+</form>
+<span id="commSav6-23" class="commSav" >h: () -> POLY INT</span>
+<div id="mathAns6-23" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-24" class="spadComm" >
+<form id="formComm6-24" action="javascript:makeRequest('6-24');" >
+<input id="comm6-24" type="text" class="command" style="width: 16em;" value="h: () -> Polynomial INT" />
+</form>
+<span id="commSav6-24" class="commSav" >h: () -> Polynomial INT</span>
+<div id="mathAns6-24" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-25" class="spadComm" >
+<form id="formComm6-25" action="javascript:makeRequest('6-25');" >
+<input id="comm6-25" type="text" class="command" style="width: 14em;" value="h: () -> POLY Integer" />
+</form>
+<span id="commSav6-25" class="commSav" >h: () -> POLY Integer</span>
+<div id="mathAns6-25" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>Functions can also be declared when they are being defined.
+The syntax for combined declaration/definition is:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="italic">functionName</span>(<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>parm</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>: 
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>parmType</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math>, ..., <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>parm</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math>: 
+<math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>parmType</mtext></mrow><mi>N</mi></msub></mrow></mstyle></math>): <span class="italic">functionReturnType</span>
+</p>
+
+
+
+</div>
+
+
+
+
+</div>
+</div>
+
+
+
+<p>The following definition fragments show how this can be done for
+the functions <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mi>h</mi></mstyle></math> above.
+</p>
+
+
+
+<div class="verbatim"><br />
+g(arg1:&nbsp;INT,&nbsp;arg2:&nbsp;FLOAT,&nbsp;arg3:&nbsp;INT):&nbsp;STRING&nbsp;==&nbsp;...<br />
+<br />
+h():&nbsp;POLY&nbsp;INT&nbsp;==&nbsp;...<br />
+</div>
+
+
+
+<p>A current restriction on function declarations is that they must
+involve fully specified types (that is, cannot include modes involving
+explicit or implicit ``<span class="teletype">?</span>'').  For more information on declaring
+things in general, see <a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.3.xhtml" style="margin-right: 10px;">Previous Section 6.3 Introduction to Functions</a><a href="section-6.5.xhtml" style="margin-right: 10px;">Next Section 6.5 One-Line Functions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.5.xhtml
new file mode 100644
index 0000000..240a1a8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.5.xhtml
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.4.xhtml" style="margin-right: 10px;">Previous Section 6.4 Declaring the Type of Functions</a><a href="section-6.6.xhtml" style="margin-right: 10px;">Next Section 6.6 Declared vs. Undeclared Functions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.5">
+<h2 class="sectiontitle">6.5  One-Line Functions</h2>
+
+
+<a name="ugUserOne" class="label"/>
+
+
+<p>As you use Axiom, you will find that you will write many short
+functions <span class="index">function:one-line definition</span><a name="chapter-6-11"/> to codify sequences of
+operations that you often perform.  In this section we write some
+simple one-line functions.
+</p>
+
+
+<p>This is a simple recursive factorial function for positive integers.
+</p>
+
+
+
+<div id="spadComm6-26" class="spadComm" >
+<form id="formComm6-26" action="javascript:makeRequest('6-26');" >
+<input id="comm6-26" type="text" class="command" style="width: 28em;" value="fac n == if n &lt; 3 then n else n * fac(n-1)" />
+</form>
+<span id="commSav6-26" class="commSav" >fac n == if n &lt; 3 then n else n * fac(n-1)</span>
+<div id="mathAns6-26" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-27" class="spadComm" >
+<form id="formComm6-27" action="javascript:makeRequest('6-27');" >
+<input id="comm6-27" type="text" class="command" style="width: 4em;" value="fac 10" />
+</form>
+<span id="commSav6-27" class="commSav" >fac 10</span>
+<div id="mathAns6-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3628800</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This function computes <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>+</mo><mn>1</mn><mo>/</mo><mn>2</mn><mo>+</mo><mn>1</mn><mo>/</mo><mn>3</mn><mo>+</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>+</mo><mn>1</mn><mo>/</mo><mi>n</mi></mrow></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-28" class="spadComm" >
+<form id="formComm6-28" action="javascript:makeRequest('6-28');" >
+<input id="comm6-28" type="text" class="command" style="width: 24em;" value="s n == reduce(+,[1/i for i in 1..n])" />
+</form>
+<span id="commSav6-28" class="commSav" >s n == reduce(+,[1/i for i in 1..n])</span>
+<div id="mathAns6-28" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-29" class="spadComm" >
+<form id="formComm6-29" action="javascript:makeRequest('6-29');" >
+<input id="comm6-29" type="text" class="command" style="width: 3em;" value="s 50" />
+</form>
+<span id="commSav6-29" class="commSav" >s 50</span>
+<div id="mathAns6-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>13943237577224054960759</mn><mn>3099044504245996706400</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>This function computes a Mersenne number, several of which are prime.
+<span class="index">Mersenne number</span><a name="chapter-6-12"/>
+</p>
+
+
+
+<div id="spadComm6-30" class="spadComm" >
+<form id="formComm6-30" action="javascript:makeRequest('6-30');" >
+<input id="comm6-30" type="text" class="command" style="width: 15em;" value="mersenne i == 2**i - 1" />
+</form>
+<span id="commSav6-30" class="commSav" >mersenne i == 2**i - 1</span>
+<div id="mathAns6-30" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>If you type <span class="teletype">mersenne</span>, Axiom shows you the function definition.
+</p>
+
+
+
+<div id="spadComm6-31" class="spadComm" >
+<form id="formComm6-31" action="javascript:makeRequest('6-31');" >
+<input id="comm6-31" type="text" class="command" style="width: 6em;" value="mersenne" />
+</form>
+<span id="commSav6-31" class="commSav" >mersenne</span>
+<div id="mathAns6-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block">
+<mi>mersenne</mi><mspace width='0.5em'/><mi>i</mi><mspace width='0.5em'/><mo>==</mo><mspace width='0.5em'/><mrow><mrow><msup><mrow><mn>2</mn></mrow><mrow><mi>i</mi></mrow></msup></mrow><mo>-</mo><mn>1</mn></mrow>
+</math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FunctionCalled mersenne
+</div>
+
+
+
+<p>Generate a stream of Mersenne numbers.
+</p>
+
+
+
+<div id="spadComm6-32" class="spadComm" >
+<form id="formComm6-32" action="javascript:makeRequest('6-32');" >
+<input id="comm6-32" type="text" class="command" style="width: 17em;" value="[mersenne i for i in 1..]" />
+</form>
+<span id="commSav6-32" class="commSav" >[mersenne i for i in 1..]</span>
+<div id="mathAns6-32" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>15</mn><mo>,</mo><mn>31</mn><mo>,</mo><mn>63</mn><mo>,</mo><mn>127</mn><mo>,</mo><mn>255</mn><mo>,</mo><mn>511</mn><mo>,</mo><mn>1023</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Create a stream of those values of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> such that <span class="teletype">mersenne(i)</span> is prime.
+</p>
+
+
+
+<div id="spadComm6-33" class="spadComm" >
+<form id="formComm6-33" action="javascript:makeRequest('6-33');" >
+<input id="comm6-33" type="text" class="command" style="width: 37em;" value="mersenneIndex := [n for n in 1.. | prime?(mersenne(n))]" />
+</form>
+<span id="commSav6-33" class="commSav" >mersenneIndex := [n for n in 1.. | prime?(mersenne(n))]</span>
+<div id="mathAns6-33" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;mersenne&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>19</mn><mo>,</mo><mn>31</mn><mo>,</mo><mn>61</mn><mo>,</mo><mn>89</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream PositiveInteger
+</div>
+
+
+
+<p>Finally, write a function that returns the <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Mersenne prime.
+</p>
+
+
+
+<div id="spadComm6-34" class="spadComm" >
+<form id="formComm6-34" action="javascript:makeRequest('6-34');" >
+<input id="comm6-34" type="text" class="command" style="width: 30em;" value="mersennePrime n == mersenne mersenneIndex(n)" />
+</form>
+<span id="commSav6-34" class="commSav" >mersennePrime n == mersenne mersenneIndex(n)</span>
+<div id="mathAns6-34" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-35" class="spadComm" >
+<form id="formComm6-35" action="javascript:makeRequest('6-35');" >
+<input id="comm6-35" type="text" class="command" style="width: 10em;" value="mersennePrime 5" />
+</form>
+<span id="commSav6-35" class="commSav" >mersennePrime 5</span>
+<div id="mathAns6-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8191</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.4.xhtml" style="margin-right: 10px;">Previous Section 6.4 Declaring the Type of Functions</a><a href="section-6.6.xhtml" style="margin-right: 10px;">Next Section 6.6 Declared vs. Undeclared Functions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.6.xhtml
new file mode 100644
index 0000000..84e56fa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.6.xhtml
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.5.xhtml" style="margin-right: 10px;">Previous Section 6.5 One-Line Functions</a><a href="section-6.7.xhtml" style="margin-right: 10px;">Next Section 6.7 Functions vs. Operations</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.6">
+<h2 class="sectiontitle">6.6  Declared vs. Undeclared Functions</h2>
+
+
+<a name="ugUserDecUndec" class="label"/>
+
+
+<p>If you declare the type of a function, you can apply it to any data
+that can be converted to the source type of the function.
+</p>
+
+
+<p>Define <span style="font-weight: bold;"> f</span> with type {\sf Integer <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2192;</mo></mstyle></math> Integer}.
+</p>
+
+
+
+<div id="spadComm6-36" class="spadComm" >
+<form id="formComm6-36" action="javascript:makeRequest('6-36');" >
+<input id="comm6-36" type="text" class="command" style="width: 21em;" value="f(x: Integer): Integer == x + 1" />
+</form>
+<span id="commSav6-36" class="commSav" >f(x: Integer): Integer == x + 1</span>
+<div id="mathAns6-36" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;f&nbsp;:&nbsp;Integer&nbsp;-&gt;&nbsp;Integer&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The function <span style="font-weight: bold;"> f</span> can be applied to integers, ...
+</p>
+
+
+
+<div id="spadComm6-37" class="spadComm" >
+<form id="formComm6-37" action="javascript:makeRequest('6-37');" >
+<input id="comm6-37" type="text" class="command" style="width: 2em;" value="f 9" />
+</form>
+<span id="commSav6-37" class="commSav" >f 9</span>
+<div id="mathAns6-37" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>and to values that convert to integers, ...
+</p>
+
+
+
+<div id="spadComm6-38" class="spadComm" >
+<form id="formComm6-38" action="javascript:makeRequest('6-38');" >
+<input id="comm6-38" type="text" class="command" style="width: 5em;" value="f(-2.0)" />
+</form>
+<span id="commSav6-38" class="commSav" >f(-2.0)</span>
+<div id="mathAns6-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>but not to values that cannot be converted to integers.
+</p>
+
+
+
+<div id="spadComm6-39" class="spadComm" >
+<form id="formComm6-39" action="javascript:makeRequest('6-39');" >
+<input id="comm6-39" type="text" class="command" style="width: 4em;" value="f(2/3)" />
+</form>
+<span id="commSav6-39" class="commSav" >f(2/3)</span>
+<div id="mathAns6-39" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Conversion&nbsp;failed&nbsp;in&nbsp;the&nbsp;compiled&nbsp;user&nbsp;function&nbsp;f&nbsp;.<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Cannot&nbsp;convert&nbsp;from&nbsp;type&nbsp;Fraction&nbsp;Integer&nbsp;to&nbsp;Integer&nbsp;for&nbsp;value<br />
+&nbsp;&nbsp;&nbsp;2<br />
+&nbsp;&nbsp;&nbsp;-<br />
+&nbsp;&nbsp;&nbsp;3<br />
+</div>
+
+
+
+<p>To make the function over a wide range of types, do not declare its type.
+Give the same definition with no declaration.
+</p>
+
+
+
+<div id="spadComm6-40" class="spadComm" >
+<form id="formComm6-40" action="javascript:makeRequest('6-40');" >
+<input id="comm6-40" type="text" class="command" style="width: 8em;" value="g x == x + 1" />
+</form>
+<span id="commSav6-40" class="commSav" >g x == x + 1</span>
+<div id="mathAns6-40" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>If <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math> makes sense, you can apply <span style="font-weight: bold;"> g</span> to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm6-41" class="spadComm" >
+<form id="formComm6-41" action="javascript:makeRequest('6-41');" >
+<input id="comm6-41" type="text" class="command" style="width: 2em;" value="g 9" />
+</form>
+<span id="commSav6-41" class="commSav" >g 9</span>
+<div id="mathAns6-41" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;PositiveInteger&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>A version of <span style="font-weight: bold;"> g</span> with different argument types get compiled for
+each new kind of argument used.
+</p>
+
+
+
+<div id="spadComm6-42" class="spadComm" >
+<form id="formComm6-42" action="javascript:makeRequest('6-42');" >
+<input id="comm6-42" type="text" class="command" style="width: 4em;" value="g(2/3)" />
+</form>
+<span id="commSav6-42" class="commSav" >g(2/3)</span>
+<div id="mathAns6-42" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;g&nbsp;with&nbsp;type&nbsp;Fraction&nbsp;Integer&nbsp;-&gt;&nbsp;Fraction&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>5</mn><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Here <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math> for <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mo>"</mo><mi>axiom</mi><mo>"</mo></mrow></mstyle></math> makes no sense.
+</p>
+
+
+
+<div id="spadComm6-43" class="spadComm" >
+<form id="formComm6-43" action="javascript:makeRequest('6-43');" >
+<input id="comm6-43" type="text" class="command" style="width: 7em;" value='g("axiom")' />
+</form>
+<span id="commSav6-43" class="commSav" >g("axiom")</span>
+<div id="mathAns6-43" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;There&nbsp;are&nbsp;11&nbsp;exposed&nbsp;and&nbsp;5&nbsp;unexposed&nbsp;library&nbsp;operations&nbsp;named&nbsp;+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;having&nbsp;2&nbsp;argument(s)&nbsp;but&nbsp;none&nbsp;was&nbsp;determined&nbsp;to&nbsp;be&nbsp;applicable.&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;HyperDoc&nbsp;Browse,&nbsp;or&nbsp;issue<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)display&nbsp;op&nbsp;+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;learn&nbsp;more&nbsp;about&nbsp;the&nbsp;available&nbsp;operations.&nbsp;Perhaps&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;package-calling&nbsp;the&nbsp;operation&nbsp;or&nbsp;using&nbsp;coercions&nbsp;on&nbsp;the&nbsp;arguments<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;allow&nbsp;you&nbsp;to&nbsp;apply&nbsp;the&nbsp;operation.<br />
+&nbsp;&nbsp;&nbsp;Cannot&nbsp;find&nbsp;a&nbsp;definition&nbsp;or&nbsp;applicable&nbsp;library&nbsp;operation&nbsp;named&nbsp;+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;argument&nbsp;type(s)&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PositiveInteger<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Perhaps&nbsp;you&nbsp;should&nbsp;use&nbsp;"@"&nbsp;to&nbsp;indicate&nbsp;the&nbsp;required&nbsp;return&nbsp;type,&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;"$"&nbsp;to&nbsp;specify&nbsp;which&nbsp;version&nbsp;of&nbsp;the&nbsp;function&nbsp;you&nbsp;need.<br />
+&nbsp;&nbsp;&nbsp;AXIOM&nbsp;will&nbsp;attempt&nbsp;to&nbsp;step&nbsp;through&nbsp;and&nbsp;interpret&nbsp;the&nbsp;code.<br />
+&nbsp;&nbsp;&nbsp;There&nbsp;are&nbsp;11&nbsp;exposed&nbsp;and&nbsp;5&nbsp;unexposed&nbsp;library&nbsp;operations&nbsp;named&nbsp;+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;having&nbsp;2&nbsp;argument(s)&nbsp;but&nbsp;none&nbsp;was&nbsp;determined&nbsp;to&nbsp;be&nbsp;applicable.&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;HyperDoc&nbsp;Browse,&nbsp;or&nbsp;issue<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)display&nbsp;op&nbsp;+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;learn&nbsp;more&nbsp;about&nbsp;the&nbsp;available&nbsp;operations.&nbsp;Perhaps&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;package-calling&nbsp;the&nbsp;operation&nbsp;or&nbsp;using&nbsp;coercions&nbsp;on&nbsp;the&nbsp;arguments<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;allow&nbsp;you&nbsp;to&nbsp;apply&nbsp;the&nbsp;operation.<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Cannot&nbsp;find&nbsp;a&nbsp;definition&nbsp;or&nbsp;applicable&nbsp;library&nbsp;operation&nbsp;named&nbsp;+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;argument&nbsp;type(s)&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PositiveInteger<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Perhaps&nbsp;you&nbsp;should&nbsp;use&nbsp;"@"&nbsp;to&nbsp;indicate&nbsp;the&nbsp;required&nbsp;return&nbsp;type,&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;"$"&nbsp;to&nbsp;specify&nbsp;which&nbsp;version&nbsp;of&nbsp;the&nbsp;function&nbsp;you&nbsp;need.<br />
+</div>
+
+
+
+<p>As you will see in Chapter <a href="section-12.0.xhtml#ugCategories" class="ref" >ugCategories</a> Axiom has a formal idea of categories for
+what ``makes sense.''
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.5.xhtml" style="margin-right: 10px;">Previous Section 6.5 One-Line Functions</a><a href="section-6.7.xhtml" style="margin-right: 10px;">Next Section 6.7 Functions vs. Operations</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.7.xhtml
new file mode 100644
index 0000000..cb90bac
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.7.xhtml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.6.xhtml" style="margin-right: 10px;">Previous Section 6.6 Declared vs. Undeclared Functions</a><a href="section-6.8.xhtml" style="margin-right: 10px;">Next Section 6.8 Delayed Assignments vs. Functions with No Arguments</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.7">
+<h2 class="sectiontitle">6.7  Functions vs. Operations</h2>
+
+
+<a name="ugUserDecOpers" class="label"/>
+
+
+<p>A function is an object that you can create, manipulate, pass to, and
+return from functions (for some interesting examples of library
+functions that manipulate functions, see <a href="MappingPackage1XmpPage" class="ref" >MappingPackage1XmpPage</a>
+).  Yet, we often seem to use
+the term <span class="italic">operation</span> and <span class="italic">function</span> interchangeably in Axiom.  What
+is the distinction?
+</p>
+
+
+<p>First consider values and types associated with some variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> in
+your workspace.  You can make the declaration <span class="teletype">n : Integer</span>, then
+assign <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> an integer value.  You then speak of the integer <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>.
+However, note that the integer is not the name <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> itself, but the
+value that you assign to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>.
+</p>
+
+
+<p>Similarly, you can declare a variable <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> in your workspace to have
+type <span class="slant"> Integer <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2192;</mo></mstyle></math> Integer</span>, then assign <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>, through a
+definition or an assignment of an anonymous function.  You then speak
+of the function <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.  However, the function is not <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>, but the value
+that you assign to <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.
+</p>
+
+
+<p>A function is a value, in fact, some machine code for doing something.
+Doing what?  Well, performing some <span class="italic">operation</span>.  Formally, an
+operation consists of the constituent parts of <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> in your workspace,
+excluding the value; thus an operation has a name and a type.  An
+operation is what domains and packages export.  Thus <span class="teletype">Ring</span>
+exports one operation ``<span class="teletype">+</span>''.  Every ring also exports this
+operation.  Also, the author of every ring in the system is obliged
+under contract (see <a href="section-11.3.xhtml#ugPackagesAbstract" class="ref" >ugPackagesAbstract</a> ) to provide an implementation for
+this operation.
+</p>
+
+
+<p>This chapter is all about functions---how you create them
+interactively and how you apply them to meet your needs.  In Chapter
+<a href="section-11.0.xhtml#ugPackages" class="ref" >ugPackages</a>  you will learn how to
+create them for the Axiom library.  Then in Chapter <a href="section-12.0.xhtml#ugCategories" class="ref" >ugCategories</a>
+, you will learn about categories and
+exported operations.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.6.xhtml" style="margin-right: 10px;">Previous Section 6.6 Declared vs. Undeclared Functions</a><a href="section-6.8.xhtml" style="margin-right: 10px;">Next Section 6.8 Delayed Assignments vs. Functions with No Arguments</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.8.xhtml
new file mode 100644
index 0000000..0eb87bf
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.8.xhtml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.7.xhtml" style="margin-right: 10px;">Previous Section 6.7 Functions vs. Operations</a><a href="section-6.9.xhtml" style="margin-right: 10px;">Next Section 6.9 How Axiom Determines What Function to Use</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.8">
+<h2 class="sectiontitle">6.8  Delayed Assignments vs. Functions with No Arguments</h2>
+
+
+<a name="ugUserDelay" class="label"/>
+
+
+<p>In <a href="section-5.1.xhtml#ugLangAssign" class="ref" >ugLangAssign</a>  we discussed the
+difference between immediate and <span class="index">function:with no arguments</span><a name="chapter-6-13"/>
+delayed assignments.  In this section we show the difference between
+delayed assignments and functions of no arguments.
+</p>
+
+
+<p>A function of no arguments is sometimes called a <span class="italic">nullary function.</span>
+</p>
+
+
+
+<div id="spadComm6-44" class="spadComm" >
+<form id="formComm6-44" action="javascript:makeRequest('6-44');" >
+<input id="comm6-44" type="text" class="command" style="width: 14em;" value="sin24() == sin(24.0)" />
+</form>
+<span id="commSav6-44" class="commSav" >sin24() == sin(24.0)</span>
+<div id="mathAns6-44" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>You must use the parentheses ``<span class="teletype">()</span>'' to evaluate it.  Like a
+delayed assignment, the right-hand-side of a function evaluation is
+not evaluated until the left-hand-side is used.
+</p>
+
+
+
+<div id="spadComm6-45" class="spadComm" >
+<form id="formComm6-45" action="javascript:makeRequest('6-45');" >
+<input id="comm6-45" type="text" class="command" style="width: 5em;" value="sin24()" />
+</form>
+<span id="commSav6-45" class="commSav" >sin24()</span>
+<div id="mathAns6-45" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;sin24&nbsp;with&nbsp;type&nbsp;()&nbsp;-&gt;&nbsp;Float&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>9055783620</mn><mo></mo><mn>0662384514</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>If you omit the parentheses, you just get the function definition.
+</p>
+
+
+
+<div id="spadComm6-46" class="spadComm" >
+<form id="formComm6-46" action="javascript:makeRequest('6-46');" >
+<input id="comm6-46" type="text" class="command" style="width: 4em;" value="sin24" />
+</form>
+<span id="commSav6-46" class="commSav" >sin24</span>
+<div id="mathAns6-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>sin24</mi><mo></mo><mrow><mo>(</mo><mo>)</mo></mrow><mo></mo><mo>=</mo><mo>=</mo><mo></mo><mrow><mo>sin</mo><mo>(</mo><mrow><mn>24</mn><mo>.</mo><mn>0</mn></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FunctionCalled sin24
+</div>
+
+
+
+<p>You do not use the parentheses ``<span class="teletype">()</span>'' in a delayed assignment...
+</p>
+
+
+
+
+<div id="spadComm6-47" class="spadComm" >
+<form id="formComm6-47" action="javascript:makeRequest('6-47');" >
+<input id="comm6-47" type="text" class="command" style="width: 12em;" value="cos24 == cos(24.0)" />
+</form>
+<span id="commSav6-47" class="commSav" >cos24 == cos(24.0)</span>
+<div id="mathAns6-47" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>nor in the evaluation.
+</p>
+
+
+
+
+<div id="spadComm6-48" class="spadComm" >
+<form id="formComm6-48" action="javascript:makeRequest('6-48');" >
+<input id="comm6-48" type="text" class="command" style="width: 4em;" value="cos24" />
+</form>
+<span id="commSav6-48" class="commSav" >cos24</span>
+<div id="mathAns6-48" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;cos24&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;Float&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>4241790073</mn><mo></mo><mn>3699697594</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The only syntactic difference between delayed assignments
+and nullary functions is that you use ``<span class="teletype">()</span>'' in the latter case.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.7.xhtml" style="margin-right: 10px;">Previous Section 6.7 Functions vs. Operations</a><a href="section-6.9.xhtml" style="margin-right: 10px;">Next Section 6.9 How Axiom Determines What Function to Use</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-6.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-6.9.xhtml
new file mode 100644
index 0000000..d8aa4b5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-6.9.xhtml
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section6.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.8.xhtml" style="margin-right: 10px;">Previous Section 6.8 Delayed Assignments vs. Functions with No Arguments</a><a href="section-6.10.xhtml" style="margin-right: 10px;">Next Section 6.10 Compiling vs. Interpreting</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-6.9">
+<h2 class="sectiontitle">6.9  How Axiom Determines What Function to Use</h2>
+
+
+<a name="ugUserUse" class="label"/>
+
+
+<p>What happens if you define a function that has the same name as a
+library function?  Well, if your function has the same name and number
+of arguments (we sometimes say <span class="italic">arity</span>) as another function in the
+library, then your function covers up the library function.  If you
+want then to call the library function, you will have to <span class="slant">package-call</span>
+it.  Axiom can use both the functions you write and those that come
+from the library.  Let's do a simple example to illustrate this.
+</p>
+
+
+<p>Suppose you (wrongly!) define <span style="font-weight: bold;"> sin</span> in this way.
+</p>
+
+
+
+<div id="spadComm6-49" class="spadComm" >
+<form id="formComm6-49" action="javascript:makeRequest('6-49');" >
+<input id="comm6-49" type="text" class="command" style="width: 8em;" value="sin x == 1.0" />
+</form>
+<span id="commSav6-49" class="commSav" >sin x == 1.0</span>
+<div id="mathAns6-49" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The value <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math> is returned for any argument.
+</p>
+
+
+
+<div id="spadComm6-50" class="spadComm" >
+<form id="formComm6-50" action="javascript:makeRequest('6-50');" >
+<input id="comm6-50" type="text" class="command" style="width: 5em;" value="sin 4.3" />
+</form>
+<span id="commSav6-50" class="commSav" >sin 4.3</span>
+<div id="mathAns6-50" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;sin&nbsp;with&nbsp;type&nbsp;Float&nbsp;-&gt;&nbsp;Float&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>If you want the library operation, we have to package-call it
+(see <a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a> 
+for more information).
+</p>
+
+
+
+<div id="spadComm6-51" class="spadComm" >
+<form id="formComm6-51" action="javascript:makeRequest('6-51');" >
+<input id="comm6-51" type="text" class="command" style="width: 10em;" value="sin(4.3) $Float" />
+</form>
+<span id="commSav6-51" class="commSav" >sin(4.3) $Float</span>
+<div id="mathAns6-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>9161659367</mn><mn>4945498404</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm6-52" class="spadComm" >
+<form id="formComm6-52" action="javascript:makeRequest('6-52');" >
+<input id="comm6-52" type="text" class="command" style="width: 11em;" value="sin(34.6) $Float" />
+</form>
+<span id="commSav6-52" class="commSav" >sin(34.6) $Float</span>
+<div id="mathAns6-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>0424680347</mn><mn>1695010154</mn><mn>3</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Even worse, say we accidentally used the same name as a library
+function in the function.
+</p>
+
+
+
+<div id="spadComm6-53" class="spadComm" >
+<form id="formComm6-53" action="javascript:makeRequest('6-53');" >
+<input id="comm6-53" type="text" class="command" style="width: 10em;" value="sin x == sin x" />
+</form>
+<span id="commSav6-53" class="commSav" >sin x == sin x</span>
+<div id="mathAns6-53" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;sin&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;sin&nbsp;<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Then Axiom definitely does not understand us.
+</p>
+
+
+
+<div id="spadComm6-54" class="spadComm" >
+<form id="formComm6-54" action="javascript:makeRequest('6-54');" >
+<input id="comm6-54" type="text" class="command" style="width: 5em;" value="sin 4.3" />
+</form>
+<span id="commSav6-54" class="commSav" >sin 4.3</span>
+<div id="mathAns6-54" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+AXIOM&nbsp;cannot&nbsp;determine&nbsp;the&nbsp;type&nbsp;of&nbsp;sin&nbsp;because&nbsp;it&nbsp;cannot&nbsp;analyze&nbsp;<br />
+&nbsp;&nbsp;&nbsp;the&nbsp;non-recursive&nbsp;part,&nbsp;if&nbsp;that&nbsp;exists.&nbsp;This&nbsp;may&nbsp;be&nbsp;remedied&nbsp;<br />
+&nbsp;&nbsp;&nbsp;by&nbsp;declaring&nbsp;the&nbsp;function.<br />
+</div>
+
+
+
+<p>Again, we could package-call the inside function.
+</p>
+
+
+
+<div id="spadComm6-55" class="spadComm" >
+<form id="formComm6-55" action="javascript:makeRequest('6-55');" >
+<input id="comm6-55" type="text" class="command" style="width: 15em;" value="sin x == sin(x) $Float" />
+</form>
+<span id="commSav6-55" class="commSav" >sin x == sin(x) $Float</span>
+<div id="mathAns6-55" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;sin&nbsp;<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm6-56" class="spadComm" >
+<form id="formComm6-56" action="javascript:makeRequest('6-56');" >
+<input id="comm6-56" type="text" class="command" style="width: 5em;" value="sin 4.3" />
+</form>
+<span id="commSav6-56" class="commSav" >sin 4.3</span>
+<div id="mathAns6-56" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;sin&nbsp;with&nbsp;type&nbsp;Float&nbsp;-&gt;&nbsp;Float&nbsp;<br />
+<br />
++++&nbsp;|*1;sin;1;G82322|&nbsp;redefined<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>9161659367</mn><mn>4945498404</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Of course, you are unlikely to make such obvious errors.  It is more
+probable that you would write a function and in the body use a
+function that you think is a library function.  If you had also
+written a function by that same name, the library function would be
+invisible.
+</p>
+
+
+<p>How does Axiom determine what library function to call?  It very much
+depends on the particular example, but the simple case of creating the
+polynomial <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>+</mo><mn>2</mn><mo>/</mo><mn>3</mn></mrow></mstyle></math> will give you an idea.
+</p>
+
+
+
+<ol>
+<li>
+ The <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is analyzed and its default type is
+<span class="teletype">Variable(x)</span>.
+</li>
+<li> The <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math> is analyzed and its default type is
+<span class="teletype">PositiveInteger</span>.
+</li>
+<li> The <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math> is analyzed and its default type is
+<span class="teletype">PositiveInteger</span>.
+</li>
+<li> Because the arguments to ``<span class="teletype">/</span>'' are integers, Axiom
+gives the expression <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>/</mo><mn>3</mn></mrow></mstyle></math> a default target type of
+<span class="teletype">Fraction(Integer)</span>.
+</li>
+<li> Axiom looks in <span class="teletype">PositiveInteger</span> for ``<span class="teletype">/</span>''.
+It is not found.
+</li>
+<li> Axiom looks in <span class="teletype">Fraction(Integer)</span> for ``<span class="teletype">/</span>''.
+It is found for arguments of type <span class="teletype">Integer</span>.
+</li>
+<li> The <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math> and <math xmlns="&mathml;" mathsize="big"><mstyle><mn>3</mn></mstyle></math> are converted to objects of type
+<span class="teletype">Integer</span> (this is trivial) and ``<span class="teletype">/</span>'' is applied,
+creating an object of type <span class="teletype">Fraction(Integer)</span>.
+</li>
+<li> No ``<span class="teletype">+</span>'' for arguments of types <span class="teletype">Variable(x)</span> and
+<span class="teletype">Fraction(Integer)</span> are found in either domain.
+</li>
+<li> Axiom resolves
+<span class="index">resolve</span><a name="chapter-6-14"/>
+(see <a href="section-2.10.xhtml#ugTypesResolve" class="ref" >ugTypesResolve</a> )
+the types and gets <span class="teletype">Polynomial (Fraction (Integer))</span>.
+</li>
+<li> The <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and the <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>/</mo><mn>3</mn></mrow></mstyle></math> are converted to objects of this
+type and <span class="teletype">+</span> is applied, yielding the answer, an object of type
+<span class="teletype">Polynomial (Fraction (Integer))</span>.
+</li>
+</ol>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-6.8.xhtml" style="margin-right: 10px;">Previous Section 6.8 Delayed Assignments vs. Functions with No Arguments</a><a href="section-6.10.xhtml" style="margin-right: 10px;">Next Section 6.10 Compiling vs. Interpreting</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-7.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-7.0.xhtml
new file mode 100644
index 0000000..17a1d77
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-7.0.xhtml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section7.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.21.xhtml" style="margin-right: 10px;">Previous Section 6.21  Rules and Pattern Matching</a><a href="section-7.1.xhtml" style="margin-right: 10px;">Next Section 7.1 Two-Dimensional Graphics</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-7.0">
+<h2 class="sectiontitle">7.0 Graphics</h2>
+<a name="ugGraph" class="label"/>
+
+<div class="image">
+<img src="ps/torusKnot.png" alt="picture"/>
+<div class="figcaption">Torus knot of type (15,17).</div>
+</div>
+
+<p>This chapter shows how to use the Axiom graphics facilities
+<span class="index">graphics</span><a name="chapter-7-0"/> under the X Window System.  Axiom has
+two-dimensional and three-dimensional drawing and
+rendering packages that allow the drawing, coloring, transforming,
+mapping, clipping, and combining of graphic output from Axiom
+computations.  This facility is particularly useful for investigating
+problems in areas such as topology.  The graphics package is capable
+of plotting functions of one or more variables or plotting parametric
+surfaces and curves.  Various coordinate systems are also available,
+such as polar and spherical.
+</p>
+
+
+<p>A graph is displayed in a viewport window and it has a
+<span class="index">viewport</span><a name="chapter-7-1"/> control-panel that uses interactive mouse commands.
+PostScript and other output forms are available so that Axiom
+<span class="index">PostScript</span><a name="chapter-7-2"/> images can be printed or used by other programs.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-6.21.xhtml" style="margin-right: 10px;">Previous Section 6.21  Rules and Pattern Matching</a><a href="section-7.1.xhtml" style="margin-right: 10px;">Next Section 7.1 Two-Dimensional Graphics</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-7.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-7.1.xhtml
new file mode 100644
index 0000000..afb682c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-7.1.xhtml
@@ -0,0 +1,2763 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section7.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-7.0.xhtml" style="margin-right: 10px;">Previous Section 7.0 Graphics</a><a href="section-7.2.xhtml" style="margin-right: 10px;">Next Section 7.2 Three-Dimensional Graphics</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-7.1">
+<h2 class="sectiontitle">7.1  Two-Dimensional Graphics</h2>
+
+
+<a name="ugGraphTwoD" class="label"/>
+
+
+<p>The Axiom two-dimensional graphics package provides the ability
+to <span class="index">graphics:two-dimensional</span><a name="chapter-7-3"/> display
+</p>
+
+
+
+<ul>
+<li>
+ curves defined by functions of a single real variable
+</li>
+<li> curves defined by parametric equations
+</li>
+<li> implicit non-singular curves defined by polynomial equations
+</li>
+<li> planar graphs generated from lists of point components.
+</li>
+</ul>
+
+
+
+<p>These graphs can be modified by specifying various options, such as
+calculating points in the polar coordinate system or changing the size
+of the graph viewport window.
+</p>
+
+
+
+<a name="subsec-7.1.1"/>
+<div class="subsection"  id="subsec-7.1.1">
+<h3 class="subsectitle">7.1.1  Plotting Two-Dimensional Functions of One Variable</h3>
+
+
+<a name="ugGraphTwoDPlot" class="label"/>
+
+
+<p><span class="index">curve:one variable function</span><a name="chapter-7-4"/> The first kind of
+two-dimensional graph is that of a curve defined by a function
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> over a finite interval of the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> axis.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The general format for drawing a function defined by a formula  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> is:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">draw(f(x), x = a..b, <span class="italic">options</span>)</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>where  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math> defines the range of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>, and where <span class="italic">options</span>
+prescribes zero or more options as described in
+<a href="section-7.1.xhtml#ugGraphTwoDOptions" class="ref" >ugGraphTwoDOptions</a> .  An
+example of an option is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>curveColor</mi><mo>=</mo><mo>=</mo><mi>bright</mi><mi>red</mi><mo>(</mo><mo>)</mo><mo>.</mo></mrow></mstyle></math> An alternative
+format involving functions  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> is also available.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>A simple way to plot a function is to use a formula.  The first
+argument is the formula.  For the second argument, write the name of
+the independent variable (here,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>), followed by an ``<span class="teletype">=</span>'', and the
+range of values.
+</p>
+
+
+<p>Display this formula over the range  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>&#x2264;</mo><mi>x</mi><mo>&#x2264;</mo><mn>6</mn></mrow></mstyle></math>.
+Axiom converts your formula to a compiled function so that the
+results can be computed quickly and efficiently. 
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 20em">
+draw(sin(tan(x)) - tan(sin(x)),x = 0..6)
+</div>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<p>Once again the formula is converted to a compiled function before any
+points were computed.  If you want to graph the same function on
+several intervals, it is a good idea to define the function first so
+that the function has to be compiled only once.
+</p>
+
+
+<p>This time we first define the function.
+</p>
+
+
+
+<div id="spadComm7-1" class="spadComm" >
+<form id="formComm7-1" action="javascript:makeRequest('7-1');" >
+<input id="comm7-1" type="text" class="command" style="width: 18em;" value="f(x) == (x-1)*(x-2)*(x-3) " />
+</form>
+<span id="commSav7-1" class="commSav" >f(x) == (x-1)*(x-2)*(x-3) </span>
+<div id="mathAns7-1" ></div>
+</div>
+
+
+
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<p>To draw the function, the first argument is its name and the second is
+just the range with no independent variable.
+</p>
+
+
+
+<div class="spadgraph" style="width: 7em">
+draw(f, 0..4) 
+</div>
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.1.2"/>
+<div class="subsection"  id="subsec-7.1.2">
+<h3 class="subsectitle">7.1.2  Plotting Two-Dimensional Parametric Plane Curves</h3>
+
+
+<a name="ugGraphTwoDPar" class="label"/>
+
+
+<p>The second kind of two-dimensional graph is that of
+<span class="index">parametric plane curve</span><a name="chapter-7-5"/> curves produced by parametric
+equations.  <span class="index">curve:parametric plane</span><a name="chapter-7-6"/> Let  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>f</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> and 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mi>g</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> be formulas or two functions  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> as the parameter  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math>
+ranges over an interval  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>]</mo></mrow></mstyle></math>.  The function <span style="font-weight: bold;"> curve</span> takes the
+two functions  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> as its parameters.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The general format for drawing a two-dimensional plane curve defined by
+parametric formulas  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>f</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mi>g</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> is:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">draw(curve(f(t), g(t)), t = a..b, <span class="italic">options</span>)</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>where  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math> defines the range of the independent variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math>, and
+where <span class="italic">options</span> prescribes zero or more options as described in
+<a href="section-7.2.xhtml#ugGraphThreeDOptions" class="ref" >ugGraphThreeDOptions</a> .  An
+example of an option is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>curveColor</mi><mo>=</mo><mo>=</mo><mi>bright</mi><mi>red</mi><mo>(</mo><mo>)</mo><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+</div>
+</div>
+
+
+
+<p>Here's an example:
+</p>
+
+
+<p>Define a parametric curve using a range involving  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>pi</mi></mrow></mstyle></math>, Axiom's way
+of saying  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math>.  For parametric curves, Axiom
+compiles two functions, one for each of the functions  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math>.
+</p>
+
+
+
+<div class="spadgraph" style="width: 40em">
+draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*%pi)
+</div>
+
+
+
+
+
+<p>The title may be an arbitrary string and is an optional argument to
+the <span style="font-weight: bold;"> draw</span> command.
+</p>
+
+
+
+<div class="spadgraph" style="width: 21em">
+draw(curve(cos(t), sin(t)), t = 0..2*%pi)
+</div>
+
+
+
+
+
+<p>If you plan on plotting  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>f</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mi>g</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> as  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math> ranges over
+several intervals, you may want to define functions  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> first,
+so that they need not be recompiled every time you create a new graph.
+Here's an example:
+</p>
+
+
+<p>As before, you can first define the functions you wish to draw.
+</p>
+
+
+
+<div id="spadComm7-2" class="spadComm" >
+<form id="formComm7-2" action="javascript:makeRequest('7-2');" >
+<input id="comm7-2" type="text" class="command" style="width: 22em;" value="f(t:DFLOAT):DFLOAT == sin(3*t/4) " />
+</form>
+<span id="commSav7-2" class="commSav" >f(t:DFLOAT):DFLOAT == sin(3*t/4) </span>
+<div id="mathAns7-2" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;f&nbsp;:&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;has&nbsp;been&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Axiom compiles them to map <span class="teletype">DoubleFloat</span> values to <span class="teletype">DoubleFloat</span> 
+values.
+</p>
+
+
+
+<div id="spadComm7-3" class="spadComm" >
+<form id="formComm7-3" action="javascript:makeRequest('7-3');" >
+<input id="comm7-3" type="text" class="command" style="width: 20em;" value="g(t:DFLOAT):DFLOAT == sin(t) " />
+</form>
+<span id="commSav7-3" class="commSav" >g(t:DFLOAT):DFLOAT == sin(t) </span>
+<div id="mathAns7-3" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;f&nbsp;:&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;has&nbsp;been&nbsp;added&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Give to <span class="teletype">curve</span> the names of the functions, then write the range
+without the name of the independent variable.
+</p>
+
+
+
+<div class="spadgraph" style="width: 13em">
+draw(curve(f,g),0..%pi) 
+</div>
+
+
+
+
+
+<p>Here is another look at the same curve but over a different
+range. Notice that  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> are not recompiled.  Also note that
+Axiom provides a default title based on the first function specified
+in <span style="font-weight: bold;"> curve</span>.
+</p>
+
+
+
+<div class="spadgraph" style="width: 17em">
+draw(curve(f,g),-4*%pi..4*%pi) 
+</div>
+
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.1.3"/>
+<div class="subsection"  id="subsec-7.1.3">
+<h3 class="subsectitle">7.1.3  Plotting Plane Algebraic Curves</h3>
+
+
+<a name="ugGraphTwoDPlane" class="label"/>
+
+
+<p>A third kind of two-dimensional graph is a non-singular
+``solution curve'' <span class="index">curve:plane algebraic</span><a name="chapter-7-7"/> in a rectangular
+region of the plane.  A solution curve is a curve defined by a
+polynomial equation  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo><mo>=</mo><mn>0</mn></mrow></mstyle></math>.  <span class="index">plane algebraic curve</span><a name="chapter-7-8"/>
+Non-singular means that the curve is ``smooth'' in that it does not
+cross itself or come to a point (cusp).  Algebraically, this means
+that for any point  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> on the curve, that is, a point such that
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo><mo>=</mo><mn>0</mn></mrow></mstyle></math>, the partial derivatives 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mfrac><mrow><mo>&#x2202;</mo><mi>p</mi></mrow><mrow><mo>&#x2202;</mo><mi>x</mi></mrow></mfrac><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> and 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mfrac><mrow><mo>&#x2202;</mo><mi>p</mi></mrow><mrow><mo>&#x2202;</mo><mi>y</mi></mrow></mfrac><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> are not both zero.
+<span class="index">curve:smooth</span><a name="chapter-7-9"/> <span class="index">curve:non-singular</span><a name="chapter-7-10"/> <span class="index">smooth curve</span><a name="chapter-7-11"/>
+<span class="index">non-singular curve</span><a name="chapter-7-12"/>
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The general format for drawing a non-singular solution curve given by
+a polynomial of the form  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo><mo>=</mo><mn>0</mn></mrow></mstyle></math> is:
+</p>
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">draw(p(x,y) = 0, x, y, range == [a..b, c..d], <span class="italic">options</span>)</span>
+</p>
+
+
+
+</div>
+
+
+
+<p>where the second and third arguments name the first and second
+independent variables of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>.  A <span class="teletype">range</span> option is always given to
+designate a bounding rectangular region of the plane
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>&#x2264;</mo><mi>x</mi><mo>&#x2264;</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>&#x2264;</mo><mi>y</mi><mo>&#x2264;</mo><mi>d</mi></mrow></mstyle></math>.
+Zero or more additional options as described in
+<a href="section-7.1.xhtml#ugGraphTwoDOptions" class="ref" >ugGraphTwoDOptions</a>  may be given.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>We require that the polynomial has rational or integral coefficients.
+Here is an algebraic curve example (``Cartesian ovals''):
+<span class="index">Cartesian:ovals</span><a name="chapter-7-13"/>
+</p>
+
+
+
+
+<div id="spadComm7-4" class="spadComm" >
+<form id="formComm7-4" action="javascript:makeRequest('7-4');" >
+<input id="comm7-4" type="text" class="command" style="width: 43em;" value="p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1)-4*x-1) " />
+</form>
+<span id="commSav7-4" class="commSav" >p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1)-4*x-1) </span>
+<div id="mathAns7-4" ></div>
+</div>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>6</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>58</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>6</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>The first argument is always expressed as an equation of the form  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>
+where  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> is a polynomial.
+</p>
+
+
+
+<div class="spadgraph" style="width: 22em">
+draw(p = 0, x, y, range == [-1..11, -7..7]) 
+</div>
+
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.1.4"/>
+<div class="subsection"  id="subsec-7.1.4">
+<h3 class="subsectitle">7.1.4  Two-Dimensional Options</h3>
+
+
+<a name="ugGraphTwoDOptions" class="label"/>
+
+
+<p>The <span style="font-weight: bold;"> draw</span> commands take an optional list of options, such as <span class="teletype">title</span> shown above.  Each option is given by the syntax: 
+<span class="italic">name</span> <span class="teletype">==</span> <span class="italic">value</span>.  
+Here is a list of the available options in the
+order that they are described below.
+</p>
+
+
+<p><table class="begintabular">
+<tr><td>adaptive</td><td>clip</td><td>unit</td></tr>
+<tr><td>clip</td><td>curveColor</td><td>range</td></tr>
+<tr><td>toScale</td><td>pointColor</td><td>coordinates</td></tr>
+</table>
+</p>
+
+
+<p>The  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>adaptive</mi></mstyle></math> option turns adaptive plotting on or off.
+<span class="index">adaptive plotting</span><a name="chapter-7-14"/> Adaptive plotting uses an algorithm that
+traverses a graph and computes more points for those parts of the
+graph with high curvature.  The higher the curvature of a region is,
+the more points the algorithm computes.  
+<span class="index">graphics:2D options:adaptive</span><a name="chapter-7-15"/>
+</p>
+
+
+<p>The <span class="teletype">adaptive</span> option is normally on.  Here we turn it off.
+</p>
+
+
+
+<div class="spadgraph" style="width: 26em">
+draw(sin(1/x),x=-2*%pi..2*%pi, adaptive == false)
+</div>
+
+
+
+
+
+
+<p>The <span class="teletype">clip</span> option turns clipping on or off.  
+<span class="index">graphics:2D options:clipping</span><a name="chapter-7-16"/> 
+If on, large values are cut off according to
+<span class="spadfunFrom" >clipPointsDefault</span><span class="index">clipPointsDefault</span><a name="chapter-7-17"/><span class="index">GraphicsDefaults</span><a name="chapter-7-18"/>.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 22em">
+draw(tan(x),x=-2*%pi..2*%pi, clip == true)
+</div>
+
+
+
+
+
+
+<p>Option <span class="teletype">toScale</span> does plotting to scale if <span class="teletype">true</span> or uses the
+entire viewport if <span class="teletype">false</span>.  The default can be determined using
+<span class="spadfunFrom" >drawToScale</span><span class="index">drawToScale</span><a name="chapter-7-19"/><span class="index">GraphicsDefaults</span><a name="chapter-7-20"/>.  
+<span class="index">graphics:2D options:to scale</span><a name="chapter-7-21"/>
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 31em">
+draw(sin(x),x=-%pi..%pi, toScale == true, unit == [1.0,1.0])
+</div>
+
+
+
+
+
+
+<p>Option <span class="teletype">clip</span> with a range sets point clipping of a graph within
+the <span class="index">graphics:2D options:clip in a range</span><a name="chapter-7-22"/> ranges specified in
+the list  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>x</mi><mi>range</mi><mo>,</mo><mi>y</mi><mi>range</mi><mo>]</mo></mrow></mstyle></math>.  <span class="index">clipping</span><a name="chapter-7-23"/> If only one range is
+specified, clipping applies to the y-axis.
+</p>
+
+
+
+<div class="spadgraph" style="width: 44em">
+draw(sec(x),x=-2*%pi..2*%pi, clip == [-2*%pi..2*%pi,-%pi..%pi], unit == [1.0,1.0])
+</div>
+
+
+
+
+
+
+<p>Option <span class="teletype">curveColor</span> sets the color of the graph curves or lines to
+be the <span class="index">graphics:2D options:curve color</span><a name="chapter-7-24"/> indicated palette color
+<span class="index">curve:color</span><a name="chapter-7-25"/> (see <a href="section-7.1.xhtml#ugGraphColor" class="ref" >ugGraphColor</a>  and
+<a href="section-7.1.xhtml#ugGraphColorPalette" class="ref" >ugGraphColorPalette</a> ).  
+<span class="index">color:curve</span><a name="chapter-7-26"/>
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 27em">
+draw(sin(x),x=-%pi..%pi, curveColor == bright red())
+</div>
+
+
+
+
+
+
+<p>Option <span class="teletype">pointColor</span> sets the color of the graph points to the
+indicated <span class="index">graphics:2D options:point color</span><a name="chapter-7-27"/> palette color (see
+<a href="section-7.1.xhtml#ugGraphColor" class="ref" >ugGraphColor</a>  and 
+<a href="section-7.1.xhtml#ugGraphColorPalette" class="ref" >ugGraphColorPalette</a> ).
+<span class="index">color:point</span><a name="chapter-7-28"/>
+</p>
+
+
+
+<div class="spadgraph" style="width: 29em">
+draw(sin(x),x=-%pi..%pi, pointColor == pastel yellow())
+</div>
+
+
+
+
+
+
+<p>Option <span class="teletype">unit</span> sets the intervals at which the axis units are
+plotted <span class="index">graphics:2D options:set units</span><a name="chapter-7-29"/> according to the
+indicated steps [ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> interval,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> interval].
+</p>
+
+
+
+<div class="spadgraph" style="width: 37em">
+draw(curve(9*sin(3*t/4),8*sin(t)), t = -4*%pi..4*%pi, unit == [2.0,1.0])
+</div>
+
+
+
+
+
+
+<p>Option <span class="teletype">range</span> sets the range of variables in a graph to be within
+the ranges <span class="index">graphics:2D options:range</span><a name="chapter-7-30"/> for solving plane
+algebraic curve plots.
+</p>
+
+
+
+<div class="spadgraph" style="width: 39em">
+draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1], unit==[1.0,1.0])
+</div>
+
+
+
+
+
+
+<p>A second example of a solution plot.
+</p>
+
+
+
+<div class="spadgraph" style="width: 38em">
+draw(x**2 + y**2 = 1, x, y, range == [-3/2..3/2,-3/2..3/2], unit==[0.5,0.5])
+</div>
+
+
+
+
+
+
+<p>Option  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>coordinates</mi></mstyle></math> indicates the coordinate system in which the
+graph <span class="index">graphics:2D options:coordinates</span><a name="chapter-7-31"/> is plotted.  The default
+is to use the Cartesian coordinate system.
+<span class="index">Cartesian:coordinate system</span><a name="chapter-7-32"/> For more details, see
+<a href="section-7.2.xhtml#ugGraphCoord" class="ref" >ugGraphCoord</a>  
+or <span class="teletype">CoordinateSystems</span>.
+<span class="index">coordinate system:Cartesian</span><a name="chapter-7-33"/>
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 29em">
+draw(curve(sin(5*t),t),t=0..2*%pi, coordinates == polar)
+</div>
+
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.1.5"/>
+<div class="subsection"  id="subsec-7.1.5">
+<h3 class="subsectitle">7.1.5  Color</h3>
+
+
+<a name="ugGraphColor" class="label"/>
+
+
+<p>The domain <span class="teletype">Color</span> <span class="index">Color</span><a name="chapter-7-34"/> provides operations for
+manipulating <span class="index">graphics:color</span><a name="chapter-7-35"/> colors in two-dimensional
+graphs.  <span class="index">color</span><a name="chapter-7-36"/> Colors are objects of <span class="teletype">Color</span>.  Each color
+has a <span class="italic">hue</span> and a <span class="italic">weight</span>.  <span class="index">hue</span><a name="chapter-7-37"/> Hues are represented
+by integers that range from  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> to the
+<span class="spadfunFrom" >numberOfHues()</span><span class="index">numberOfHues()</span><a name="chapter-7-38"/><span class="index">Color</span><a name="chapter-7-39"/>, normally
+<span class="index">graphics:color:number of hues</span><a name="chapter-7-40"/>  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>27</mn></mstyle></math>.  <span class="index">weight</span><a name="chapter-7-41"/> Weights
+are floats and have the value  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math> by default.
+</p>
+
+
+<p><dl>
+<dt><span style="font-weight: bold;"> color</span>&nbsp;<span class="funArgs">(integer)</span></dt>
+<dd>
+creates a color of hue <span class="italic">integer</span> and weight  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>.
+</dd>
+<dt><span style="font-weight: bold;"> hue</span>&nbsp;<span class="funArgs">(color)</span></dt>
+<dd>
+returns the hue of <span class="italic">color</span> as an integer.
+<span class="index">graphics:color:hue function</span><a name="chapter-7-42"/>
+</dd>
+<dt><span style="font-weight: bold;"> red</span>&nbsp;<span class="funArgs">()</span></dt>
+<dd>
+<span class="bold">blue</span>(),
+<span class="bold">green</span>(), and <span class="bold">yellow</span>()
+<span class="index">graphics:color:primary color functions</span><a name="chapter-7-43"/>
+create colors of that hue with weight  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>.
+</dd>
+<dt> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>color</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math> <span class="teletype">+</span>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>color</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math></dt>
+<dd> returns the
+color that results from additively combining the indicated
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>color</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>color</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>.
+Color addition is not commutative: changing the order of the arguments
+produces different results.
+</dd>
+<dt><span class="italic">integer</span> <span class="teletype">*</span> <span class="italic">color</span></dt>
+<dd>
+changes the weight of <span class="italic">color</span> by <span class="italic">integer</span>
+without affecting its hue.
+<span class="index">graphics:color:multiply function</span><a name="chapter-7-44"/>
+For example,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>red</mi><mo>(</mo><mo>)</mo><mo>+</mo><mn>3</mn><mo>*</mo><mi>yellow</mi><mo>(</mo><mo>)</mo></mrow></mstyle></math> produces a color closer to yellow than to red.
+Color multiplication is not associative: changing the order of grouping
+<span class="index">color:multiplication</span><a name="chapter-7-45"/>
+produces different results.
+</dd>
+</dl>
+</p>
+
+
+<p>These functions can be used to change the point and curve colors
+for two- and three-dimensional graphs.
+Use the <span class="teletype">pointColor</span> option for points.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 20em">
+draw(x**2,x=-1..1,pointColor == green())
+</div>
+
+
+
+
+
+
+
+<p>Use the <span class="teletype">curveColor</span> option for curves.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 27em">
+draw(x**2,x=-1..1,curveColor == color(13) + 2*blue())
+</div>
+
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.1.6"/>
+<div class="subsection"  id="subsec-7.1.6">
+<h3 class="subsectitle">7.1.6  Palette</h3>
+
+
+<a name="ugGraphColorPalette" class="label"/>
+
+<p><span class="index">graphics:palette</span><a name="chapter-7-46"/>
+</p>
+
+
+<p>Domain <span class="teletype">Palette</span> is the domain of shades of colors:
+<span style="font-weight: bold;"> dark</span>, <span style="font-weight: bold;"> dim</span>, <span style="font-weight: bold;"> bright</span>, <span style="font-weight: bold;"> pastel</span>, and <span style="font-weight: bold;"> light</span>,
+designated by the integers  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> through  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>5</mn></mstyle></math>, respectively.
+<span class="index">Palette</span><a name="chapter-7-47"/>
+</p>
+
+
+<p>Colors are normally ``bright.''
+</p>
+
+
+
+
+<div id="spadComm7-5" class="spadComm" >
+<form id="formComm7-5" action="javascript:makeRequest('7-5');" >
+<input id="comm7-5" type="text" class="command" style="width: 8em;" value="shade red()" />
+</form>
+<span id="commSav7-5" class="commSav" >shade red()</span>
+<div id="mathAns7-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>To change the shade of a color, apply the name of a shade to it.
+<span class="index">color:shade</span><a name="chapter-7-48"/>
+<span class="index">shade</span><a name="chapter-7-49"/>
+</p>
+
+
+
+
+<div id="spadComm7-6" class="spadComm" >
+<form id="formComm7-6" action="javascript:makeRequest('7-6');" >
+<input id="comm7-6" type="text" class="command" style="width: 21em;" value="myFavoriteColor := dark blue() " />
+</form>
+<span id="commSav7-6" class="commSav" >myFavoriteColor := dark blue() </span>
+<div id="mathAns7-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><mtext>Hue:</mtext></mrow><mspace width="0.5 em" /><mn>22</mn><mspace width="0.5 em" /><mrow><mtext>Weight:</mtext></mrow><mspace width="0.5 em" /><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mo>]</mo><mrow><mtext>from</mtext></mrow><mspace width="0.5 em" /><mrow><mtext>the</mtext></mrow><mspace width="0.5 em" /><mrow><mtext mathvariant='sans-serif-italic'>Dark</mtext></mrow><mspace width="0.5 em" /><mrow><mtext>palette</mtext></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Palette
+</div>
+
+
+
+<p>The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>shade</mi><mo>(</mo><mi>color</mi><mo>)</mo></mrow></mstyle></math>
+returns the value of a shade of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>color</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm7-7" class="spadComm" >
+<form id="formComm7-7" action="javascript:makeRequest('7-7');" >
+<input id="comm7-7" type="text" class="command" style="width: 15em;" value="shade myFavoriteColor " />
+</form>
+<span id="commSav7-7" class="commSav" >shade myFavoriteColor </span>
+<div id="mathAns7-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>hue</mi><mo>(</mo><mi>color</mi><mo>)</mo></mrow></mstyle></math> returns its hue.
+</p>
+
+
+
+
+<div id="spadComm7-8" class="spadComm" >
+<form id="formComm7-8" action="javascript:makeRequest('7-8');" >
+<input id="comm7-8" type="text" class="command" style="width: 14em;" value="hue myFavoriteColor " />
+</form>
+<span id="commSav7-8" class="commSav" >hue myFavoriteColor </span>
+<div id="mathAns7-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mtext>Hue:</mtext></mrow><mspace width="0.5 em" /><mn>22</mn><mspace width="0.5 em" /><mrow><mtext>Weight:</mtext></mrow><mspace width="0.5 em" /><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Color
+</div>
+
+
+
+<p>Palettes can be used in specifying colors in two-dimensional graphs.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 22em">
+draw(x**2,x=-1..1,curveColor == dark blue())
+</div>
+
+
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.1.7"/>
+<div class="subsection"  id="subsec-7.1.7">
+<h3 class="subsectitle">7.1.7  Two-Dimensional Control-Panel</h3>
+
+
+<a name="ugGraphTwoDControl" class="label"/>
+
+
+<p><span class="index">graphics:2D control-panel</span><a name="chapter-7-50"/>
+Once you have created a viewport, move your mouse to the viewport and click
+with your left mouse button to display a control-panel.
+The panel is displayed on the side of the viewport closest to
+where you clicked.  Each of the buttons which toggle on and off show the
+current state of the graph.
+</p>
+
+
+
+
+<a name="subsubsec-7.1.7.1"/>
+<div class="subsubsection"  id="subsubsec-7.1.7.1">
+<h3 class="subsubsectitle">7.1.7.1  Transformations</h3>
+
+
+<p><span class="index">graphics:2D control-panel:transformations</span><a name="chapter-7-51"/>
+</p>
+
+
+<p>Object transformations are executed from the control-panel by mouse-activated
+potentiometer windows.
+</p>
+
+
+<p><dl>
+<dt>Scale:</dt>
+<dd> To scale a graph, click on a mouse button
+<span class="index">graphics:2D control-panel:scale</span><a name="chapter-7-52"/>
+within the <span style="font-weight: bold;"> Scale</span> window in the upper left corner of the control-panel.
+The axes along which the scaling is to occur are indicated by setting the
+toggles above the arrow.
+With <span class="teletype">X On</span> and <span class="teletype">Y On</span> appearing, both axes are selected and scaling
+is uniform.
+If either is not selected, for example, if <span class="teletype">X Off</span> appears, scaling is
+non-uniform.
+</dd>
+<dt>Translate:</dt>
+<dd> To translate a graph, click the mouse in the
+<span class="index">graphics:2D control-panel:translate</span><a name="chapter-7-53"/>
+<span style="font-weight: bold;"> Translate</span> window in the direction you wish the graph to move.
+This window is located in the upper right corner of the control-panel.
+Along the top of the <span style="font-weight: bold;"> Translate</span> window are two buttons for selecting
+the direction of translation.
+Translation along both coordinate axes results when <span class="teletype">X On</span> and <span class="teletype">Y
+On</span> appear or along one axis when one is on, for example, <span class="teletype">X On</span> and
+<span class="teletype">Y Off</span> appear.
+</dd>
+</dl>
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-7.1.7.2"/>
+<div class="subsubsection"  id="subsubsec-7.1.7.2">
+<h3 class="subsubsectitle">7.1.7.2  Messages</h3>
+
+
+<p><span class="index">graphics:2D control-panel:messages</span><a name="chapter-7-54"/>
+</p>
+
+
+<p>The window directly below the transformation potentiometer windows is
+used to display system messages relating to the viewport and the control-panel.
+The following format is displayed: <br />
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p>[scaleX, scaleY]  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&gt;</mo></mstyle></math>graph <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&lt;</mo></mstyle></math> [translateX, translateY] <br />
+</p>
+
+
+
+</div>
+
+
+<p>The two values to the left show the scale factor along the <span class="teletype">X</span> and
+<span class="teletype">Y</span> coordinate axes.  The two values to the right show the distance of
+translation from the center in the <span class="teletype">X</span> and <span class="teletype">Y</span> directions.  The number
+in the center shows which graph in the viewport this data pertains to.
+When multiple graphs exist in the same viewport,
+the graph must be selected (see ``Multiple Graphs,'' below) in
+order for its transformation data to be shown, otherwise the number
+is 1.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-7.1.7.3"/>
+<div class="subsubsection"  id="subsubsec-7.1.7.3">
+<h3 class="subsubsectitle">7.1.7.3  Multiple Graphs</h3>
+
+
+
+<p><span class="index">graphics:2D control-panel:multiple graphs</span><a name="chapter-7-55"/>
+The <span style="font-weight: bold;"> Graphs</span> window contains buttons that allow the placement
+of two-dimensional graphs into one of nine available slots in any other
+two-dimensional viewport.
+In the center of the window are numeral buttons from one to nine
+that show whether a graph is displayed in the viewport.
+Below each number button is a button showing whether a graph
+that is present is selected for application of some
+transformation.
+When the caret symbol is displayed, then the graph in that slot
+will be manipulated.
+Initially, the graph for which the viewport is created occupies
+the first slot, is displayed, and is selected.
+</p>
+
+
+
+<p><dl>
+<dt>Clear:</dt>
+<dd>  The <span style="font-weight: bold;"> Clear</span> button deselects every viewport graph slot.
+<span class="index">graphics:2D control-panel:clear</span><a name="chapter-7-56"/>
+A graph slot is reselected by selecting the button below its number.
+</dd>
+<dt>Query:</dt>
+<dd>  The <span style="font-weight: bold;"> Query</span> button is used to display the scale and
+<span class="index">graphics:2D control-panel:query</span><a name="chapter-7-57"/>
+translate data for the indicated graph.  When this button is selected the
+message ``Click on the graph to query'' appears.  Select a slot
+number button from the <span style="font-weight: bold;"> Graphs</span> window. The scaling factor and translation
+offset of the graph are then displayed in the message window.
+</dd>
+<dt>Pick:</dt>
+<dd>  The <span style="font-weight: bold;"> Pick</span> button is used to select a graph
+<span class="index">graphics:2D control-panel:pick</span><a name="chapter-7-58"/>
+to be placed or dropped into the indicated viewport.  When this button is
+selected, the message ``Click on the graph to pick'' appears.
+Click on the slot with the graph number of the desired
+graph.  The graph information is held waiting for
+you to execute a <span style="font-weight: bold;"> Drop</span> in some other graph.
+</dd>
+<dt>Drop:</dt>
+<dd>  Once a graph has been picked up using the <span style="font-weight: bold;"> Pick</span> button,
+<span class="index">graphics:2D control-panel:drop</span><a name="chapter-7-59"/>
+the <span style="font-weight: bold;"> Drop</span> button places it into a new viewport slot.
+The message ``Click on the graph to drop'' appears in the message
+window when the <span style="font-weight: bold;"> Drop</span> button is selected.
+By selecting one of the slot number buttons in the <span style="font-weight: bold;"> Graphs</span>
+window, the graph currently being held is dropped into this slot
+and displayed.
+</dd>
+</dl>
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-7.1.7.4"/>
+<div class="subsubsection"  id="subsubsec-7.1.7.4">
+<h3 class="subsubsectitle">7.1.7.4  Buttons</h3>
+
+
+<p><span class="index">graphics:2D control-panel:buttons</span><a name="chapter-7-60"/>
+</p>
+
+
+
+<p><dl>
+<dt>Axes</dt>
+<dd> turns the coordinate axes on or off.
+<span class="index">graphics:2D control-panel:axes</span><a name="chapter-7-61"/>
+</dd>
+<dt>Units</dt>
+<dd> turns the units along the <span class="teletype">x</span>
+and <span class="teletype">y</span> axis on or off.
+<span class="index">graphics:2D control-panel:units</span><a name="chapter-7-62"/>
+</dd>
+<dt>Box</dt>
+<dd> encloses the area of the viewport graph
+in a bounding box, or removes the box if already enclosed.
+<span class="index">graphics:2D control-panel:box</span><a name="chapter-7-63"/>
+</dd>
+<dt>Pts</dt>
+<dd> turns on or off the display of points.
+<span class="index">graphics:2D control-panel:points</span><a name="chapter-7-64"/>
+</dd>
+<dt>Lines</dt>
+<dd> turns on or off the display
+of lines connecting points.
+<span class="index">graphics:2D control-panel:lines</span><a name="chapter-7-65"/>
+</dd>
+<dt>PS</dt>
+<dd> writes the current viewport contents to
+<span class="index">graphics:2D control-panel:ps</span><a name="chapter-7-66"/>
+a file <span style="font-weight: bold;"> axiom2D.ps</span> or to a name specified in the user's <span style="font-weight: bold;">
+<span class="index">graphics:.Xdefaults:PostScript file name</span><a name="chapter-7-67"/>
+.Xdefaults</span> file.
+<span class="index">file:.Xdefaults @<span style="font-weight: bold;"> .Xdefaults</span><a name="chapter-7-68"/></span>
+The file is placed in the directory from which Axiom or the <span style="font-weight: bold;">
+viewAlone</span> program was invoked.
+<span class="index">PostScript</span><a name="chapter-7-69"/>
+</dd>
+<dt>Reset</dt>
+<dd> resets the object transformation
+characteristics and attributes back to their initial states.
+<span class="index">graphics:2D control-panel:reset</span><a name="chapter-7-70"/>
+</dd>
+<dt>Hide</dt>
+<dd> makes the control-panel disappear.
+<span class="index">graphics:2D control-panel:hide</span><a name="chapter-7-71"/>
+</dd>
+<dt>Quit</dt>
+<dd> queries whether the current viewport
+<span class="index">graphics:2D control-panel:quit</span><a name="chapter-7-72"/>
+session should be terminated.
+</dd>
+</dl>
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.1.8"/>
+<div class="subsection"  id="subsec-7.1.8">
+<h3 class="subsectitle">7.1.8  Operations for Two-Dimensional Graphics</h3>
+
+
+<a name="ugGraphTwoDops" class="label"/>
+
+
+<p>Here is a summary of useful Axiom operations for two-dimensional
+graphics.
+Each operation name is followed by a list of arguments.
+Each argument is written as a variable informally named according
+to the type of the argument (for example, <span class="italic">integer</span>).
+If appropriate, a default value for an argument is given in
+parentheses immediately following the name.
+</p>
+
+
+
+<p><dl>
+<dt><span style="font-weight: bold;"> adaptive</span>&nbsp;<span class="funArgs">(<span class="optArg">[boolean<span class="argDef" >(true)</span>]</span>)</span></dt>
+<dd>
+<span class="index">adaptive plotting</span><a name="chapter-7-73"/>
+sets or indicates whether graphs are plotted
+<span class="index">graphics:set 2D defaults:adaptive</span><a name="chapter-7-74"/>
+according to the adaptive refinement algorithm.
+</dd>
+<dt><span style="font-weight: bold;"> axesColorDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[color<span class="argDef" >(dark blue())</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default color of the
+<span class="index">graphics:set 2D defaults:axes color</span><a name="chapter-7-75"/>
+axes in a two-dimensional graph viewport.
+</dd>
+<dt><span style="font-weight: bold;"> clipPointsDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[boolean<span class="argDef" >(false)</span>]</span>)</span></dt>
+<dd>
+sets or
+indicates whether point clipping is
+<span class="index">graphics:set 2D defaults:clip points</span><a name="chapter-7-76"/>
+to be applied as the default for graph plots.
+</dd>
+<dt><span style="font-weight: bold;"> drawToScale</span>&nbsp;<span class="funArgs">(<span class="optArg">[boolean<span class="argDef" >(false)</span>]</span>)</span></dt>
+<dd>
+sets or
+indicates whether the plot of a graph
+<span class="index">graphics:set 2D defaults:to scale</span><a name="chapter-7-77"/>
+is ``to scale'' or uses the entire viewport space as the default.
+</dd>
+<dt><span style="font-weight: bold;"> lineColorDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[color<span class="argDef" >(pastel yellow())</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default color of the
+<span class="index">graphics:set 2D defaults:line color</span><a name="chapter-7-78"/>
+lines or curves in a two-dimensional graph viewport.
+</dd>
+<dt><span style="font-weight: bold;"> maxPoints</span>&nbsp;<span class="funArgs">(<span class="optArg">[integer<span class="argDef" >(500)</span>]</span>)</span></dt>
+<dd>
+sets or indicates
+the default maximum number of
+<span class="index">graphics:set 2D defaults:max points</span><a name="chapter-7-79"/>
+possible points to be used when constructing a two-dimensional graph.
+</dd>
+<dt><span style="font-weight: bold;"> minPoints</span>&nbsp;<span class="funArgs">(<span class="optArg">[integer<span class="argDef" >(21)</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default minimum number of
+<span class="index">graphics:set 2D defaults:min points</span><a name="chapter-7-80"/>
+possible points to be used when constructing a two-dimensional graph.
+</dd>
+<dt><span style="font-weight: bold;"> pointColorDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[color<span class="argDef" >(bright red())</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default color of the
+<span class="index">graphics:set 2D defaults:point color</span><a name="chapter-7-81"/>
+points in a two-dimensional graph viewport.
+</dd>
+<dt><span style="font-weight: bold;"> pointSizeDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[integer<span class="argDef" >(5)</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default size of the
+<span class="index">graphics:set 2D defaults:point size</span><a name="chapter-7-82"/>
+dot used to plot points in a two-dimensional graph.
+</dd>
+<dt><span style="font-weight: bold;"> screenResolution</span>&nbsp;<span class="funArgs">(<span class="optArg">[integer<span class="argDef" >(600)</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default screen
+<span class="index">graphics:set 2D defaults:screen resolution</span><a name="chapter-7-83"/>
+resolution constant used in setting the computation limit of adaptively
+<span class="index">adaptive plotting</span><a name="chapter-7-84"/>
+generated curve plots.
+</dd>
+<dt><span style="font-weight: bold;"> unitsColorDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[color<span class="argDef" >(dim green())</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default color of the
+<span class="index">graphics:set 2D defaults:units color</span><a name="chapter-7-85"/>
+unit labels in a two-dimensional graph viewport.
+</dd>
+<dt><span style="font-weight: bold;"> viewDefaults</span>&nbsp;<span class="funArgs">()</span></dt>
+<dd>
+resets the default settings for the following
+<span class="index">graphics:set 2D defaults:reset viewport</span><a name="chapter-7-86"/>
+attributes:  point color, line color, axes color, units color, point size,
+viewport upper left-hand corner position, and the viewport size.
+</dd>
+<dt><span style="font-weight: bold;"> viewPosDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[list<span class="argDef" >([100,100])</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default position of the
+<span class="index">graphics:set 2D defaults:viewport position</span><a name="chapter-7-87"/>
+upper left-hand corner of a two-dimensional viewport, relative to the
+display root window.
+The upper left-hand corner of the display is considered to be at the
+(0, 0) position.
+</dd>
+<dt><span style="font-weight: bold;"> viewSizeDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[list<span class="argDef" >([200,200])</span>]</span>)</span></dt>
+<dd>
+sets or
+indicates the default size in which two
+<span class="index">graphics:set 2D defaults:viewport size</span><a name="chapter-7-88"/>
+dimensional viewport windows are shown.
+It is defined by a width and then a height.
+</dd>
+<dt><span style="font-weight: bold;"> viewWriteAvailable</span>&nbsp;<span class="funArgs">(<span class="optArg">[list<span class="argDef" >(["pixmap","bitmap", "postscript", "image"])</span>]</span>)</span></dt>
+<dd>
+indicates the possible file types
+<span class="index">graphics:2D defaults:available viewport writes</span><a name="chapter-7-89"/>
+that can be created with the <span class="spadfunFrom" >write</span><span class="index">write</span><a name="chapter-7-90"/><span class="index">TwoDimensionalViewport</span><a name="chapter-7-91"/> function.
+</dd>
+<dt><span style="font-weight: bold;"> viewWriteDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[list<span class="argDef" >([])</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default types of files, in
+<span class="index">graphics:set 2D defaults:write viewport</span><a name="chapter-7-92"/>
+addition to the <span style="font-weight: bold;"> data</span> file, that are created when a
+<span style="font-weight: bold;"> write</span> function is executed on a viewport.
+</dd>
+<dt><span style="font-weight: bold;"> units</span>&nbsp;<span class="funArgs">(viewport, integer<span class="argDef" >(1)</span>, string<span class="argDef" >("off")</span>)</span></dt>
+<dd>
+turns the units on or off for the graph with index <span class="italic">integer</span>.
+</dd>
+<dt><span style="font-weight: bold;"> axes</span>&nbsp;<span class="funArgs">(viewport, integer<span class="argDef" >(1)</span>, string<span class="argDef" >("on")</span>)</span></dt>
+<dd>
+turns the axes on
+<span class="index">graphics:2D commands:axes</span><a name="chapter-7-93"/>
+or off for the graph with index <span class="italic">integer</span>.
+</dd>
+<dt><span style="font-weight: bold;"> close</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+closes <span class="italic">viewport</span>.
+<span class="index">graphics:2D commands:close</span><a name="chapter-7-94"/>
+</dd>
+<dt><span style="font-weight: bold;"> connect</span>&nbsp;<span class="funArgs">(viewport, integer<span class="argDef" >(1)</span>, string<span class="argDef" >("on")</span>)</span></dt>
+<dd>
+declares whether lines
+<span class="index">graphics:2D commands:connect</span><a name="chapter-7-95"/>
+connecting the points are displayed or not.
+</dd>
+<dt><span style="font-weight: bold;"> controlPanel</span>&nbsp;<span class="funArgs">(viewport, string<span class="argDef" >("off")</span>)</span></dt>
+<dd>
+declares
+whether the two-dimensional control-panel is automatically displayed
+or not.
+</dd>
+<dt><span style="font-weight: bold;"> graphs</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+returns a list
+<span class="index">graphics:2D commands:graphs</span><a name="chapter-7-96"/>
+describing the state of each graph.
+If the graph state is not being used this is shown by <span class="teletype">"undefined"</span>,
+otherwise a description of the graph's contents is shown.
+</dd>
+<dt><span style="font-weight: bold;"> graphStates</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+displays
+<span class="index">graphics:2D commands:state of graphs</span><a name="chapter-7-97"/>
+a list of all the graph states available for <span class="italic">viewport</span>, giving the
+values for every property.
+</dd>
+<dt><span style="font-weight: bold;"> key</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+returns the process
+<span class="index">graphics:2D commands:key</span><a name="chapter-7-98"/>
+ID number for <span class="italic">viewport</span>.
+</dd>
+<dt><span style="font-weight: bold;"> move</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>x</mi></msub></mrow></mstyle></math>(viewPosDefault),
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>y</mi></msub></mrow></mstyle></math>(viewPosDefault))</span></dt>
+<dd>
+moves <span class="italic">viewport</span> on the screen so that the
+<span class="index">graphics:2D commands:move</span><a name="chapter-7-99"/>
+upper left-hand corner of <span class="italic">viewport</span> is at the position <span class="italic">(x,y)</span>.
+</dd>
+<dt><span style="font-weight: bold;"> options</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+returns a list
+<span class="index">graphics:2D commands:options</span><a name="chapter-7-100"/>
+of all the <span class="teletype">DrawOption</span>s used by <span class="italic">viewport</span>.
+</dd>
+<dt><span style="font-weight: bold;"> points</span>&nbsp;<span class="funArgs">(viewport, integer<span class="argDef" >(1)</span>, string<span class="argDef" >("on")</span>)</span></dt>
+<dd>
+specifies whether the graph points for graph <span class="italic">integer</span> are
+<span class="index">graphics:2D commands:points</span><a name="chapter-7-101"/>
+to be displayed or not.
+</dd>
+<dt><span style="font-weight: bold;"> region</span>&nbsp;<span class="funArgs">(viewport, integer<span class="argDef" >(1)</span>, string<span class="argDef" >("off")</span>)</span></dt>
+<dd>
+declares whether graph <span class="italic">integer</span> is or is not to be displayed
+with a bounding rectangle.
+</dd>
+<dt><span style="font-weight: bold;"> reset</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+resets all the properties of <span class="italic">viewport</span>.
+</dd>
+<dt><span style="font-weight: bold;"> resize</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>width</mi></msub></mrow></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>height</mi></msub></mrow></mstyle></math>)</span></dt>
+<dd>
+<span class="index">graphics:2D commands:resize</span><a name="chapter-7-102"/>
+resizes <span class="italic">viewport</span> with a new <span class="italic">width</span> and <span class="italic">height</span>.
+</dd>
+<dt><span style="font-weight: bold;"> scale</span>&nbsp;<span class="funArgs">(viewport,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>n</mi></msub></mrow></mstyle></math><span class="argDef" >(1)</span>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>x</mi></msub></mrow></mstyle></math><span class="argDef" >(0.9)</span>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>y</mi></msub></mrow></mstyle></math><span class="argDef" >(0.9)</span>)</span></dt>
+<dd>
+scales values for the
+<span class="index">graphics:2D commands:scale</span><a name="chapter-7-103"/>
+<span class="italic">x</span> and <span class="italic">y</span> coordinates of graph <span class="italic">n</span>.
+</dd>
+<dt><span style="font-weight: bold;"> show</span>&nbsp;<span class="funArgs">(viewport,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>n</mi></msub></mrow></mstyle></math><span class="argDef" >(1)</span>,
+string<span class="argDef" >("on")</span>)</span></dt>
+<dd>
+indicates if graph <span class="italic">n</span> is shown or not.
+</dd>
+<dt><span style="font-weight: bold;"> title</span>&nbsp;<span class="funArgs">(viewport, string<span class="argDef" >("Axiom 2D")</span>)</span></dt>
+<dd>
+designates the title for <span class="italic">viewport</span>.
+</dd>
+<dt><span style="font-weight: bold;"> translate</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>n</mi></msub></mrow></mstyle></math><span class="argDef" >(1)</span>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>x</mi></msub></mrow></mstyle></math><span class="argDef" >(0.0)</span>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>y</mi></msub></mrow></mstyle></math><span class="argDef" >(0.0)</span>)</span></dt>
+<dd>
+<span class="index">graphics:2D commands:translate</span><a name="chapter-7-104"/>
+causes graph <span class="italic">n</span> to be moved <span class="italic">x</span> and <span class="italic">y</span> units in the respective directions.
+</dd>
+<dt><span style="font-weight: bold;"> write</span>&nbsp;<span class="funArgs">(viewport,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>string</mi><mi>directory</mi></msub></mrow></mstyle></math>,
+<span class="optArg">[strings]</span>)</span></dt>
+<dd>
+if no third argument is given, writes the <span style="font-weight: bold;"> data</span> file onto the directory
+with extension <span style="font-weight: bold;"> data</span>.
+The third argument can be a single string or a list of strings with some or
+all the entries <span class="teletype">"pixmap"</span>, <span class="teletype">"bitmap"</span>, <span class="teletype">"postscript"</span>, and
+<span class="teletype">"image"</span>.
+</dd>
+</dl>
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.1.9"/>
+<div class="subsection"  id="subsec-7.1.9">
+<h3 class="subsectitle">7.1.9  Addendum: Building Two-Dimensional Graphs</h3>
+
+
+<a name="ugGraphTwoDbuild" class="label"/>
+
+
+<p>In this section we demonstrate how to create two-dimensional graphs from
+lists of points and give an example showing how to read the lists
+of points from a file.
+</p>
+
+
+
+<a name="subsubsec-7.1.9.1"/>
+<div class="subsubsection"  id="subsubsec-7.1.9.1">
+<h3 class="subsubsectitle">7.1.9.1  Creating a Two-Dimensional Viewport from a List of Points</h3>
+
+
+
+<p>Axiom creates lists of points in a two-dimensional viewport by utilizing
+the <span class="teletype">GraphImage</span> and <span class="teletype">TwoDimensionalViewport</span> domains.
+In this example, the <span class="spadfunFrom" >makeGraphImage</span><span class="index">makeGraphImage</span><a name="chapter-7-105"/><span class="index">GraphImage</span><a name="chapter-7-106"/>
+function takes a list of lists of points parameter, a list of colors for
+each point in the graph, a list of colors for each line in the graph, and
+a list of sizes for each point in the graph.
+</p>
+
+
+
+<p>The following expressions create a list of lists of points which will be read
+by Axiom and made into a two-dimensional viewport.
+</p>
+
+
+
+
+<div id="spadComm7-9" class="spadComm" >
+<form id="formComm7-9" action="javascript:makeRequest('7-9');" >
+<input id="comm7-9" type="text" class="command" style="width: 22em;" value="p1 := point [1,1]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-9" class="commSav" >p1 := point [1,1]$(Point DFLOAT) </span>
+<div id="mathAns7-9" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-10" class="spadComm" >
+<form id="formComm7-10" action="javascript:makeRequest('7-10');" >
+<input id="comm7-10" type="text" class="command" style="width: 22em;" value="p2 := point [0,1]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-10" class="commSav" >p2 := point [0,1]$(Point DFLOAT) </span>
+<div id="mathAns7-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-11" class="spadComm" >
+<form id="formComm7-11" action="javascript:makeRequest('7-11');" >
+<input id="comm7-11" type="text" class="command" style="width: 22em;" value="p3 := point [0,0]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-11" class="commSav" >p3 := point [0,0]$(Point DFLOAT) </span>
+<div id="mathAns7-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-12" class="spadComm" >
+<form id="formComm7-12" action="javascript:makeRequest('7-12');" >
+<input id="comm7-12" type="text" class="command" style="width: 22em;" value="p4 := point [1,0]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-12" class="commSav" >p4 := point [1,0]$(Point DFLOAT) </span>
+<div id="mathAns7-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-13" class="spadComm" >
+<form id="formComm7-13" action="javascript:makeRequest('7-13');" >
+<input id="comm7-13" type="text" class="command" style="width: 23em;" value="p5 := point [1,.5]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-13" class="commSav" >p5 := point [1,.5]$(Point DFLOAT) </span>
+<div id="mathAns7-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-14" class="spadComm" >
+<form id="formComm7-14" action="javascript:makeRequest('7-14');" >
+<input id="comm7-14" type="text" class="command" style="width: 23em;" value="p6 := point [.5,0]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-14" class="commSav" >p6 := point [.5,0]$(Point DFLOAT) </span>
+<div id="mathAns7-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-15" class="spadComm" >
+<form id="formComm7-15" action="javascript:makeRequest('7-15');" >
+<input id="comm7-15" type="text" class="command" style="width: 24em;" value="p7 := point [0,0.5]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-15" class="commSav" >p7 := point [0,0.5]$(Point DFLOAT) </span>
+<div id="mathAns7-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-16" class="spadComm" >
+<form id="formComm7-16" action="javascript:makeRequest('7-16');" >
+<input id="comm7-16" type="text" class="command" style="width: 23em;" value="p8 := point [.5,1]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-16" class="commSav" >p8 := point [.5,1]$(Point DFLOAT) </span>
+<div id="mathAns7-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-17" class="spadComm" >
+<form id="formComm7-17" action="javascript:makeRequest('7-17');" >
+<input id="comm7-17" type="text" class="command" style="width: 25em;" value="p9 := point [.25,.25]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-17" class="commSav" >p9 := point [.25,.25]$(Point DFLOAT) </span>
+<div id="mathAns7-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-18" class="spadComm" >
+<form id="formComm7-18" action="javascript:makeRequest('7-18');" >
+<input id="comm7-18" type="text" class="command" style="width: 26em;" value="p10 := point [.25,.75]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-18" class="commSav" >p10 := point [.25,.75]$(Point DFLOAT) </span>
+<div id="mathAns7-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-19" class="spadComm" >
+<form id="formComm7-19" action="javascript:makeRequest('7-19');" >
+<input id="comm7-19" type="text" class="command" style="width: 26em;" value="p11 := point [.75,.75]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-19" class="commSav" >p11 := point [.75,.75]$(Point DFLOAT) </span>
+<div id="mathAns7-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-20" class="spadComm" >
+<form id="formComm7-20" action="javascript:makeRequest('7-20');" >
+<input id="comm7-20" type="text" class="command" style="width: 26em;" value="p12 := point [.75,.25]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-20" class="commSav" >p12 := point [.75,.25]$(Point DFLOAT) </span>
+<div id="mathAns7-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+<p>Finally, here is the list.
+</p>
+
+
+
+
+<div id="spadComm7-21" class="spadComm" >
+<form id="formComm7-21" action="javascript:makeRequest('7-21');" >
+<input id="comm7-21" type="text" class="command" style="width: 84em;" value="llp := [ [p1,p2], [p2,p3], [p3,p4], [p4,p1], [p5,p6], [p6,p7], [p7,p8], [p8,p5], [p9,p10], [p10,p11], [p11,p12], [p12,p9] ]  " />
+</form>
+<span id="commSav7-21" class="commSav" >llp := [ [p1,p2], [p2,p3], [p3,p4], [p4,p1], [p5,p6], [p6,p7], [p7,p8], [p8,p5], [p9,p10], [p10,p11], [p11,p12], [p12,p9] ]  </span>
+<div id="mathAns7-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Point DoubleFloat
+</div>
+
+
+
+<p>Now we set the point sizes for all components of the graph.
+</p>
+
+
+
+
+<div id="spadComm7-22" class="spadComm" >
+<form id="formComm7-22" action="javascript:makeRequest('7-22');" >
+<input id="comm7-22" type="text" class="command" style="width: 19em;" value="size1 := 6::PositiveInteger " />
+</form>
+<span id="commSav7-22" class="commSav" >size1 := 6::PositiveInteger </span>
+<div id="mathAns7-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>6</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm7-23" class="spadComm" >
+<form id="formComm7-23" action="javascript:makeRequest('7-23');" >
+<input id="comm7-23" type="text" class="command" style="width: 19em;" value="size2 := 8::PositiveInteger " />
+</form>
+<span id="commSav7-23" class="commSav" >size2 := 8::PositiveInteger </span>
+<div id="mathAns7-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm7-24" class="spadComm" >
+<form id="formComm7-24" action="javascript:makeRequest('7-24');" >
+<input id="comm7-24" type="text" class="command" style="width: 20em;" value="size3 := 10::PositiveInteger " />
+</form>
+<span id="commSav7-24" class="commSav" >size3 := 10::PositiveInteger </span>
+<div id="mathAns7-24" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm7-25" class="spadComm" >
+<form id="formComm7-25" action="javascript:makeRequest('7-25');" >
+<input id="comm7-25" type="text" class="command" style="width: 64em;" value="lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]  " />
+</form>
+<span id="commSav7-25" class="commSav" >lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]  </span>
+<div id="mathAns7-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>6</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>8</mn><mo>,</mo><mi>size3</mi><mo>,</mo><mi>size3</mi><mo>,</mo><mi>size3</mi><mo>,</mo><mi>size3</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+<p>Here are the colors for the points.
+</p>
+
+
+
+
+<div id="spadComm7-26" class="spadComm" >
+<form id="formComm7-26" action="javascript:makeRequest('7-26');" >
+<input id="comm7-26" type="text" class="command" style="width: 14em;" value="pc1 := pastel red() " />
+</form>
+<span id="commSav7-26" class="commSav" >pc1 := pastel red() </span>
+<div id="mathAns7-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>1</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Palette
+</div>
+
+
+
+
+
+<div id="spadComm7-27" class="spadComm" >
+<form id="formComm7-27" action="javascript:makeRequest('7-27');" >
+<input id="comm7-27" type="text" class="command" style="width: 13em;" value="pc2 := dim green() " />
+</form>
+<span id="commSav7-27" class="commSav" >pc2 := dim green() </span>
+<div id="mathAns7-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>14</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Dim</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Palette
+</div>
+
+
+
+
+
+<div id="spadComm7-28" class="spadComm" >
+<form id="formComm7-28" action="javascript:makeRequest('7-28');" >
+<input id="comm7-28" type="text" class="command" style="width: 16em;" value="pc3 := pastel yellow() " />
+</form>
+<span id="commSav7-28" class="commSav" >pc3 := pastel yellow() </span>
+<div id="mathAns7-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>11</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Palette
+</div>
+
+
+
+
+
+<div id="spadComm7-29" class="spadComm" >
+<form id="formComm7-29" action="javascript:makeRequest('7-29');" >
+<input id="comm7-29" type="text" class="command" style="width: 46em;" value="lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]  " />
+</form>
+<span id="commSav7-29" class="commSav" >lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]  </span>
+<div id="mathAns7-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>1</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>1</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>1</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>1</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>14</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Dim</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>14</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Dim</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>14</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Dim</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>14</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Dim</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>11</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>11</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>11</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>11</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Palette
+</div>
+
+
+
+<p>Here are the colors for the lines.
+</p>
+
+
+
+
+<div id="spadComm7-30" class="spadComm" >
+<form id="formComm7-30" action="javascript:makeRequest('7-30');" >
+<input id="comm7-30" type="text" class="command" style="width: 119em;" value="lc := [pastel blue(), light yellow(), dim green(), bright red(), light green(), dim yellow(), bright blue(), dark red(), pastel red(), light blue(), dim green(), light yellow()] " />
+</form>
+<span id="commSav7-30" class="commSav" >lc := [pastel blue(), light yellow(), dim green(), bright red(), light green(), dim yellow(), bright blue(), dark red(), pastel red(), light blue(), dim green(), light yellow()] </span>
+<div id="mathAns7-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>22</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>11</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Light</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>14</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Dim</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>1</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Bright</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>14</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Light</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>11</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Dim</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>22</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Bright</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>1</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Dark</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>1</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Pastel</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>22</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Light</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>14</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Dim</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mtext><mrow><mtext>Hue:</mtext></mrow></mtext><mn>11</mn><mtext><mrow><mtext>Weight:</mtext></mrow></mtext><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mtext><mrow><mtext>]fromthe</mtext></mrow></mtext><mi>Light</mi><mtext><mrow><mtext>palette</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Palette
+</div>
+
+
+
+<p>Now the <span class="teletype">GraphImage</span> is created according to the component
+specifications indicated above.
+</p>
+
+
+
+
+<div id="spadComm7-31" class="spadComm" >
+<form id="formComm7-31" action="javascript:makeRequest('7-31');" >
+<input id="comm7-31" type="text" class="command" style="width: 32em;" value="g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE  " />
+</form>
+<span id="commSav7-31" class="commSav" >g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE  </span>
+<div id="mathAns7-31" ></div>
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >makeViewport2D</span><span class="index">makeViewport2D</span><a name="chapter-7-107"/><span class="index">TwoDimensionalViewport</span><a name="chapter-7-108"/> function now
+creates a <span class="teletype">TwoDimensionalViewport</span> for this graph according to the
+list of options specified within the brackets.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 21em">
+makeViewport2D(g,[title("Lines")])$VIEW2D 
+</div>
+
+
+
+
+
+<p>This example demonstrates the use of the <span class="teletype">GraphImage</span> functions
+<span class="spadfunFrom" >component</span><span class="index">component</span><a name="chapter-7-109"/><span class="index">GraphImage</span><a name="chapter-7-110"/> and <span class="spadfunFrom" >appendPoint</span><span class="index">appendPoint</span><a name="chapter-7-111"/><span class="index">GraphImage</span><a name="chapter-7-112"/>
+in adding points to an empty <span class="teletype">GraphImage</span>.
+</p>
+
+
+
+
+<div id="spadComm7-32" class="spadComm" >
+<form id="formComm7-32" action="javascript:makeRequest('7-32');" >
+<input id="comm7-32" type="text" class="command" style="width: 8em;" value=")clear all " />
+</form>
+<span id="commSav7-32" class="commSav" >)clear all </span>
+<div id="mathAns7-32" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm7-33" class="spadComm" >
+<form id="formComm7-33" action="javascript:makeRequest('7-33');" >
+<input id="comm7-33" type="text" class="command" style="width: 18em;" value="g := graphImage()$GRIMAGE " />
+</form>
+<span id="commSav7-33" class="commSav" >g := graphImage()$GRIMAGE </span>
+<div id="mathAns7-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>Graphwith</mtext></mrow></mtext><mn>0</mn><mtext><mrow><mtext>pointlists</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: GraphImage
+</div>
+
+
+
+
+
+<div id="spadComm7-34" class="spadComm" >
+<form id="formComm7-34" action="javascript:makeRequest('7-34');" >
+<input id="comm7-34" type="text" class="command" style="width: 22em;" value="p1 := point [0,0]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-34" class="commSav" >p1 := point [0,0]$(Point DFLOAT) </span>
+<div id="mathAns7-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-35" class="spadComm" >
+<form id="formComm7-35" action="javascript:makeRequest('7-35');" >
+<input id="comm7-35" type="text" class="command" style="width: 25em;" value="p2 := point [.25,.25]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-35" class="commSav" >p2 := point [.25,.25]$(Point DFLOAT) </span>
+<div id="mathAns7-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-36" class="spadComm" >
+<form id="formComm7-36" action="javascript:makeRequest('7-36');" >
+<input id="comm7-36" type="text" class="command" style="width: 24em;" value="p3 := point [.5,.5]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-36" class="commSav" >p3 := point [.5,.5]$(Point DFLOAT) </span>
+<div id="mathAns7-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-37" class="spadComm" >
+<form id="formComm7-37" action="javascript:makeRequest('7-37');" >
+<input id="comm7-37" type="text" class="command" style="width: 25em;" value="p4 := point [.75,.75]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-37" class="commSav" >p4 := point [.75,.75]$(Point DFLOAT) </span>
+<div id="mathAns7-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>75</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-38" class="spadComm" >
+<form id="formComm7-38" action="javascript:makeRequest('7-38');" >
+<input id="comm7-38" type="text" class="command" style="width: 22em;" value="p5 := point [1,1]$(Point DFLOAT) " />
+</form>
+<span id="commSav7-38" class="commSav" >p5 := point [1,1]$(Point DFLOAT) </span>
+<div id="mathAns7-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-39" class="spadComm" >
+<form id="formComm7-39" action="javascript:makeRequest('7-39');" >
+<input id="comm7-39" type="text" class="command" style="width: 16em;" value="component(g,p1)$GRIMAGE" />
+</form>
+<span id="commSav7-39" class="commSav" >component(g,p1)$GRIMAGE</span>
+<div id="mathAns7-39" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm7-40" class="spadComm" >
+<form id="formComm7-40" action="javascript:makeRequest('7-40');" >
+<input id="comm7-40" type="text" class="command" style="width: 16em;" value="component(g,p2)$GRIMAGE" />
+</form>
+<span id="commSav7-40" class="commSav" >component(g,p2)$GRIMAGE</span>
+<div id="mathAns7-40" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm7-41" class="spadComm" >
+<form id="formComm7-41" action="javascript:makeRequest('7-41');" >
+<input id="comm7-41" type="text" class="command" style="width: 17em;" value="appendPoint(g,p3)$GRIMAGE" />
+</form>
+<span id="commSav7-41" class="commSav" >appendPoint(g,p3)$GRIMAGE</span>
+<div id="mathAns7-41" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm7-42" class="spadComm" >
+<form id="formComm7-42" action="javascript:makeRequest('7-42');" >
+<input id="comm7-42" type="text" class="command" style="width: 17em;" value="appendPoint(g,p4)$GRIMAGE" />
+</form>
+<span id="commSav7-42" class="commSav" >appendPoint(g,p4)$GRIMAGE</span>
+<div id="mathAns7-42" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm7-43" class="spadComm" >
+<form id="formComm7-43" action="javascript:makeRequest('7-43');" >
+<input id="comm7-43" type="text" class="command" style="width: 17em;" value="appendPoint(g,p5)$GRIMAGE" />
+</form>
+<span id="commSav7-43" class="commSav" >appendPoint(g,p5)$GRIMAGE</span>
+<div id="mathAns7-43" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm7-44" class="spadComm" >
+<form id="formComm7-44" action="javascript:makeRequest('7-44');" >
+<input id="comm7-44" type="text" class="command" style="width: 22em;" value="g1 := makeGraphImage(g)$GRIMAGE  " />
+</form>
+<span id="commSav7-44" class="commSav" >g1 := makeGraphImage(g)$GRIMAGE  </span>
+<div id="mathAns7-44" ></div>
+</div>
+
+
+
+<p>Here is the graph.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 25em">
+makeViewport2D(g1,[title("Graph Points")])$VIEW2D 
+</div>
+
+
+
+
+
+
+
+<p>A list of points can also be made into a <span class="teletype">GraphImage</span> by using
+the operation <span class="spadfunFrom" >coerce</span><span class="index">coerce</span><a name="chapter-7-113"/><span class="index">GraphImage</span><a name="chapter-7-114"/>.  It is equivalent to adding
+each point to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g2</mi></mstyle></math> using <span class="spadfunFrom" >component</span><span class="index">component</span><a name="chapter-7-115"/><span class="index">GraphImage</span><a name="chapter-7-116"/>.
+</p>
+
+
+
+
+<div id="spadComm7-45" class="spadComm" >
+<form id="formComm7-45" action="javascript:makeRequest('7-45');" >
+<input id="comm7-45" type="text" class="command" style="width: 36em;" value="g2 := coerce([ [p1],[p2],[p3],[p4],[p5] ])$GRIMAGE   " />
+</form>
+<span id="commSav7-45" class="commSav" >g2 := coerce([ [p1],[p2],[p3],[p4],[p5] ])$GRIMAGE   </span>
+<div id="mathAns7-45" ></div>
+</div>
+
+
+
+<p>Now, create an empty <span class="teletype">TwoDimensionalViewport</span>.
+</p>
+
+
+
+
+<div id="spadComm7-46" class="spadComm" >
+<form id="formComm7-46" action="javascript:makeRequest('7-46');" >
+<input id="comm7-46" type="text" class="command" style="width: 17em;" value="v := viewport2D()$VIEW2D " />
+</form>
+<span id="commSav7-46" class="commSav" >v := viewport2D()$VIEW2D </span>
+<div id="mathAns7-46" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm7-47" class="spadComm" >
+<form id="formComm7-47" action="javascript:makeRequest('7-47');" >
+<input id="comm7-47" type="text" class="command" style="width: 28em;" value='options(v,[title("Just Points")])$VIEW2D ' />
+</form>
+<span id="commSav7-47" class="commSav" >options(v,[title("Just Points")])$VIEW2D </span>
+<div id="mathAns7-47" ></div>
+</div>
+
+
+
+<p>Place the graph into the viewport.
+</p>
+
+
+
+
+<div id="spadComm7-48" class="spadComm" >
+<form id="formComm7-48" action="javascript:makeRequest('7-48');" >
+<input id="comm7-48" type="text" class="command" style="width: 16em;" value="putGraph(v,g2,1)$VIEW2D " />
+</form>
+<span id="commSav7-48" class="commSav" >putGraph(v,g2,1)$VIEW2D </span>
+<div id="mathAns7-48" ></div>
+</div>
+
+
+
+<p>Take a look.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 13em">
+makeViewport2D(v)$VIEW2D 
+</div>
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-7.1.9.2"/>
+<div class="subsubsection"  id="subsubsec-7.1.9.2">
+<h3 class="subsubsectitle">7.1.9.2  Creating a Two-Dimensional Viewport of a List of Points from a File</h3>
+
+
+
+<p>The following three functions read a list of points from a
+file and then draw the points and the connecting lines. The
+points are stored in the file in readable form as floating point numbers
+(specifically, <span class="teletype">DoubleFloat</span> values) as an alternating
+stream of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>- and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>-values. For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+0.0&nbsp;0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0&nbsp;1.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.0&nbsp;4.0<br />
+3.0&nbsp;9.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.0&nbsp;16.0&nbsp;&nbsp;&nbsp;&nbsp;5.0&nbsp;25.0<br />
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+drawPoints(lp:List&nbsp;Point&nbsp;DoubleFloat):VIEW2D&nbsp;==<br />
+&nbsp;&nbsp;g&nbsp;:=&nbsp;graphImage()$GRIMAGE<br />
+&nbsp;&nbsp;for&nbsp;p&nbsp;in&nbsp;lp&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;component(g,p,pointColorDefault(),lineColorDefault(),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pointSizeDefault())<br />
+&nbsp;&nbsp;gi&nbsp;:=&nbsp;makeGraphImage(g)$GRIMAGE<br />
+&nbsp;&nbsp;makeViewport2D(gi,[title("Points")])$VIEW2D<br />
+<br />
+drawLines(lp:List&nbsp;Point&nbsp;DoubleFloat):VIEW2D&nbsp;==<br />
+&nbsp;&nbsp;g&nbsp;:=&nbsp;graphImage()$GRIMAGE<br />
+&nbsp;&nbsp;component(g,&nbsp;lp,&nbsp;pointColorDefault(),&nbsp;lineColorDefault(),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;pointSizeDefault())$GRIMAGE<br />
+&nbsp;&nbsp;gi&nbsp;:=&nbsp;makeGraphImage(g)$GRIMAGE<br />
+&nbsp;&nbsp;makeViewport2D(gi,[title("Points")])$VIEW2D<br />
+<br />
+plotData2D(name,&nbsp;title)&nbsp;==<br />
+&nbsp;&nbsp;f:File(DFLOAT)&nbsp;:=&nbsp;open(name,"input")<br />
+&nbsp;&nbsp;lp:LIST(Point&nbsp;DFLOAT)&nbsp;:=&nbsp;empty()<br />
+&nbsp;&nbsp;while&nbsp;((x&nbsp;:=&nbsp;readIfCan!(f))&nbsp;case&nbsp;DFLOAT)&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;:&nbsp;DFLOAT&nbsp;:=&nbsp;read!(f)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;lp&nbsp;:=&nbsp;cons(point&nbsp;[x,y]$(Point&nbsp;DFLOAT),&nbsp;lp)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;lp<br />
+&nbsp;&nbsp;close!(f)<br />
+&nbsp;&nbsp;drawPoints(lp)<br />
+&nbsp;&nbsp;drawLines(lp)<br />
+</div>
+
+
+
+<p>This command will actually create the viewport and the graph if
+the point data is in the file  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>"</mo><mi>file</mi><mo>.</mo><mi>data</mi><mo>"</mo></mrow></mstyle></math>.
+</p>
+
+
+
+<div class="verbatim"><br />
+plotData2D("file.data",&nbsp;"2D&nbsp;Data&nbsp;Plot")<br />
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.1.10"/>
+<div class="subsection"  id="subsec-7.1.10">
+<h3 class="subsectitle">7.1.10  Addendum: Appending a Graph to a Viewport Window Containing a Graph</h3>
+
+
+<a name="ugGraphTwoDappend" class="label"/>
+
+
+<p>This section demonstrates how to append a two-dimensional graph to a viewport
+already containing other graphs.
+The default <span style="font-weight: bold;"> draw</span> command places a graph into the first
+<span class="teletype">GraphImage</span> slot position of the <span class="teletype">TwoDimensionalViewport</span>.
+</p>
+
+
+<p>This graph is in the first slot in its viewport.
+</p>
+
+
+
+
+<div id="spadComm7-49" class="spadComm" >
+<form id="formComm7-49" action="javascript:makeRequest('7-49');" >
+<input id="comm7-49" type="text" class="command" style="width: 21em;" value="v1 := draw(sin(x),x=0..2*%pi) " />
+</form>
+<span id="commSav7-49" class="commSav" >v1 := draw(sin(x),x=0..2*%pi) </span>
+<div id="mathAns7-49" ></div>
+</div>
+
+
+
+<p>So is this graph.
+</p>
+
+
+
+
+<div id="spadComm7-50" class="spadComm" >
+<form id="formComm7-50" action="javascript:makeRequest('7-50');" >
+<input id="comm7-50" type="text" class="command" style="width: 38em;" value="v2 := draw(cos(x),x=0..2*%pi, curveColor==light red()) " />
+</form>
+<span id="commSav7-50" class="commSav" >v2 := draw(cos(x),x=0..2*%pi, curveColor==light red()) </span>
+<div id="mathAns7-50" ></div>
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >getGraph</span><span class="index">getGraph</span><a name="chapter-7-117"/><span class="index">TwoDimensionalViewport</span><a name="chapter-7-118"/>
+retrieves the <span class="teletype">GraphImage</span>  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g1</mi></mstyle></math> from the first slot position
+in the viewport  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v1</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm7-51" class="spadComm" >
+<form id="formComm7-51" action="javascript:makeRequest('7-51');" >
+<input id="comm7-51" type="text" class="command" style="width: 14em;" value="g1 := getGraph(v1,1) " />
+</form>
+<span id="commSav7-51" class="commSav" >g1 := getGraph(v1,1) </span>
+<div id="mathAns7-51" ></div>
+</div>
+
+
+
+<p>Now <span class="spadfunFrom" >putGraph</span><span class="index">putGraph</span><a name="chapter-7-119"/><span class="index">TwoDimensionalViewport</span><a name="chapter-7-120"/>
+places  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g1</mi></mstyle></math> into the the second slot position of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v2</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm7-52" class="spadComm" >
+<form id="formComm7-52" action="javascript:makeRequest('7-52');" >
+<input id="comm7-52" type="text" class="command" style="width: 12em;" value="putGraph(v2,g1,2) " />
+</form>
+<span id="commSav7-52" class="commSav" >putGraph(v2,g1,2) </span>
+<div id="mathAns7-52" ></div>
+</div>
+
+
+
+<p>Display the new <span class="teletype">TwoDimensionalViewport</span> containing both graphs.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 10em">
+makeViewport2D(v2) 
+</div>
+
+
+
+
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-7.0.xhtml" style="margin-right: 10px;">Previous Section 7.0 Graphics</a><a href="section-7.2.xhtml" style="margin-right: 10px;">Next Section 7.2 Three-Dimensional Graphics</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-7.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-7.2.xhtml
new file mode 100644
index 0000000..e5fb853
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-7.2.xhtml
@@ -0,0 +1,3527 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section7.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-7.1.xhtml" style="margin-right: 10px;">Previous Section 7.1 Two-Dimensional Graphics</a><a href="section-8.0.xhtml" style="margin-right: 10px;">Next Section 8.0 Advanced Problem Solving</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-7.2">
+<h2 class="sectiontitle">7.2  Three-Dimensional Graphics</h2>
+
+
+<a name="ugGraphThreeD" class="label"/>
+
+
+
+<p>The Axiom three-dimensional graphics package provides the ability to
+<span class="index">graphics:three-dimensional</span><a name="chapter-7-121"/>
+</p>
+
+
+
+
+<ul>
+<li>
+ generate surfaces defined by a function of two real variables
+</li>
+<li> generate space curves and tubes defined by parametric equations
+</li>
+<li> generate surfaces defined by parametric equations
+</li>
+</ul>
+
+
+<p>These graphs can be modified by using various options, such as calculating
+points in the spherical coordinate system or changing the polygon grid size
+of a surface.
+</p>
+
+
+
+<a name="subsec-7.2.1"/>
+<div class="subsection"  id="subsec-7.2.1">
+<h3 class="subsectitle">7.2.1  Plotting Three-Dimensional Functions of Two Variables</h3>
+
+
+<a name="ugGraphThreeDPlot" class="label"/>
+
+
+<p><span class="index">surface:two variable function</span><a name="chapter-7-122"/>
+The simplest three-dimensional graph is that of a surface defined by a function
+of two variables,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>=</mo><mi>f</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The general format for drawing a surface defined by a formula  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>
+of two variables  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> is:
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">draw(f(x,y), x = a..b, y = c..d, <span class="italic">options</span>)</span>
+</p>
+
+
+
+</div>
+
+
+<p>where  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>c</mi><mo>.</mo><mo>.</mo><mi>d</mi></mrow></mstyle></math> define the range of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>, and where <span class="italic">options</span> prescribes zero or more
+options as described in <a href="section-7.2.xhtml#ugGraphThreeDOptions" class="ref" >ugGraphThreeDOptions</a> 
+.
+An example of an option is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>title</mi><mo>=</mo><mo>=</mo><mo>"</mo><mi>Title</mi><mi>of</mi><mi>Graph</mi><mo>"</mo><mo>.</mo></mrow></mstyle></math>
+An alternative format involving a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> is also
+available.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>The simplest way to plot a function of two variables is to use a formula.
+With formulas you always precede the range specifications with
+the variable name and an <span class="teletype">=</span> sign.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 15em">
+draw(cos(x*y),x=-3..3,y=-3..3)
+</div>
+
+
+
+
+
+
+<p>If you intend to use a function more than once,
+or it is long and complex, then first
+give its definition to Axiom.
+</p>
+
+
+
+
+<div id="spadComm7-53" class="spadComm" >
+<form id="formComm7-53" action="javascript:makeRequest('7-53');" >
+<input id="comm7-53" type="text" class="command" style="width: 16em;" value="f(x,y) == sin(x)*cos(y) " />
+</form>
+<span id="commSav7-53" class="commSav" >f(x,y) == sin(x)*cos(y) </span>
+<div id="mathAns7-53" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>To draw the function, just give its name and drop the variables
+from the range specifications.
+Axiom compiles your function for efficient computation
+of data for the graph.
+Notice that Axiom uses the text of your function as a
+default title.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 16em">
+draw(f,-%pi..%pi,-%pi..%pi) 
+</div>
+
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.2.2"/>
+<div class="subsection"  id="subsec-7.2.2">
+<h3 class="subsectitle">7.2.2  Plotting Three-Dimensional Parametric Space Curves</h3>
+
+
+<a name="ugGraphThreeDParm" class="label"/>
+
+
+
+<p>A second kind of three-dimensional graph is a three-dimensional space curve
+<span class="index">curve:parametric space</span><a name="chapter-7-123"/>
+defined by the parametric equations for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math>,
+<span class="index">parametric space curve</span><a name="chapter-7-124"/>
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> as a function of an independent variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math>.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The general format for drawing a three-dimensional space curve defined by
+parametric formulas  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>f</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mi>g</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math>, and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>=</mo><mi>h</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> is:
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">draw(curve(f(t),g(t),h(t)), t = a..b, <span class="italic">options</span>)</span>
+</p>
+
+
+
+</div>
+
+
+<p>where  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math> defines the range of the independent variable
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math>, and where <span class="italic">options</span> prescribes zero or more options
+as described in <a href="section-7.2.xhtml#ugGraphThreeDOptions" class="ref" >ugGraphThreeDOptions</a> 
+.
+An example of an option is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>title</mi><mo>=</mo><mo>=</mo><mo>"</mo><mi>Title</mi><mi>of</mi><mi>Graph</mi><mo>"</mo><mo>.</mo></mrow></mstyle></math>
+An alternative format involving functions  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>h</mi></mstyle></math> is also available.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>If you use explicit formulas to draw a space curve, always precede
+the range specification with the variable name and an
+<span class="teletype">=</span> sign.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 22em">
+draw(curve(5*cos(t), 5*sin(t),t), t=-12..12)
+</div>
+
+
+
+
+
+
+<p>Alternatively, you can draw space curves by referring to functions.
+</p>
+
+
+
+
+<div id="spadComm7-54" class="spadComm" >
+<form id="formComm7-54" action="javascript:makeRequest('7-54');" >
+<input id="comm7-54" type="text" class="command" style="width: 28em;" value="i1(t:DFLOAT):DFLOAT == sin(t)*cos(3*t/5) " />
+</form>
+<span id="commSav7-54" class="commSav" >i1(t:DFLOAT):DFLOAT == sin(t)*cos(3*t/5) </span>
+<div id="mathAns7-54" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;i1&nbsp;:&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;has&nbsp;been&nbsp;added&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>This is useful if the functions are to be used more than once ...
+</p>
+
+
+
+
+<div id="spadComm7-55" class="spadComm" >
+<form id="formComm7-55" action="javascript:makeRequest('7-55');" >
+<input id="comm7-55" type="text" class="command" style="width: 28em;" value="i2(t:DFLOAT):DFLOAT == cos(t)*cos(3*t/5) " />
+</form>
+<span id="commSav7-55" class="commSav" >i2(t:DFLOAT):DFLOAT == cos(t)*cos(3*t/5) </span>
+<div id="mathAns7-55" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;i2&nbsp;:&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;has&nbsp;been&nbsp;added&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>or if the functions are long and complex.
+</p>
+
+
+
+
+<div id="spadComm7-56" class="spadComm" >
+<form id="formComm7-56" action="javascript:makeRequest('7-56');" >
+<input id="comm7-56" type="text" class="command" style="width: 28em;" value="i3(t:DFLOAT):DFLOAT == cos(t)*sin(3*t/5) " />
+</form>
+<span id="commSav7-56" class="commSav" >i3(t:DFLOAT):DFLOAT == cos(t)*sin(3*t/5) </span>
+<div id="mathAns7-56" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;i3&nbsp;:&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;has&nbsp;been&nbsp;added&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Give the names of the functions and
+drop the variable name specification in the second argument.
+Again, Axiom supplies a default title.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 17em">
+draw(curve(i1,i2,i3),0..15*%pi) 
+</div>
+
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.2.3"/>
+<div class="subsection"  id="subsec-7.2.3">
+<h3 class="subsectitle">7.2.3  Plotting Three-Dimensional Parametric Surfaces</h3>
+
+
+<a name="ugGraphThreeDPar" class="label"/>
+
+
+<p><span class="index">surface:parametric</span><a name="chapter-7-125"/>
+A third kind of three-dimensional graph is a surface defined by
+<span class="index">parametric surface</span><a name="chapter-7-126"/>
+parametric equations for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math>, and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math> of two independent variables  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math>.
+</p>
+
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The general format for drawing a three-dimensional graph defined by
+parametric formulas  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>f</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mi>g</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math>,
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>=</mo><mi>h</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math> is:
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p><span class="teletype">draw(surface(f(u,v),g(u,v),h(u,v)), u = a..b, v = c..d, <span class="italic">options</span>)</span>
+</p>
+
+
+
+</div>
+
+
+<p>where  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>c</mi><mo>.</mo><mo>.</mo><mi>d</mi></mrow></mstyle></math> define the range of the
+independent variables  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>u</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math>, and where
+<span class="italic">options</span> prescribes zero or more options as described in
+<a href="section-7.2.xhtml#ugGraphThreeDOptions" class="ref" >ugGraphThreeDOptions</a> .
+An example of an option is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>title</mi><mo>=</mo><mo>=</mo><mo>"</mo><mi>Title</mi><mi>of</mi><mi>Graph</mi><mo>"</mo><mo>.</mo></mrow></mstyle></math>
+An alternative format involving functions  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>h</mi></mstyle></math> is also available.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>This example draws a graph of a surface plotted using the
+parabolic cylindrical coordinate system option.
+<span class="index">coordinate system:parabolic cylindrical</span><a name="chapter-7-127"/>
+The values of the functions supplied to <span style="font-weight: bold;"> surface</span> are
+<span class="index">parabolic cylindrical coordinate system</span><a name="chapter-7-128"/>
+interpreted in coordinates as given by a <span class="teletype">coordinates</span> option,
+here as parabolic cylindrical coordinates (see
+<a href="section-7.2.xhtml#ugGraphCoord" class="ref" >ugGraphCoord</a> ).
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 50em">
+draw(surface(u*cos(v), u*sin(v), v*cos(u)), u=-4..4, v=0..%pi, coordinates== parabolicCylindrical)
+</div>
+
+
+
+
+
+
+<p>Again, you can graph these parametric surfaces using functions,
+if the functions are long and complex.
+</p>
+
+
+<p>Here we declare the types of arguments and values to be of type
+<span class="teletype">DoubleFloat</span>.
+</p>
+
+
+
+
+<div id="spadComm7-57" class="spadComm" >
+<form id="formComm7-57" action="javascript:makeRequest('7-57');" >
+<input id="comm7-57" type="text" class="command" style="width: 28em;" value="n1(u:DFLOAT,v:DFLOAT):DFLOAT == u*cos(v) " />
+</form>
+<span id="commSav7-57" class="commSav" >n1(u:DFLOAT,v:DFLOAT):DFLOAT == u*cos(v) </span>
+<div id="mathAns7-57" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;n1&nbsp;:&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;has&nbsp;been&nbsp;added&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>As shown by previous examples, these declarations are necessary.
+</p>
+
+
+
+
+<div id="spadComm7-58" class="spadComm" >
+<form id="formComm7-58" action="javascript:makeRequest('7-58');" >
+<input id="comm7-58" type="text" class="command" style="width: 28em;" value="n2(u:DFLOAT,v:DFLOAT):DFLOAT == u*sin(v) " />
+</form>
+<span id="commSav7-58" class="commSav" >n2(u:DFLOAT,v:DFLOAT):DFLOAT == u*sin(v) </span>
+<div id="mathAns7-58" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;n2&nbsp;:&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;has&nbsp;been&nbsp;added&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>In either case, Axiom compiles the functions
+when needed to graph a result.
+</p>
+
+
+
+
+<div id="spadComm7-59" class="spadComm" >
+<form id="formComm7-59" action="javascript:makeRequest('7-59');" >
+<input id="comm7-59" type="text" class="command" style="width: 23em;" value="n3(u:DFLOAT,v:DFLOAT):DFLOAT == u " />
+</form>
+<span id="commSav7-59" class="commSav" >n3(u:DFLOAT,v:DFLOAT):DFLOAT == u </span>
+<div id="mathAns7-59" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;n3&nbsp;:&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;has&nbsp;been&nbsp;added&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Without these declarations, you have to suffix floats
+with  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>@</mo><mi>DFLOAT</mi></mrow></mstyle></math> to get a <span class="teletype">DoubleFloat</span> result.
+However, a call here with an unadorned float produces a <span class="teletype">DoubleFloat</span>.
+</p>
+
+
+
+
+<div id="spadComm7-60" class="spadComm" >
+<form id="formComm7-60" action="javascript:makeRequest('7-60');" >
+<input id="comm7-60" type="text" class="command" style="width: 8em;" value="n3(0.5,1.0)" />
+</form>
+<span id="commSav7-60" class="commSav" >n3(0.5,1.0)</span>
+<div id="mathAns7-60" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;n3&nbsp;with&nbsp;type&nbsp;(DoubleFloat,DoubleFloat)&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoubleFloat&nbsp;<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+<p>Draw the surface by referencing the function names, this time
+choosing the toroidal coordinate system.
+<span class="index">coordinate system:toroidal</span><a name="chapter-7-129"/>
+<span class="index">toroidal coordinate system</span><a name="chapter-7-130"/>
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 38em">
+draw(surface(n1,n2,n3), 1..4, 1..2*%pi, coordinates == toroidal(1$DFLOAT)) 
+</div>
+
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.2.4"/>
+<div class="subsection"  id="subsec-7.2.4">
+<h3 class="subsectitle">7.2.4  Three-Dimensional Options</h3>
+
+
+<a name="ugGraphThreeDOptions" class="label"/>
+
+
+<p><span class="index">graphics:3D options</span><a name="chapter-7-131"/>
+The <span style="font-weight: bold;"> draw</span> commands optionally take an optional list of options such
+as <span class="teletype">coordinates</span> as shown in the last example.
+Each option is given by the syntax:  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>name</mi></mstyle></math> <span class="teletype">==</span>  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>value</mi></mstyle></math>.
+Here is a list of the available options in the order that they are
+described below:
+</p>
+
+
+<p><table class="begintabular">
+<tr><td>title</td><td>coordinates</td><td>var1Steps</td></tr>
+<tr><td>style</td><td>tubeRadius</td><td>var2Steps</td></tr>
+<tr><td>colorFunction</td><td>tubePoints</td><td>space</td></tr>
+</table>
+</p>
+
+
+<p>The option  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>title</mi></mstyle></math> gives your graph a title.
+<span class="index">graphics:3D options:title</span><a name="chapter-7-132"/>
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 32em">
+draw(cos(x*y),x=0..2*%pi,y=0..%pi,title == "Title of Graph") 
+</div>
+
+
+
+
+
+
+<p>The  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>style</mi></mstyle></math> determines which of four rendering algorithms is used for
+<span class="index">rendering</span><a name="chapter-7-133"/>
+the graph.
+The choices are
+<span class="teletype">"wireMesh"</span>, <span class="teletype">"solid"</span>, <span class="teletype">"shade"</span>, and <span class="teletype">"smooth"</span>.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 36em">
+draw(cos(x*y),x=-3..3,y=-3..3, style=="smooth", title=="Smooth Option")
+</div>
+
+
+
+
+
+
+<p>In all but the wire-mesh style, polygons in a surface or tube plot
+are normally colored in a graph according to their
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>-coordinate value.  Space curves are colored according to their
+parametric variable value.
+<span class="index">graphics:3D options:color function</span><a name="chapter-7-134"/>
+To change this, you can give a coloring function.
+<span class="index">function:coloring</span><a name="chapter-7-135"/>
+The coloring function is sampled across the range of its arguments, then
+normalized onto the standard Axiom colormap.
+</p>
+
+
+<p>A function of one variable  makes the color depend on the
+value of the parametric variable specified for a tube plot.
+</p>
+
+
+
+
+<div id="spadComm7-61" class="spadComm" >
+<form id="formComm7-61" action="javascript:makeRequest('7-61');" >
+<input id="comm7-61" type="text" class="command" style="width: 10em;" value="color1(t) == t " />
+</form>
+<span id="commSav7-61" class="commSav" >color1(t) == t </span>
+<div id="mathAns7-61" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div class="spadgraph" style="width: 43em">
+draw(curve(sin(t), cos(t),0), t=0..2*%pi, tubeRadius == .3, colorFunction == color1) 
+</div>
+
+
+
+
+
+
+<p>A function of two variables makes the color depend on the
+values of the independent variables.
+</p>
+
+
+
+
+<div id="spadComm7-62" class="spadComm" >
+<form id="formComm7-62" action="javascript:makeRequest('7-62');" >
+<input id="comm7-62" type="text" class="command" style="width: 18em;" value="color2(u,v) == u**2 - v**2 " />
+</form>
+<span id="commSav7-62" class="commSav" >color2(u,v) == u**2 - v**2 </span>
+<div id="mathAns7-62" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Use the option <span class="teletype">colorFunction</span> for special coloring.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 29em">
+draw(cos(u*v), u=-3..3, v=-3..3, colorFunction == color2) 
+</div>
+
+
+
+
+
+
+<p>With a three variable function, the
+color also depends on the value of the function.
+</p>
+
+
+
+
+<div id="spadComm7-63" class="spadComm" >
+<form id="formComm7-63" action="javascript:makeRequest('7-63');" >
+<input id="comm7-63" type="text" class="command" style="width: 29em;" value="color3(x,y,fxy) == sin(x*fxy) + cos(y*fxy) " />
+</form>
+<span id="commSav7-63" class="commSav" >color3(x,y,fxy) == sin(x*fxy) + cos(y*fxy) </span>
+<div id="mathAns7-63" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div class="spadgraph" style="width: 29em">
+draw(cos(x*y), x=-3..3, y=-3..3, colorFunction == color3) 
+</div>
+
+
+
+
+
+
+<p>Normally the Cartesian coordinate system is used.
+<span class="index">Cartesian:coordinate system</span><a name="chapter-7-136"/>
+To change this, use the <span class="teletype">coordinates</span> option.
+<span class="index">coordinate system:Cartesian</span><a name="chapter-7-137"/>
+For details, see <a href="section-7.2.xhtml#ugGraphCoord" class="ref" >ugGraphCoord</a> .
+</p>
+
+
+
+
+<div id="spadComm7-64" class="spadComm" >
+<form id="formComm7-64" action="javascript:makeRequest('7-64');" >
+<input id="comm7-64" type="text" class="command" style="width: 22em;" value="m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 " />
+</form>
+<span id="commSav7-64" class="commSav" >m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 </span>
+<div id="mathAns7-64" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;m&nbsp;:&nbsp;(DoubleFloat,DoubleFloat)&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Use the spherical
+<span class="index">spherical coordinate system</span><a name="chapter-7-138"/>
+coordinate system.
+<span class="index">coordinate system:spherical</span><a name="chapter-7-139"/>
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 35em">
+draw(m, 0..2*%pi,0..%pi, coordinates == spherical, style=="shade") 
+</div>
+
+
+
+
+
+
+<p>Space curves may be displayed as tubes with polygonal cross sections.
+<span class="index">tube</span><a name="chapter-7-140"/>
+Two options, <span class="teletype">tubeRadius</span> and <span class="teletype">tubePoints</span>,  control the size and
+shape of this cross section.
+</p>
+
+
+
+<p>The <span class="teletype">tubeRadius</span> option specifies the radius of the tube that
+<span class="index">tube:radius</span><a name="chapter-7-141"/>
+encircles the specified space curve.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 37em">
+draw(curve(sin(t),cos(t),0),t=0..2*%pi, style=="shade", tubeRadius == .3)
+</div>
+
+
+
+
+
+
+<p>The <span class="teletype">tubePoints</span> option specifies the number of vertices
+<span class="index">tube:points in polygon</span><a name="chapter-7-142"/>
+defining the polygon that is used to create a tube around the
+specified space curve.
+The larger this number is, the more cylindrical the tube becomes.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 48em">
+draw(curve(sin(t), cos(t), 0), t=0..2*%pi, style=="shade", tubeRadius == .25, tubePoints == 3)
+</div>
+
+
+
+
+
+
+<p><span class="index">graphics:3D options:variable steps</span><a name="chapter-7-143"/>
+</p>
+
+
+
+<p>Options <span class="spadfunFrom" >var1Steps</span><span class="index">var1Steps</span><a name="chapter-7-144"/><span class="index">DrawOption</span><a name="chapter-7-145"/> and
+<span class="spadfunFrom" >var2Steps</span><span class="index">var2Steps</span><a name="chapter-7-146"/><span class="index">DrawOption</span><a name="chapter-7-147"/> specify the number of intervals into
+which the grid defining a surface plot is subdivided with respect to the
+first and second parameters of the surface function(s).
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 40em">
+draw(cos(x*y),x=-3..3,y=-3..3, style=="shade", var1Steps == 30, var2Steps == 30)
+</div>
+
+
+
+
+
+
+<p>The <span class="teletype">space</span> option
+of a <span style="font-weight: bold;"> draw</span> command lets you build multiple graphs in three space.
+To use this option, first create an empty three-space object,
+then use the <span class="teletype">space</span> option thereafter.
+There is no restriction as to the number or kinds
+of graphs that can be combined this way.
+</p>
+
+
+<p>Create an empty three-space object.
+</p>
+
+
+
+
+<div id="spadComm7-65" class="spadComm" >
+<form id="formComm7-65" action="javascript:makeRequest('7-65');" >
+<input id="comm7-65" type="text" class="command" style="width: 27em;" value="s := create3Space()$(ThreeSpace DFLOAT) " />
+</form>
+<span id="commSav7-65" class="commSav" >s := create3Space()$(ThreeSpace DFLOAT) </span>
+<div id="mathAns7-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>0</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-66" class="spadComm" >
+<form id="formComm7-66" action="javascript:makeRequest('7-66');" >
+<input id="comm7-66" type="text" class="command" style="width: 22em;" value="m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 " />
+</form>
+<span id="commSav7-66" class="commSav" >m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 </span>
+<div id="mathAns7-66" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;m&nbsp;:&nbsp;(DoubleFloat,DoubleFloat)&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Add a graph to this three-space object.
+The new graph destructively inserts the graph
+into  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>s</mi></mstyle></math>.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 32em">
+draw(m,0..%pi,0..2*%pi, coordinates == spherical, space == s) 
+</div>
+
+
+
+
+
+
+<p>Add a second graph to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>s</mi></mstyle></math>.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 44em">
+v := draw(curve(1.5*sin(t), 1.5*cos(t),0), t=0..2*%pi, tubeRadius == .25, space == s)  
+</div>
+
+
+
+
+
+
+<p>A three-space object can also be obtained from an existing three-dimensional viewport
+using the <span class="spadfunFrom" >subspace</span><span class="index">subspace</span><a name="chapter-7-148"/><span class="index">ThreeSpace</span><a name="chapter-7-149"/> command.
+You can then use <span style="font-weight: bold;"> makeViewport3D</span> to create a viewport window.
+</p>
+
+
+<p>Assign to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>subsp</mi></mstyle></math> the three-space object in viewport  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm7-67" class="spadComm" >
+<form id="formComm7-67" action="javascript:makeRequest('7-67');" >
+<input id="comm7-67" type="text" class="command" style="width: 14em;" value="subsp := subspace v  " />
+</form>
+<span id="commSav7-67" class="commSav" >subsp := subspace v  </span>
+<div id="mathAns7-67" ></div>
+</div>
+
+
+
+<p>Reset the space component of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>v</mi></mstyle></math> to the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>subsp</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm7-68" class="spadComm" >
+<form id="formComm7-68" action="javascript:makeRequest('7-68');" >
+<input id="comm7-68" type="text" class="command" style="width: 14em;" value="subspace(v, subsp)  " />
+</form>
+<span id="commSav7-68" class="commSav" >subspace(v, subsp)  </span>
+<div id="mathAns7-68" ></div>
+</div>
+
+
+
+<p>Create a viewport window from a three-space object.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 16em">
+makeViewport3D(subsp,"Graphs") 
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.2.5"/>
+<div class="subsection"  id="subsec-7.2.5">
+<h3 class="subsectitle">7.2.5  The makeObject Command</h3>
+
+
+<a name="ugGraphMakeObject" class="label"/>
+
+
+<p>An alternate way to create multiple graphs is to use
+<span style="font-weight: bold;"> makeObject</span>.
+The <span style="font-weight: bold;"> makeObject</span> command is similar to the <span style="font-weight: bold;"> draw</span>
+command, except that it returns a three-space object rather than a
+<span class="teletype">ThreeDimensionalViewport</span>.
+In fact, <span style="font-weight: bold;"> makeObject</span> is called by the <span style="font-weight: bold;"> draw</span>
+command to create the <span class="teletype">ThreeSpace</span> then
+<span class="spadfunFrom" >makeViewport3D</span><span class="index">makeViewport3D</span><a name="chapter-7-150"/><span class="index">ThreeDimensionalViewport</span><a name="chapter-7-151"/> to create a
+viewport window.
+</p>
+
+
+
+
+<div id="spadComm7-69" class="spadComm" >
+<form id="formComm7-69" action="javascript:makeRequest('7-69');" >
+<input id="comm7-69" type="text" class="command" style="width: 22em;" value="m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 " />
+</form>
+<span id="commSav7-69" class="commSav" >m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 </span>
+<div id="mathAns7-69" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;m&nbsp;:&nbsp;(DoubleFloat,DoubleFloat)&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Do the last example a new way.
+First use <span style="font-weight: bold;"> makeObject</span> to
+create a three-space object  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>sph</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm7-70" class="spadComm" >
+<form id="formComm7-70" action="javascript:makeRequest('7-70');" >
+<input id="comm7-70" type="text" class="command" style="width: 43em;" value="sph := makeObject(m, 0..%pi, 0..2*%pi, coordinates==spherical)" />
+</form>
+<span id="commSav7-70" class="commSav" >sph := makeObject(m, 0..%pi, 0..2*%pi, coordinates==spherical)</span>
+<div id="mathAns7-70" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;m&nbsp;with&nbsp;type&nbsp;(DoubleFloat,DoubleFloat)&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoubleFloat&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>1</mn><mtext><mrow><mtext>component</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+<p>Add a second object to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>sph</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm7-71" class="spadComm" >
+<form id="formComm7-71" action="javascript:makeRequest('7-71');" >
+<input id="comm7-71" type="text" class="command" style="width: 61em;" value="makeObject(curve(1.5*sin(t), 1.5*cos(t), 0), t=0..2*%pi, space == sph, tubeRadius == .25) " />
+</form>
+<span id="commSav7-71" class="commSav" >makeObject(curve(1.5*sin(t), 1.5*cos(t), 0), t=0..2*%pi, space == sph, tubeRadius == .25) </span>
+<div id="mathAns7-71" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;%D&nbsp;with&nbsp;type&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;%F&nbsp;with&nbsp;type&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;%H&nbsp;with&nbsp;type&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>2</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+<p>Create and display a viewport
+containing  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>sph</mi></mstyle></math>.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 20em">
+makeViewport3D(sph,"Multiple Objects") 
+</div>
+
+
+
+<p>Note that an undefined <span class="teletype">ThreeSpace</span> parameter declared in a
+<span style="font-weight: bold;"> makeObject</span> or <span style="font-weight: bold;"> draw</span> command results in an error.
+Use the <span class="spadfunFrom" >create3Space</span><span class="index">create3Space</span><a name="chapter-7-152"/><span class="index">ThreeSpace</span><a name="chapter-7-153"/> function to define a
+<span class="teletype">ThreeSpace</span>, or obtain a <span class="teletype">ThreeSpace</span> that has been
+previously generated before including it in a command line.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.2.6"/>
+<div class="subsection"  id="subsec-7.2.6">
+<h3 class="subsectitle">7.2.6  Building Three-Dimensional Objects From Primitives</h3>
+
+
+<a name="ugGraphThreeDBuild" class="label"/>
+
+
+<p>Rather than using the <span style="font-weight: bold;"> draw</span> and <span style="font-weight: bold;"> makeObject</span> commands,
+<span class="index">graphics:advanced:build 3D objects</span><a name="chapter-7-154"/>
+you can create three-dimensional graphs from primitives.
+Operation <span class="spadfunFrom" >create3Space</span><span class="index">create3Space</span><a name="chapter-7-155"/><span class="index">ThreeSpace</span><a name="chapter-7-156"/> creates a
+three-space object to which points, curves and polygons
+can be added using the operations from the <span class="teletype">ThreeSpace</span>
+domain.
+The resulting object can then be displayed in a viewport using
+<span class="spadfunFrom" >makeViewport3D</span><span class="index">makeViewport3D</span><a name="chapter-7-157"/><span class="index">ThreeDimensionalViewport</span><a name="chapter-7-158"/>.
+</p>
+
+
+<p>Create the empty three-space object  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>space</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm7-72" class="spadComm" >
+<form id="formComm7-72" action="javascript:makeRequest('7-72');" >
+<input id="comm7-72" type="text" class="command" style="width: 30em;" value="space := create3Space()$(ThreeSpace DFLOAT) " />
+</form>
+<span id="commSav7-72" class="commSav" >space := create3Space()$(ThreeSpace DFLOAT) </span>
+<div id="mathAns7-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>0</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+<p>Objects can be sent to this  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>space</mi></mstyle></math> using the operations
+exported by the <span class="teletype">ThreeSpace</span> domain.
+<span class="index">ThreeSpace</span><a name="chapter-7-159"/>
+The following examples place curves into  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>space</mi></mstyle></math>.
+</p>
+
+
+<p>Add these eight curves to the space.
+</p>
+
+
+
+
+<div id="spadComm7-73" class="spadComm" >
+<form id="formComm7-73" action="javascript:makeRequest('7-73');" >
+<input id="comm7-73" type="text" class="command" style="width: 107em;" value="closedCurve(space,[ [0,30,20], [0,30,30], [0,40,30], [0,40,100], [0,30,100],[0,30,110], [0,60,110], [0,60,100], [0,50,100], [0,50,30], [0,60,30], [0,60,20] ])  " />
+</form>
+<span id="commSav7-73" class="commSav" >closedCurve(space,[ [0,30,20], [0,30,30], [0,40,30], [0,40,100], [0,30,100],[0,30,110], [0,60,110], [0,60,100], [0,50,100], [0,50,30], [0,60,30], [0,60,20] ])  </span>
+<div id="mathAns7-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>1</mn><mtext><mrow><mtext>component</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-74" class="spadComm" >
+<form id="formComm7-74" action="javascript:makeRequest('7-74');" >
+<input id="comm7-74" type="text" class="command" style="width: 108em;" value="closedCurve(space,[ [80,0,30], [80,0,100], [70,0,110], [40,0,110], [30,0,100], [30,0,90], [40,0,90], [40,0,95], [45,0,100], [65,0,100], [70,0,95], [70,0,35] ])  " />
+</form>
+<span id="commSav7-74" class="commSav" >closedCurve(space,[ [80,0,30], [80,0,100], [70,0,110], [40,0,110], [30,0,100], [30,0,90], [40,0,90], [40,0,95], [45,0,100], [65,0,100], [70,0,95], [70,0,35] ])  </span>
+<div id="mathAns7-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>2</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-75" class="spadComm" >
+<form id="formComm7-75" action="javascript:makeRequest('7-75');" >
+<input id="comm7-75" type="text" class="command" style="width: 104em;" value="closedCurve(space,[ [70,0,35], [65,0,30], [45,0,30], [40,0,35], [40,0,60], [50,0,60], [50,0,70], [30,0,70], [30,0,30], [40,0,20], [70,0,20], [80,0,30] ])  " />
+</form>
+<span id="commSav7-75" class="commSav" >closedCurve(space,[ [70,0,35], [65,0,30], [45,0,30], [40,0,35], [40,0,60], [50,0,60], [50,0,70], [30,0,70], [30,0,30], [40,0,20], [70,0,20], [80,0,30] ])  </span>
+<div id="mathAns7-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>3</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-76" class="spadComm" >
+<form id="formComm7-76" action="javascript:makeRequest('7-76');" >
+<input id="comm7-76" type="text" class="command" style="width: 110em;" value="closedCurve(space,[ [0,70,20], [0,70,110], [0,110,110], [0,120,100], [0,120,70], [0,115,65], [0,120,60], [0,120,30], [0,110,20], [0,80,20], [0,80,30], [0,80,20] ])  " />
+</form>
+<span id="commSav7-76" class="commSav" >closedCurve(space,[ [0,70,20], [0,70,110], [0,110,110], [0,120,100], [0,120,70], [0,115,65], [0,120,60], [0,120,30], [0,110,20], [0,80,20], [0,80,30], [0,80,20] ])  </span>
+<div id="mathAns7-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>4</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-77" class="spadComm" >
+<form id="formComm7-77" action="javascript:makeRequest('7-77');" >
+<input id="comm7-77" type="text" class="command" style="width: 118em;" value="closedCurve(space,[ [0,105,30], [0,110,35], [0,110,55], [0,105,60], [0,80,60], [0,80,70], [0,105,70], [0,110,75], [0,110,95], [0,105,100], [0,80,100], [0,80,20], [0,80,30] ])  " />
+</form>
+<span id="commSav7-77" class="commSav" >closedCurve(space,[ [0,105,30], [0,110,35], [0,110,55], [0,105,60], [0,80,60], [0,80,70], [0,105,70], [0,110,75], [0,110,95], [0,105,100], [0,80,100], [0,80,20], [0,80,30] ])  </span>
+<div id="mathAns7-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>5</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-78" class="spadComm" >
+<form id="formComm7-78" action="javascript:makeRequest('7-78');" >
+<input id="comm7-78" type="text" class="command" style="width: 104em;" value="closedCurve(space,[ [140,0,20], [140,0,110], [130,0,110], [90,0,20], [101,0,20],[114,0,50], [130,0,50], [130,0,60], [119,0,60], [130,0,85], [130,0,20] ])  " />
+</form>
+<span id="commSav7-78" class="commSav" >closedCurve(space,[ [140,0,20], [140,0,110], [130,0,110], [90,0,20], [101,0,20],[114,0,50], [130,0,50], [130,0,60], [119,0,60], [130,0,85], [130,0,20] ])  </span>
+<div id="mathAns7-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>6</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-79" class="spadComm" >
+<form id="formComm7-79" action="javascript:makeRequest('7-79');" >
+<input id="comm7-79" type="text" class="command" style="width: 122em;" value="closedCurve(space,[ [0,140,20], [0,140,110], [0,150,110], [0,170,50], [0,190,110], [0,200,110], [0,200,20], [0,190,20], [0,190,75], [0,175,35], [0,165,35],[0,150,75], [0,150,20] ])  " />
+</form>
+<span id="commSav7-79" class="commSav" >closedCurve(space,[ [0,140,20], [0,140,110], [0,150,110], [0,170,50], [0,190,110], [0,200,110], [0,200,20], [0,190,20], [0,190,75], [0,175,35], [0,165,35],[0,150,75], [0,150,20] ])  </span>
+<div id="mathAns7-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>7</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-80" class="spadComm" >
+<form id="formComm7-80" action="javascript:makeRequest('7-80');" >
+<input id="comm7-80" type="text" class="command" style="width: 98em;" value="closedCurve(space,[ [200,0,20], [200,0,110], [189,0,110], [160,0,45], [160,0,110], [150,0,110], [150,0,20], [161,0,20], [190,0,85], [190,0,20] ])  " />
+</form>
+<span id="commSav7-80" class="commSav" >closedCurve(space,[ [200,0,20], [200,0,110], [189,0,110], [160,0,45], [160,0,110], [150,0,110], [150,0,20], [161,0,20], [190,0,85], [190,0,20] ])  </span>
+<div id="mathAns7-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>8</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+<p>Create and display the viewport using <span style="font-weight: bold;"> makeViewport3D</span>.
+Options may also be given but here are displayed as a list with values
+enclosed in parentheses.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 21em">
+makeViewport3D(space, title == "Letters") 
+</div>
+
+
+
+
+
+
+
+<a name="subsubsec-7.2.6.1"/>
+<div class="subsubsection"  id="subsubsec-7.2.6.1">
+<h3 class="subsubsectitle">7.2.6.1  Cube Example</h3>
+
+
+
+<p>As a second example of the use of primitives, we generate a cube using a
+polygon mesh.
+It is important to use a consistent orientation of the polygons for
+correct generation of three-dimensional objects.
+</p>
+
+
+<p>Again start with an empty three-space object.
+</p>
+
+
+
+
+<div id="spadComm7-81" class="spadComm" >
+<form id="formComm7-81" action="javascript:makeRequest('7-81');" >
+<input id="comm7-81" type="text" class="command" style="width: 30em;" value="spaceC := create3Space()$(ThreeSpace DFLOAT) " />
+</form>
+<span id="commSav7-81" class="commSav" >spaceC := create3Space()$(ThreeSpace DFLOAT) </span>
+<div id="mathAns7-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>0</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+<p>For convenience,
+give <span class="teletype">DoubleFloat</span> values  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math> names.
+</p>
+
+
+
+
+<div id="spadComm7-82" class="spadComm" >
+<form id="formComm7-82" action="javascript:makeRequest('7-82');" >
+<input id="comm7-82" type="text" class="command" style="width: 10em;" value="x: DFLOAT := 1 " />
+</form>
+<span id="commSav7-82" class="commSav" >x: DFLOAT := 1 </span>
+<div id="mathAns7-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-83" class="spadComm" >
+<form id="formComm7-83" action="javascript:makeRequest('7-83');" >
+<input id="comm7-83" type="text" class="command" style="width: 11em;" value="y: DFLOAT := -1 " />
+</form>
+<span id="commSav7-83" class="commSav" >y: DFLOAT := -1 </span>
+<div id="mathAns7-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+<p>Define the vertices of the cube.
+</p>
+
+
+
+
+<div id="spadComm7-84" class="spadComm" >
+<form id="formComm7-84" action="javascript:makeRequest('7-84');" >
+<input id="comm7-84" type="text" class="command" style="width: 30em;" value="a := point [x,x,y,1::DFLOAT]$(Point DFLOAT)  " />
+</form>
+<span id="commSav7-84" class="commSav" >a := point [x,x,y,1::DFLOAT]$(Point DFLOAT)  </span>
+<div id="mathAns7-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-85" class="spadComm" >
+<form id="formComm7-85" action="javascript:makeRequest('7-85');" >
+<input id="comm7-85" type="text" class="command" style="width: 30em;" value="b := point [y,x,y,4::DFLOAT]$(Point DFLOAT)  " />
+</form>
+<span id="commSav7-85" class="commSav" >b := point [y,x,y,4::DFLOAT]$(Point DFLOAT)  </span>
+<div id="mathAns7-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>4</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-86" class="spadComm" >
+<form id="formComm7-86" action="javascript:makeRequest('7-86');" >
+<input id="comm7-86" type="text" class="command" style="width: 30em;" value="c := point [y,x,x,8::DFLOAT]$(Point DFLOAT)  " />
+</form>
+<span id="commSav7-86" class="commSav" >c := point [y,x,x,8::DFLOAT]$(Point DFLOAT)  </span>
+<div id="mathAns7-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>8</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-87" class="spadComm" >
+<form id="formComm7-87" action="javascript:makeRequest('7-87');" >
+<input id="comm7-87" type="text" class="command" style="width: 31em;" value="d := point [x,x,x,12::DFLOAT]$(Point DFLOAT)  " />
+</form>
+<span id="commSav7-87" class="commSav" >d := point [x,x,x,12::DFLOAT]$(Point DFLOAT)  </span>
+<div id="mathAns7-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>12</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-88" class="spadComm" >
+<form id="formComm7-88" action="javascript:makeRequest('7-88');" >
+<input id="comm7-88" type="text" class="command" style="width: 31em;" value="e := point [x,y,y,16::DFLOAT]$(Point DFLOAT)  " />
+</form>
+<span id="commSav7-88" class="commSav" >e := point [x,y,y,16::DFLOAT]$(Point DFLOAT)  </span>
+<div id="mathAns7-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>16</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-89" class="spadComm" >
+<form id="formComm7-89" action="javascript:makeRequest('7-89');" >
+<input id="comm7-89" type="text" class="command" style="width: 31em;" value="f := point [y,y,y,20::DFLOAT]$(Point DFLOAT)  " />
+</form>
+<span id="commSav7-89" class="commSav" >f := point [y,y,y,20::DFLOAT]$(Point DFLOAT)  </span>
+<div id="mathAns7-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>20</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-90" class="spadComm" >
+<form id="formComm7-90" action="javascript:makeRequest('7-90');" >
+<input id="comm7-90" type="text" class="command" style="width: 31em;" value="g := point [y,y,x,24::DFLOAT]$(Point DFLOAT)  " />
+</form>
+<span id="commSav7-90" class="commSav" >g := point [y,y,x,24::DFLOAT]$(Point DFLOAT)  </span>
+<div id="mathAns7-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>24</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-91" class="spadComm" >
+<form id="formComm7-91" action="javascript:makeRequest('7-91');" >
+<input id="comm7-91" type="text" class="command" style="width: 31em;" value="h := point [x,y,x,27::DFLOAT]$(Point DFLOAT)  " />
+</form>
+<span id="commSav7-91" class="commSav" >h := point [x,y,x,27::DFLOAT]$(Point DFLOAT)  </span>
+<div id="mathAns7-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>27</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+<p>Add the faces of the cube as polygons to the space using a
+consistent orientation.
+</p>
+
+
+
+
+<div id="spadComm7-92" class="spadComm" >
+<form id="formComm7-92" action="javascript:makeRequest('7-92');" >
+<input id="comm7-92" type="text" class="command" style="width: 18em;" value="polygon(spaceC,[d,c,g,h])  " />
+</form>
+<span id="commSav7-92" class="commSav" >polygon(spaceC,[d,c,g,h])  </span>
+<div id="mathAns7-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>1</mn><mtext><mrow><mtext>component</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-93" class="spadComm" >
+<form id="formComm7-93" action="javascript:makeRequest('7-93');" >
+<input id="comm7-93" type="text" class="command" style="width: 18em;" value="polygon(spaceC,[d,h,e,a])  " />
+</form>
+<span id="commSav7-93" class="commSav" >polygon(spaceC,[d,h,e,a])  </span>
+<div id="mathAns7-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>2</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-94" class="spadComm" >
+<form id="formComm7-94" action="javascript:makeRequest('7-94');" >
+<input id="comm7-94" type="text" class="command" style="width: 18em;" value="polygon(spaceC,[c,d,a,b])  " />
+</form>
+<span id="commSav7-94" class="commSav" >polygon(spaceC,[c,d,a,b])  </span>
+<div id="mathAns7-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>3</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-95" class="spadComm" >
+<form id="formComm7-95" action="javascript:makeRequest('7-95');" >
+<input id="comm7-95" type="text" class="command" style="width: 18em;" value="polygon(spaceC,[g,c,b,f])  " />
+</form>
+<span id="commSav7-95" class="commSav" >polygon(spaceC,[g,c,b,f])  </span>
+<div id="mathAns7-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>4</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-96" class="spadComm" >
+<form id="formComm7-96" action="javascript:makeRequest('7-96');" >
+<input id="comm7-96" type="text" class="command" style="width: 18em;" value="polygon(spaceC,[h,g,f,e])  " />
+</form>
+<span id="commSav7-96" class="commSav" >polygon(spaceC,[h,g,f,e])  </span>
+<div id="mathAns7-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>5</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm7-97" class="spadComm" >
+<form id="formComm7-97" action="javascript:makeRequest('7-97');" >
+<input id="comm7-97" type="text" class="command" style="width: 18em;" value="polygon(spaceC,[e,f,b,a])  " />
+</form>
+<span id="commSav7-97" class="commSav" >polygon(spaceC,[e,f,b,a])  </span>
+<div id="mathAns7-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>-</mo><mi>Space</mi><mi>with</mi></mrow><mn>6</mn><mtext><mrow><mtext>components</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ThreeSpace DoubleFloat
+</div>
+
+
+
+<p>Create and display the viewport.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 20em">
+makeViewport3D(spaceC, title == "Cube") 
+</div>
+
+
+
+
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.2.7"/>
+<div class="subsection"  id="subsec-7.2.7">
+<h3 class="subsectitle">7.2.7  Coordinate System Transformations</h3>
+
+
+<a name="ugGraphCoord" class="label"/>
+
+<p><span class="index">graphics:advanced:coordinate systems</span><a name="chapter-7-160"/>
+</p>
+
+
+<p>The <span class="teletype">CoordinateSystems</span> package provides coordinate transformation
+functions that map a given data point from the coordinate system specified
+into the Cartesian coordinate system.
+<span class="index">CoordinateSystems</span><a name="chapter-7-161"/>
+The default coordinate system, given a triplet  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>f</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math>, assumes
+that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>=</mo><mi>f</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>u</mi></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mi>v</mi></mrow></mstyle></math>,
+that is, reads the coordinates in  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>z</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> order.
+</p>
+
+
+
+
+<div id="spadComm7-98" class="spadComm" >
+<form id="formComm7-98" action="javascript:makeRequest('7-98');" >
+<input id="comm7-98" type="text" class="command" style="width: 24em;" value="m(u:DFLOAT,v:DFLOAT):DFLOAT == u**2 " />
+</form>
+<span id="commSav7-98" class="commSav" >m(u:DFLOAT,v:DFLOAT):DFLOAT == u**2 </span>
+<div id="mathAns7-98" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;m&nbsp;:&nbsp;(DoubleFloat,DoubleFloat)&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Graph plotted in default coordinate system.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 9em">
+draw(m,0..3,0..5) 
+</div>
+
+
+
+
+
+
+<p>The  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> coordinate comes first since the first argument of
+the <span style="font-weight: bold;"> draw</span> command gives its values.
+In general, the coordinate systems Axiom provides, or any
+that you make up, must provide a map to an  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> triplet in
+order to be compatible with the
+<span class="spadfunFrom" >coordinates</span><span class="index">coordinates</span><a name="chapter-7-162"/><span class="index">DrawOption</span><a name="chapter-7-163"/> <span class="teletype">DrawOption</span>.
+<span class="index">DrawOption</span><a name="chapter-7-164"/>
+Here is an example.
+</p>
+
+
+<p>Define the identity function.
+</p>
+
+
+
+
+<div id="spadComm7-99" class="spadComm" >
+<form id="formComm7-99" action="javascript:makeRequest('7-99');" >
+<input id="comm7-99" type="text" class="command" style="width: 35em;" value="cartesian(point:Point DFLOAT):Point DFLOAT == point " />
+</form>
+<span id="commSav7-99" class="commSav" >cartesian(point:Point DFLOAT):Point DFLOAT == point </span>
+<div id="mathAns7-99" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;cartesian&nbsp;:&nbsp;Point&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;Point&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoubleFloat&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Pass  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>cartesian</mi></mstyle></math> as the <span class="spadfunFrom" >coordinates</span><span class="index">coordinates</span><a name="chapter-7-165"/><span class="index">DrawOption</span><a name="chapter-7-166"/>
+parameter to the <span style="font-weight: bold;"> draw</span> command.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 21em">
+draw(m,0..3,0..5,coordinates==cartesian) 
+</div>
+
+
+
+
+
+
+<p>What happened?  The option <span class="teletype">coordinates == cartesian</span> directs
+Axiom to treat the dependent variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> defined by  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>m</mi><mo>=</mo><msup><mi>u</mi><mn>2</mn></msup></mrow></mstyle></math> as the
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> coordinate.  Thus the triplet of values  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math> is transformed
+to coordinates  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> and so we get the graph of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><msup><mi>y</mi><mn>2</mn></msup></mrow></mstyle></math>.
+</p>
+
+
+<p>Here is another example.
+The <span class="spadfunFrom" >cylindrical</span><span class="index">cylindrical</span><a name="chapter-7-167"/><span class="index">CoordinateSystems</span><a name="chapter-7-168"/> transform takes
+<span class="index">coordinate system:cylindrical</span><a name="chapter-7-169"/>
+input of the form  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>w</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math>, interprets it in the order
+<span class="index">cylindrical coordinate system</span><a name="chapter-7-170"/>
+( <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math>, <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>)
+and maps it to the Cartesian coordinates
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>r</mi><mo>cos</mo><mo>(</mo><mi>&#x03B8;</mi><mo>)</mo></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mi>r</mi><mo>sin</mo><mo>(</mo><mi>&#x03B8;</mi><mo>)</mo></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>=</mo><mi>z</mi></mrow></mstyle></math>
+in which
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> is the radius,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math> is the angle and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> is the z-coordinate.
+</p>
+
+
+<p>An example using the <span class="spadfunFrom" >cylindrical</span><span class="index">cylindrical</span><a name="chapter-7-171"/><span class="index">CoordinateSystems</span><a name="chapter-7-172"/>
+coordinates for the constant  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>=</mo><mn>3</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm7-100" class="spadComm" >
+<form id="formComm7-100" action="javascript:makeRequest('7-100');" >
+<input id="comm7-100" type="text" class="command" style="width: 22em;" value="f(u:DFLOAT,v:DFLOAT):DFLOAT == 3 " />
+</form>
+<span id="commSav7-100" class="commSav" >f(u:DFLOAT,v:DFLOAT):DFLOAT == 3 </span>
+<div id="mathAns7-100" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;f&nbsp;:&nbsp;(DoubleFloat,DoubleFloat)&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Graph plotted in cylindrical coordinates.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 23em">
+draw(f,0..%pi,0..6,coordinates==cylindrical) 
+</div>
+
+
+
+
+
+
+<p>Suppose you would like to specify  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> as a function of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math> instead of just  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math>?
+Well, you still can use the <span style="font-weight: bold;"> cylindrical</span> Axiom
+transformation but we have to reorder the triplet before
+passing it to the transformation.
+</p>
+
+
+<p>First, let's create a point to
+work with and call it  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>pt</mi></mstyle></math> with some color  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>col</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm7-101" class="spadComm" >
+<form id="formComm7-101" action="javascript:makeRequest('7-101');" >
+<input id="comm7-101" type="text" class="command" style="width: 6em;" value="col := 5 " />
+</form>
+<span id="commSav7-101" class="commSav" >col := 5 </span>
+<div id="mathAns7-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm7-102" class="spadComm" >
+<form id="formComm7-102" action="javascript:makeRequest('7-102');" >
+<input id="comm7-102" type="text" class="command" style="width: 26em;" value="pt := point[1,2,3,col]$(Point DFLOAT)  " />
+</form>
+<span id="commSav7-102" class="commSav" >pt := point[1,2,3,col]$(Point DFLOAT)  </span>
+<div id="mathAns7-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>3</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>5</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+<p>The reordering you want is
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>z</mi><mo>,</mo><mi>r</mi><mo>,</mo><mi>&#x03B8;</mi><mo>)</mo></mrow></mstyle></math> to
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>r</mi><mo>,</mo><mi>&#x03B8;</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>
+so that the first element is moved to the third element, while the second
+and third elements move forward and the color element does not change.
+</p>
+
+
+<p>Define a function <span style="font-weight: bold;"> reorder</span> to reorder the point elements.
+</p>
+
+
+
+
+<div id="spadComm7-103" class="spadComm" >
+<form id="formComm7-103" action="javascript:makeRequest('7-103');" >
+<input id="comm7-103" type="text" class="command" style="width: 44em;" value="reorder(p:Point DFLOAT):Point DFLOAT == point[p.2, p.3, p.1, p.4] " />
+</form>
+<span id="commSav7-103" class="commSav" >reorder(p:Point DFLOAT):Point DFLOAT == point[p.2, p.3, p.1, p.4] </span>
+<div id="mathAns7-103" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;reorder&nbsp;:&nbsp;Point&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;Point&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoubleFloat&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The function moves the second and third elements
+forward but the color does not change.
+</p>
+
+
+
+
+<div id="spadComm7-104" class="spadComm" >
+<form id="formComm7-104" action="javascript:makeRequest('7-104');" >
+<input id="comm7-104" type="text" class="command" style="width: 8em;" value="reorder pt " />
+</form>
+<span id="commSav7-104" class="commSav" >reorder pt </span>
+<div id="mathAns7-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>2</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>3</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>5</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+<p>The function <span style="font-weight: bold;"> newmap</span> converts our reordered version of
+the cylindrical coordinate system to the standard
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> Cartesian system.
+</p>
+
+
+
+
+<div id="spadComm7-105" class="spadComm" >
+<form id="formComm7-105" action="javascript:makeRequest('7-105');" >
+<input id="comm7-105" type="text" class="command" style="width: 44em;" value="newmap(pt:Point DFLOAT):Point DFLOAT == cylindrical(reorder pt)  " />
+</form>
+<span id="commSav7-105" class="commSav" >newmap(pt:Point DFLOAT):Point DFLOAT == cylindrical(reorder pt)  </span>
+<div id="mathAns7-105" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Function&nbsp;declaration&nbsp;newmap&nbsp;:&nbsp;Point&nbsp;DoubleFloat&nbsp;-&gt;&nbsp;Point&nbsp;DoubleFloat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm7-106" class="spadComm" >
+<form id="formComm7-106" action="javascript:makeRequest('7-106');" >
+<input id="comm7-106" type="text" class="command" style="width: 8em;" value="newmap pt  " />
+</form>
+<span id="commSav7-106" class="commSav" >newmap pt  </span>
+<div id="mathAns7-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>9799849932008908</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>28224001611973443</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>5</mn><mo>.</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Point DoubleFloat
+</div>
+
+
+
+<p>Graph the same function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> using the coordinate mapping of the function
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>newmap</mi></mstyle></math>, so it is now interpreted as
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>=</mo><mn>3</mn></mrow></mstyle></math>:
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 22em">
+draw(f,0..3,0..2*%pi,coordinates==newmap) 
+</div>
+
+
+
+
+
+
+
+
+<p>The <span class="teletype">CoordinateSystems</span> package exports the following
+<span class="index">coordinate system</span><a name="chapter-7-173"/>
+operations:
+<span style="font-weight: bold;"> bipolar</span>,
+<span style="font-weight: bold;"> bipolarCylindrical</span>,
+<span style="font-weight: bold;"> cartesian</span>,
+<span style="font-weight: bold;"> conical</span>,
+<span style="font-weight: bold;"> cylindrical</span>,
+<span style="font-weight: bold;"> elliptic</span>,
+<span style="font-weight: bold;"> ellipticCylindrical</span>,
+<span style="font-weight: bold;"> oblateSpheroidal</span>,
+<span style="font-weight: bold;"> parabolic</span>,
+<span style="font-weight: bold;"> parabolicCylindrical</span>,
+<span style="font-weight: bold;"> paraboloidal</span>,
+<span style="font-weight: bold;"> polar</span>,
+<span style="font-weight: bold;"> prolateSpheroidal</span>,
+<span style="font-weight: bold;"> spherical</span>, and
+<span style="font-weight: bold;"> toroidal</span>.
+Use Browse or the <span class="teletype">)show</span> system command
+<span class="index">show</span><a name="chapter-7-174"/>
+to get more information.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.2.8"/>
+<div class="subsection"  id="subsec-7.2.8">
+<h3 class="subsectitle">7.2.8  Three-Dimensional Clipping</h3>
+
+
+<a name="ugGraphClip" class="label"/>
+
+
+<p>A three-dimensional graph can be explicitly clipped within the <span style="font-weight: bold;"> draw</span>
+<span class="index">graphics:advanced:clip</span><a name="chapter-7-175"/>
+command by indicating a minimum and maximum threshold for the
+<span class="index">clipping</span><a name="chapter-7-176"/>
+given function definition.
+These thresholds can be defined using the Axiom <span style="font-weight: bold;"> min</span>
+and <span style="font-weight: bold;"> max</span> functions.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+gamma(x,y)&nbsp;==<br />
+&nbsp;&nbsp;g&nbsp;:=&nbsp;Gamma&nbsp;complex(x,y)<br />
+&nbsp;&nbsp;point&nbsp;[x,&nbsp;y,&nbsp;max(&nbsp;min(real&nbsp;g,&nbsp;4),&nbsp;-4),&nbsp;argument&nbsp;g]<br />
+</div>
+
+
+
+<p>Here is an example that clips
+the gamma function in order to eliminate the extreme divergence it creates.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 32em">
+draw(gamma,-%pi..%pi,-%pi..%pi,var1Steps==50,var2Steps==50) 
+</div>
+
+
+
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.2.9"/>
+<div class="subsection"  id="subsec-7.2.9">
+<h3 class="subsectitle">7.2.9  Three-Dimensional Control-Panel</h3>
+
+
+<a name="ugGraphThreeDControl" class="label"/>
+
+
+<p><span class="index">graphics:3D control-panel</span><a name="chapter-7-177"/>
+Once you have created a viewport, move your mouse to the viewport
+and click with your left mouse button.
+This displays a control-panel on the side of the viewport
+that is closest to where you clicked.
+</p>
+
+
+
+<div class="image">
+<img src="ps/3Dctrl.png" alt="picture"/>
+<div class="figcaption">Three-dimensional control-panel.</div>
+</div>
+
+
+<a name="subsubsec-7.2.9.1"/>
+<div class="subsubsection"  id="subsubsec-7.2.9.1">
+<h3 class="subsubsectitle">7.2.9.1  Transformations</h3>
+
+
+
+<p>We recommend you first select the <span style="font-weight: bold;"> Bounds</span> button while
+<span class="index">graphics:3D control-panel:transformations</span><a name="chapter-7-178"/>
+executing transformations since the bounding box displayed
+indicates the object's position as it changes.
+</p>
+
+
+<p><dl>
+<dt>Rotate:</dt>
+<dd>  A rotation transformation occurs by clicking the mouse
+<span class="index">graphics:3D control-panel:rotate</span><a name="chapter-7-179"/>
+within the <span style="font-weight: bold;"> Rotate</span> window in the upper left corner of the
+control-panel.
+The rotation is computed in spherical coordinates, using the
+horizontal mouse position to increment or decrement the value of
+the longitudinal angle  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math> within the
+range of 0 to 2 <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math> and the vertical mouse position
+to increment or decrement the value of the latitudinal angle
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> within the range of - <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math>
+to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math>.
+The active mode of rotation is displayed in green on a color
+monitor or in clear text on a black and white monitor, while the
+inactive mode is displayed in red for color display or a mottled
+pattern for black and white.
+<dl>
+<dt>origin:</dt>
+<dd>  The <span style="font-weight: bold;"> origin</span> button indicates that the
+rotation is to occur with respect to the origin of the viewing space, that is
+indicated by the axes.
+</dd>
+<dt>object:</dt>
+<dd>  The <span style="font-weight: bold;"> object</span> button indicates that the
+rotation is to occur with respect to the center of volume of the object,
+independent of the axes' origin position.
+</dd>
+</dl>
+</dd>
+<dt>Scale:</dt>
+<dd>  A scaling transformation occurs by clicking the mouse
+<span class="index">graphics:3D control-panel:scale</span><a name="chapter-7-180"/>
+within the <span style="font-weight: bold;"> Scale</span> window in the upper center of the
+control-panel, containing a zoom arrow.
+The axes along which the scaling is to occur are indicated by
+selecting the appropriate button above the zoom arrow window.
+The selected axes are displayed in green on a color monitor or in
+clear text on a black and white monitor, while the unselected axes
+are displayed in red for a color display or a mottled pattern for
+black and white.
+<dl>
+<dt>uniform:</dt>
+<dd>  Uniform scaling along the <span class="teletype">x</span>, <span class="teletype">y</span>
+and <span class="teletype">z</span> axes occurs when all the axes buttons are selected.
+</dd>
+<dt>non-uniform:</dt>
+<dd>  If any of the axes buttons are
+not selected, non-uniform scaling occurs, that is, scaling occurs only in the
+direction of the axes that are selected.
+</dd>
+</dl>
+</dd>
+<dt>Translate:</dt>
+<dd>  Translation occurs by indicating with the mouse in the
+<span class="index">graphics:3D control-panel:translate</span><a name="chapter-7-181"/>
+<span style="font-weight: bold;"> Translate</span> window the direction you want the graph to move.
+This window is located in the upper right corner of the
+control-panel and contains a potentiometer with crossed arrows
+pointing up, down, left and right.
+Along the top of the <span style="font-weight: bold;"> Translate</span> window are three buttons
+(<span style="font-weight: bold;"> XY</span>,
+<span style="font-weight: bold;"> XZ</span>, and <span style="font-weight: bold;"> YZ</span>) indicating the three orthographic projection planes.
+Each orientates the group as a view into that plane.
+Any translation of the graph occurs only along this plane.
+</dd>
+</dl>
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-7.2.9.2"/>
+<div class="subsubsection"  id="subsubsec-7.2.9.2">
+<h3 class="subsubsectitle">7.2.9.2  Messages</h3>
+
+
+
+<p><span class="index">graphics:3D control-panel:messages</span><a name="chapter-7-182"/>
+</p>
+
+
+<p>The window directly below the potentiometer windows for transformations is
+used to display system messages relating to the viewport, the control-panel
+and the current graph displaying status.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-7.2.9.3"/>
+<div class="subsubsection"  id="subsubsec-7.2.9.3">
+<h3 class="subsubsectitle">7.2.9.3  Colormap</h3>
+
+
+
+<p><span class="index">graphics:3D control-panel:color map</span><a name="chapter-7-183"/>
+</p>
+
+
+<p>Directly below the message window is the colormap range indicator
+window.
+<span class="index">colormap</span><a name="chapter-7-184"/>
+The Axiom Colormap shows a sampling of the spectrum from
+which hues can be drawn to represent the colors of a surface.
+The Colormap is composed of five shades for each of the hues along
+this spectrum.
+By moving the markers above and below the Colormap, the range of
+hues that are used to color the existing surface are set.
+The bottom marker shows the hue for the low end of the color range
+and the top marker shows the hue for the upper end of the range.
+Setting the bottom and top markers at the same hue results in
+monochromatic smooth shading of the graph when <span style="font-weight: bold;"> Smooth</span> mode is selected.
+At each end of the Colormap are <span style="font-weight: bold;"> +</span> and <span style="font-weight: bold;"> -</span> buttons.
+When clicked on, these increment or decrement the top or bottom
+marker.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-7.2.9.4"/>
+<div class="subsubsection"  id="subsubsec-7.2.9.4">
+<h3 class="subsubsectitle">7.2.9.4  Buttons</h3>
+
+
+<p><span class="index">graphics:3D control-panel:buttons</span><a name="chapter-7-185"/>
+</p>
+
+
+<p>Below the Colormap window and to the left are located various
+buttons that determine the characteristics of a graph.
+The buttons along the bottom and right hand side all have special
+meanings; the remaining buttons in the first row indicate the mode
+or style used to display the graph.
+The second row are toggles that turn on or off a property of the
+graph.
+On a color monitor, the property is on if green (clear text, on a
+monochrome monitor) and off if red (mottled pattern, on a
+monochrome monitor).
+Here is a list of their functions.
+</p>
+
+
+<p><dl>
+<dt>Wire</dt>
+<dd> displays surface and tube plots as a
+<span class="index">graphics:3D control-panel:wire</span><a name="chapter-7-186"/>
+wireframe image in a single color (blue) with no hidden surfaces removed,
+or displays space curve plots in colors based upon their parametric variables.
+This is the fastest mode for displaying a graph.
+This is very useful when you
+want to find a good orientation of your graph.
+</dd>
+<dt>Solid</dt>
+<dd> displays the graph with hidden
+<span class="index">graphics:3D control-panel:solid</span><a name="chapter-7-187"/>
+surfaces removed, drawing each polygon beginning with the furthest
+from the viewer.
+The edges of the polygons are displayed in the hues specified by
+the range in the Colormap window.
+</dd>
+<dt>Shade</dt>
+<dd> displays the graph with hidden
+<span class="index">graphics:3D control-panel:shade</span><a name="chapter-7-188"/>
+surfaces removed and with the polygons shaded, drawing each
+polygon beginning with the furthest from the viewer.
+Polygons are shaded in the hues specified by the range in the
+Colormap window using the Phong illumination model.
+<span class="index">Phong:illumination model</span><a name="chapter-7-189"/>
+</dd>
+<dt>Smooth</dt>
+<dd> displays the graph using a
+<span class="index">graphics:3D control-panel:smooth</span><a name="chapter-7-190"/>
+renderer that computes the graph one line at a time.
+The location and color of the graph at each visible point on the
+screen are determined and displayed using the Phong illumination
+<span class="index">Phong:illumination model</span><a name="chapter-7-191"/>
+model.
+Smooth shading is done in one of two ways, depending on the range
+selected in the colormap window and the number of colors available
+from the hardware and/or window manager.
+When the top and bottom markers of the colormap range are set to
+different hues, the graph is rendered by dithering between the
+<span class="index">dithering</span><a name="chapter-7-192"/>
+transitions in color hue.
+When the top and bottom markers of the colormap range are set to
+the same hue, the graph is rendered using the Phong smooth shading
+model.
+<span class="index">Phong:smooth shading model</span><a name="chapter-7-193"/>
+However, if enough colors cannot be allocated for this purpose,
+the renderer reverts to the color dithering method until a
+sufficient color supply is available.
+For this reason, it may not be possible to render multiple Phong
+smooth shaded graphs at the same time on some systems.
+</dd>
+<dt>Bounds</dt>
+<dd> encloses the entire volume of the
+viewgraph within a bounding box, or removes the box if previously selected.
+<span class="index">graphics:3D control-panel:bounds</span><a name="chapter-7-194"/>
+The region that encloses the entire volume of the viewport graph is displayed.
+</dd>
+<dt>Axes</dt>
+<dd> displays Cartesian
+<span class="index">graphics:3D control-panel:axes</span><a name="chapter-7-195"/>
+coordinate axes of the space, or turns them off if previously selected.
+</dd>
+<dt>Outline</dt>
+<dd> causes
+<span class="index">graphics:3D control-panel:outline</span><a name="chapter-7-196"/>
+quadrilateral polygons forming the graph surface to be outlined in black when
+the graph is displayed in <span style="font-weight: bold;"> Shade</span> mode.
+</dd>
+<dt>BW</dt>
+<dd> converts a color viewport to black and white, or vice-versa.
+<span class="index">graphics:3D control-panel:bw</span><a name="chapter-7-197"/>
+When this button is selected the
+control-panel and viewport switch to an immutable colormap composed of a range
+of grey scale patterns or tiles that are used wherever shading is necessary.
+</dd>
+<dt>Light</dt>
+<dd> takes you to a control-panel described below.
+</dd>
+<dt>ViewVolume</dt>
+<dd> takes you to another control-panel as described below.
+<span class="index">graphics:3D control-panel:save</span><a name="chapter-7-198"/>
+</dd>
+<dt>Save</dt>
+<dd> creates a menu of the possible file types that can
+be written using the control-panel.
+The <span style="font-weight: bold;"> Exit</span> button leaves the save menu.
+The <span style="font-weight: bold;"> Pixmap</span> button writes an Axiom pixmap of
+<span class="index">graphics:3D control-panel:pixmap</span><a name="chapter-7-199"/>
+the current viewport contents.  The file is called <span style="font-weight: bold;"> axiom3D.pixmap</span> and is
+located in the directory from which Axiom or <span style="font-weight: bold;"> viewAlone</span> was
+started.
+The <span style="font-weight: bold;"> PS</span> button writes the current viewport contents to
+<span class="index">graphics:3D control-panel:ps</span><a name="chapter-7-200"/>
+PostScript output rather than to the viewport window.
+By default the file is called <span style="font-weight: bold;"> axiom3D.ps</span>; however, if a file
+<span class="index">file:.Xdefaults @<span style="font-weight: bold;"> .Xdefaults</span><a name="chapter-7-201"/></span>
+name is specified in the user's <span style="font-weight: bold;"> .Xdefaults</span> file it is
+<span class="index">graphics:.Xdefaults:PostScript file name</span><a name="chapter-7-202"/>
+used.
+The file is placed in the directory from which the Axiom or
+<span style="font-weight: bold;"> viewAlone</span> session was begun.
+See also the <span class="spadfunFrom" >write</span><span class="index">write</span><a name="chapter-7-203"/><span class="index">ThreeDimensionalViewport</span><a name="chapter-7-204"/>
+function.
+<span class="index">PostScript</span><a name="chapter-7-205"/>
+</dd>
+<dt>Reset</dt>
+<dd> returns the object transformation
+<span class="index">graphics:3D control-panel:reset</span><a name="chapter-7-206"/>
+characteristics back to their initial states.
+</dd>
+<dt>Hide</dt>
+<dd> causes the control-panel for the
+<span class="index">graphics:3D control-panel:hide</span><a name="chapter-7-207"/>
+corresponding viewport to disappear from the screen.
+</dd>
+<dt>Quit</dt>
+<dd>  queries whether the current viewport
+<span class="index">graphics:3D control-panel:quit</span><a name="chapter-7-208"/>
+session should be terminated.
+</dd>
+</dl>
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-7.2.9.5"/>
+<div class="subsubsection"  id="subsubsec-7.2.9.5">
+<h3 class="subsubsectitle">7.2.9.5  Light</h3>
+
+
+
+<p><span class="index">graphics:3D control-panel:light</span><a name="chapter-7-209"/>
+</p>
+
+
+
+
+
+
+
+
+
+<p>The <span style="font-weight: bold;"> Light</span> button changes the control-panel into the
+<span style="font-weight: bold;"> Lighting Control-Panel</span>.  At the top of this panel, the three axes
+are shown with the same orientation as the object.  A light vector from
+the origin of the axes shows the current position of the light source
+relative to the object.  At the bottom of the panel is an <span style="font-weight: bold;"> Abort</span>
+button that cancels any changes to the lighting that were made, and a
+<span style="font-weight: bold;"> Return</span> button that carries out the current set of lighting changes
+on the graph.
+</p>
+
+
+<p><dl>
+<dt>XY:</dt>
+<dd>  The <span style="font-weight: bold;"> XY</span> lighting axes window is below the
+<span class="index">graphics:3D control-panel:move xy</span><a name="chapter-7-210"/>
+<span style="font-weight: bold;"> Lighting Control-Panel</span> title and to the left.
+This changes the light vector within the <span style="font-weight: bold;"> XY</span> view plane.
+</dd>
+<dt>Z:</dt>
+<dd>  The <span style="font-weight: bold;"> Z</span> lighting axis window is below the
+<span class="index">graphics:3D control-panel:move z</span><a name="chapter-7-211"/>
+<span style="font-weight: bold;"> Lighting Control-Panel</span> title and in the center.  This
+changes the <span style="font-weight: bold;"> Z</span>
+location of the light vector.
+</dd>
+<dt>Intensity:</dt>
+<dd>
+Below the <span style="font-weight: bold;"> Lighting Control-Panel</span> title
+<span class="index">graphics:3D control-panel:intensity</span><a name="chapter-7-212"/>
+and to the right is the light intensity meter.
+Moving the intensity indicator down decreases the amount of
+light emitted from the light source.
+When the indicator is at the top of the meter the light source is
+emitting at 100% intensity.
+At the bottom of the meter the light source is emitting at a level
+slightly above ambient lighting.
+</dd>
+</dl>
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsubsec-7.2.9.6"/>
+<div class="subsubsection"  id="subsubsec-7.2.9.6">
+<h3 class="subsubsectitle">7.2.9.6  View Volume</h3>
+
+
+
+<p><span class="index">graphics:3D control-panel:view volume</span><a name="chapter-7-213"/>
+</p>
+
+
+<p>The <span style="font-weight: bold;"> View Volume</span> button changes the control-panel into
+the <span style="font-weight: bold;"> Viewing Volume Panel</span>.
+At the bottom of the viewing panel is an <span style="font-weight: bold;"> Abort</span> button that
+cancels any changes to the viewing volume that were made and a
+<span class="italic">Return</span> button that carries out the current set of
+viewing changes to the graph.
+</p>
+
+
+
+
+
+
+
+
+
+<p><dl>
+<dt>Eye Reference:</dt>
+<dd>  At the top of this panel is the
+<span class="index">graphics:3D control-panel:eye reference</span><a name="chapter-7-214"/>
+<span style="font-weight: bold;"> Eye Reference</span> window.
+It shows a planar projection of the viewing pyramid from the eye
+of the viewer relative to the location of the object.
+This has a bounding region represented by the rectangle on the
+left.
+Below the object rectangle is the <span style="font-weight: bold;"> Hither</span> window.
+By moving the slider in this window the hither clipping plane sets
+<span class="index">hither clipping plane</span><a name="chapter-7-215"/>
+the front of the view volume.
+As a result of this depth clipping all points of the object closer
+to the eye than this hither plane are not shown.
+The <span style="font-weight: bold;"> Eye Distance</span> slider to the right of the <span style="font-weight: bold;"> Hither</span>
+slider is used to change the degree of perspective in the image.
+</dd>
+<dt>Clip Volume:</dt>
+<dd>  The <span style="font-weight: bold;"> Clip Volume</span> window is at the
+<span class="index">graphics:3D control-panel:clip volume</span><a name="chapter-7-216"/>
+bottom of the <span style="font-weight: bold;"> Viewing Volume Panel</span>.
+On the right is a <span style="font-weight: bold;"> Settings</span> menu.
+In this menu are buttons to select viewing attributes.
+Selecting the <span style="font-weight: bold;"> Perspective</span> button computes the image using
+perspective projection.
+<span class="index">graphics:3D control-panel:perspective</span><a name="chapter-7-217"/>
+The <span style="font-weight: bold;"> Show Region</span> button indicates whether the clipping region
+of the
+<span class="index">graphics:3D control-panel:show clip region</span><a name="chapter-7-218"/>
+volume is to be drawn in the viewport and the <span style="font-weight: bold;"> Clipping On</span>
+button shows whether the view volume clipping is to be in effect
+when the image
+<span class="index">graphics:3D control-panel:clipping on</span><a name="chapter-7-219"/>
+is drawn.
+The left side of the <span style="font-weight: bold;"> Clip Volume</span> window shows the clipping
+<span class="index">graphics:3D control-panel:clip volume</span><a name="chapter-7-220"/>
+boundary of the graph.
+Moving the knobs along the <span style="font-weight: bold;"> X</span>, <span style="font-weight: bold;"> Y</span>, and <span style="font-weight: bold;"> Z</span> sliders
+adjusts the volume of the clipping region accordingly.
+</dd>
+</dl>
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.2.10"/>
+<div class="subsection"  id="subsec-7.2.10">
+<h3 class="subsectitle">7.2.10  Operations for Three-Dimensional Graphics</h3>
+
+
+<a name="ugGraphThreeDops" class="label"/>
+
+
+
+<p>Here is a summary of useful Axiom operations for three-dimensional
+graphics.
+Each operation name is followed by a list of arguments.
+Each argument is written as a variable informally named according
+to the type of the argument (for example, <span class="italic">integer</span>).
+If appropriate, a default value for an argument is given in
+parentheses immediately following the name.
+</p>
+
+
+
+
+<p><dl>
+<dt><span style="font-weight: bold;"> adaptive3D?</span>&nbsp;<span class="funArgs">()</span></dt>
+<dd>
+tests whether space curves are to be plotted
+<span class="index">graphics:plot3d defaults:adaptive</span><a name="chapter-7-221"/>
+according to the
+<span class="index">adaptive plotting</span><a name="chapter-7-222"/>
+adaptive refinement algorithm.
+</dd>
+<dt><span style="font-weight: bold;"> axes</span>&nbsp;<span class="funArgs">(viewport, string<span class="argDef" >("on")</span>)</span></dt>
+<dd>
+turns the axes on and off.
+<span class="index">graphics:3D commands:axes</span><a name="chapter-7-223"/>
+</dd>
+<dt><span style="font-weight: bold;"> close</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+closes the viewport.
+<span class="index">graphics:3D commands:close</span><a name="chapter-7-224"/>
+</dd>
+<dt><span style="font-weight: bold;"> colorDef</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>color</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math><span class="argDef" >(1)</span>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>color</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math><span class="argDef" >(27)</span>)</span></dt>
+<dd>
+sets the colormap
+<span class="index">graphics:3D commands:define color</span><a name="chapter-7-225"/>
+range to be from
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>color</mtext></mrow><mn>1</mn></msub></mrow></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext mathvariant='sans-serif-italic'>color</mtext></mrow><mn>2</mn></msub></mrow></mstyle></math>.
+</dd>
+<dt><span style="font-weight: bold;"> controlPanel</span>&nbsp;<span class="funArgs">(viewport, string<span class="argDef" >("off")</span>)</span></dt>
+<dd>
+declares whether the
+<span class="index">graphics:3D commands:control-panel</span><a name="chapter-7-226"/>
+control-panel for the viewport is to be displayed or not.
+</dd>
+<dt><span style="font-weight: bold;"> diagonals</span>&nbsp;<span class="funArgs">(viewport, string<span class="argDef" >("off")</span>)</span></dt>
+<dd>
+declares whether the
+<span class="index">graphics:3D commands:diagonals</span><a name="chapter-7-227"/>
+polygon outline includes the diagonals or not.
+</dd>
+<dt><span style="font-weight: bold;"> drawStyle</span>&nbsp;<span class="funArgs">(viewport, style)</span></dt>
+<dd>
+selects which of four drawing styles
+<span class="index">graphics:3D commands:drawing style</span><a name="chapter-7-228"/>
+are used: <span class="teletype">"wireMesh", "solid", "shade",</span> or <span class="teletype">"smooth".</span>
+</dd>
+<dt><span style="font-weight: bold;"> eyeDistance</span>&nbsp;<span class="funArgs">(viewport,float<span class="argDef" >(500)</span>)</span></dt>
+<dd>
+sets the distance of the eye from the origin of the object
+<span class="index">graphics:3D commands:eye distance</span><a name="chapter-7-229"/>
+for use in the <span class="spadfunFrom" >perspective</span><span class="index">perspective</span><a name="chapter-7-230"/><span class="index">ThreeDimensionalViewport</span><a name="chapter-7-231"/>.
+</dd>
+<dt><span style="font-weight: bold;"> key</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+returns the operating
+<span class="index">graphics:3D commands:key</span><a name="chapter-7-232"/>
+system process ID number for the viewport.
+</dd>
+<dt><span style="font-weight: bold;"> lighting</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>x</mi></msub></mrow></mstyle></math><span class="argDef" >(-0.5)</span>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>y</mi></msub></mrow></mstyle></math><span class="argDef" >(0.5)</span>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>z</mi></msub></mrow></mstyle></math><span class="argDef" >(0.5)</span>)</span></dt>
+<dd>
+sets the Cartesian
+<span class="index">graphics:3D commands:lighting</span><a name="chapter-7-233"/>
+coordinates of the light source.
+</dd>
+<dt><span style="font-weight: bold;"> modifyPointData</span>&nbsp;<span class="funArgs">(viewport,integer,point)</span></dt>
+<dd>
+replaces the coordinates of the point with
+<span class="index">graphics:3D commands:modify point data</span><a name="chapter-7-234"/>
+the index <span class="italic">integer</span> with <span class="italic">point</span>.
+</dd>
+<dt><span style="font-weight: bold;"> move</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>x</mi></msub></mrow></mstyle></math><span class="argDef" >(viewPosDefault)</span>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>y</mi></msub></mrow></mstyle></math><span class="argDef" >(viewPosDefault)</span>)</span></dt>
+<dd>
+moves the upper
+<span class="index">graphics:3D commands:move</span><a name="chapter-7-235"/>
+left-hand corner of the viewport to screen position
+({  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>x</mi></msub></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>y</mi></msub></mrow></mstyle></math>}).
+</dd>
+<dt><span style="font-weight: bold;"> options</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+returns a list of all current draw options.
+</dd>
+<dt><span style="font-weight: bold;"> outlineRender</span>&nbsp;<span class="funArgs">(viewport, string<span class="argDef" >("off")</span>)</span></dt>
+<dd>
+turns polygon outlining
+<span class="index">graphics:3D commands:outline</span><a name="chapter-7-236"/>
+off or on when drawing in <span class="teletype">"shade"</span> mode.
+</dd>
+<dt><span style="font-weight: bold;"> perspective</span>&nbsp;<span class="funArgs">(viewport, string<span class="argDef" >("on")</span>)</span></dt>
+<dd>
+turns perspective
+<span class="index">graphics:3D commands:perspective</span><a name="chapter-7-237"/>
+viewing on and off.
+</dd>
+<dt><span style="font-weight: bold;"> reset</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+resets the attributes of a viewport to their
+<span class="index">graphics:3D commands:reset</span><a name="chapter-7-238"/>
+initial settings.
+</dd>
+<dt><span style="font-weight: bold;"> resize</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>width</mi></msub></mrow></mstyle></math> <span class="argDef" >(viewSizeDefault)</span>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>height</mi></msub></mrow></mstyle></math> <span class="argDef" >(viewSizeDefault)</span>)</span></dt>
+<dd>
+resets the width and height
+<span class="index">graphics:3D commands:resize</span><a name="chapter-7-239"/>
+values for a viewport.
+</dd>
+<dt><span style="font-weight: bold;"> rotate</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>number</mi><mi>&#x03B8;</mi></msub></mrow></mstyle></math><span class="argDef" >(viewThetaDefapult)</span>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math><span class="argDef" >(viewPhiDefault)</span>)</span></dt>
+<dd>
+rotates the viewport by rotation angles for longitude
+(<span class="italic"> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math></span>) and
+latitude (<span class="italic"> <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math></span>).
+Angles designate radians if given as floats, or degrees if given
+<span class="index">graphics:3D commands:rotate</span><a name="chapter-7-240"/>
+as integers.
+</dd>
+<dt><span style="font-weight: bold;"> setAdaptive3D</span>&nbsp;<span class="funArgs">(boolean<span class="argDef" >(true)</span>)</span></dt>
+<dd>
+sets whether space curves are to be plotted
+<span class="index">graphics:plot3d defaults:set adaptive</span><a name="chapter-7-241"/>
+according to the adaptive
+<span class="index">adaptive plotting</span><a name="chapter-7-242"/>
+refinement algorithm.
+</dd>
+<dt><span style="font-weight: bold;"> setMaxPoints3D</span>&nbsp;<span class="funArgs">(integer<span class="argDef" >(1000)</span>)</span></dt>
+<dd>
+ sets the default maximum number of possible
+<span class="index">graphics:plot3d defaults:set max points</span><a name="chapter-7-243"/>
+points to be used when constructing a three-dimensional space curve.
+</dd>
+<dt><span style="font-weight: bold;"> setMinPoints3D</span>&nbsp;<span class="funArgs">(integer<span class="argDef" >(49)</span>)</span></dt>
+<dd>
+sets the default minimum number of possible
+<span class="index">graphics:plot3d defaults:set min points</span><a name="chapter-7-244"/>
+points to be used when constructing a three-dimensional space curve.
+</dd>
+<dt><span style="font-weight: bold;"> setScreenResolution3D</span>&nbsp;<span class="funArgs">(integer<span class="argDef" >(49)</span>)</span></dt>
+<dd>
+sets the default screen resolution constant
+<span class="index">graphics:plot3d defaults:set screen resolution</span><a name="chapter-7-245"/>
+used in setting the computation limit of adaptively
+<span class="index">adaptive plotting</span><a name="chapter-7-246"/>
+generated three-dimensional space curve plots.
+</dd>
+<dt><span style="font-weight: bold;"> showRegion</span>&nbsp;<span class="funArgs">(viewport, string<span class="argDef" >("off")</span>)</span></dt>
+<dd>
+declares whether the bounding
+<span class="index">graphics:3D commands:showRegion</span><a name="chapter-7-247"/>
+box of a graph is shown or not.
+</dd>
+<dt><span style="font-weight: bold;"> subspace</span>&nbsp;<span class="funArgs">(viewport)</span></dt>
+<dd>
+returns the space component.
+</dd>
+<dt><span style="font-weight: bold;"> subspace</span>&nbsp;<span class="funArgs">(viewport, subspace)</span></dt>
+<dd>
+resets the space component
+<span class="index">graphics:3D commands:subspace</span><a name="chapter-7-248"/>
+to <span class="italic">subspace</span>.
+</dd>
+<dt><span style="font-weight: bold;"> title</span>&nbsp;<span class="funArgs">(viewport, string)</span></dt>
+<dd>
+gives the viewport the
+<span class="index">graphics:3D commands:title</span><a name="chapter-7-249"/>
+title <span class="italic">string</span>.
+</dd>
+<dt><span style="font-weight: bold;"> translate</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>x</mi></msub></mrow></mstyle></math><span class="argDef" >(viewDeltaXDefault)</span>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>y</mi></msub></mrow></mstyle></math><span class="argDef" >(viewDeltaYDefault)</span>)</span></dt>
+<dd>
+translates
+<span class="index">graphics:3D commands:translate</span><a name="chapter-7-250"/>
+the object horizontally and vertically relative to the center of the viewport.
+</dd>
+<dt><span style="font-weight: bold;"> intensity</span>&nbsp;<span class="funArgs">(viewport,float<span class="argDef" >(1.0)</span>)</span></dt>
+<dd>
+resets the intensity <span class="italic">I</span> of the light source,
+<span class="index">graphics:3D commands:intensity</span><a name="chapter-7-251"/>
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>&#x2264;</mo><mi>I</mi><mo>&#x2264;</mo><mn>1</mn><mo>.</mo></mrow></mstyle></math>
+</dd>
+<dt><span style="font-weight: bold;"> tubePointsDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[integer<span class="argDef" >(6)</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default number of
+<span class="index">graphics:3D defaults:tube points</span><a name="chapter-7-252"/>
+vertices defining the polygon that is used to create a tube around
+a space curve.
+</dd>
+<dt><span style="font-weight: bold;"> tubeRadiusDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[float<span class="argDef" >(0.5)</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default radius of
+<span class="index">graphics:3D defaults:tube radius</span><a name="chapter-7-253"/>
+the tube that encircles a space curve.
+</dd>
+<dt><span style="font-weight: bold;"> var1StepsDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[integer<span class="argDef" >(27)</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default number of
+<span class="index">graphics:3D defaults:var1 steps</span><a name="chapter-7-254"/>
+increments into which the grid defining a surface plot is subdivided with
+respect to the first parameter declared in the surface function.
+</dd>
+<dt><span style="font-weight: bold;"> var2StepsDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[integer<span class="argDef" >(27)</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default number of
+<span class="index">graphics:3D defaults:var2 steps</span><a name="chapter-7-255"/>
+increments into which the grid defining a surface plot is subdivided with
+respect to the second parameter declared in the surface function.
+</dd>
+<dt><span style="font-weight: bold;"> viewDefaults</span>&nbsp;<span class="funArgs">(<span class="teletype">[</span> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>point</mi></msub></mrow></mstyle></math>, 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>line</mi></msub></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>axes</mi></msub></mrow></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>integer</mi><mi>units</mi></msub></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>point</mi></msub></mrow></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>list</mi><mi>position</mi></msub></mrow></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>list</mi><mi>size</mi></msub></mrow></mstyle></math><span class="teletype">]</span>)</span></dt>
+<dd>
+resets the default settings for the
+<span class="index">graphics:3D defaults:reset viewport defaults</span><a name="chapter-7-256"/>
+point color, line color, axes color, units color, point size,
+viewport upper left-hand corner position, and the viewport size.
+</dd>
+<dt><span style="font-weight: bold;"> viewDeltaXDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[float<span class="argDef" >(0)</span>]</span>)</span></dt>
+<dd>
+resets the default horizontal offset
+<span class="index">graphics:3D commands:deltaX default</span><a name="chapter-7-257"/>
+from the center of the viewport, or returns the current default offset if no argument is given.
+</dd>
+<dt><span style="font-weight: bold;"> viewDeltaYDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[float<span class="argDef" >(0)</span>]</span>)</span></dt>
+<dd>
+resets the default vertical offset
+<span class="index">graphics:3D commands:deltaY default</span><a name="chapter-7-258"/>
+from the center of the viewport, or returns the current default offset if no argument is given.
+</dd>
+<dt><span style="font-weight: bold;"> viewPhiDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[float<span class="argDef" >(- <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math>/4)</span>]</span>)</span></dt>
+<dd>
+resets the default latitudinal view angle,
+or returns the current default angle if no argument is given.
+<span class="index">graphics:3D commands:phi default</span><a name="chapter-7-259"/>
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> is set to this value.
+</dd>
+<dt><span style="font-weight: bold;"> viewpoint</span>&nbsp;<span class="funArgs">(viewport,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>x</mi></msub></mrow></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>y</mi></msub></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>z</mi></msub></mrow></mstyle></math>)</span></dt>
+<dd>
+sets the viewing position in Cartesian coordinates.
+</dd>
+<dt><span style="font-weight: bold;"> viewpoint</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>float</mi><mi>&#x03B8;</mi></msub></mrow></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>)</span></dt>
+<dd>
+sets the viewing position in spherical coordinates.
+</dd>
+<dt><span style="font-weight: bold;"> viewpoint</span>&nbsp;<span class="funArgs">(viewport,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Float</mi><mi>&#x03B8;</mi></msub></mrow></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Float</mi><mi>scaleFactor</mi></msub></mrow></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Float</mi><mi>xOffset</mi></msub></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Float</mi><mi>yOffset</mi></msub></mrow></mstyle></math>)</span></dt>
+<dd>
+sets the viewing position in spherical coordinates,
+the scale factor, and offsets.
+<span class="index">graphics:3D commands:viewpoint</span><a name="chapter-7-260"/>
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math> (longitude) and
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> (latitude) are in radians.
+</dd>
+<dt><span style="font-weight: bold;"> viewPosDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[list<span class="argDef" >([0,0])</span>]</span>)</span></dt>
+<dd>
+sets or indicates the position of the upper
+<span class="index">graphics:3D defaults:viewport position</span><a name="chapter-7-261"/>
+left-hand corner of a two-dimensional viewport, relative to the display root
+window (the upper left-hand corner of the display is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>).
+</dd>
+<dt><span style="font-weight: bold;"> viewSizeDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[list<span class="argDef" >([400,400])</span>]</span>)</span></dt>
+<dd>
+sets or indicates the width and height dimensions
+<span class="index">graphics:3D defaults:viewport size</span><a name="chapter-7-262"/>
+of a viewport.
+</dd>
+<dt><span style="font-weight: bold;"> viewThetaDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[float<span class="argDef" >( <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math>/4)</span>]</span>)</span></dt>
+<dd>
+resets the default longitudinal view angle,
+or returns the current default angle if no argument is given.
+<span class="index">graphics:3D commands:theta default</span><a name="chapter-7-263"/>
+When a parameter is specified, the default longitudinal view angle
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math> is set to this value.
+</dd>
+<dt><span style="font-weight: bold;"> viewWriteAvailable</span>&nbsp;<span class="funArgs">(<span class="optArg">[list<span class="argDef" >(["pixmap",
+"bitmap", "postscript", "image"])</span>]</span>)</span></dt>
+<dd>
+indicates the possible file types
+<span class="index">graphics:3D defaults:available viewport writes</span><a name="chapter-7-264"/>
+that can be created with the <span class="spadfunFrom" >write</span><span class="index">write</span><a name="chapter-7-265"/><span class="index">ThreeDimensionalViewport</span><a name="chapter-7-266"/> function.
+</dd>
+<dt><span style="font-weight: bold;"> viewWriteDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[list<span class="argDef" >([])</span>]</span>)</span></dt>
+<dd>
+sets or indicates the default types of files
+that are created in addition to the <span style="font-weight: bold;"> data</span> file when a
+<span class="spadfunFrom" >write</span><span class="index">write</span><a name="chapter-7-267"/><span class="index">ThreeDimensionalViewport</span><a name="chapter-7-268"/> command
+<span class="index">graphics:3D defaults:viewport writes</span><a name="chapter-7-269"/>
+is executed on a viewport.
+</dd>
+<dt><span style="font-weight: bold;"> viewScaleDefault</span>&nbsp;<span class="funArgs">(<span class="optArg">[float]</span>)</span></dt>
+<dd>
+sets the default scaling factor, or returns
+<span class="index">graphics:3D commands:scale default</span><a name="chapter-7-270"/>
+the current factor if no argument is given.
+</dd>
+<dt><span style="font-weight: bold;"> write</span>&nbsp;<span class="funArgs">(viewport, directory, <span class="optArg">[option]</span>)</span></dt>
+<dd>
+writes the file <span style="font-weight: bold;"> data</span> for <span class="italic">viewport</span>
+in the directory <span class="italic">directory</span>.
+An optional third argument specifies a file type (one of <span class="teletype">pixmap</span>, <span class="teletype">bitmap</span>, <span class="teletype">postscript</span>, or <span class="teletype">image</span>), or a
+list of file types.
+An additional file is written for each file type listed.
+</dd>
+<dt><span style="font-weight: bold;"> scale</span>&nbsp;<span class="funArgs">(viewport, float<span class="argDef" >(2.5)</span>)</span></dt>
+<dd>
+specifies the scaling factor.
+<span class="index">graphics:3D commands:scale</span><a name="chapter-7-271"/>
+<span class="index">scaling graphs</span><a name="chapter-7-272"/>
+</dd>
+</dl>
+</p>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-7.2.11"/>
+<div class="subsection"  id="subsec-7.2.11">
+<h3 class="subsectitle">7.2.11  Customization using .Xdefaults</h3>
+
+
+<a name="ugXdefaults" class="label"/>
+
+
+<p><span class="index">graphics:.Xdefaults</span><a name="chapter-7-273"/>
+</p>
+
+
+<p>Both the two-dimensional and three-dimensional drawing facilities consult
+the <span style="font-weight: bold;"> .Xdefaults</span> file for various defaults.
+<span class="index">file:.Xdefaults @<span style="font-weight: bold;"> .Xdefaults</span><a name="chapter-7-274"/></span>
+The list of defaults that are recognized by the graphing routines
+is discussed in this section.
+These defaults are preceded by <span class="teletype">Axiom.3D.</span>
+for three-dimensional viewport defaults, <span class="teletype">Axiom.2D.</span>
+for two-dimensional viewport defaults, or <span class="teletype">Axiom*</span> (no dot) for
+those defaults that are acceptable to either viewport type.
+</p>
+
+
+
+<p><dl>
+<dt><span class="teletype">Axiom*buttonFont:&nbsp;<span class="italic">font</span></span></dt>
+<dd> &nbsp;<br />
+This indicates which
+<span class="index">graphics:.Xdefaults:button font</span><a name="chapter-7-275"/>
+font type is used for the button text on the control-panel.
+<span style="font-weight: bold;"> Rom11</span>
+</dd>
+<dt><span class="teletype">Axiom.2D.graphFont:&nbsp;<span class="italic">font</span></span></dt>
+<dd> &nbsp; (2D only) <br />
+This indicates
+<span class="index">graphics:.Xdefaults:graph number font</span><a name="chapter-7-276"/>
+which font type is used for displaying the graph numbers and
+slots in the <span style="font-weight: bold;"> Graphs</span> section of the two-dimensional control-panel.
+<span style="font-weight: bold;"> Rom22</span>
+</dd>
+<dt><span class="teletype">Axiom.3D.headerFont:&nbsp;<span class="italic">font</span></span></dt>
+<dd> &nbsp;<br />
+This indicates which
+<span class="index">graphics:.Xdefaults:graph label font</span><a name="chapter-7-277"/>
+font type is used for the axes labels and potentiometer
+header names on three-dimensional viewport windows.
+This is also used for two-dimensional control-panels for indicating
+which font type is used for potentionmeter header names and
+multiple graph title headers.
+<span style="font-weight: bold;"> Itl14</span>
+</dd>
+<dt><span class="teletype">Axiom*inverse:&nbsp;<span class="italic">switch</span></span></dt>
+<dd> &nbsp;<br />
+This indicates whether the
+<span class="index">graphics:.Xdefaults:inverting background</span><a name="chapter-7-278"/>
+background color is to be inverted from white to black.
+If <span class="teletype">on</span>, the graph viewports use black as the background
+color.
+If <span class="teletype">off</span> or no declaration is made, the graph viewports use a
+white background.
+<span style="font-weight: bold;"> off</span>
+</dd>
+<dt><span class="teletype">Axiom.3D.lightingFont:&nbsp;<span class="italic">font</span></span></dt>
+<dd> &nbsp; (3D only) <br />
+This indicates which font type is used for the <span style="font-weight: bold;"> x</span>,
+<span class="index">graphics:.Xdefaults:lighting font</span><a name="chapter-7-279"/>
+<span style="font-weight: bold;"> y</span>, and <span style="font-weight: bold;"> z</span> labels of the two lighting axes potentiometers, and for
+the <span style="font-weight: bold;"> Intensity</span> title on the lighting control-panel.
+<span style="font-weight: bold;"> Rom10</span>
+</dd>
+<dt><span class="teletype">Axiom.2D.messageFont, Axiom.3D.messageFont:&nbsp;<span class="italic">font</span></span></dt>
+<dd> &nbsp;<br />
+These indicate the font type
+<span class="index">graphics:.Xdefaults:message font</span><a name="chapter-7-280"/>
+to be used for the text in the control-panel message window.
+<span style="font-weight: bold;"> Rom14</span>
+</dd>
+<dt><span class="teletype">Axiom*monochrome:&nbsp;<span class="italic">switch</span></span></dt>
+<dd> &nbsp;<br />
+This indicates whether the
+<span class="index">graphics:.Xdefaults:monochrome</span><a name="chapter-7-281"/>
+graph viewports are to be displayed as if the monitor is black and
+white, that is, a 1 bit plane.
+If <span class="teletype">on</span> is specified, the viewport display is black and white.
+If <span class="teletype">off</span> is specified, or no declaration for this default is
+given, the viewports are displayed in the normal fashion for the
+monitor in use.
+<span style="font-weight: bold;"> off</span>
+</dd>
+<dt><span class="teletype">Axiom.2D.postScript:&nbsp;<span class="italic">filename</span></span></dt>
+<dd> &nbsp;<br />
+This specifies
+<span class="index">graphics:.Xdefaults:PostScript file name</span><a name="chapter-7-282"/>
+the name of the file that is generated when a 2D PostScript graph
+<span class="index">PostScript</span><a name="chapter-7-283"/>
+is saved.
+<span style="font-weight: bold;"> axiom2D.ps</span>
+</dd>
+<dt><span class="teletype">Axiom.3D.postScript:&nbsp;<span class="italic">filename</span></span></dt>
+<dd> &nbsp;<br />
+This specifies
+<span class="index">graphics:.Xdefaults:PostScript file name</span><a name="chapter-7-284"/>
+the name of the file that is generated when a 3D PostScript graph
+<span class="index">PostScript</span><a name="chapter-7-285"/>
+is saved.
+<span style="font-weight: bold;"> axiom3D.ps</span>
+</dd>
+<dt><span class="teletype">Axiom*titleFont <span class="italic">font</span></span></dt>
+<dd> &nbsp;<br />
+This
+<span class="index">graphics:.Xdefaults:title font</span><a name="chapter-7-286"/>
+indicates which font type is used
+for the title text and, for three-dimensional graphs,
+in the lighting and viewing-volume control-panel windows.
+<span class="index">graphics:Xdefaults:2d</span><a name="chapter-7-287"/>
+<span style="font-weight: bold;"> Rom14</span>
+</dd>
+<dt><span class="teletype">Axiom.2D.unitFont:&nbsp;<span class="italic">font</span></span></dt>
+<dd> &nbsp; (2D only) <br />
+This indicates
+<span class="index">graphics:.Xdefaults:unit label font</span><a name="chapter-7-288"/>
+which font type is used for displaying the unit labels on
+two-dimensional viewport graphs.
+<span style="font-weight: bold;"> 6x10</span>
+</dd>
+<dt><span class="teletype">Axiom.3D.volumeFont:&nbsp;<span class="italic">font</span></span></dt>
+<dd> &nbsp; (3D only) <br />
+This indicates which font type is used for the <span style="font-weight: bold;"> x</span>,
+<span class="index">graphics:.Xdefaults:volume label font</span><a name="chapter-7-289"/>
+<span style="font-weight: bold;"> y</span>, and <span style="font-weight: bold;"> z</span> labels of the clipping region sliders; for the
+<span style="font-weight: bold;"> Perspective</span>, <span style="font-weight: bold;"> Show Region</span>, and <span style="font-weight: bold;"> Clipping On</span> buttons under
+<span style="font-weight: bold;"> Settings</span>, and above the windows for the <span style="font-weight: bold;"> Hither</span> and
+<span style="font-weight: bold;"> Eye Distance</span> sliders in the <span style="font-weight: bold;"> Viewing Volume Panel</span> of the
+three-dimensional control-panel.
+<span style="font-weight: bold;"> Rom8</span>
+</dd>
+</dl>
+</p>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-7.1.xhtml" style="margin-right: 10px;">Previous Section 7.1 Two-Dimensional Graphics</a><a href="section-8.0.xhtml" style="margin-right: 10px;">Next Section 8.0 Advanced Problem Solving</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.0.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.0.xhtml
new file mode 100644
index 0000000..ba77712
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.0.xhtml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.0</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-7.2.xhtml" style="margin-right: 10px;">Previous Section 7.2  Three-Dimensional Graphics</a><a href="section-8.1.xhtml" style="margin-right: 10px;">Next Section 8.1 Numeric Functions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.0">
+<h2 class="sectiontitle">8.0 Advanced Problem Solving</h2>
+<a name="ugProblem" class="label"/>
+
+<p>In this chapter we describe techniques useful in solving advanced problems
+with Axiom.
+</p>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-7.2.xhtml" style="margin-right: 10px;">Previous Section 7.2  Three-Dimensional Graphics</a><a href="section-8.1.xhtml" style="margin-right: 10px;">Next Section 8.1 Numeric Functions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.1.xhtml
new file mode 100644
index 0000000..d8b3813
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.1.xhtml
@@ -0,0 +1,1254 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.0.xhtml" style="margin-right: 10px;">Previous Section 8.0 Advanced Problem Solving</a><a href="section-8.2.xhtml" style="margin-right: 10px;">Next Section 8.2 Polynomial Factorization</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.1">
+<h2 class="sectiontitle">8.1  Numeric Functions</h2>
+
+
+<a name="ugProblemNumeric" class="label"/>
+
+
+
+<p>Axiom provides two basic floating-point types: <span class="teletype">Float</span> and
+<span class="teletype">DoubleFloat</span>.  This section describes how to use numerical
+<span class="index">function:numeric</span><a name="chapter-8-0"/>
+operations defined on these types and the related complex types.
+<span class="index">numeric operations</span><a name="chapter-8-1"/>
+</p>
+
+
+<p>As we mentioned in Chapter 
+<a href="section-1.0.xhtml#ugIntro" class="ref" >ugIntro</a> , the <span class="teletype">Float</span> type is a software
+implementation of floating-point numbers in which the exponent and the
+<span class="index">floating-point number</span><a name="chapter-8-2"/>
+significand may have any number of digits.
+<span class="index">number:floating-point</span><a name="chapter-8-3"/>
+See 
+<a href="section-9.17.xhtml#DoubleFloatXmpPage" class="ref" >FloatXmpPage</a>  
+for detailed information about this domain.
+The <span class="teletype">DoubleFloat</span> (see <a href="section-9.17.xhtml#DoubleFloatXmpPage" class="ref" >DoubleFloatXmpPage</a> ) is usually a hardware implementation 
+of floating point numbers, corresponding to machine double
+precision.
+The types <span class="teletype">Complex Float</span> and <span class="teletype">Complex DoubleFloat</span> are
+<span class="index">floating-point number:complex</span><a name="chapter-8-4"/>
+the corresponding software implementations of complex floating-point numbers.
+<span class="index">complex:floating-point number</span><a name="chapter-8-5"/>
+In this section the term <span class="italic">floating-point type</span>  means any of these
+<span class="index">number:complex floating-point</span><a name="chapter-8-6"/>
+four types.
+</p>
+
+
+<p>The floating-point types implement the basic elementary functions.
+These include (where <span class="teletype">$</span> means
+<span class="teletype">DoubleFloat</span>,
+<span class="teletype">Float</span>,
+<span class="teletype">Complex DoubleFloat</span>, or
+<span class="teletype">Complex Float</span>):
+</p>
+
+
+
+<p><span style="font-weight: bold;"> exp</span>,  <span style="font-weight: bold;"> log</span>: $ -> $ <br />
+<span style="font-weight: bold;"> sin</span>,  <span style="font-weight: bold;"> cos</span>, <span style="font-weight: bold;"> tan</span>, <span style="font-weight: bold;"> cot</span>, <span style="font-weight: bold;"> sec</span>, <span style="font-weight: bold;"> csc</span>: $ -> $ <br />
+<span style="font-weight: bold;"> asin</span>, <span style="font-weight: bold;"> acos</span>, <span style="font-weight: bold;"> atan</span>, <span style="font-weight: bold;"> acot</span>, <span style="font-weight: bold;"> asec</span>, <span style="font-weight: bold;"> acsc</span>: $ -> $  <br />
+<span style="font-weight: bold;"> sinh</span>,  <span style="font-weight: bold;"> cosh</span>, <span style="font-weight: bold;"> tanh</span>, <span style="font-weight: bold;"> coth</span>, <span style="font-weight: bold;"> sech</span>, <span style="font-weight: bold;"> csch</span>: $ -> $  <br />
+<span style="font-weight: bold;"> asinh</span>, <span style="font-weight: bold;"> acosh</span>, <span style="font-weight: bold;"> atanh</span>, <span style="font-weight: bold;"> acoth</span>, <span style="font-weight: bold;"> asech</span>, <span style="font-weight: bold;"> acsch</span>: $ -> $  <br />
+<span style="font-weight: bold;"> pi</span>: () -> $  <br />
+<span style="font-weight: bold;"> sqrt</span>: $ -> $ <br />
+<span style="font-weight: bold;"> nthRoot</span>: ($, Integer) -> $  <br />
+<span class="spadfunFrom" >**</span><span class="index">**</span><a name="chapter-8-7"/><span class="index">Float</span><a name="chapter-8-8"/>: ($, Fraction Integer) -> $ <br />
+<span class="spadfunFrom" >**</span><span class="index">**</span><a name="chapter-8-9"/><span class="index">Float</span><a name="chapter-8-10"/>: ($,$) -> $  <br />
+</p>
+
+
+<p>The handling of roots depends on whether the floating-point type
+<span class="index">root:numeric approximation</span><a name="chapter-8-11"/>
+is real or complex: for the real floating-point types,
+<span class="teletype">DoubleFloat</span> and <span class="teletype">Float</span>, if a real root exists
+the one with the same sign as the radicand is returned; for the
+complex floating-point types, the principal value is returned.
+<span class="index">principal value</span><a name="chapter-8-12"/>
+Also, for real floating-point types the inverse functions
+produce errors if the results are not real.
+This includes cases such as  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>asin</mi><mo>(</mo><mn>1</mn><mo>.</mo><mn>2</mn><mo>)</mo></mrow></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>log</mi><mo>(</mo><mo>-</mo><mn>3</mn><mo>.</mo><mn>2</mn><mo>)</mo></mrow></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sqrt</mi><mo>(</mo><mo>-</mo><mn>1</mn><mo>.</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+<p>The default floating-point type is <span class="teletype">Float</span> so to evaluate
+functions using <span class="teletype">Float</span> or <span class="teletype">Complex Float</span>, just use
+normal decimal notation.
+</p>
+
+
+
+
+<div id="spadComm8-1" class="spadComm" >
+<form id="formComm8-1" action="javascript:makeRequest('8-1');" >
+<input id="comm8-1" type="text" class="command" style="width: 6em;" value="exp(3.1)" />
+</form>
+<span id="commSav8-1" class="commSav" >exp(3.1)</span>
+<div id="mathAns8-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>22</mn><mo>.</mo><mn>1979512814</mn><mn>41633405</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm8-2" class="spadComm" >
+<form id="formComm8-2" action="javascript:makeRequest('8-2');" >
+<input id="comm8-2" type="text" class="command" style="width: 14em;" value="exp(3.1 + 4.5 * %i)" />
+</form>
+<span id="commSav8-2" class="commSav" >exp(3.1 + 4.5 * %i)</span>
+<div id="mathAns8-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>4</mn><mo>.</mo><mn>6792348860</mn><mn>969899118</mn></mrow><mo>-</mo><mrow><mrow><mn>21</mn><mo>.</mo><mn>6991659280</mn><mn>71731864</mn></mrow><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+<p>To evaluate functions using <span class="teletype">DoubleFloat</span>
+or <span class="teletype">Complex DoubleFloat</span>,
+a declaration or conversion is required.
+</p>
+
+
+
+
+<div id="spadComm8-3" class="spadComm" >
+<form id="formComm8-3" action="javascript:makeRequest('8-3');" >
+<input id="comm8-3" type="text" class="command" style="width: 34em;" value="r: DFLOAT := 3.1; t: DFLOAT := 4.5; exp(r + t*%i)" />
+</form>
+<span id="commSav8-3" class="commSav" >r: DFLOAT := 3.1; t: DFLOAT := 4.5; exp(r + t*%i)</span>
+<div id="mathAns8-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>4</mn><mo>.</mo><mn>6792348860969906</mn></mrow><mo>-</mo><mrow><mrow><mn>21</mn><mo>.</mo><mn>699165928071732</mn></mrow><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm8-4" class="spadComm" >
+<form id="formComm8-4" action="javascript:makeRequest('8-4');" >
+<input id="comm8-4" type="text" class="command" style="width: 24em;" value="exp(3.1::DFLOAT + 4.5::DFLOAT * %i)" />
+</form>
+<span id="commSav8-4" class="commSav" >exp(3.1::DFLOAT + 4.5::DFLOAT * %i)</span>
+<div id="mathAns8-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>4</mn><mo>.</mo><mn>6792348860969906</mn></mrow><mo>-</mo><mrow><mrow><mn>21</mn><mo>.</mo><mn>699165928071732</mn></mrow><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex DoubleFloat
+</div>
+
+
+
+<p>A number of special functions are provided by the package
+<span class="teletype">DoubleFloatSpecialFunctions</span> for the machine-precision
+<span class="index">special functions</span><a name="chapter-8-13"/>
+floating-point types.
+<span class="index">DoubleFloatSpecialFunctions</span><a name="chapter-8-14"/>
+The special functions provided are listed below, where  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>F</mi></mstyle></math> stands for
+the types <span class="teletype">DoubleFloat</span> and <span class="teletype">Complex DoubleFloat</span>.
+The real versions of the functions yield an error if the result is not real.
+<span class="index">function:special</span><a name="chapter-8-15"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> Gamma</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>F</mi><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&#x0393;</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the Euler gamma function,
+<span class="index">function:Gamma</span><a name="chapter-8-16"/>
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&#x0393;</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>,
+   defined by
+<span class="index">Euler:gamma function</span><a name="chapter-8-17"/>
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>&#x0393;</mo><mo>(</mo><mi>z</mi><mo>)</mo><mo>=</mo><msubsup><mo>&#x222B;</mo><mrow><mn>0</mn></mrow><mrow><mo>&#x221E;</mo></mrow></msubsup><msup><mi>t</mi><mrow><mi>z</mi><mo>-</mo><mn>1</mn></mrow></msup><msup><mi>e</mi><mrow><mo>-</mo><mi>t</mi></mrow></msup><mi>dt</mi><mo>.</mo></mrow></mstyle></math>
+   
+</p>
+
+
+
+<p><span style="font-weight: bold;"> Beta</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>F</mi><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>Beta</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math> is the Euler Beta function,
+<span class="index">function:Euler Beta</span><a name="chapter-8-18"/>
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>B</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mstyle></math>, defined by
+<span class="index">Euler:Beta function</span><a name="chapter-8-19"/>
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>B</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo><mo>=</mo><msubsup><mo>&#x222B;</mo><mrow><mn>0</mn></mrow><mrow><mn>1</mn></mrow></msubsup><msup><mi>t</mi><mrow><mi>u</mi><mo>-</mo><mn>1</mn></mrow></msup><mo>(</mo><mn>1</mn><mo>-</mo><mi>t</mi><msup><mo>)</mo><mrow><mi>v</mi><mo>-</mo><mn>1</mn></mrow></msup><mi>dt</mi><mo>.</mo></mrow></mstyle></math>
+   
+   This is related to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&#x0393;</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> by
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>B</mi><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mo>&#x0393;</mo><mo>(</mo><mi>u</mi><mo>)</mo><mo>&#x0393;</mo><mo>(</mo><mi>v</mi><mo>)</mo></mrow><mrow><mo>&#x0393;</mo><mo>(</mo><mi>u</mi><mo>+</mo><mi>v</mi><mo>)</mo></mrow></mfrac><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> logGamma</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>F</mi><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>logGamma</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the natural logarithm of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&#x0393;</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+   This can often be computed even if  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&#x0393;</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>
+cannot.
+</p>
+
+
+
+<p><span style="font-weight: bold;"> digamma</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>F</mi><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>digamma</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>, also called  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>psi</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>,
+<span class="index">psi @  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math></span><a name="chapter-8-20"/>
+is the function  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>
+<span class="index">function:digamma</span><a name="chapter-8-21"/>
+   defined by 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>&#x03c8;</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><msup><mo>&#x0393;</mo><mo>&prime;</mo></msup><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mrow><mo>&#x0393;</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mfrac></mstyle></math>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> polygamma</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>F</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>polygamma</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th derivative of
+<span class="index">function:polygamma</span><a name="chapter-8-22"/>
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x03c8;</mo><mo>(</mo><mi>z</mi><mo>)</mo></mstyle></math>, written  <math xmlns="&mathml;" mathsize="big"><mstyle><msup><mo>&#x03c8;</mo><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></msup><mo>(</mo><mi>z</mi><mo>)</mo></mstyle></math>.
+</p>
+
+
+
+<p><span style="font-weight: bold;"> besselJ</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>F</mi><mo>,</mo><mi>F</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>besselJ</mi><mo>(</mo><mi>v</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the Bessel function of the first kind,
+<span class="index">function:Bessel</span><a name="chapter-8-23"/>
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>J</mi><mi>&#x03bc;</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+   This function satisfies the differential equation
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>z</mi><mn>2</mn></msup><msup><mi>w</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>(</mo><mi>z</mi><mo>)</mo><mo>+</mo><mi>z</mi><msup><mi>w</mi><mo>&prime;</mo></msup><mo>(</mo><mi>z</mi><mo>)</mo><mo>+</mo><mo>(</mo><msup><mi>z</mi><mn>2</mn></msup><mo>-</mo><msup><mi>&#x03bc;</mi><mn>2</mn></msup><mo>)</mo><mi>w</mi><mo>(</mo><mi>z</mi><mo>)</mo><mo>=</mo><mn>0</mn><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> besselY</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>F</mi><mo>,</mo><mi>F</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>besselY</mi><mo>(</mo><mi>v</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the Bessel function of the second kind,
+<span class="index">function:Bessel</span><a name="chapter-8-24"/>
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>Y</mi><mi>&#x03bc;</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+   This function satisfies the same differential equation as
+   <span style="font-weight: bold;"> besselJ</span>.
+   The implementation simply uses the relation
+  <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>Y</mi><mi>&#x03bc;</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo><mo>=</mo><mfrac><mrow><msub><mi>J</mi><mi>&#x03bc;</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo><mo>cos</mo><mo>(</mo><mi>&#x03bc;</mi><mi>&#x03C0;</mi><mo>)</mo><mo>-</mo><msub><mi>J</mi><mrow><mo>-</mo><mi>&#x03bc;</mi></mrow></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mrow><mo>sin</mo><mo>(</mo><mi>&#x03bc;</mi><mi>&#x03C0;</mi><mo>)</mo></mrow></mfrac><mrow><msub><mi>J</mi><mi>&#x03bc;</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo><mo>cos</mo><mo>(</mo><mi>&#x03bc;</mi><mi>&#x03C0;</mi><mo>)</mo><mo>-</mo><msub><mi>J</mi><mrow><mo>-</mo><mi>&#x03bc;</mi></mrow></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mrow><mo>sin</mo><mo>(</mo><mi>&#x03bc;</mi><mi>&#x03C0;</mi><mo>)</mo></mrow><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> besselI</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>F</mi><mo>,</mo><mi>F</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>besselI</mi><mo>(</mo><mi>v</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the modified Bessel function of the first kind,
+<span class="index">function:Bessel</span><a name="chapter-8-25"/>
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>I</mi><mi>&#x03bc;</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+   This function satisfies the differential equation
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>z</mi><mn>2</mn></msup><msup><mi>w</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>(</mo><mi>z</mi><mo>)</mo><mo>+</mo><mi>z</mi><msup><mi>w</mi><mo>&prime;</mo></msup><mo>(</mo><mi>z</mi><mo>)</mo><mo>-</mo><mo>(</mo><msup><mi>z</mi><mn>2</mn></msup><mo>+</mo><msup><mi>&#x03bc;</mi><mn>2</mn></msup><mo>)</mo><mi>w</mi><mo>(</mo><mi>z</mi><mo>)</mo><mo>=</mo><mn>0</mn><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> besselK</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>F</mi><mo>,</mo><mi>F</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>besselK</mi><mo>(</mo><mi>v</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the modified Bessel function of the second kind,
+<span class="index">function:Bessel</span><a name="chapter-8-26"/>
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>&#x03bc;</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+   This function satisfies the same differential equation as <span style="font-weight: bold;"> besselI</span>.
+<span class="index">Bessel function</span><a name="chapter-8-27"/>
+   The implementation simply uses the relation
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>K</mi><mi>&#x03bc;</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo><mo>=</mo><mi>&#x03C0;</mi><mfrac><mrow><msub><mi>I</mi><mrow><mo>-</mo><mi>&#x03bc;</mi></mrow></msub><mo>(</mo><mi>z</mi><mo>)</mo><mo>-</mo><msub><mi>I</mi><mi>&#x03bc;</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mrow><mn>2</mn><mo>sin</mo><mo>(</mo><mi>&#x03bc;</mi><mi>&#x03C0;</mi><mo>)</mo></mrow></mfrac><mrow><msub><mi>I</mi><mrow><mo>-</mo><mi>&#x03bc;</mi></mrow></msub><mo>(</mo><mi>z</mi><mo>)</mo><mo>-</mo><msub><mi>I</mi><mi>&#x03bc;</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mrow><mn>2</mn><mo>sin</mo><mo>(</mo><mi>&#x03bc;</mi><mi>&#x03C0;</mi><mo>)</mo></mrow><mo>.</mo></mrow></mstyle></math>
+   
+</p>
+
+
+
+<p><span style="font-weight: bold;"> airyAi</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>F</mi><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>airyAi</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the Airy function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>Ai</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+<span class="index">function:Airy Ai</span><a name="chapter-8-28"/>
+   This function satisfies the differential equation
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>w</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>(</mo><mi>z</mi><mo>)</mo><mo>-</mo><mi>z</mi><mi>w</mi><mo>(</mo><mi>z</mi><mo>)</mo><mo>=</mo><mn>0</mn><mo>.</mo></mrow></mstyle></math>
+   The implementation simply uses the relation
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>Ai</mi><mo>(</mo><mo>-</mo><mi>z</mi><mo>)</mo><mo>=</mo><mfrac><mn>1</mn><mn>3</mn></mfrac><mn>1</mn><mn>3</mn><msqrt><mi>z</mi></msqrt><mo>(</mo><msub><mi>J</mi><mrow><mo>-</mo><mn>1</mn><mo>/</mo><mn>3</mn></mrow></msub><mo>(</mo><mfrac><mn>2</mn><mn>3</mn></mfrac><mn>2</mn><mn>3</mn><msup><mi>z</mi><mrow><mn>3</mn><mo>/</mo><mn>2</mn></mrow></msup><mo>)</mo><mo>+</mo><msub><mi>J</mi><mrow><mn>1</mn><mo>/</mo><mn>3</mn></mrow></msub><mo>(</mo><mfrac><mn>2</mn><mn>3</mn></mfrac><mn>2</mn><mn>3</mn><msup><mi>z</mi><mrow><mn>3</mn><mo>/</mo><mn>2</mn></mrow></msup><mo>)</mo><mo>)</mo><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> airyBi</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>F</mi><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>airyBi</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the Airy function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>Bi</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+<span class="index">function:Airy Bi</span><a name="chapter-8-29"/>
+   This function satisfies the same differential equation as <span style="font-weight: bold;"> airyAi</span>.
+<span class="index">Airy function</span><a name="chapter-8-30"/>
+   The implementation simply uses the relation
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>Bi</mi><mo>(</mo><mo>-</mo><mi>z</mi><mo>)</mo><mo>=</mo><mfrac><mn>1</mn><mn>3</mn></mfrac><mn>1</mn><mn>3</mn><msqrt><mrow><mn>3</mn><mi>z</mi></mrow></msqrt><mo>(</mo><msub><mi>J</mi><mrow><mo>-</mo><mn>1</mn><mo>/</mo><mn>3</mn></mrow></msub><mo>(</mo><mfrac><mn>2</mn><mn>3</mn></mfrac><mn>2</mn><mn>3</mn><msup><mi>z</mi><mrow><mn>3</mn><mo>/</mo><mn>2</mn></mrow></msup><mo>)</mo><mo>-</mo><msub><mi>J</mi><mrow><mn>1</mn><mo>/</mo><mn>3</mn></mrow></msub><mo>(</mo><mfrac><mn>2</mn><mn>3</mn></mfrac><mn>2</mn><mn>3</mn><msup><mi>z</mi><mrow><mn>3</mn><mo>/</mo><mn>2</mn></mrow></msup><mo>)</mo><mo>)</mo><mo>.</mo></mrow></mstyle></math>
+   
+</p>
+
+
+<p><span style="font-weight: bold;"> hypergeometric0F1</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>F</mi><mo>,</mo><mi>F</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>F</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>hypergeometric0F1</mi><mo>(</mo><mi>c</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the hypergeometric function
+<span class="index">function:hypergeometric</span><a name="chapter-8-31"/>
+<math xmlns="&mathml;" mathsize="big"><mstyle><mmultiscripts><mi>F</mi><mn>1</mn><none/><mprescripts/><mn>0</mn><none/></mmultiscripts><mo>(</mo><mo>;</mo><mi>c</mi><mo>;</mo><mi>z</mi><mo>)</mo></mstyle></math>.
+</p>
+
+
+<p>The above special functions are defined only for small floating-point types.
+If you give <span class="teletype">Float</span> arguments, they are converted to
+<span class="teletype">DoubleFloat</span> by Axiom.
+</p>
+
+
+
+
+<div id="spadComm8-5" class="spadComm" >
+<form id="formComm8-5" action="javascript:makeRequest('8-5');" >
+<input id="comm8-5" type="text" class="command" style="width: 9em;" value="Gamma(0.5)**2" />
+</form>
+<span id="commSav8-5" class="commSav" >Gamma(0.5)**2</span>
+<div id="mathAns8-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mn>14159265358979</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm8-6" class="spadComm" >
+<form id="formComm8-6" action="javascript:makeRequest('8-6');" >
+<input id="comm8-6" type="text" class="command" style="width: 32em;" value="a := 2.1; b := 1.1; besselI(a + %i*b, b*a + 1)" />
+</form>
+<span id="commSav8-6" class="commSav" >a := 2.1; b := 1.1; besselI(a + %i*b, b*a + 1)</span>
+<div id="mathAns8-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo>.</mo><mn>489481690673867</mn></mrow><mo>-</mo><mrow><mrow><mn>2</mn><mo>.</mo><mn>365846713181643</mn></mrow><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex DoubleFloat
+</div>
+
+
+
+<p>A number of additional operations may be used to compute numerical values.
+These are special polynomial functions that can be evaluated for values in
+any commutative ring  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>R</mi></mstyle></math>, and in particular for values in any
+floating-point type.
+The following operations are provided by the package
+<span class="teletype">OrthogonalPolynomialFunctions</span>:
+<span class="index">OrthogonalPolynomialFunctions</span><a name="chapter-8-32"/>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> chebyshevT</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>R</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>R</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>chebyshevT</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Chebyshev polynomial of the first
+   kind,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>T</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.  These are defined by
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mrow><mn>1</mn><mo>-</mo><mi>t</mi><mi>z</mi></mrow><mrow><mn>1</mn><mo>-</mo><mn>2</mn><mi>t</mi><mi>z</mi><mo>+</mo><msup><mi>t</mi><mn>2</mn></msup></mrow></mfrac><mo>=</mo><msubsup><mo>&#x2211;</mo><mrow><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow></mrow><mrow><mo>&#x221E;</mo></mrow></msubsup><mrow><msub><mi>T</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow><msup><mi>t</mi><mi>n</mi></msup><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> chebyshevU</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>R</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>R</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>chebyshevU</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Chebyshev polynomial of the second
+   kind,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>U</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>. These are defined by
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>1</mn><mrow><mn>1</mn><mo>-</mo><mn>2</mn><mi>t</mi><mi>z</mi><mo>+</mo><msup><mi>t</mi><mn>2</mn></msup></mrow></mfrac><mo>=</mo><msubsup><mo>&#x2211;</mo><mrow><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow></mrow><mrow><mo>&#x221E;</mo></mrow></msubsup><mrow><msub><mi>U</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow><msup><mi>t</mi><mi>n</mi></msup><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+<p><span style="font-weight: bold;"> hermiteH</span>:    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>R</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>R</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>hermiteH</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Hermite polynomial,
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>H</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+   These are defined by
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>e</mi><mrow><mn>2</mn><mi>t</mi><mi>z</mi><mo>-</mo><msup><mi>t</mi><mn>2</mn></msup></mrow></msup><mo>=</mo><msubsup><mo>&#x2211;</mo><mrow><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow></mrow><mrow><mo>&#x221E;</mo></mrow></msubsup><mrow><msub><mi>H</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mfrac><mrow><msup><mi>t</mi><mi>n</mi></msup></mrow><mrow><mi>n</mi><mo>!</mo></mrow></mfrac><mo>.</mo></mrow></mstyle></math>
+
+</p>
+
+
+
+<p><span style="font-weight: bold;"> laguerreL</span>:   <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>R</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>R</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>laguerreL</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Laguerre polynomial,
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>L</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+   These are defined by
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mrow><msup><mi>e</mi><mrow><mo>-</mo><mfrac><mrow><mi>t</mi><mi>z</mi></mrow><mrow><mn>1</mn><mo>-</mo><mi>t</mi></mrow></mfrac></mrow></msup></mrow><mrow><mn>1</mn><mo>-</mo><mi>t</mi></mrow></mfrac><mo>=</mo><msubsup><mo>&#x2211;</mo><mrow><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow></mrow><mrow><mo>&#x221E;</mo></mrow></msubsup><mrow><msub><mi>L</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mfrac><mrow><msup><mi>t</mi><mi>n</mi></msup></mrow><mrow><mi>n</mi><mo>!</mo></mrow></mfrac><mo>.</mo></mrow></mstyle></math>
+
+</p>
+
+
+
+<p><span style="font-weight: bold;"> laguerreL</span>:   <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>R</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>R</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>laguerreL</mi><mo>(</mo><mi>m</mi><mo>,</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the associated Laguerre polynomial
+   <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msubsup><mi>L</mi><mrow><mi>n</mi></mrow><mrow><mi>m</mi></mrow></msubsup><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+
+   This is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math>-th derivative of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>L</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+<p><span style="font-weight: bold;"> legendreP</span>:   <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>R</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>R</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>legendreP</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Legendre polynomial,
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>P</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.  These are defined by
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>1</mn><mrow><msqrt><mrow><mn>1</mn><mo>-</mo><mn>2</mn><mi>t</mi><mi>z</mi><mo>+</mo><msup><mi>t</mi><mn>2</mn></msup></mrow></msqrt></mrow></mfrac><mo>=</mo><msubsup><mo>&#x2211;</mo><mrow><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow></mrow><mrow><mo>&#x221E;</mo></mrow></msubsup><msub><mi>P</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo><msup><mi>t</mi><mi>n</mi></msup><mo>.</mo></mrow></mstyle></math>
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</p>
+
+
+<p>These operations require non-negative integers for the indices, but otherwise
+the argument can be given as desired.
+</p>
+
+
+
+
+<div id="spadComm8-7" class="spadComm" >
+<form id="formComm8-7" action="javascript:makeRequest('8-7');" >
+<input id="comm8-7" type="text" class="command" style="width: 22em;" value="[chebyshevT(i, z) for i in 0..5]" />
+</form>
+<span id="commSav8-7" class="commSav" >[chebyshevT(i, z) for i in 0..5]</span>
+<div id="mathAns8-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mrow><mn>2</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>4</mn><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mi>z</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>8</mn><mo></mo><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>16</mn><mo></mo><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>20</mn><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mo></mo><mi>z</mi></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+<p>The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>chebyshevT</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> evaluates to the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Chebyshev
+<span class="index">polynomial:Chebyshev:of the first kind</span><a name="chapter-8-33"/>
+polynomial of the first kind.
+</p>
+
+
+
+
+<div id="spadComm8-8" class="spadComm" >
+<form id="formComm8-8" action="javascript:makeRequest('8-8');" >
+<input id="comm8-8" type="text" class="command" style="width: 19em;" value="chebyshevT(3, 5.0 + 6.0*%i)" />
+</form>
+<span id="commSav8-8" class="commSav" >chebyshevT(3, 5.0 + 6.0*%i)</span>
+<div id="mathAns8-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>1675</mn><mo>.</mo><mn>0</mn></mrow><mo>+</mo><mrow><mrow><mn>918</mn><mo>.</mo><mn>0</mn></mrow><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+
+
+<div id="spadComm8-9" class="spadComm" >
+<form id="formComm8-9" action="javascript:makeRequest('8-9');" >
+<input id="comm8-9" type="text" class="command" style="width: 21em;" value="chebyshevT(3, 5.0::DoubleFloat)" />
+</form>
+<span id="commSav8-9" class="commSav" >chebyshevT(3, 5.0::DoubleFloat)</span>
+<div id="mathAns8-9" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>485</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+<p>The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>chebyshevU</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> evaluates to the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Chebyshev
+<span class="index">polynomial:Chebyshev:of the second kind</span><a name="chapter-8-34"/>
+polynomial of the second kind.
+</p>
+
+
+
+
+<div id="spadComm8-10" class="spadComm" >
+<form id="formComm8-10" action="javascript:makeRequest('8-10');" >
+<input id="comm8-10" type="text" class="command" style="width: 22em;" value="[chebyshevU(i, z) for i in 0..5]" />
+</form>
+<span id="commSav8-10" class="commSav" >[chebyshevU(i, z) for i in 0..5]</span>
+<div id="mathAns8-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mrow><mn>2</mn><mo></mo><mi>z</mi></mrow><mo>,</mo><mrow><mrow><mn>4</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>8</mn><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>z</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>16</mn><mo></mo><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>32</mn><mo></mo><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>32</mn><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mi>z</mi></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-11" class="spadComm" >
+<form id="formComm8-11" action="javascript:makeRequest('8-11');" >
+<input id="comm8-11" type="text" class="command" style="width: 12em;" value="chebyshevU(3, 0.2)" />
+</form>
+<span id="commSav8-11" class="commSav" >chebyshevU(3, 0.2)</span>
+<div id="mathAns8-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>736</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>hermiteH</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> evaluates to the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Hermite
+<span class="index">polynomial:Hermite</span><a name="chapter-8-35"/>
+polynomial.
+</p>
+
+
+
+
+<div id="spadComm8-12" class="spadComm" >
+<form id="formComm8-12" action="javascript:makeRequest('8-12');" >
+<input id="comm8-12" type="text" class="command" style="width: 20em;" value="[hermiteH(i, z) for i in 0..5]" />
+</form>
+<span id="commSav8-12" class="commSav" >[hermiteH(i, z) for i in 0..5]</span>
+<div id="mathAns8-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mrow><mn>2</mn><mo></mo><mi>z</mi></mrow><mo>,</mo><mrow><mrow><mn>4</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>2</mn></mrow><mo>,</mo><mrow><mrow><mn>8</mn><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mo></mo><mi>z</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>16</mn><mo></mo><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>48</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>12</mn></mrow><mo>,</mo><mrow><mrow><mn>32</mn><mo></mo><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>160</mn><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>120</mn><mo></mo><mi>z</mi></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-13" class="spadComm" >
+<form id="formComm8-13" action="javascript:makeRequest('8-13');" >
+<input id="comm8-13" type="text" class="command" style="width: 12em;" value="hermiteH(100, 1.0)" />
+</form>
+<span id="commSav8-13" class="commSav" >hermiteH(100, 1.0)</span>
+<div id="mathAns8-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>1448706729</mn><mn>337934088</mn><mi>E</mi><mn>93</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>laguerreL</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> evaluates to the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Laguerre
+<span class="index">polynomial:Laguerre</span><a name="chapter-8-36"/>
+polynomial.
+</p>
+
+
+
+
+<div id="spadComm8-14" class="spadComm" >
+<form id="formComm8-14" action="javascript:makeRequest('8-14');" >
+<input id="comm8-14" type="text" class="command" style="width: 21em;" value="[laguerreL(i, z) for i in 0..4]" />
+</form>
+<span id="commSav8-14" class="commSav" >[laguerreL(i, z) for i in 0..4]</span>
+<div id="mathAns8-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mrow><mo>-</mo><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mn>2</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>9</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>16</mn><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>72</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>96</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mn>24</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-15" class="spadComm" >
+<form id="formComm8-15" action="javascript:makeRequest('8-15');" >
+<input id="comm8-15" type="text" class="command" style="width: 12em;" value="laguerreL(4, 1.2)" />
+</form>
+<span id="commSav8-15" class="commSav" >laguerreL(4, 1.2)</span>
+<div id="mathAns8-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>13</mn><mo>.</mo><mn>0944</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm8-16" class="spadComm" >
+<form id="formComm8-16" action="javascript:makeRequest('8-16');" >
+<input id="comm8-16" type="text" class="command" style="width: 23em;" value="[laguerreL(j, 3, z) for j in 0..4]" />
+</form>
+<span id="commSav8-16" class="commSav" >[laguerreL(j, 3, z) for j in 0..4]</span>
+<div id="mathAns8-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>9</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mo></mo><mi>z</mi></mrow><mo>-</mo><mn>18</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mn>6</mn><mo></mo><mi>z</mi></mrow><mo>+</mo><mn>18</mn></mrow><mo>,</mo><mo>-</mo><mn>6</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-17" class="spadComm" >
+<form id="formComm8-17" action="javascript:makeRequest('8-17');" >
+<input id="comm8-17" type="text" class="command" style="width: 14em;" value="laguerreL(1, 3, 2.1)" />
+</form>
+<span id="commSav8-17" class="commSav" >laguerreL(1, 3, 2.1)</span>
+<div id="mathAns8-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>6</mn><mo>.</mo><mn>57</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The expression
+<span class="index">polynomial:Legendre</span><a name="chapter-8-37"/>
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>legendreP</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> evaluates to the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Legendre polynomial,
+</p>
+
+
+
+
+<div id="spadComm8-18" class="spadComm" >
+<form id="formComm8-18" action="javascript:makeRequest('8-18');" >
+<input id="comm8-18" type="text" class="command" style="width: 20em;" value="[legendreP(i,z) for i in 0..5]" />
+</form>
+<span id="commSav8-18" class="commSav" >[legendreP(i,z) for i in 0..5]</span>
+<div id="mathAns8-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mrow><mfrac><mn>3</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow><mo>,</mo><mrow><mrow><mfrac><mn>5</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>3</mn><mn>2</mn></mfrac><mo></mo><mi>z</mi></mrow></mrow><mo>,</mo><mrow><mrow><mfrac><mn>35</mn><mn>8</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15</mn><mn>4</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>3</mn><mn>8</mn></mfrac></mrow><mo>,</mo><mrow><mrow><mfrac><mn>63</mn><mn>8</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>35</mn><mn>4</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>15</mn><mn>8</mn></mfrac><mo></mo><mi>z</mi></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-19" class="spadComm" >
+<form id="formComm8-19" action="javascript:makeRequest('8-19');" >
+<input id="comm8-19" type="text" class="command" style="width: 14em;" value="legendreP(3, 3.0*%i)" />
+</form>
+<span id="commSav8-19" class="commSav" >legendreP(3, 3.0*%i)</span>
+<div id="mathAns8-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mrow><mn>72</mn><mo>.</mo><mn>0</mn></mrow><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+<p>Finally, three number-theoretic polynomial operations may be evaluated.
+<span class="index">number theory</span><a name="chapter-8-38"/>
+The following operations are provided by the package
+<span class="teletype">NumberTheoreticPolynomialFunctions</span>.
+<span class="index">NumberTheoreticPolynomialFunctions</span><a name="chapter-8-39"/>.
+</p>
+
+
+
+<p><span style="font-weight: bold;"> bernoulliB</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>R</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>R</mi></mrow></mstyle></math> <br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>bernoulliB</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Bernoulli polynomial,
+<span class="index">polynomial:Bernoulli</span><a name="chapter-8-40"/>
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.  These are defined by
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mrow><mi>t</mi><msup><mi>e</mi><mrow><mi>z</mi><mi>t</mi></mrow></msup></mrow><mrow><msup><mi>e</mi><mi>t</mi></msup><mo>-</mo><mn>1</mn></mrow></mfrac><mo>=</mo><msubsup><mo>&#x2211;</mo><mrow><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow></mrow><mrow><mo>&#x221E;</mo></mrow></msubsup><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo><mfrac><mrow><msup><mi>t</mi><mi>n</mi></msup></mrow><mrow><mi>n</mi><mo>!</mo></mrow></mfrac><mo>.</mo></mrow></mstyle></math>
+
+</p>
+
+
+
+<p><span style="font-weight: bold;"> eulerE</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>R</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>R</mi></mrow></mstyle></math> <br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>eulerE</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Euler polynomial,
+<span class="index">Euler:polynomial</span><a name="chapter-8-41"/>
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>E</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>.  These are defined by
+<span class="index">polynomial:Euler</span><a name="chapter-8-42"/>
+   <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mrow><mn>2</mn><msup><mi>e</mi><mrow><mi>z</mi><mi>t</mi></mrow></msup></mrow><mrow><msup><mi>e</mi><mi>t</mi></msup><mo>+</mo><mn>1</mn></mrow></mfrac><mo>=</mo><msubsup><mo>&#x2211;</mo><mrow><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow></mrow><mrow><mo>&#x221E;</mo></mrow></msubsup><msub><mi>E</mi><mi>n</mi></msub><mo>(</mo><mi>z</mi><mo>)</mo><mfrac><mrow><msup><mi>t</mi><mi>n</mi></msup></mrow><mrow><mi>n</mi><mo>!</mo></mrow></mfrac><mo>.</mo></mrow></mstyle></math>
+
+</p>
+
+
+
+<p><span style="font-weight: bold;"> cyclotomic</span>:  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>NonNegativeInteger</mi><mo>,</mo><mi>R</mi><mo>)</mo><mo>-</mo><mo>&gt;</mo><mi>R</mi></mrow></mstyle></math><br />
+    <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>cyclotomic</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th cyclotomic polynomial
+    <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>.  This is the polynomial whose
+   roots are precisely the primitive  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th roots of unity.
+<span class="index">Euler:totient function</span><a name="chapter-8-43"/>
+   This polynomial has degree given by the Euler totient function
+<span class="index">function:totient</span><a name="chapter-8-44"/>
+    <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>.
+</p>
+
+
+<p>The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>bernoulliB</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> evaluates to the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Bernoulli
+<span class="index">polynomial:Bernouilli</span><a name="chapter-8-45"/>
+polynomial.
+</p>
+
+
+
+
+<div id="spadComm8-20" class="spadComm" >
+<form id="formComm8-20" action="javascript:makeRequest('8-20');" >
+<input id="comm8-20" type="text" class="command" style="width: 11em;" value="bernoulliB(3, z)" />
+</form>
+<span id="commSav8-20" class="commSav" >bernoulliB(3, z)</span>
+<div id="mathAns8-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>3</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mi>z</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-21" class="spadComm" >
+<form id="formComm8-21" action="javascript:makeRequest('8-21');" >
+<input id="comm8-21" type="text" class="command" style="width: 20em;" value="bernoulliB(3, 0.7 + 0.4 * %i)" />
+</form>
+<span id="commSav8-21" class="commSav" >bernoulliB(3, 0.7 + 0.4 * %i)</span>
+<div id="mathAns8-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>138</mn></mrow><mo>-</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>116</mn></mrow><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+<p>The expression
+<span class="index">polynomial:Euler</span><a name="chapter-8-46"/>
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>eulerE</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> evaluates to the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Euler polynomial.
+</p>
+
+
+
+
+<div id="spadComm8-22" class="spadComm" >
+<form id="formComm8-22" action="javascript:makeRequest('8-22');" >
+<input id="comm8-22" type="text" class="command" style="width: 8em;" value="eulerE(3, z)" />
+</form>
+<span id="commSav8-22" class="commSav" >eulerE(3, z)</span>
+<div id="mathAns8-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>3</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-23" class="spadComm" >
+<form id="formComm8-23" action="javascript:makeRequest('8-23');" >
+<input id="comm8-23" type="text" class="command" style="width: 18em;" value="eulerE(3, 0.7 + 0.4 * %i)" />
+</form>
+<span id="commSav8-23" class="commSav" >eulerE(3, 0.7 + 0.4 * %i)</span>
+<div id="mathAns8-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>238</mn></mrow><mo>-</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>316</mn></mrow><mo></mo><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+<p>The expression
+<span class="index">polynomial:cyclotomic</span><a name="chapter-8-47"/>
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>cyclotomic</mi><mo>(</mo><mi>n</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> evaluates to the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th cyclotomic polynomial.
+<span class="index">cyclotomic polynomial</span><a name="chapter-8-48"/>
+</p>
+
+
+
+
+<div id="spadComm8-24" class="spadComm" >
+<form id="formComm8-24" action="javascript:makeRequest('8-24');" >
+<input id="comm8-24" type="text" class="command" style="width: 11em;" value="cyclotomic(3, z)" />
+</form>
+<span id="commSav8-24" class="commSav" >cyclotomic(3, z)</span>
+<div id="mathAns8-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>z</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-25" class="spadComm" >
+<form id="formComm8-25" action="javascript:makeRequest('8-25');" >
+<input id="comm8-25" type="text" class="command" style="width: 27em;" value="cyclotomic(3, (-1.0 + 0.0 * %i)**(2/3))" />
+</form>
+<span id="commSav8-25" class="commSav" >cyclotomic(3, (-1.0 + 0.0 * %i)**(2/3))</span>
+<div id="mathAns8-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+<p>Drawing complex functions in Axiom is presently somewhat
+awkward compared to drawing real functions.
+It is necessary to use the <span style="font-weight: bold;"> draw</span> operations that operate
+on functions rather than expressions.
+</p>
+
+
+<p>This is the complex exponential function (rotated interactively).
+<span class="index">function:complex exponential</span><a name="chapter-8-49"/>
+When this is displayed in color, the height is the value of the real part of
+the function and the color is the imaginary part.
+Red indicates large negative imaginary values, green indicates imaginary
+values near zero and blue/violet indicates large positive imaginary values.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 76em">
+draw((x,y)+-> real exp complex(x,y), -2..2, -2*%pi..2*%pi, colorFunction == (x, y) +->  imag exp complex(x,y), title=="exp(x+%i*y)", style=="smooth")
+</div>
+
+
+
+<div class="image">
+<img src="ps/compexp.png" alt="picture" />
+</div>
+
+<p>This is the complex arctangent function.
+<span class="index">function:complex arctangent</span><a name="chapter-8-50"/>
+Again, the height is the real part of the function value but here
+the color indicates the function value's phase.
+The position of the branch cuts are clearly visible and one can
+see that the function is real only for a real argument.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 94em">
+vp := draw((x,y) +-> real atan complex(x,y), -%pi..%pi, -%pi..%pi, colorFunction==(x,y) +->argument atan complex(x,y), title=="atan(x+%i*y)", style=="shade"); rotate(vp,-160,-45); vp
+</div>
+
+
+
+<div class="image">
+<img src="ps/compatan.png" alt="picture" />
+</div>
+
+<p>This is the complex Gamma function.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 106em">
+draw((x,y) +-> max(min(real Gamma complex(x,y),4),-4), -%pi..%pi, -%pi..%pi, style=="shade", colorFunction == (x,y) +-> argument Gamma complex(x,y), title == "Gamma(x+%i*y)", var1Steps == 50, var2Steps== 50)
+</div>
+
+
+
+<div class="image">
+<img src="ps/compgamm.png" alt="picture" />
+</div>
+
+<p>This shows the real Beta function near the origin.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 57em">
+draw(Beta(x,y)/100, x=-1.6..1.7, y = -1.6..1.7, style=="shade", title=="Beta(x,y)", var1Steps==40, var2Steps==40)
+</div>
+
+
+
+<div class="image">
+<img src="ps/realbeta.png" alt="picture" />
+</div>
+
+<p>This is the Bessel function  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>
+for index  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> in the range  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>6</mn><mo>.</mo><mo>.</mo><mn>4</mn></mrow></mstyle></math> and
+argument  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> in the range  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>.</mo><mo>.</mo><mn>14</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 72em">
+draw((alpha,x) +-> min(max(besselJ(alpha, x+8), -6), 6), -6..4, -6..6, title=="besselJ(alpha,x)", style=="shade", var1Steps==40, var2Steps==40)
+</div>
+
+
+
+<div class="image">
+<img src="ps/bessel.png" alt="picture" />
+</div>
+
+<p>This is the modified Bessel function
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>
+evaluated for various real values of the index  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>
+and fixed argument  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>5</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 27em">
+draw(besselI(alpha, 5), alpha = -12..12, unit==[5,20])
+</div>
+
+
+
+<div class="image">
+<!-- <img src="ps/modbess.png" alt="picture unavailable" /> -->
+</div>
+
+<p>This is similar to the last example
+except the index  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>
+takes on complex values in a  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>6</mn><mi>x</mi><mn>6</mn></mrow></mstyle></math> rectangle  centered on the origin.
+</p>
+
+
+
+
+<div class="spadgraph" style="width: 89em">
+draw((x,y) +-> real besselI(complex(x/20, y/20),5), -60..60, -60..60, colorFunction == (x,y)+-> argument besselI(complex(x/20,y/20),5), title=="besselI(x+i*y,5)", style=="shade")
+</div>
+
+
+
+<div class="image">
+<img src="ps/modbessc.png" alt="picture" />
+</div>
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.0.xhtml" style="margin-right: 10px;">Previous Section 8.0 Advanced Problem Solving</a><a href="section-8.2.xhtml" style="margin-right: 10px;">Next Section 8.2 Polynomial Factorization</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.10.xhtml
new file mode 100644
index 0000000..f96d40b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.10.xhtml
@@ -0,0 +1,1493 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.9.xhtml" style="margin-right: 10px;">Previous Section 8.9 Working with Power Series</a><a href="section-8.11.xhtml" style="margin-right: 10px;">Next Section 8.11 Finite Fields</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.10">
+<h2 class="sectiontitle">8.10  Solution of Differential Equations</h2>
+
+
+<a name="ugProblemDEQ" class="label"/>
+
+
+<p>In this section we discuss Axiom's facilities for
+<span class="index">equation:differential:solving</span><a name="chapter-8-150"/> solving <span class="index">differential
+equation</span><a name="chapter-8-151"/> differential equations in closed-form and in series.
+</p>
+
+
+<p>Axiom provides facilities for closed-form solution of
+<span class="index">equation:differential:solving in closed-form</span><a name="chapter-8-152"/> single
+differential equations of the following kinds:
+</p>
+
+
+
+<ul>
+<li>
+ linear ordinary differential equations, and
+</li>
+<li> non-linear first order ordinary differential equations
+when integrating factors can be found just by integration.
+</li>
+</ul>
+
+
+
+<p>For a discussion of the solution of systems of linear and polynomial
+equations, see <a href="section-8.5.xhtml#ugProblemLinPolEqn" class="ref" >ugProblemLinPolEqn</a> .
+</p>
+
+
+
+<a name="subsec-8.10.1"/>
+<div class="subsection"  id="subsec-8.10.1">
+<h3 class="subsectitle">8.10.1  Closed-Form Solutions of Linear Differential Equations</h3>
+
+
+<a name="ugxProblemLDEQClosed" class="label"/>
+
+
+<p>A <span class="italic">differential equation</span> is an equation involving an unknown 
+<span class="italic">function</span> and one or more of its derivatives.  
+<span class="index">differential equation</span><a name="chapter-8-153"/> The equation is called <span class="italic">ordinary</span> 
+if derivatives with respect to <span class="index">equation:differential</span><a name="chapter-8-154"/> only 
+one dependent variable appear in the equation (it is called 
+<span class="italic">partial</span> otherwise).  The package <span class="teletype">ElementaryFunctionODESolver</span> 
+provides the top-level operation <span style="font-weight: bold;"> solve</span> for finding closed-form 
+solutions of ordinary differential equations.  
+<span class="index">ElementaryFunctionODESolver</span><a name="chapter-8-155"/>
+</p>
+
+
+<p>To solve a differential equation, you must first create an operator
+for <span class="index">operator</span><a name="chapter-8-156"/> the unknown function.
+</p>
+
+
+<p>We let  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> be the unknown function in terms of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-190" class="spadComm" >
+<form id="formComm8-190" action="javascript:makeRequest('8-190');" >
+<input id="comm8-190" type="text" class="command" style="width: 12em;" value="y := operator 'y " />
+</form>
+<span id="commSav8-190" class="commSav" >y := operator 'y </span>
+<div id="mathAns8-190" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>You then type the equation using <span class="teletype">D</span> to create the
+derivatives of the unknown function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> where  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is any
+symbol you choose (the so-called <span class="italic">dependent variable</span>).
+</p>
+
+
+<p>This is how you enter
+the equation  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>y</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>+</mo><msup><mi>y</mi><mo>&prime;</mo></msup><mo>+</mo><mi>y</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-191" class="spadComm" >
+<form id="formComm8-191" action="javascript:makeRequest('8-191');" >
+<input id="comm8-191" type="text" class="command" style="width: 28em;" value="deq := D(y x, x, 2) + D(y x, x) + y x = 0" />
+</form>
+<span id="commSav8-191" class="commSav" >deq := D(y x, x, 2) + D(y x, x) + y x = 0</span>
+<div id="mathAns8-191" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>=</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+<p>The simplest way to invoke the <span style="font-weight: bold;"> solve</span> command is with three
+arguments.
+</p>
+
+
+
+<ul>
+<li>
+ the differential equation,
+</li>
+<li> the operator representing the unknown function,
+</li>
+<li> the dependent variable.
+</li>
+</ul>
+
+
+
+<p>So, to solve the above equation, we enter this.
+</p>
+
+
+
+
+<div id="spadComm8-192" class="spadComm" >
+<form id="formComm8-192" action="javascript:makeRequest('8-192');" >
+<input id="comm8-192" type="text" class="command" style="width: 12em;" value="solve(deq, y, x) " />
+</form>
+<span id="commSav8-192" class="commSav" >solve(deq, y, x) </span>
+<div id="mathAns8-192" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mrow><mrow><mo>cos</mo><mo>(</mo><mfrac><mrow><mi>x</mi><mo></mo><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mo></mo><mrow><msup><mi>e</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mi>x</mi><mn>2</mn></mfrac><mo>)</mo></mrow></msup></mrow></mrow><mo>,</mo><mrow><mrow><msup><mi>e</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mi>x</mi><mn>2</mn></mfrac><mo>)</mo></mrow></msup></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mfrac><mrow><mi>x</mi><mo></mo><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow><mn>2</mn></mfrac><mo>)</mo></mrow></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(particular: Expression Integer,basis: 
+List Expression Integer),...)
+</div>
+
+
+
+<p>Since linear ordinary differential equations have infinitely many
+solutions, <span style="font-weight: bold;"> solve</span> returns a <span class="italic">particular solution</span>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>f</mi><mi>p</mi></msub></mrow></mstyle></math> and a
+basis  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> for the solutions of the corresponding
+homogenuous equation.  Any expression of the form 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math> 
+where the  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>c</mi><mi>i</mi></msub></mrow></mstyle></math> do not involve the dependent variable
+is also a solution.  This is similar to what you get when you solve
+systems of linear algebraic equations.
+</p>
+
+
+<p>A way to select a unique solution is to specify <span class="italic">initial
+conditions</span>: choose a value  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> for the dependent variable and specify
+the values of the unknown function and its derivatives at  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>.  If the
+number of initial conditions is equal to the order of the equation,
+then the solution is unique (if it exists in closed form!) and <span style="font-weight: bold;">
+solve</span> tries to find it.  To specify initial conditions to <span style="font-weight: bold;">
+solve</span>, use an <span class="teletype">Equation</span> of the form  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>a</mi></mrow></mstyle></math> for the third
+parameter instead of the dependent variable, and add a fourth
+parameter consisting of the list of values  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>(</mo><mi>a</mi><mo>)</mo><mo>,</mo><msup><mi>y</mi><mo>&prime;</mo></msup><mo>(</mo><mi>a</mi><mo>)</mo><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>To find the solution of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>y</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>+</mo><mi>y</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math> satisfying  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><msup><mi>y</mi><mo>&prime;</mo></msup><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><mn>1</mn></mrow></mstyle></math>,
+do this.
+</p>
+
+
+
+
+<div id="spadComm8-193" class="spadComm" >
+<form id="formComm8-193" action="javascript:makeRequest('8-193');" >
+<input id="comm8-193" type="text" class="command" style="width: 18em;" value="deq := D(y x, x, 2) + y x " />
+</form>
+<span id="commSav8-193" class="commSav" >deq := D(y x, x, 2) + y x </span>
+<div id="mathAns8-193" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>You can omit the  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>=</mo><mn>0</mn></mrow></mstyle></math> when you enter the equation to be solved.
+</p>
+
+
+
+
+<div id="spadComm8-194" class="spadComm" >
+<form id="formComm8-194" action="javascript:makeRequest('8-194');" >
+<input id="comm8-194" type="text" class="command" style="width: 20em;" value="solve(deq, y, x = 0, [1, 1]) " />
+</form>
+<span id="commSav8-194" class="commSav" >solve(deq, y, x = 0, [1, 1]) </span>
+<div id="mathAns8-194" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>Axiom is not limited to linear differential equations with constant
+coefficients.  It can also find solutions when the coefficients are
+rational or algebraic functions of the dependent variable.
+Furthermore, Axiom is not limited by the order of the equation.
+</p>
+
+
+<p>Axiom can solve the following third order equations with
+polynomial coefficients.
+</p>
+
+
+
+
+<div id="spadComm8-195" class="spadComm" >
+<form id="formComm8-195" action="javascript:makeRequest('8-195');" >
+<input id="comm8-195" type="text" class="command" style="width: 60em;" value="deq := x**3 * D(y x, x, 3) + x**2 * D(y x, x, 2) - 2 * x * D(y x, x) + 2 * y x = 2 * x**4 " />
+</form>
+<span id="commSav8-195" class="commSav" >deq := x**3 * D(y x, x, 3) + x**2 * D(y x, x, 2) - 2 * x * D(y x, x) + 2 * y x = 2 * x**4 </span>
+<div id="mathAns8-195" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>x</mi><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow><mo>=</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-196" class="spadComm" >
+<form id="formComm8-196" action="javascript:makeRequest('8-196');" >
+<input id="comm8-196" type="text" class="command" style="width: 12em;" value="solve(deq, y, x) " />
+</form>
+<span id="commSav8-196" class="commSav" >solve(deq, y, x) </span>
+<div id="mathAns8-196" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mfrac><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>20</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn></mrow><mrow><mn>15</mn><mo></mo><mi>x</mi></mrow></mfrac></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mfrac><mrow><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mi>x</mi></mfrac><mo>,</mo><mfrac><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mi>x</mi></mfrac><mo>,</mo><mfrac><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mi>x</mi></mfrac><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(particular: Expression Integer,basis: 
+List Expression Integer),...)
+</div>
+
+
+
+<p>Here we are solving a homogeneous equation.
+</p>
+
+
+
+
+<div id="spadComm8-197" class="spadComm" >
+<form id="formComm8-197" action="javascript:makeRequest('8-197');" >
+<input id="comm8-197" type="text" class="command" style="width: 74em;" value="deq := (x**9+x**3) * D(y x, x, 3) + 18 * x**8 * D(y x, x, 2) - 90 * x * D(y x, x) - 30 * (11 * x**6 - 3) * y x " />
+</form>
+<span id="commSav8-197" class="commSav" >deq := (x**9+x**3) * D(y x, x, 3) + 18 * x**8 * D(y x, x, 2) - 90 * x * D(y x, x) - 30 * (11 * x**6 - 3) * y x </span>
+<div id="mathAns8-197" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>)</mo></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>90</mn><mo></mo><mi>x</mi><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>330</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mn>90</mn><mo>)</mo></mrow><mo></mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-198" class="spadComm" >
+<form id="formComm8-198" action="javascript:makeRequest('8-198');" >
+<input id="comm8-198" type="text" class="command" style="width: 12em;" value="solve(deq, y, x) " />
+</form>
+<span id="commSav8-198" class="commSav" >solve(deq, y, x) </span>
+<div id="mathAns8-198" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mfrac><mi>x</mi><mrow><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mfrac><mo>,</mo><mfrac><mrow><mi>x</mi><mo></mo><mrow><msup><mi>e</mi><mrow><mo>(</mo><mo>-</mo><mrow><mrow><msqrt><mn>91</mn></msqrt></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>)</mo></mrow></msup></mrow></mrow><mrow><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mfrac><mo>,</mo><mfrac><mrow><mi>x</mi><mo></mo><mrow><msup><mi>e</mi><mrow><mo>(</mo><mrow><msqrt><mn>91</mn></msqrt></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></msup></mrow></mrow><mrow><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mfrac><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(particular: Expression Integer,basis: 
+List Expression Integer),...)
+</div>
+
+
+
+<p>On the other hand, and in contrast with the operation <span style="font-weight: bold;"> integrate</span>,
+it can happen that Axiom finds no solution and that some closed-form
+solution still exists.  While it is mathematically complicated to
+describe exactly when the solutions are guaranteed to be found, the
+following statements are correct and form good guidelines for linear
+ordinary differential equations:
+</p>
+
+
+
+<ul>
+<li>
+ If the coefficients are constants, Axiom finds a complete basis
+of solutions (i,e, all solutions).
+</li>
+<li> If the coefficients are rational functions in the dependent variable,
+Axiom at least finds all solutions that do not involve algebraic
+functions.
+</li>
+</ul>
+
+
+
+<p>Note that this last statement does not mean that Axiom does not find
+the solutions that are algebraic functions.  It means that it is not
+guaranteed that the algebraic function solutions will be found.
+</p>
+
+
+<p>This is an example where all the algebraic solutions are found.
+</p>
+
+
+
+
+<div id="spadComm8-199" class="spadComm" >
+<form id="formComm8-199" action="javascript:makeRequest('8-199');" >
+<input id="comm8-199" type="text" class="command" style="width: 42em;" value="deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0 " />
+</form>
+<span id="commSav8-199" class="commSav" >deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0 </span>
+<div id="mathAns8-199" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mi>x</mi><mo></mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>=</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-200" class="spadComm" >
+<form id="formComm8-200" action="javascript:makeRequest('8-200');" >
+<input id="comm8-200" type="text" class="command" style="width: 12em;" value="solve(deq, y, x) " />
+</form>
+<span id="commSav8-200" class="commSav" >solve(deq, y, x) </span>
+<div id="mathAns8-200" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mfrac><mn>1</mn><mrow><msqrt><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></msqrt></mrow></mfrac><mo>,</mo><mfrac><mrow><mo>log</mo><mo>(</mo><mrow><mrow><msqrt><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></msqrt></mrow><mo>-</mo><mi>x</mi></mrow><mo>)</mo></mrow><mrow><msqrt><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></msqrt></mrow></mfrac><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(particular: Expression Integer,basis: 
+List Expression Integer),...)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.10.2"/>
+<div class="subsection"  id="subsec-8.10.2">
+<h3 class="subsectitle">8.10.2  Closed-Form Solutions of Non-Linear Differential Equations</h3>
+
+
+<a name="ugxProblemNLDEQClosed" class="label"/>
+
+
+<p>This is an example that shows how to solve a non-linear first order
+ordinary differential equation manually when an integrating factor can
+be found just by integration.  At the end, we show you how to solve it
+directly.
+</p>
+
+
+<p>Let's solve the differential equation  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>y</mi><mo>&prime;</mo></msup><mo>=</mo><mi>y</mi><mo>/</mo><mo>(</mo><mi>x</mi><mo>+</mo><mi>y</mi><mi>log</mi><mi>y</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>Using the notation  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>m</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo><mo>+</mo><mi>n</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo><msup><mi>y</mi><mo>&prime;</mo></msup><mo>=</mo><mn>0</mn></mrow></mstyle></math>, we have  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>m</mi><mo>=</mo><mo>-</mo><mi>y</mi></mrow></mstyle></math> and 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mi>x</mi><mo>+</mo><mi>y</mi><mi>log</mi><mi>y</mi></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-201" class="spadComm" >
+<form id="formComm8-201" action="javascript:makeRequest('8-201');" >
+<input id="comm8-201" type="text" class="command" style="width: 6em;" value="m := -y " />
+</form>
+<span id="commSav8-201" class="commSav" >m := -y </span>
+<div id="mathAns8-201" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mi>y</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-202" class="spadComm" >
+<form id="formComm8-202" action="javascript:makeRequest('8-202');" >
+<input id="comm8-202" type="text" class="command" style="width: 13em;" value="n := x + y * log y " />
+</form>
+<span id="commSav8-202" class="commSav" >n := x + y * log y </span>
+<div id="mathAns8-202" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>y</mi><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow><mo>+</mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>We first check for exactness, that is, does  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>dm</mi><mo>/</mo><mi>dy</mi><mo>=</mo><mi>dn</mi><mo>/</mo><mi>dx</mi></mrow></mstyle></math>?
+</p>
+
+
+
+
+<div id="spadComm8-203" class="spadComm" >
+<form id="formComm8-203" action="javascript:makeRequest('8-203');" >
+<input id="comm8-203" type="text" class="command" style="width: 12em;" value="D(m, y) - D(n, x) " />
+</form>
+<span id="commSav8-203" class="commSav" >D(m, y) - D(n, x) </span>
+<div id="mathAns8-203" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>This is not zero, so the equation is not exact.  Therefore we must
+look for an integrating factor: a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>mu</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> such that 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>d</mi><mo>(</mo><mi>mu</mi><mi>m</mi><mo>)</mo><mo>/</mo><mi>dy</mi><mo>=</mo><mi>d</mi><mo>(</mo><mi>mu</mi><mi>n</mi><mo>)</mo><mo>/</mo><mi>dx</mi></mrow></mstyle></math>.  Normally, we first search for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>mu</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>
+depending only on  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> or only on  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.
+</p>
+
+
+<p>Let's search for such a  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>mu</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> first.
+</p>
+
+
+
+
+<div id="spadComm8-204" class="spadComm" >
+<form id="formComm8-204" action="javascript:makeRequest('8-204');" >
+<input id="comm8-204" type="text" class="command" style="width: 13em;" value="mu := operator 'mu " />
+</form>
+<span id="commSav8-204" class="commSav" >mu := operator 'mu </span>
+<div id="mathAns8-204" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>mu</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+
+
+<div id="spadComm8-205" class="spadComm" >
+<form id="formComm8-205" action="javascript:makeRequest('8-205');" >
+<input id="comm8-205" type="text" class="command" style="width: 26em;" value="a := D(mu(x) * m, y) - D(mu(x) * n, x) " />
+</form>
+<span id="commSav8-205" class="commSav" >a := D(mu(x) * m, y) - D(mu(x) * n, x) </span>
+<div id="mathAns8-205" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mi>y</mi><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow><mo>-</mo><mi>x</mi><mo>)</mo></mrow><mo></mo><mrow><mrow><msubsup><mi>mu</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><mi>mu</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>If the above is zero for a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>mu</mi></mstyle></math> that does <span class="italic">not</span> depend on
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>, then  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>mu</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> is an integrating factor.
+</p>
+
+
+
+
+<div id="spadComm8-206" class="spadComm" >
+<form id="formComm8-206" action="javascript:makeRequest('8-206');" >
+<input id="comm8-206" type="text" class="command" style="width: 14em;" value="solve(a = 0, mu, x) " />
+</form>
+<span id="commSav8-206" class="commSav" >solve(a = 0, mu, x) </span>
+<div id="mathAns8-206" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mfrac><mn>1</mn><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>x</mi><mo></mo><mi>y</mi><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mfrac><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(particular: Expression Integer,basis: 
+List Expression Integer),...)
+</div>
+
+
+
+<p>The solution depends on  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>, so there is no integrating factor that
+depends on  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> only.
+</p>
+
+
+<p>Let's look for one that depends on  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> only.
+</p>
+
+
+
+
+<div id="spadComm8-207" class="spadComm" >
+<form id="formComm8-207" action="javascript:makeRequest('8-207');" >
+<input id="comm8-207" type="text" class="command" style="width: 26em;" value="b := D(mu(y) * m, y) - D(mu(y) * n, x) " />
+</form>
+<span id="commSav8-207" class="commSav" >b := D(mu(y) * m, y) - D(mu(y) * n, x) </span>
+<div id="mathAns8-207" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mi>y</mi><mo></mo><mrow><mrow><msubsup><mi>mu</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><mi>mu</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-208" class="spadComm" >
+<form id="formComm8-208" action="javascript:makeRequest('8-208');" >
+<input id="comm8-208" type="text" class="command" style="width: 18em;" value="sb := solve(b = 0, mu, y) " />
+</form>
+<span id="commSav8-208" class="commSav" >sb := solve(b = 0, mu, y) </span>
+<div id="mathAns8-208" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mfrac><mn>1</mn><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+</div>
+
+
+
+
+<p>We've found one!
+</p>
+
+
+<p>The above  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>mu</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> is an integrating factor.  We must multiply our
+initial equation (that is,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>) by the integrating factor.
+</p>
+
+
+
+
+<div id="spadComm8-209" class="spadComm" >
+<form id="formComm8-209" action="javascript:makeRequest('8-209');" >
+<input id="comm8-209" type="text" class="command" style="width: 16em;" value="intFactor := sb.basis.1 " />
+</form>
+<span id="commSav8-209" class="commSav" >intFactor := sb.basis.1 </span>
+<div id="mathAns8-209" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>1</mn><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-210" class="spadComm" >
+<form id="formComm8-210" action="javascript:makeRequest('8-210');" >
+<input id="comm8-210" type="text" class="command" style="width: 13em;" value="m := intFactor * m " />
+</form>
+<span id="commSav8-210" class="commSav" >m := intFactor * m </span>
+<div id="mathAns8-210" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>1</mn><mi>y</mi></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-211" class="spadComm" >
+<form id="formComm8-211" action="javascript:makeRequest('8-211');" >
+<input id="comm8-211" type="text" class="command" style="width: 13em;" value="n := intFactor * n " />
+</form>
+<span id="commSav8-211" class="commSav" >n := intFactor * n </span>
+<div id="mathAns8-211" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mi>y</mi><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow><mo>+</mo><mi>x</mi></mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Let's check for exactness.
+</p>
+
+
+
+
+<div id="spadComm8-212" class="spadComm" >
+<form id="formComm8-212" action="javascript:makeRequest('8-212');" >
+<input id="comm8-212" type="text" class="command" style="width: 12em;" value="D(m, y) - D(n, x) " />
+</form>
+<span id="commSav8-212" class="commSav" >D(m, y) - D(n, x) </span>
+<div id="mathAns8-212" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>We must solve the exact equation, that is, find a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>s</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>
+such that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>ds</mi><mo>/</mo><mi>dx</mi><mo>=</mo><mi>m</mi></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>ds</mi><mo>/</mo><mi>dy</mi><mo>=</mo><mi>n</mi></mrow></mstyle></math>.
+</p>
+
+
+<p>We start by writing  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>s</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo><mo>=</mo><mi>h</mi><mo>(</mo><mi>y</mi><mo>)</mo><mo>+</mo><mi>integrate</mi><mo>(</mo><mi>m</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> where  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>h</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> is
+an unknown function of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.  This guarantees that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>ds</mi><mo>/</mo><mi>dx</mi><mo>=</mo><mi>m</mi></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-213" class="spadComm" >
+<form id="formComm8-213" action="javascript:makeRequest('8-213');" >
+<input id="comm8-213" type="text" class="command" style="width: 12em;" value="h := operator 'h " />
+</form>
+<span id="commSav8-213" class="commSav" >h := operator 'h </span>
+<div id="mathAns8-213" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>h</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+
+
+<div id="spadComm8-214" class="spadComm" >
+<form id="formComm8-214" action="javascript:makeRequest('8-214');" >
+<input id="comm8-214" type="text" class="command" style="width: 20em;" value="sol := h y + integrate(m, x) " />
+</form>
+<span id="commSav8-214" class="commSav" >sol := h y + integrate(m, x) </span>
+<div id="mathAns8-214" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mi>y</mi><mo></mo><mrow><mi>h</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow><mo>-</mo><mi>x</mi></mrow><mi>y</mi></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>All we want is to find  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>h</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> such that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>ds</mi><mo>/</mo><mi>dy</mi><mo>=</mo><mi>n</mi></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-215" class="spadComm" >
+<form id="formComm8-215" action="javascript:makeRequest('8-215');" >
+<input id="comm8-215" type="text" class="command" style="width: 12em;" value="dsol := D(sol, y) " />
+</form>
+<span id="commSav8-215" class="commSav" >dsol := D(sol, y) </span>
+<div id="mathAns8-215" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo></mo><mrow><mrow><msubsup><mi>h</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow><mo>+</mo><mi>x</mi></mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-216" class="spadComm" >
+<form id="formComm8-216" action="javascript:makeRequest('8-216');" >
+<input id="comm8-216" type="text" class="command" style="width: 20em;" value="nsol := solve(dsol = n, h, y) " />
+</form>
+<span id="commSav8-216" class="commSav" >nsol := solve(dsol = n, h, y) </span>
+<div id="mathAns8-216" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mfrac><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mn>2</mn></mfrac></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mn>1</mn><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(particular: Expression Integer,basis: 
+List Expression Integer),...)
+</div>
+
+
+
+<p>The above particular solution is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>h</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> we want, so we just replace
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>h</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> by it in the implicit solution.
+</p>
+
+
+
+
+<div id="spadComm8-217" class="spadComm" >
+<form id="formComm8-217" action="javascript:makeRequest('8-217');" >
+<input id="comm8-217" type="text" class="command" style="width: 22em;" value="eval(sol, h y = nsol.particular) " />
+</form>
+<span id="commSav8-217" class="commSav" >eval(sol, h y = nsol.particular) </span>
+<div id="mathAns8-217" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mi>y</mi><mo></mo><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>x</mi></mrow></mrow><mrow><mn>2</mn><mo></mo><mi>y</mi></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>A first integral of the initial equation is obtained by setting this
+result equal to an arbitrary constant.
+</p>
+
+
+<p>Now that we've seen how to solve the equation ``by hand,'' we show you
+how to do it with the <span style="font-weight: bold;"> solve</span> operation.
+</p>
+
+
+<p>First define  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> to be an operator.
+</p>
+
+
+
+
+<div id="spadComm8-218" class="spadComm" >
+<form id="formComm8-218" action="javascript:makeRequest('8-218');" >
+<input id="comm8-218" type="text" class="command" style="width: 12em;" value="y := operator 'y " />
+</form>
+<span id="commSav8-218" class="commSav" >y := operator 'y </span>
+<div id="mathAns8-218" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>Next we create the differential equation.
+</p>
+
+
+
+
+<div id="spadComm8-219" class="spadComm" >
+<form id="formComm8-219" action="javascript:makeRequest('8-219');" >
+<input id="comm8-219" type="text" class="command" style="width: 32em;" value="deq := D(y x, x) = y(x) / (x + y(x) * log y x) " />
+</form>
+<span id="commSav8-219" class="commSav" >deq := D(y x, x) = y(x) / (x + y(x) * log y x) </span>
+<div id="mathAns8-219" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mrow><mrow><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mi>x</mi></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+<p>Finally, we solve it.
+</p>
+
+
+
+
+<div id="spadComm8-220" class="spadComm" >
+<form id="formComm8-220" action="javascript:makeRequest('8-220');" >
+<input id="comm8-220" type="text" class="command" style="width: 12em;" value="solve(deq, y, x) " />
+</form>
+<span id="commSav8-220" class="commSav" >solve(deq, y, x) </span>
+<div id="mathAns8-220" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo></mo><mrow><msup><mrow><mo>log</mo><mo>(</mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>x</mi></mrow></mrow><mrow><mn>2</mn><mo></mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.10.3"/>
+<div class="subsection"  id="subsec-8.10.3">
+<h3 class="subsectitle">8.10.3  Power Series Solutions of Differential Equations</h3>
+
+
+<a name="ugxProblemDEQSeries" class="label"/>
+
+
+<p>The command to solve differential equations in power
+<span class="index">equation:differential:solving in power series</span><a name="chapter-8-157"/> series
+<span class="index">power series</span><a name="chapter-8-158"/> around <span class="index">series:power</span><a name="chapter-8-159"/> a particular initial
+point with specific initial conditions is called <span style="font-weight: bold;"> seriesSolve</span>.
+It can take a variety of parameters, so we illustrate its use with
+some examples.
+</p>
+
+
+<p>Since the coefficients of some solutions are quite large, we reset the
+default to compute only seven terms.
+</p>
+
+
+
+
+<div id="spadComm8-221" class="spadComm" >
+<form id="formComm8-221" action="javascript:makeRequest('8-221');" >
+<input id="comm8-221" type="text" class="command" style="width: 17em;" value=")set streams calculate 7 " />
+</form>
+<span id="commSav8-221" class="commSav" >)set streams calculate 7 </span>
+<div id="mathAns8-221" ></div>
+</div>
+
+
+
+<p>You can solve a single nonlinear equation of any order. For example,
+we solve 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>y</mi><mrow><mo>&prime;</mo><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>=</mo><mi>sin</mi><mo>(</mo><msup><mi>y</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>)</mo><mo>*</mo><mi>exp</mi><mo>(</mo><mi>y</mi><mo>)</mo><mo>+</mo><mi>cos</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> subject to 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>y</mi><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><mn>1</mn><mo>,</mo><msup><mi>y</mi><mo>&prime;</mo></msup><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><mn>0</mn><mo>,</mo><msup><mi>y</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><mn>0</mn></mrow></mstyle></math>
+</p>
+
+
+<p>We first tell Axiom that the symbol  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mtext mathvariant="monospace">'</mtext><mi>y</mi></mrow></mstyle></math> denotes a new operator.
+</p>
+
+
+
+
+<div id="spadComm8-222" class="spadComm" >
+<form id="formComm8-222" action="javascript:makeRequest('8-222');" >
+<input id="comm8-222" type="text" class="command" style="width: 12em;" value="y := operator 'y " />
+</form>
+<span id="commSav8-222" class="commSav" >y := operator 'y </span>
+<div id="mathAns8-222" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>Enter the differential equation using  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> like any system function.
+</p>
+
+
+
+
+<div id="spadComm8-223" class="spadComm" >
+<form id="formComm8-223" action="javascript:makeRequest('8-223');" >
+<input id="comm8-223" type="text" class="command" style="width: 40em;" value="eq := D(y(x), x, 3) - sin(D(y(x), x, 2))*exp(y(x)) = cos(x)" />
+</form>
+<span id="commSav8-223" class="commSav" >eq := D(y(x), x, 3) - sin(D(y(x), x, 2))*exp(y(x)) = cos(x)</span>
+<div id="mathAns8-223" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>-</mo><mrow><mrow><msup><mi>e</mi><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></msup></mrow><mo></mo><mrow><mo>sin</mo><mo>(</mo><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></mrow></mrow><mo>=</mo><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+<p>Solve it around  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math> with the initial conditions
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><mn>1</mn><mo>,</mo><msup><mi>y</mi><mo>&prime;</mo></msup><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><msup><mi>y</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-224" class="spadComm" >
+<form id="formComm8-224" action="javascript:makeRequest('8-224');" >
+<input id="comm8-224" type="text" class="command" style="width: 24em;" value="seriesSolve(eq, y, x = 0, [1, 0, 0])" />
+</form>
+<span id="commSav8-224" class="commSav" >seriesSolve(eq, y, x = 0, [1, 0, 0])</span>
+<div id="mathAns8-224" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mi>e</mi><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>e</mi></mrow></mrow><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>8</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>e</mi></mrow><mo>+</mo><mn>1</mn></mrow><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>You can also solve a system of nonlinear first order equations.  For
+example, we solve a system that has  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>tan</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sec</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> as
+solutions.
+</p>
+
+
+<p>We tell Axiom that  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is also an operator.
+</p>
+
+
+
+
+<div id="spadComm8-225" class="spadComm" >
+<form id="formComm8-225" action="javascript:makeRequest('8-225');" >
+<input id="comm8-225" type="text" class="command" style="width: 11em;" value="x := operator 'x" />
+</form>
+<span id="commSav8-225" class="commSav" >x := operator 'x</span>
+<div id="mathAns8-225" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>Enter the two equations forming our system.
+</p>
+
+
+
+
+<div id="spadComm8-226" class="spadComm" >
+<form id="formComm8-226" action="javascript:makeRequest('8-226');" >
+<input id="comm8-226" type="text" class="command" style="width: 21em;" value="eq1 := D(x(t), t) = 1 + x(t)**2" />
+</form>
+<span id="commSav8-226" class="commSav" >eq1 := D(x(t), t) = 1 + x(t)**2</span>
+<div id="mathAns8-226" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msubsup><mi>x</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mrow><mrow><msup><mrow><mi>x</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-227" class="spadComm" >
+<form id="formComm8-227" action="javascript:makeRequest('8-227');" >
+<input id="comm8-227" type="text" class="command" style="width: 21em;" value="eq2 := D(y(t), t) = x(t) * y(t)" />
+</form>
+<span id="commSav8-227" class="commSav" >eq2 := D(y(t), t) = x(t) * y(t)</span>
+<div id="mathAns8-227" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msubsup><mi>y</mi><mrow><mo></mo></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mrow><mrow><mi>x</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo></mo><mrow><mi>y</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+<p>Solve the system around  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>t</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math> with the initial conditions  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><mn>0</mn></mrow></mstyle></math>
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>(</mo><mn>0</mn><mo>)</mo><mo>=</mo><mn>1</mn></mrow></mstyle></math>.  Notice that since we give the unknowns in the order
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>]</mo></mrow></mstyle></math>, the answer is a list of two series in the order 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext>series&nbsp;for&nbsp;</mtext></mrow><mi>x</mi><mo>(</mo><mi>t</mi><mo>)</mo><mo>,</mo><mrow><mtext>&nbsp;series&nbsp;for&nbsp;</mtext></mrow><mi>y</mi><mo>(</mo><mi>t</mi><mo>)</mo><mo>]</mo></mrow></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm8-228" class="spadComm" >
+<form id="formComm8-228" action="javascript:makeRequest('8-228');" >
+<input id="comm8-228" type="text" class="command" style="width: 40em;" value="seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])" />
+</form>
+<span id="commSav8-228" class="commSav" >seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])</span>
+<div id="mathAns8-228" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;%BZ&nbsp;with&nbsp;type&nbsp;List&nbsp;UnivariateTaylorSeries(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expression&nbsp;Integer,t,0)&nbsp;-&gt;&nbsp;UnivariateTaylorSeries(Expression&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer,t,0)&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;%CA&nbsp;with&nbsp;type&nbsp;List&nbsp;UnivariateTaylorSeries(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expression&nbsp;Integer,t,0)&nbsp;-&gt;&nbsp;UnivariateTaylorSeries(Expression&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer,t,0)&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>t</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>15</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>17</mn><mn>315</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>,</mo><mrow><mn>1</mn><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>5</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>61</mn><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List UnivariateTaylorSeries(Expression Integer,t,0)
+</div>
+
+
+
+
+<p>The order in which we give the equations and the initial conditions
+has no effect on the order of the solution.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.9.xhtml" style="margin-right: 10px;">Previous Section 8.9 Working with Power Series</a><a href="section-8.11.xhtml" style="margin-right: 10px;">Next Section 8.11 Finite Fields</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.11.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.11.xhtml
new file mode 100644
index 0000000..6dffec6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.11.xhtml
@@ -0,0 +1,3946 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.11</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.10.xhtml" style="margin-right: 10px;">Previous Section 8.10 Solution of Differential Equations</a><a href="section-8.12.xhtml" style="margin-right: 10px;">Next Section 8.12 Primary Decomposition of Ideals</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.11">
+<h2 class="sectiontitle">8.11  Finite Fields</h2>
+
+
+<a name="ugProblemFinite" class="label"/>
+
+
+<p>A <span class="italic">finite field</span> (also called a <span class="italic">Galois field</span>) is a finite
+algebraic structure where one can add, multiply and divide under the
+same laws (for example, commutativity, associativity or
+distributivity) as apply to the rational, real or complex numbers.
+Unlike those three fields, for any finite field there exists a
+positive prime integer  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>, called the <span style="font-weight: bold;"> characteristic</span>, such that
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math> for any element  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> in the finite field.  In fact, the
+number of elements in a finite field is a power of the characteristic
+and for each prime  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> and positive integer  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> there exists exactly
+one finite field with  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>p</mi><mi>n</mi></msup></mrow></mstyle></math> elements, up to isomorphism.<span class="footnote"> For
+more information about the algebraic structure and properties of
+finite fields, see, for example,<br/>
+ S.  Lang, <span class="italic">Algebra</span>, Second
+Edition, New York: Addison-Wesley Publishing Company, Inc., 1984, ISBN
+0 201 05487 6;<br/> or<br/>
+ R.  Lidl, H.  Niederreiter, <span class="italic">Finite Fields</span>,
+Encyclopedia of Mathematics and Its Applications, Vol.  20, Cambridge:
+Cambridge Univ.  Press, 1983, ISBN 0 521 30240 4.</span>
+</p>
+
+
+<p>When  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>1</mn><mo>,</mo></mrow></mstyle></math> the field has  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> elements and is called a <span class="italic">prime
+field</span>, discussed in the next section.  There are several ways of
+implementing extensions of finite fields, and Axiom provides quite a
+bit of freedom to allow you to choose the one that is best for your
+application.  Moreover, we provide operations for converting among the
+different representations of extensions and different extensions of a
+single field.  Finally, note that you usually need to package-call
+operations from finite fields if the operations do not take as an
+argument an object of the field.  See 
+<a href="section-2.9.xhtml#ugTypesPkgCall" class="ref" >ugTypesPkgCall</a>  for more
+information on package-calling.
+</p>
+
+
+
+<a name="subsec-8.11.1"/>
+<div class="subsection"  id="subsec-8.11.1">
+<h3 class="subsectitle">8.11.1  Modular Arithmetic and Prime Fields</h3>
+
+
+<a name="ugxProblemFinitePrime" class="label"/>
+
+<p><span class="index">finite field</span><a name="chapter-8-160"/>
+<span class="index">Galois:field</span><a name="chapter-8-161"/>
+<span class="index">field:finite:prime</span><a name="chapter-8-162"/>
+<span class="index">field:prime</span><a name="chapter-8-163"/>
+<span class="index">field:Galois</span><a name="chapter-8-164"/>
+<span class="index">prime field</span><a name="chapter-8-165"/>
+<span class="index">modular arithmetic</span><a name="chapter-8-166"/>
+<span class="index">arithmetic:modular</span><a name="chapter-8-167"/>
+</p>
+
+
+<p>Let  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> be a positive integer.  It is well known that you can get the
+same result if you perform addition, subtraction or multiplication of
+integers and then take the remainder on dividing by  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> as if you had
+first done such remaindering on the operands, performed the arithmetic
+and then (if necessary) done remaindering again.  This allows us to
+speak of arithmetic <span class="italic">modulo</span>  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> or, more simply <span class="italic">mod</span>  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>.
+</p>
+
+
+<p>In Axiom, you use <span class="teletype">IntegerMod</span> to do such arithmetic.
+</p>
+
+
+
+
+<div id="spadComm8-229" class="spadComm" >
+<form id="formComm8-229" action="javascript:makeRequest('8-229');" >
+<input id="comm8-229" type="text" class="command" style="width: 15em;" value="(a,b) : IntegerMod 12 " />
+</form>
+<span id="commSav8-229" class="commSav" >(a,b) : IntegerMod 12 </span>
+<div id="mathAns8-229" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm8-230" class="spadComm" >
+<form id="formComm8-230" action="javascript:makeRequest('8-230');" >
+<input id="comm8-230" type="text" class="command" style="width: 12em;" value="(a, b) := (16, 7) " />
+</form>
+<span id="commSav8-230" class="commSav" >(a, b) := (16, 7) </span>
+<div id="mathAns8-230" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: IntegerMod 12
+</div>
+
+
+
+
+
+<div id="spadComm8-231" class="spadComm" >
+<form id="formComm8-231" action="javascript:makeRequest('8-231');" >
+<input id="comm8-231" type="text" class="command" style="width: 10em;" value="[a - b, a * b] " />
+</form>
+<span id="commSav8-231" class="commSav" >[a - b, a * b] </span>
+<div id="mathAns8-231" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List IntegerMod 12
+</div>
+
+
+
+<p>If  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> is not prime, there is only a limited notion of reciprocals and
+division.
+</p>
+
+
+
+
+<div id="spadComm8-232" class="spadComm" >
+<form id="formComm8-232" action="javascript:makeRequest('8-232');" >
+<input id="comm8-232" type="text" class="command" style="width: 4em;" value="a / b " />
+</form>
+<span id="commSav8-232" class="commSav" >a / b </span>
+<div id="mathAns8-232" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;There&nbsp;are&nbsp;12&nbsp;exposed&nbsp;and&nbsp;13&nbsp;unexposed&nbsp;library&nbsp;operations&nbsp;named&nbsp;/&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;having&nbsp;2&nbsp;argument(s)&nbsp;but&nbsp;none&nbsp;was&nbsp;determined&nbsp;to&nbsp;be&nbsp;applicable.&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;HyperDoc&nbsp;Browse,&nbsp;or&nbsp;issue<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)display&nbsp;op&nbsp;/<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;learn&nbsp;more&nbsp;about&nbsp;the&nbsp;available&nbsp;operations.&nbsp;Perhaps&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;package-calling&nbsp;the&nbsp;operation&nbsp;or&nbsp;using&nbsp;coercions&nbsp;on&nbsp;the&nbsp;arguments<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;allow&nbsp;you&nbsp;to&nbsp;apply&nbsp;the&nbsp;operation.<br />
+&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Cannot&nbsp;find&nbsp;a&nbsp;definition&nbsp;or&nbsp;applicable&nbsp;library&nbsp;operation&nbsp;named&nbsp;/&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;argument&nbsp;type(s)&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntegerMod&nbsp;12<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntegerMod&nbsp;12<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Perhaps&nbsp;you&nbsp;should&nbsp;use&nbsp;"@"&nbsp;to&nbsp;indicate&nbsp;the&nbsp;required&nbsp;return&nbsp;type,&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;"$"&nbsp;to&nbsp;specify&nbsp;which&nbsp;version&nbsp;of&nbsp;the&nbsp;function&nbsp;you&nbsp;need.<br />
+</div>
+
+
+
+
+
+<div id="spadComm8-233" class="spadComm" >
+<form id="formComm8-233" action="javascript:makeRequest('8-233');" >
+<input id="comm8-233" type="text" class="command" style="width: 6em;" value="recip a " />
+</form>
+<span id="commSav8-233" class="commSav" >recip a </span>
+<div id="mathAns8-233" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>Here  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>12</mn></mstyle></math> are relatively prime, so  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>7</mn></mstyle></math> has a multiplicative
+inverse modulo  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>12</mn></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-234" class="spadComm" >
+<form id="formComm8-234" action="javascript:makeRequest('8-234');" >
+<input id="comm8-234" type="text" class="command" style="width: 6em;" value="recip b " />
+</form>
+<span id="commSav8-234" class="commSav" >recip b </span>
+<div id="mathAns8-234" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(IntegerMod 12,...)
+</div>
+
+
+
+<p>If we take  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> to be a prime number  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>, then taking inverses and,
+therefore, division are generally defined.
+</p>
+
+
+<p>Use <span class="teletype">PrimeField</span> instead of <span class="teletype">IntegerMod</span> for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> prime.
+</p>
+
+
+
+
+<div id="spadComm8-235" class="spadComm" >
+<form id="formComm8-235" action="javascript:makeRequest('8-235');" >
+<input id="comm8-235" type="text" class="command" style="width: 16em;" value="c : PrimeField 11 := 8 " />
+</form>
+<span id="commSav8-235" class="commSav" >c : PrimeField 11 := 8 </span>
+<div id="mathAns8-235" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 11
+</div>
+
+
+
+
+
+<div id="spadComm8-236" class="spadComm" >
+<form id="formComm8-236" action="javascript:makeRequest('8-236');" >
+<input id="comm8-236" type="text" class="command" style="width: 4em;" value="inv c " />
+</form>
+<span id="commSav8-236" class="commSav" >inv c </span>
+<div id="mathAns8-236" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 11
+</div>
+
+
+
+<p>You can also use  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>/</mo><mi>c</mi></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>c</mi><mo>*</mo><mo>*</mo><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math> for the inverse of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>c</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-237" class="spadComm" >
+<form id="formComm8-237" action="javascript:makeRequest('8-237');" >
+<input id="comm8-237" type="text" class="command" style="width: 3em;" value="9/c " />
+</form>
+<span id="commSav8-237" class="commSav" >9/c </span>
+<div id="mathAns8-237" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 11
+</div>
+
+
+
+<p><span class="teletype">PrimeField</span> (abbreviation <span class="teletype">PF</span>) checks if its argument is
+prime when you try to use an operation from it.  If you know the
+argument is prime (particularly if it is large), <span class="teletype">InnerPrimeField</span>
+(abbreviation <span class="teletype">IPF</span>) assumes the argument has already been
+verified to be prime.  If you do use a number that is not prime, you
+will eventually get an error message, most likely a division by zero
+message.  For computer science applications, the most important finite
+fields are <span class="teletype">PrimeField 2</span> and its extensions.
+</p>
+
+
+<p>In the following examples, we work with the finite field with 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>=</mo><mn>101</mn></mrow></mstyle></math> elements.
+</p>
+
+
+
+
+<div id="spadComm8-238" class="spadComm" >
+<form id="formComm8-238" action="javascript:makeRequest('8-238');" >
+<input id="comm8-238" type="text" class="command" style="width: 12em;" value="GF101 := PF 101  " />
+</form>
+<span id="commSav8-238" class="commSav" >GF101 := PF 101  </span>
+<div id="mathAns8-238" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>PrimeField101</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Like many domains in Axiom, finite fields provide an operation for
+returning a random element of the domain.
+</p>
+
+
+
+
+<div id="spadComm8-239" class="spadComm" >
+<form id="formComm8-239" action="javascript:makeRequest('8-239');" >
+<input id="comm8-239" type="text" class="command" style="width: 14em;" value="x := random()$GF101 " />
+</form>
+<span id="commSav8-239" class="commSav" >x := random()$GF101 </span>
+<div id="mathAns8-239" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 101
+</div>
+
+
+
+
+
+<div id="spadComm8-240" class="spadComm" >
+<form id="formComm8-240" action="javascript:makeRequest('8-240');" >
+<input id="comm8-240" type="text" class="command" style="width: 11em;" value="y : GF101 := 37 " />
+</form>
+<span id="commSav8-240" class="commSav" >y : GF101 := 37 </span>
+<div id="mathAns8-240" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>37</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 101
+</div>
+
+
+
+
+
+<div id="spadComm8-241" class="spadComm" >
+<form id="formComm8-241" action="javascript:makeRequest('8-241');" >
+<input id="comm8-241" type="text" class="command" style="width: 6em;" value="z := x/y " />
+</form>
+<span id="commSav8-241" class="commSav" >z := x/y </span>
+<div id="mathAns8-241" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>63</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 101
+</div>
+
+
+
+
+
+<div id="spadComm8-242" class="spadComm" >
+<form id="formComm8-242" action="javascript:makeRequest('8-242');" >
+<input id="comm8-242" type="text" class="command" style="width: 7em;" value="z * y - x " />
+</form>
+<span id="commSav8-242" class="commSav" >z * y - x </span>
+<div id="mathAns8-242" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 101
+</div>
+
+
+
+<p>The element  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math> is a <span class="italic">primitive element</span> of this field,
+<span class="index">primitive element</span><a name="chapter-8-168"/>
+<span class="index">element:primitive</span><a name="chapter-8-169"/>
+</p>
+
+
+
+
+<div id="spadComm8-243" class="spadComm" >
+<form id="formComm8-243" action="javascript:makeRequest('8-243');" >
+<input id="comm8-243" type="text" class="command" style="width: 21em;" value="pe := primitiveElement()$GF101 " />
+</form>
+<span id="commSav8-243" class="commSav" >pe := primitiveElement()$GF101 </span>
+<div id="mathAns8-243" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 101
+</div>
+
+
+
+<p>in the sense that its powers enumerate all nonzero elements.
+</p>
+
+
+
+
+<div id="spadComm8-244" class="spadComm" >
+<form id="formComm8-244" action="javascript:makeRequest('8-244');" >
+<input id="comm8-244" type="text" class="command" style="width: 16em;" value="[pe**i for i in 0..99] " />
+</form>
+<span id="commSav8-244" class="commSav" >[pe**i for i in 0..99] </span>
+<div id="mathAns8-244" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>32</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>27</mn><mo>,</mo><mn>54</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>14</mn><mo>,</mo><mn>28</mn><mo>,</mo><mn>56</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>22</mn><mo>,</mo><mn>44</mn><mo>,</mo><mn>88</mn><mo>,</mo><mn>75</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>98</mn><mo>,</mo></mtd></mtr><mtr><mtd><mn>95</mn><mo>,</mo><mn>89</mn><mo>,</mo><mn>77</mn><mo>,</mo><mn>53</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>40</mn><mo>,</mo><mn>80</mn><mo>,</mo><mn>59</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>34</mn><mo>,</mo><mn>68</mn><mo>,</mo><mn>35</mn><mo>,</mo><mn>70</mn><mo>,</mo><mn>39</mn><mo>,</mo><mn>78</mn><mo>,</mo><mn>55</mn><mo>,</mo><mn>9</mn><mo>,</mo></mtd></mtr><mtr><mtd><mn>18</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>72</mn><mo>,</mo><mn>43</mn><mo>,</mo><mn>86</mn><mo>,</mo><mn>71</mn><mo>,</mo><mn>41</mn><mo>,</mo><mn>82</mn><mo>,</mo><mn>63</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>50</mn><mo>,</mo><mn>100</mn><mo>,</mo><mn>99</mn><mo>,</mo><mn>97</mn><mo>,</mo><mn>93</mn><mo>,</mo><mn>85</mn><mo>,</mo><mn>69</mn><mo>,</mo><mn>37</mn><mo>,</mo></mtd></mtr><mtr><mtd><mn>74</mn><mo>,</mo><mn>47</mn><mo>,</mo><mn>94</mn><mo>,</mo><mn>87</mn><mo>,</mo><mn>73</mn><mo>,</mo><mn>45</mn><mo>,</mo><mn>90</mn><mo>,</mo><mn>79</mn><mo>,</mo><mn>57</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>26</mn><mo>,</mo><mn>52</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>12</mn><mo>,</mo><mn>24</mn><mo>,</mo><mn>48</mn><mo>,</mo><mn>96</mn><mo>,</mo><mn>91</mn><mo>,</mo></mtd></mtr><mtr><mtd><mn>81</mn><mo>,</mo><mn>61</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>42</mn><mo>,</mo><mn>84</mn><mo>,</mo><mn>67</mn><mo>,</mo><mn>33</mn><mo>,</mo><mn>66</mn><mo>,</mo><mn>31</mn><mo>,</mo><mn>62</mn><mo>,</mo><mn>23</mn><mo>,</mo><mn>46</mn><mo>,</mo><mn>92</mn><mo>,</mo><mn>83</mn><mo>,</mo><mn>65</mn><mo>,</mo><mn>29</mn><mo>,</mo><mn>58</mn><mo>,</mo><mn>15</mn><mo>,</mo><mn>30</mn><mo>,</mo></mtd></mtr><mtr><mtd><mn>60</mn><mo>,</mo><mn>19</mn><mo>,</mo><mn>38</mn><mo>,</mo><mn>76</mn><mo>,</mo><mn>51</mn><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PrimeField 101
+</div>
+
+
+
+<p>If every nonzero element is a power of a primitive element, how do you
+determine what the exponent is?  Use <span class="index">discrete logarithm</span><a name="chapter-8-170"/> 
+<span style="font-weight: bold;"> discreteLog</span>.  <span class="index">logarithm:discrete</span><a name="chapter-8-171"/>
+</p>
+
+
+
+
+<div id="spadComm8-245" class="spadComm" >
+<form id="formComm8-245" action="javascript:makeRequest('8-245');" >
+<input id="comm8-245" type="text" class="command" style="width: 14em;" value="ex := discreteLog(y) " />
+</form>
+<span id="commSav8-245" class="commSav" >ex := discreteLog(y) </span>
+<div id="mathAns8-245" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>56</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm8-246" class="spadComm" >
+<form id="formComm8-246" action="javascript:makeRequest('8-246');" >
+<input id="comm8-246" type="text" class="command" style="width: 6em;" value="pe ** ex " />
+</form>
+<span id="commSav8-246" class="commSav" >pe ** ex </span>
+<div id="mathAns8-246" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>37</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 101
+</div>
+
+
+
+<p>The <span style="font-weight: bold;"> order</span> of a nonzero element  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is the smallest positive
+integer  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math> such  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>t</mi></msup><mo>=</mo><mn>1</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-247" class="spadComm" >
+<form id="formComm8-247" action="javascript:makeRequest('8-247');" >
+<input id="comm8-247" type="text" class="command" style="width: 6em;" value="order y " />
+</form>
+<span id="commSav8-247" class="commSav" >order y </span>
+<div id="mathAns8-247" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>25</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The order of a primitive element is the defining  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-248" class="spadComm" >
+<form id="formComm8-248" action="javascript:makeRequest('8-248');" >
+<input id="comm8-248" type="text" class="command" style="width: 6em;" value="order pe " />
+</form>
+<span id="commSav8-248" class="commSav" >order pe </span>
+<div id="mathAns8-248" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>100</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.11.2"/>
+<div class="subsection"  id="subsec-8.11.2">
+<h3 class="subsectitle">8.11.2  Extensions of Finite Fields</h3>
+
+
+<a name="ugxProblemFiniteExtensionFinite" class="label"/>
+
+<p><span class="index">finite field</span><a name="chapter-8-172"/>
+<span class="index">field:finite:extension of</span><a name="chapter-8-173"/>
+</p>
+
+
+<p>When you want to work with an extension of a finite field in Axiom,
+you have three choices to make:
+</p>
+
+
+
+<ol>
+<li>
+ Do you want to generate an extension of the prime field
+(for example, <span class="teletype">PrimeField 2</span>) or an extension of a given field?
+</li>
+<li> Do you want to use a representation that is particularly
+efficient for multiplication, exponentiation and addition but uses a
+lot of computer memory (a representation that models the cyclic group
+structure of the multiplicative group of the field extension and uses
+a Zech logarithm table), one that <span class="index">Zech logarithm</span><a name="chapter-8-174"/> uses a normal
+basis for the vector space structure of the field extension, or one
+that performs arithmetic modulo an irreducible polynomial?  The cyclic
+group representation is only usable up to ``medium'' (relative to your
+machine's performance) sized fields.  If the field is large and the
+normal basis is relatively simple, the normal basis representation is
+more efficient for exponentiation than the irreducible polynomial
+representation.
+</li>
+<li> Do you want to provide a polynomial explicitly, a root of which
+``generates'' the extension in one of the three senses in (2), or do
+you wish to have the polynomial generated for you?
+</li>
+</ol>
+
+
+
+<p>This illustrates one of the most important features of Axiom: you can
+choose exactly the right data-type and representation to suit your
+application best.
+</p>
+
+
+<p>We first tell you what domain constructors to use for each case above,
+and then give some examples.
+</p>
+
+
+<p>Constructors that automatically generate extensions of the prime field:
+<br />
+<span class="teletype">FiniteField</span> <br />
+<span class="teletype">FiniteFieldCyclicGroup</span> <br />
+<span class="teletype">FiniteFieldNormalBasis</span>
+</p>
+
+
+<p>Constructors that generate extensions of an arbitrary field:
+<br />
+<span class="teletype">FiniteFieldExtension</span> <br />
+<span class="teletype">FiniteFieldExtensionByPolynomial</span> <br />
+<span class="teletype">FiniteFieldCyclicGroupExtension</span> <br />
+<span class="teletype">FiniteFieldCyclicGroupExtensionByPolynomial</span> <br />
+<span class="teletype">FiniteFieldNormalBasisExtension</span> <br />
+<span class="teletype">FiniteFieldNormalBasisExtensionByPolynomial</span>
+</p>
+
+
+
+<p>Constructors that use a cyclic group representation:
+<br />
+<span class="teletype">FiniteFieldCyclicGroup</span> <br />
+<span class="teletype">FiniteFieldCyclicGroupExtension</span> <br />
+<span class="teletype">FiniteFieldCyclicGroupExtensionByPolynomial</span>
+</p>
+
+
+
+<p>Constructors that use a normal basis representation:
+<br />
+<span class="teletype">FiniteFieldNormalBasis</span> <br />
+<span class="teletype">FiniteFieldNormalBasisExtension</span> <br />
+<span class="teletype">FiniteFieldNormalBasisExtensionByPolynomial</span>
+</p>
+
+
+
+<p>Constructors that use an irreducible modulus polynomial representation:
+<br />
+<span class="teletype">FiniteField</span> <br />
+<span class="teletype">FiniteFieldExtension</span> <br />
+<span class="teletype">FiniteFieldExtensionByPolynomial</span>
+</p>
+
+
+
+<p>Constructors that generate a polynomial for you:
+<br />
+<span class="teletype">FiniteField</span> <br />
+<span class="teletype">FiniteFieldExtension</span> <br />
+<span class="teletype">FiniteFieldCyclicGroup</span> <br />
+<span class="teletype">FiniteFieldCyclicGroupExtension</span> <br />
+<span class="teletype">FiniteFieldNormalBasis</span> <br />
+<span class="teletype">FiniteFieldNormalBasisExtension</span>
+</p>
+
+
+
+<p>Constructors for which you provide a polynomial:
+<br />
+<span class="teletype">FiniteFieldExtensionByPolynomial</span> <br />
+<span class="teletype">FiniteFieldCyclicGroupExtensionByPolynomial</span> <br />
+<span class="teletype">FiniteFieldNormalBasisExtensionByPolynomial</span>
+</p>
+
+
+<p>These constructors are discussed in the following sections where we
+collect together descriptions of extension fields that have the same
+underlying representation.<span class="footnote">For more information on the
+implementation aspects of finite fields, see J. Grabmeier,
+A. Scheerhorn, <span class="italic">Finite Fields in AXIOM,</span> Technical Report, IBM
+Heidelberg Scientific Center, 1992.</span>
+</p>
+
+
+<p>If you don't really care about all this detail, just use <span class="teletype">FiniteField</span>.  As your knowledge of your application and its Axiom
+implementation grows, you can come back and choose an alternative
+constructor that may improve the efficiency of your code.  Note that
+the exported operations are almost the same for all constructors of
+finite field extensions and include the operations exported by <span class="teletype">PrimeField</span>.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.11.3"/>
+<div class="subsection"  id="subsec-8.11.3">
+<h3 class="subsectitle">8.11.3  Irreducible Modulus Polynomial Representations</h3>
+
+
+<a name="ugxProblemFiniteModulus" class="label"/>
+
+
+<p>All finite field extension constructors discussed in this
+<span class="index">finite field</span><a name="chapter-8-175"/> section <span class="index">field:finite:extension of</span><a name="chapter-8-176"/> use a
+representation that performs arithmetic with univariate (one-variable)
+polynomials modulo an irreducible polynomial.  This polynomial may be
+given explicitly by you or automatically generated.  The ground field
+may be the prime field or one you specify.  See
+<a href="section-8.11.xhtml#ugxProblemFiniteExtensionFinite" class="ref" >ugxProblemFiniteExtensionFinite</a>  for general information about
+finite field extensions.
+</p>
+
+
+<p>For <span class="teletype">FiniteField</span> (abbreviation <span class="teletype">FF</span>) you provide a prime
+number  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> and an extension degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>.  This degree can be 1.
+</p>
+
+
+<p>Axiom uses the prime field <span class="teletype">PrimeField(p)</span>, here <span class="teletype">PrimeField 2</span>, 
+and it chooses an irreducible polynomial of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>, here 12,
+over the ground field.
+</p>
+
+
+
+
+<div id="spadComm8-249" class="spadComm" >
+<form id="formComm8-249" action="javascript:makeRequest('8-249');" >
+<input id="comm8-249" type="text" class="command" style="width: 14em;" value="GF4096 := FF(2,12); " />
+</form>
+<span id="commSav8-249" class="commSav" >GF4096 := FF(2,12); </span>
+<div id="mathAns8-249" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>The objects in the generated field extension are polynomials of degree
+at most  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math> with coefficients in the prime field.  The polynomial
+indeterminate is automatically chosen by Axiom and is typically
+something like  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>A</mi></mrow></mstyle></math> or  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>D</mi></mrow></mstyle></math>.  These (strange) variables are 
+<span class="italic">only</span> for output display; there are several ways to construct 
+elements of this field.
+</p>
+
+
+<p>The operation <span style="font-weight: bold;"> index</span> enumerates the elements of the field
+extension and accepts as argument the integers from 1 to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>p</mi><mi>n</mi></msup></mrow></mstyle></math>.
+</p>
+
+
+<p>The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>index</mi><mo>(</mo><mi>p</mi><mo>)</mo></mrow></mstyle></math> always gives the indeterminate.
+</p>
+
+
+
+
+<div id="spadComm8-250" class="spadComm" >
+<form id="formComm8-250" action="javascript:makeRequest('8-250');" >
+<input id="comm8-250" type="text" class="command" style="width: 14em;" value="a := index(2)$GF4096 " />
+</form>
+<span id="commSav8-250" class="commSav" >a := index(2)$GF4096 </span>
+<div id="mathAns8-250" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><mi>A</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteField(2,12)
+</div>
+
+
+
+<p>You can build polynomials in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> and calculate in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>GF4096</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-251" class="spadComm" >
+<form id="formComm8-251" action="javascript:makeRequest('8-251');" >
+<input id="comm8-251" type="text" class="command" style="width: 15em;" value="b := a**12 - a**5 + a " />
+</form>
+<span id="commSav8-251" class="commSav" >b := a**12 - a**5 + a </span>
+<div id="mathAns8-251" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteField(2,12)
+</div>
+
+
+
+
+
+<div id="spadComm8-252" class="spadComm" >
+<form id="formComm8-252" action="javascript:makeRequest('8-252');" >
+<input id="comm8-252" type="text" class="command" style="width: 7em;" value="b ** 1000 " />
+</form>
+<span id="commSav8-252" class="commSav" >b ** 1000 </span>
+<div id="mathAns8-252" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>10</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>9</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>A</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteField(2,12)
+</div>
+
+
+
+
+
+<div id="spadComm8-253" class="spadComm" >
+<form id="formComm8-253" action="javascript:makeRequest('8-253');" >
+<input id="comm8-253" type="text" class="command" style="width: 6em;" value="c := a/b " />
+</form>
+<span id="commSav8-253" class="commSav" >c := a/b </span>
+<div id="mathAns8-253" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>11</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteField(2,12)
+</div>
+
+
+
+<p>Among the available operations are <span style="font-weight: bold;"> norm</span> and <span style="font-weight: bold;"> trace</span>.
+</p>
+
+
+
+
+<div id="spadComm8-254" class="spadComm" >
+<form id="formComm8-254" action="javascript:makeRequest('8-254');" >
+<input id="comm8-254" type="text" class="command" style="width: 5em;" value="norm c " />
+</form>
+<span id="commSav8-254" class="commSav" >norm c </span>
+<div id="mathAns8-254" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 2
+</div>
+
+
+
+
+
+<div id="spadComm8-255" class="spadComm" >
+<form id="formComm8-255" action="javascript:makeRequest('8-255');" >
+<input id="comm8-255" type="text" class="command" style="width: 6em;" value="trace c " />
+</form>
+<span id="commSav8-255" class="commSav" >trace c </span>
+<div id="mathAns8-255" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 2
+</div>
+
+
+
+<p>Since any nonzero element is a power of a primitive element, how do we
+discover what the exponent is?
+</p>
+
+
+<p>The operation <span style="font-weight: bold;"> discreteLog</span> calculates <span class="index">discrete logarithm</span><a name="chapter-8-177"/>
+the exponent and, <span class="index">logarithm:discrete</span><a name="chapter-8-178"/> if it is called with only
+one argument, always refers to the primitive element returned by <span style="font-weight: bold;">
+primitiveElement</span>.
+</p>
+
+
+
+
+<div id="spadComm8-256" class="spadComm" >
+<form id="formComm8-256" action="javascript:makeRequest('8-256');" >
+<input id="comm8-256" type="text" class="command" style="width: 14em;" value="dL := discreteLog a " />
+</form>
+<span id="commSav8-256" class="commSav" >dL := discreteLog a </span>
+<div id="mathAns8-256" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1729</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm8-257" class="spadComm" >
+<form id="formComm8-257" action="javascript:makeRequest('8-257');" >
+<input id="comm8-257" type="text" class="command" style="width: 6em;" value="g ** dL " />
+</form>
+<span id="commSav8-257" class="commSav" >g ** dL </span>
+<div id="mathAns8-257" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>g</mi><mn>1729</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p><span class="teletype">FiniteFieldExtension</span> (abbreviation <span class="teletype">FFX</span>) is similar to <span class="teletype">FiniteField</span> except that the ground-field for <span class="teletype">FiniteFieldExtension</span> 
+is arbitrary and chosen by you.
+</p>
+
+
+<p>In case you select the prime field as ground field, there is
+essentially no difference between the constructed two finite field
+extensions.
+</p>
+
+
+
+
+<div id="spadComm8-258" class="spadComm" >
+<form id="formComm8-258" action="javascript:makeRequest('8-258');" >
+<input id="comm8-258" type="text" class="command" style="width: 12em;" value="GF16 := FF(2,4); " />
+</form>
+<span id="commSav8-258" class="commSav" >GF16 := FF(2,4); </span>
+<div id="mathAns8-258" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-259" class="spadComm" >
+<form id="formComm8-259" action="javascript:makeRequest('8-259');" >
+<input id="comm8-259" type="text" class="command" style="width: 16em;" value="GF4096 := FFX(GF16,3); " />
+</form>
+<span id="commSav8-259" class="commSav" >GF4096 := FFX(GF16,3); </span>
+<div id="mathAns8-259" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-260" class="spadComm" >
+<form id="formComm8-260" action="javascript:makeRequest('8-260');" >
+<input id="comm8-260" type="text" class="command" style="width: 20em;" value="r := (random()$GF4096) ** 20 " />
+</form>
+<span id="commSav8-260" class="commSav" >r := (random()$GF4096) ** 20 </span>
+<div id="mathAns8-260" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mrow><mo>%</mo><msup><mi>B</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><mo>%</mo><msup><mi>C</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mo>%</mo><msup><mi>B</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>B</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>C</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>B</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>B</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>B</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldExtension(FiniteField(2,4),3)
+</div>
+
+
+
+
+
+<div id="spadComm8-261" class="spadComm" >
+<form id="formComm8-261" action="javascript:makeRequest('8-261');" >
+<input id="comm8-261" type="text" class="command" style="width: 6em;" value="norm(r) " />
+</form>
+<span id="commSav8-261" class="commSav" >norm(r) </span>
+<div id="mathAns8-261" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><msup><mi>B</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>B</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteField(2,4)
+</div>
+
+
+
+<p><span class="teletype">FiniteFieldExtensionByPolynomial</span> (abbreviation <span class="teletype">FFP</span>)
+is similar to <span class="teletype">FiniteField</span> and <span class="teletype">FiniteFieldExtension</span>
+but is more general.
+</p>
+
+
+
+
+<div id="spadComm8-262" class="spadComm" >
+<form id="formComm8-262" action="javascript:makeRequest('8-262');" >
+<input id="comm8-262" type="text" class="command" style="width: 11em;" value="GF4 := FF(2,2); " />
+</form>
+<span id="commSav8-262" class="commSav" >GF4 := FF(2,2); </span>
+<div id="mathAns8-262" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-263" class="spadComm" >
+<form id="formComm8-263" action="javascript:makeRequest('8-263');" >
+<input id="comm8-263" type="text" class="command" style="width: 40em;" value="f := nextIrreduciblePoly(random(6)$FFPOLY(GF4))$FFPOLY(GF4) " />
+</form>
+<span id="commSav8-263" class="commSav" >f := nextIrreduciblePoly(random(6)$FFPOLY(GF4))$FFPOLY(GF4) </span>
+<div id="mathAns8-263" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(SparseUnivariatePolynomial FiniteField(2,2),...)
+</div>
+
+
+
+<p>For <span class="teletype">FFP</span> you choose both the ground field and the irreducible
+polynomial used in the representation.  The degree of the extension is
+the degree of the polynomial.
+</p>
+
+
+
+
+<div id="spadComm8-264" class="spadComm" >
+<form id="formComm8-264" action="javascript:makeRequest('8-264');" >
+<input id="comm8-264" type="text" class="command" style="width: 15em;" value="GF4096 := FFP(GF4,f); " />
+</form>
+<span id="commSav8-264" class="commSav" >GF4096 := FFP(GF4,f); </span>
+<div id="mathAns8-264" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-265" class="spadComm" >
+<form id="formComm8-265" action="javascript:makeRequest('8-265');" >
+<input id="comm8-265" type="text" class="command" style="width: 19em;" value="discreteLog random()$GF4096 " />
+</form>
+<span id="commSav8-265" class="commSav" >discreteLog random()$GF4096 </span>
+<div id="mathAns8-265" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>582</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.11.4"/>
+<div class="subsection"  id="subsec-8.11.4">
+<h3 class="subsectitle">8.11.4  Cyclic Group Representations</h3>
+
+
+<a name="ugxProblemFiniteCyclic" class="label"/>
+
+<p><span class="index">finite field</span><a name="chapter-8-179"/>
+<span class="index">field:finite:extension of</span><a name="chapter-8-180"/>
+</p>
+
+
+<p>In every finite field there exist elements whose powers are all the
+nonzero elements of the field.  Such an element is called a 
+<span class="italic">primitive element</span>.
+</p>
+
+
+<p>In <span class="teletype">FiniteFieldCyclicGroup</span> (abbreviation <span class="teletype">FFCG</span>)
+<span class="index">group:cyclic</span><a name="chapter-8-181"/> the nonzero elements are represented by the
+powers of a fixed primitive <span class="index">element:primitive</span><a name="chapter-8-182"/> element
+<span class="index">primitive element</span><a name="chapter-8-183"/> of the field (that is, a generator of its
+cyclic multiplicative group).  Multiplication (and hence
+exponentiation) using this representation is easy.  To do addition, we
+consider our primitive element as the root of a primitive polynomial
+(an irreducible polynomial whose roots are all primitive).  See
+<a href="section-8.11.xhtml#ugxProblemFiniteUtility" class="ref" >ugxProblemFiniteUtility</a>  
+for examples of how to compute such a polynomial.
+</p>
+
+
+<p>To use <span class="teletype">FiniteFieldCyclicGroup</span> you provide a prime number and an
+extension degree.
+</p>
+
+
+
+<div id="spadComm8-266" class="spadComm" >
+<form id="formComm8-266" action="javascript:makeRequest('8-266');" >
+<input id="comm8-266" type="text" class="command" style="width: 13em;" value="GF81 := FFCG(3,4); " />
+</form>
+<span id="commSav8-266" class="commSav" >GF81 := FFCG(3,4); </span>
+<div id="mathAns8-266" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Axiom uses the prime field, here <span class="teletype">PrimeField 3</span>, as the ground
+field and it chooses a primitive polynomial of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>, here 4,
+over the prime field.
+</p>
+
+
+
+
+<div id="spadComm8-267" class="spadComm" >
+<form id="formComm8-267" action="javascript:makeRequest('8-267');" >
+<input id="comm8-267" type="text" class="command" style="width: 20em;" value="a := primitiveElement()$GF81 " />
+</form>
+<span id="commSav8-267" class="commSav" >a := primitiveElement()$GF81 </span>
+<div id="mathAns8-267" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><msup><mi>F</mi><mn>1</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldCyclicGroup(3,4)
+</div>
+
+
+
+<p>You can calculate in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>GF81</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-268" class="spadComm" >
+<form id="formComm8-268" action="javascript:makeRequest('8-268');" >
+<input id="comm8-268" type="text" class="command" style="width: 16em;" value="b  := a**12 - a**5 + a " />
+</form>
+<span id="commSav8-268" class="commSav" >b  := a**12 - a**5 + a </span>
+<div id="mathAns8-268" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><msup><mi>F</mi><mn>72</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldCyclicGroup(3,4)
+</div>
+
+
+
+<p>In this representation of finite fields the discrete logarithm of an
+element can be seen directly in its output form.
+</p>
+
+
+
+
+<div id="spadComm8-269" class="spadComm" >
+<form id="formComm8-269" action="javascript:makeRequest('8-269');" >
+<input id="comm8-269" type="text" class="command" style="width: 2em;" value="b " />
+</form>
+<span id="commSav8-269" class="commSav" >b </span>
+<div id="mathAns8-269" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><msup><mi>F</mi><mn>72</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldCyclicGroup(3,4)
+</div>
+
+
+
+
+
+<div id="spadComm8-270" class="spadComm" >
+<form id="formComm8-270" action="javascript:makeRequest('8-270');" >
+<input id="comm8-270" type="text" class="command" style="width: 10em;" value="discreteLog b " />
+</form>
+<span id="commSav8-270" class="commSav" >discreteLog b </span>
+<div id="mathAns8-270" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>72</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p><span class="teletype">FiniteFieldCyclicGroupExtension</span> (abbreviation <span class="teletype">FFCGX</span>) is
+similar to <span class="teletype">FiniteFieldCyclicGroup</span> except that the ground field
+for <span class="teletype">FiniteFieldCyclicGroupExtension</span> is arbitrary and chosen by
+you.  In case you select the prime field as ground field, there is
+essentially no difference between the constructed two finite field
+extensions.
+</p>
+
+
+
+
+<div id="spadComm8-271" class="spadComm" >
+<form id="formComm8-271" action="javascript:makeRequest('8-271');" >
+<input id="comm8-271" type="text" class="command" style="width: 11em;" value="GF9 := FF(3,2); " />
+</form>
+<span id="commSav8-271" class="commSav" >GF9 := FF(3,2); </span>
+<div id="mathAns8-271" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-272" class="spadComm" >
+<form id="formComm8-272" action="javascript:makeRequest('8-272');" >
+<input id="comm8-272" type="text" class="command" style="width: 16em;" value="GF729 := FFCGX(GF9,3); " />
+</form>
+<span id="commSav8-272" class="commSav" >GF729 := FFCGX(GF9,3); </span>
+<div id="mathAns8-272" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-273" class="spadComm" >
+<form id="formComm8-273" action="javascript:makeRequest('8-273');" >
+<input id="comm8-273" type="text" class="command" style="width: 19em;" value="r := (random()$GF729) ** 20 " />
+</form>
+<span id="commSav8-273" class="commSav" >r := (random()$GF729) ** 20 </span>
+<div id="mathAns8-273" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><msup><mi>H</mi><mn>420</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldCyclicGroupExtension(FiniteField(3,2),3)
+</div>
+
+
+
+
+
+<div id="spadComm8-274" class="spadComm" >
+<form id="formComm8-274" action="javascript:makeRequest('8-274');" >
+<input id="comm8-274" type="text" class="command" style="width: 6em;" value="trace(r) " />
+</form>
+<span id="commSav8-274" class="commSav" >trace(r) </span>
+<div id="mathAns8-274" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteField(3,2)
+</div>
+
+
+
+<p><span class="teletype">FiniteFieldCyclicGroupExtensionByPolynomial</span> (abbreviation 
+<span class="teletype">FFCGP</span>) is similar to <span class="teletype">FiniteFieldCyclicGroup</span> and 
+<span class="teletype">FiniteFieldCyclicGroupExtension</span> but is more general.  For 
+<span class="teletype">FiniteFieldCyclicGroupExtensionByPolynomial</span> you choose both the
+ground field and the irreducible polynomial used in the
+representation.  The degree of the extension is the degree of the
+polynomial.
+</p>
+
+
+
+
+<div id="spadComm8-275" class="spadComm" >
+<form id="formComm8-275" action="javascript:makeRequest('8-275');" >
+<input id="comm8-275" type="text" class="command" style="width: 15em;" value="GF3  := PrimeField 3; " />
+</form>
+<span id="commSav8-275" class="commSav" >GF3  := PrimeField 3; </span>
+<div id="mathAns8-275" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>We use a utility operation to generate an irreducible primitive
+polynomial (see 
+<a href="section-8.11.xhtml#ugxProblemFiniteUtility" class="ref" >ugxProblemFiniteUtility</a> ).  
+The polynomial has one variable that is ``anonymous'': 
+it displays as a question mark.
+</p>
+
+
+
+
+<div id="spadComm8-276" class="spadComm" >
+<form id="formComm8-276" action="javascript:makeRequest('8-276');" >
+<input id="comm8-276" type="text" class="command" style="width: 27em;" value="f := createPrimitivePoly(4)$FFPOLY(GF3) " />
+</form>
+<span id="commSav8-276" class="commSav" >f := createPrimitivePoly(4)$FFPOLY(GF3) </span>
+<div id="mathAns8-276" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 3
+</div>
+
+
+
+
+
+<div id="spadComm8-277" class="spadComm" >
+<form id="formComm8-277" action="javascript:makeRequest('8-277');" >
+<input id="comm8-277" type="text" class="command" style="width: 15em;" value="GF81 := FFCGP(GF3,f); " />
+</form>
+<span id="commSav8-277" class="commSav" >GF81 := FFCGP(GF3,f); </span>
+<div id="mathAns8-277" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Let's look at a random element from this field.
+</p>
+
+
+
+
+<div id="spadComm8-278" class="spadComm" >
+<form id="formComm8-278" action="javascript:makeRequest('8-278');" >
+<input id="comm8-278" type="text" class="command" style="width: 10em;" value="random()$GF81 " />
+</form>
+<span id="commSav8-278" class="commSav" >random()$GF81 </span>
+<div id="mathAns8-278" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><msup><mi>K</mi><mn>13</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+FiniteFieldCyclicGroupExtensionByPolynomial(PrimeField 3,?**4+?+2)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.11.5"/>
+<div class="subsection"  id="subsec-8.11.5">
+<h3 class="subsectitle">8.11.5  Normal Basis Representations</h3>
+
+
+<a name="ugxProblemFiniteNormal" class="label"/>
+
+<p><span class="index">finite field</span><a name="chapter-8-184"/>
+<span class="index">field:finite:extension of</span><a name="chapter-8-185"/>
+<span class="index">basis:normal</span><a name="chapter-8-186"/>
+<span class="index">normal basis</span><a name="chapter-8-187"/>
+</p>
+
+
+<p>Let  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> be a finite extension of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> of the finite field  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>F</mi></mstyle></math>
+and let  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>F</mi></mstyle></math> have  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>q</mi></mstyle></math> elements.  An element  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> is said to be
+<span class="italic">normal</span> over  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>F</mi></mstyle></math> if the elements
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>,</mo><msup><mi>x</mi><mi>q</mi></msup><mo>,</mo><msup><mi>x</mi><mrow><msup><mi>q</mi><mn>2</mn></msup></mrow></msup><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msup><mi>x</mi><mrow><msup><mi>q</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mrow></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+<p>form a basis of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> as a vector space over  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>F</mi></mstyle></math>.  Such a basis is
+called a <span class="italic">normal basis</span>.<span class="footnote">This agrees with the general
+definition of a normal basis because the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> distinct powers of the
+automorphism  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>&#x21a6;</mo><msup><mi>x</mi><mi>q</mi></msup></mrow></mstyle></math> constitute the Galois group of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>K</mi><mo>/</mo><mi>F</mi></mrow></mstyle></math>.</span>
+</p>
+
+
+<p>If  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is normal over  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>F</mi></mstyle></math>, its minimal <span class="index">polynomial:minimal</span><a name="chapter-8-188"/>
+polynomial is also said to be <span class="italic">normal</span> over  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>F</mi></mstyle></math>.  
+<span class="index">minimal polynomial</span><a name="chapter-8-189"/> 
+There exist normal bases for all finite extensions of arbitrary 
+finite fields.
+</p>
+
+
+<p>In <span class="teletype">FiniteFieldNormalBasis</span> (abbreviation <span class="teletype">FFNB</span>), the
+elements of the finite field are represented by coordinate vectors
+with respect to a normal basis.
+</p>
+
+
+<p>You provide a prime  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> and an extension degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-279" class="spadComm" >
+<form id="formComm8-279" action="javascript:makeRequest('8-279');" >
+<input id="comm8-279" type="text" class="command" style="width: 10em;" value="K := FFNB(3,8) " />
+</form>
+<span id="commSav8-279" class="commSav" >K := FFNB(3,8) </span>
+<div id="mathAns8-279" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>FiniteFieldNormalBasis</mi><mo>(</mo><mn>3</mn><mo>,</mo><mn>8</mn><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Axiom uses the prime field <span class="teletype">PrimeField(p)</span>, here <span class="teletype">PrimeField
+3</span>, and it chooses a normal polynomial of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>, here 8, over the
+ground field.  The remainder class of the indeterminate is used as the
+normal element.  The polynomial indeterminate is automatically chosen
+by Axiom and is typically something like  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>A</mi></mrow></mstyle></math> or  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>D</mi></mrow></mstyle></math>.  These
+(strange) variables are only for output display; there are several
+ways to construct elements of this field.  The output of the basis
+elements is something like  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><msup><mi>A</mi><mrow><msup><mi>q</mi><mi>i</mi></msup></mrow></msup><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm8-280" class="spadComm" >
+<form id="formComm8-280" action="javascript:makeRequest('8-280');" >
+<input id="comm8-280" type="text" class="command" style="width: 16em;" value="a := normalElement()$K " />
+</form>
+<span id="commSav8-280" class="commSav" >a := normalElement()$K </span>
+<div id="mathAns8-280" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><mi>I</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldNormalBasis(3,8)
+</div>
+
+
+
+<p>You can calculate in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> using  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-281" class="spadComm" >
+<form id="formComm8-281" action="javascript:makeRequest('8-281');" >
+<input id="comm8-281" type="text" class="command" style="width: 16em;" value="b  := a**12 - a**5 + a " />
+</form>
+<span id="commSav8-281" class="commSav" >b  := a**12 - a**5 + a </span>
+<div id="mathAns8-281" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>I</mi><mrow><msup><mi>q</mi><mn>7</mn></msup></mrow></msup></mrow></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>I</mi><mrow><msup><mi>q</mi><mn>5</mn></msup></mrow></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>I</mi><mi>q</mi></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldNormalBasis(3,8)
+</div>
+
+
+
+<p><span class="teletype">FiniteFieldNormalBasisExtension</span> (abbreviation <span class="teletype">FFNBX</span>) is
+similar to <span class="teletype">FiniteFieldNormalBasis</span> except that the groundfield
+for <span class="teletype">FiniteFieldNormalBasisExtension</span> is arbitrary and chosen by
+you.  In case you select the prime field as ground field, there is
+essentially no difference between the constructed two finite field
+extensions.
+</p>
+
+
+
+
+<div id="spadComm8-282" class="spadComm" >
+<form id="formComm8-282" action="javascript:makeRequest('8-282');" >
+<input id="comm8-282" type="text" class="command" style="width: 12em;" value="GF9 := FFNB(3,2); " />
+</form>
+<span id="commSav8-282" class="commSav" >GF9 := FFNB(3,2); </span>
+<div id="mathAns8-282" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-283" class="spadComm" >
+<form id="formComm8-283" action="javascript:makeRequest('8-283');" >
+<input id="comm8-283" type="text" class="command" style="width: 16em;" value="GF729 := FFNBX(GF9,3); " />
+</form>
+<span id="commSav8-283" class="commSav" >GF729 := FFNBX(GF9,3); </span>
+<div id="mathAns8-283" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-284" class="spadComm" >
+<form id="formComm8-284" action="javascript:makeRequest('8-284');" >
+<input id="comm8-284" type="text" class="command" style="width: 14em;" value="r := random()$GF729 " />
+</form>
+<span id="commSav8-284" class="commSav" >r := random()$GF729 </span>
+<div id="mathAns8-284" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo></mo><mo>%</mo><mi>K</mi><mo></mo><mrow><mo>%</mo><msup><mi>L</mi><mi>q</mi></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+FiniteFieldNormalBasisExtension(FiniteFieldNormalBasis(3,2),3)
+</div>
+
+
+
+
+
+<div id="spadComm8-285" class="spadComm" >
+<form id="formComm8-285" action="javascript:makeRequest('8-285');" >
+<input id="comm8-285" type="text" class="command" style="width: 16em;" value="r + r**3 + r**9 + r**27 " />
+</form>
+<span id="commSav8-285" class="commSav" >r + r**3 + r**9 + r**27 </span>
+<div id="mathAns8-285" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo></mo><mo>%</mo><mi>K</mi><mo></mo><mrow><mo>%</mo><msup><mi>L</mi><mrow><msup><mi>q</mi><mn>2</mn></msup></mrow></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>K</mi><mi>q</mi></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mo>%</mo><mi>K</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>%</mo><msup><mi>L</mi><mi>q</mi></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>K</mi><mi>q</mi></msup></mrow><mo></mo><mo>%</mo><mi>L</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+FiniteFieldNormalBasisExtension(FiniteFieldNormalBasis(3,2),3)
+</div>
+
+
+
+<p><span class="teletype">FiniteFieldNormalBasisExtensionByPolynomial</span> (abbreviation 
+<span class="teletype">FFNBP</span>) is similar to <span class="teletype">FiniteFieldNormalBasis</span> and 
+<span class="teletype">FiniteFieldNormalBasisExtension</span> but is more general.  For 
+<span class="teletype">FiniteFieldNormalBasisExtensionByPolynomial</span> you choose both the
+ground field and the irreducible polynomial used in the representation.  
+The degree of the extension is the degree of the polynomial.
+</p>
+
+
+
+
+<div id="spadComm8-286" class="spadComm" >
+<form id="formComm8-286" action="javascript:makeRequest('8-286');" >
+<input id="comm8-286" type="text" class="command" style="width: 14em;" value="GF3 := PrimeField 3; " />
+</form>
+<span id="commSav8-286" class="commSav" >GF3 := PrimeField 3; </span>
+<div id="mathAns8-286" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>We use a utility operation to generate an irreducible normal
+polynomial (see 
+<a href="section-8.11.xhtml#ugxProblemFiniteUtility" class="ref" >ugxProblemFiniteUtility</a> ).  
+The polynomial has
+one variable that is ``anonymous'': it displays as a question mark.
+</p>
+
+
+
+
+<div id="spadComm8-287" class="spadComm" >
+<form id="formComm8-287" action="javascript:makeRequest('8-287');" >
+<input id="comm8-287" type="text" class="command" style="width: 25em;" value="f := createNormalPoly(4)$FFPOLY(GF3) " />
+</form>
+<span id="commSav8-287" class="commSav" >f := createNormalPoly(4)$FFPOLY(GF3) </span>
+<div id="mathAns8-287" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 3
+</div>
+
+
+
+
+
+<div id="spadComm8-288" class="spadComm" >
+<form id="formComm8-288" action="javascript:makeRequest('8-288');" >
+<input id="comm8-288" type="text" class="command" style="width: 15em;" value="GF81 := FFNBP(GF3,f); " />
+</form>
+<span id="commSav8-288" class="commSav" >GF81 := FFNBP(GF3,f); </span>
+<div id="mathAns8-288" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Let's look at a random element from this field.
+</p>
+
+
+
+
+<div id="spadComm8-289" class="spadComm" >
+<form id="formComm8-289" action="javascript:makeRequest('8-289');" >
+<input id="comm8-289" type="text" class="command" style="width: 13em;" value="r := random()$GF81 " />
+</form>
+<span id="commSav8-289" class="commSav" >r := random()$GF81 </span>
+<div id="mathAns8-289" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><msup><mi>M</mi><mrow><msup><mi>q</mi><mn>2</mn></msup></mrow></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>M</mi><mi>q</mi></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mo>%</mo><mi>M</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+FiniteFieldNormalBasisExtensionByPolynomial(PrimeField 3,?**4+2*?**3+2)
+</div>
+
+
+
+
+
+<div id="spadComm8-290" class="spadComm" >
+<form id="formComm8-290" action="javascript:makeRequest('8-290');" >
+<input id="comm8-290" type="text" class="command" style="width: 16em;" value="r * r**3 * r**9 * r**27 " />
+</form>
+<span id="commSav8-290" class="commSav" >r * r**3 * r**9 * r**27 </span>
+<div id="mathAns8-290" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>M</mi><mrow><msup><mi>q</mi><mn>3</mn></msup></mrow></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>M</mi><mrow><msup><mi>q</mi><mn>2</mn></msup></mrow></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>M</mi><mi>q</mi></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mo>%</mo><mi>M</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+FiniteFieldNormalBasisExtensionByPolynomial(PrimeField 3,?**4+2*?**3+2)
+</div>
+
+
+
+
+
+<div id="spadComm8-291" class="spadComm" >
+<form id="formComm8-291" action="javascript:makeRequest('8-291');" >
+<input id="comm8-291" type="text" class="command" style="width: 5em;" value="norm r " />
+</form>
+<span id="commSav8-291" class="commSav" >norm r </span>
+<div id="mathAns8-291" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PrimeField 3
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.11.6"/>
+<div class="subsection"  id="subsec-8.11.6">
+<h3 class="subsectitle">8.11.6  Conversion Operations for Finite Fields</h3>
+
+
+<a name="ugxProblemFiniteConversion" class="label"/>
+
+<p><span class="index">field:finite:conversions</span><a name="chapter-8-190"/>
+</p>
+
+
+<p>Let  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> be a finite field.
+</p>
+
+
+
+
+<div id="spadComm8-292" class="spadComm" >
+<form id="formComm8-292" action="javascript:makeRequest('8-292');" >
+<input id="comm8-292" type="text" class="command" style="width: 12em;" value="K := PrimeField 3 " />
+</form>
+<span id="commSav8-292" class="commSav" >K := PrimeField 3 </span>
+<div id="mathAns8-292" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>PrimeField3</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>An extension field  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>m</mi></msub></mrow></mstyle></math> of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> over  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> is a subfield of an
+extension field  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>n</mi></msub></mrow></mstyle></math> of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> over  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> if and only if  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math>
+divides  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>.
+</p>
+
+
+
+
+<div class="center" style="text-align: center;">
+
+
+<p style="padding-left: 100px;">
+<table class="begintabular">
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>n</mi></msub></mrow></mstyle></math> </td><td> </td><td></td></tr>
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2758;</mo></mstyle></math> </td><td> </td><td></td></tr>
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>m</mi></msub></mrow></mstyle></math> </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&Longleftrightarrow;</mi></mstyle></math> </td><td>  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi><mo>&#x2223;</mo><mi>n</mi></mstyle></math> </td></tr>
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x2758;</mo></mstyle></math> </td><td> </td><td> </td></tr>
+<tr><td> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> </td><td> </td><td> </td></tr>
+</table>
+</p>
+
+
+
+</div>
+
+
+
+<p><span class="teletype">FiniteFieldHomomorphisms</span> provides conversion operations between
+different extensions of one fixed finite ground field and between
+different representations of these finite fields.
+</p>
+
+
+<p>Let's choose  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>,
+</p>
+
+
+
+
+<div id="spadComm8-293" class="spadComm" >
+<form id="formComm8-293" action="javascript:makeRequest('8-293');" >
+<input id="comm8-293" type="text" class="command" style="width: 10em;" value="(m,n) := (4,8) " />
+</form>
+<span id="commSav8-293" class="commSav" >(m,n) := (4,8) </span>
+<div id="mathAns8-293" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>build the field extensions,
+</p>
+
+
+
+
+<div id="spadComm8-294" class="spadComm" >
+<form id="formComm8-294" action="javascript:makeRequest('8-294');" >
+<input id="comm8-294" type="text" class="command" style="width: 22em;" value="Km := FiniteFieldExtension(K,m) " />
+</form>
+<span id="commSav8-294" class="commSav" >Km := FiniteFieldExtension(K,m) </span>
+<div id="mathAns8-294" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FiniteFieldExtension(PrimeField3,4)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>and pick two random elements from the smaller field.
+</p>
+
+
+
+
+<div id="spadComm8-295" class="spadComm" >
+<form id="formComm8-295" action="javascript:makeRequest('8-295');" >
+<input id="comm8-295" type="text" class="command" style="width: 22em;" value="Kn := FiniteFieldExtension(K,n) " />
+</form>
+<span id="commSav8-295" class="commSav" >Kn := FiniteFieldExtension(K,n) </span>
+<div id="mathAns8-295" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FiniteFieldExtension(PrimeField3,8)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-296" class="spadComm" >
+<form id="formComm8-296" action="javascript:makeRequest('8-296');" >
+<input id="comm8-296" type="text" class="command" style="width: 12em;" value="a1 := random()$Km " />
+</form>
+<span id="commSav8-296" class="commSav" >a1 := random()$Km </span>
+<div id="mathAns8-296" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldExtension(PrimeField 3,4)
+</div>
+
+
+
+
+
+<div id="spadComm8-297" class="spadComm" >
+<form id="formComm8-297" action="javascript:makeRequest('8-297');" >
+<input id="comm8-297" type="text" class="command" style="width: 12em;" value="b1 := random()$Km " />
+</form>
+<span id="commSav8-297" class="commSav" >b1 := random()$Km </span>
+<div id="mathAns8-297" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldExtension(PrimeField 3,4)
+</div>
+
+
+
+<p>Since  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> divides  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>m</mi></msub></mrow></mstyle></math> is a subfield of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>n</mi></msub></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-298" class="spadComm" >
+<form id="formComm8-298" action="javascript:makeRequest('8-298');" >
+<input id="comm8-298" type="text" class="command" style="width: 10em;" value="a2 := a1 :: Kn " />
+</form>
+<span id="commSav8-298" class="commSav" >a2 := a1 :: Kn </span>
+<div id="mathAns8-298" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><msup><mi>B</mi><mn>4</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldExtension(PrimeField 3,8)
+</div>
+
+
+
+<p>Therefore we can convert the elements of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>m</mi></msub></mrow></mstyle></math>
+into elements of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>n</mi></msub></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-299" class="spadComm" >
+<form id="formComm8-299" action="javascript:makeRequest('8-299');" >
+<input id="comm8-299" type="text" class="command" style="width: 10em;" value="b2 := b1 :: Kn " />
+</form>
+<span id="commSav8-299" class="commSav" >b2 := b1 :: Kn </span>
+<div id="mathAns8-299" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>B</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>B</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>B</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldExtension(PrimeField 3,8)
+</div>
+
+
+
+<p>To check this, let's do some arithmetic.
+</p>
+
+
+
+
+<div id="spadComm8-300" class="spadComm" >
+<form id="formComm8-300" action="javascript:makeRequest('8-300');" >
+<input id="comm8-300" type="text" class="command" style="width: 16em;" value="a1+b1 - ((a2+b2) :: Km) " />
+</form>
+<span id="commSav8-300" class="commSav" >a1+b1 - ((a2+b2) :: Km) </span>
+<div id="mathAns8-300" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldExtension(PrimeField 3,4)
+</div>
+
+
+
+
+
+<div id="spadComm8-301" class="spadComm" >
+<form id="formComm8-301" action="javascript:makeRequest('8-301');" >
+<input id="comm8-301" type="text" class="command" style="width: 16em;" value="a1*b1 - ((a2*b2) :: Km) " />
+</form>
+<span id="commSav8-301" class="commSav" >a1*b1 - ((a2*b2) :: Km) </span>
+<div id="mathAns8-301" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldExtension(PrimeField 3,4)
+</div>
+
+
+
+<p>There are also conversions available for the situation, when  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>m</mi></msub></mrow></mstyle></math> and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>n</mi></msub></mrow></mstyle></math> are represented in different ways (see
+<a href="section-8.11.xhtml#ugxProblemFiniteExtensionFinite" class="ref" >ugxProblemFiniteExtensionFinite</a> ).  For example let's choose
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>m</mi></msub></mrow></mstyle></math> where the representation is 0 plus the cyclic multiplicative
+group and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>K</mi><mi>n</mi></msub></mrow></mstyle></math> with a normal basis representation.
+</p>
+
+
+
+
+<div id="spadComm8-302" class="spadComm" >
+<form id="formComm8-302" action="javascript:makeRequest('8-302');" >
+<input id="comm8-302" type="text" class="command" style="width: 12em;" value="Km := FFCGX(K,m) " />
+</form>
+<span id="commSav8-302" class="commSav" >Km := FFCGX(K,m) </span>
+<div id="mathAns8-302" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FiniteFieldCyclicGroupExtension(PrimeField3,4)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-303" class="spadComm" >
+<form id="formComm8-303" action="javascript:makeRequest('8-303');" >
+<input id="comm8-303" type="text" class="command" style="width: 12em;" value="Kn := FFNBX(K,n) " />
+</form>
+<span id="commSav8-303" class="commSav" >Kn := FFNBX(K,n) </span>
+<div id="mathAns8-303" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FiniteFieldNormalBasisExtension(PrimeField3,8)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm8-304" class="spadComm" >
+<form id="formComm8-304" action="javascript:makeRequest('8-304');" >
+<input id="comm8-304" type="text" class="command" style="width: 25em;" value="(a1,b1) := (random()$Km,random()$Km) " />
+</form>
+<span id="commSav8-304" class="commSav" >(a1,b1) := (random()$Km,random()$Km) </span>
+<div id="mathAns8-304" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><msup><mi>C</mi><mn>13</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldCyclicGroupExtension(PrimeField 3,4)
+</div>
+
+
+
+
+
+<div id="spadComm8-305" class="spadComm" >
+<form id="formComm8-305" action="javascript:makeRequest('8-305');" >
+<input id="comm8-305" type="text" class="command" style="width: 10em;" value="a2 := a1 :: Kn " />
+</form>
+<span id="commSav8-305" class="commSav" >a2 := a1 :: Kn </span>
+<div id="mathAns8-305" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>D</mi><mrow><msup><mi>q</mi><mn>6</mn></msup></mrow></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>D</mi><mrow><msup><mi>q</mi><mn>5</mn></msup></mrow></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>D</mi><mrow><msup><mi>q</mi><mn>4</mn></msup></mrow></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>D</mi><mrow><msup><mi>q</mi><mn>2</mn></msup></mrow></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>D</mi><mi>q</mi></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mo>%</mo><mi>D</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldNormalBasisExtension(PrimeField 3,8)
+</div>
+
+
+
+
+
+<div id="spadComm8-306" class="spadComm" >
+<form id="formComm8-306" action="javascript:makeRequest('8-306');" >
+<input id="comm8-306" type="text" class="command" style="width: 10em;" value="b2 := b1 :: Kn " />
+</form>
+<span id="commSav8-306" class="commSav" >b2 := b1 :: Kn </span>
+<div id="mathAns8-306" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>D</mi><mrow><msup><mi>q</mi><mn>7</mn></msup></mrow></msup></mrow></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>D</mi><mrow><msup><mi>q</mi><mn>6</mn></msup></mrow></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>D</mi><mrow><msup><mi>q</mi><mn>5</mn></msup></mrow></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>D</mi><mrow><msup><mi>q</mi><mn>4</mn></msup></mrow></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>%</mo><msup><mi>D</mi><mrow><msup><mi>q</mi><mn>3</mn></msup></mrow></msup></mrow></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>D</mi><mrow><msup><mi>q</mi><mn>2</mn></msup></mrow></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>D</mi><mi>q</mi></msup></mrow><mo>+</mo><mo>%</mo><mi>D</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldNormalBasisExtension(PrimeField 3,8)
+</div>
+
+
+
+<p>Check the arithmetic again.
+</p>
+
+
+
+
+<div id="spadComm8-307" class="spadComm" >
+<form id="formComm8-307" action="javascript:makeRequest('8-307');" >
+<input id="comm8-307" type="text" class="command" style="width: 16em;" value="a1+b1 - ((a2+b2) :: Km) " />
+</form>
+<span id="commSav8-307" class="commSav" >a1+b1 - ((a2+b2) :: Km) </span>
+<div id="mathAns8-307" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldCyclicGroupExtension(PrimeField 3,4)
+</div>
+
+
+
+
+
+<div id="spadComm8-308" class="spadComm" >
+<form id="formComm8-308" action="javascript:makeRequest('8-308');" >
+<input id="comm8-308" type="text" class="command" style="width: 16em;" value="a1*b1 - ((a2*b2) :: Km) " />
+</form>
+<span id="commSav8-308" class="commSav" >a1*b1 - ((a2*b2) :: Km) </span>
+<div id="mathAns8-308" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldCyclicGroupExtension(PrimeField 3,4)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.11.7"/>
+<div class="subsection"  id="subsec-8.11.7">
+<h3 class="subsectitle">8.11.7  Utility Operations for Finite Fields</h3>
+
+
+<a name="ugxProblemFiniteUtility" class="label"/>
+
+
+<p><span class="teletype">FiniteFieldPolynomialPackage</span> (abbreviation <span class="teletype">FFPOLY</span>)
+provides operations for generating, counting and testing polynomials
+over finite fields. Let's start with a couple of definitions:
+</p>
+
+
+
+<ul>
+<li>
+ A polynomial is <span class="italic">primitive</span> if its roots are primitive
+<span class="index">polynomial:primitive</span><a name="chapter-8-191"/>
+elements in an extension of the coefficient field of degree equal
+to the degree of the polynomial.
+</li>
+<li> A polynomial is <span class="italic">normal</span> over its coefficient field
+<span class="index">polynomial:normal</span><a name="chapter-8-192"/>
+if its roots are linearly independent
+elements in an extension of the coefficient field of degree equal
+to the degree of the polynomial.
+</li>
+</ul>
+
+
+
+<p>In what follows, many of the generated polynomials have one
+``anonymous'' variable.  This indeterminate is displayed as a question
+mark (<span class="teletype">``?''</span>).
+</p>
+
+
+<p>To fix ideas, let's use the field with five elements for the first
+few examples.
+</p>
+
+
+
+
+<div id="spadComm8-309" class="spadComm" >
+<form id="formComm8-309" action="javascript:makeRequest('8-309');" >
+<input id="comm8-309" type="text" class="command" style="width: 9em;" value="GF5 := PF 5; " />
+</form>
+<span id="commSav8-309" class="commSav" >GF5 := PF 5; </span>
+<div id="mathAns8-309" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>You can generate irreducible polynomials of any (positive) degree
+<span class="index">polynomial:irreducible</span><a name="chapter-8-193"/> (within the storage capabilities of the
+computer and your ability to wait) by using
+<span class="spadfunFrom" >createIrreduciblePoly</span><span class="index">createIrreduciblePoly</span><a name="chapter-8-194"/><span class="index">FiniteFieldPolynomialPackage</span><a name="chapter-8-195"/>.
+</p>
+
+
+
+
+<div id="spadComm8-310" class="spadComm" >
+<form id="formComm8-310" action="javascript:makeRequest('8-310');" >
+<input id="comm8-310" type="text" class="command" style="width: 28em;" value="f := createIrreduciblePoly(8)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-310" class="commSav" >f := createIrreduciblePoly(8)$FFPOLY(GF5) </span>
+<div id="mathAns8-310" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 5
+</div>
+
+
+
+<p>Does this polynomial have other important properties? Use
+<span style="font-weight: bold;"> primitive?</span> to test whether it is a primitive polynomial.
+</p>
+
+
+
+
+<div id="spadComm8-311" class="spadComm" >
+<form id="formComm8-311" action="javascript:makeRequest('8-311');" >
+<input id="comm8-311" type="text" class="command" style="width: 18em;" value="primitive?(f)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-311" class="commSav" >primitive?(f)$FFPOLY(GF5) </span>
+<div id="mathAns8-311" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Use <span style="font-weight: bold;"> normal?</span> to test whether it is a normal polynomial.
+</p>
+
+
+
+
+<div id="spadComm8-312" class="spadComm" >
+<form id="formComm8-312" action="javascript:makeRequest('8-312');" >
+<input id="comm8-312" type="text" class="command" style="width: 16em;" value="normal?(f)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-312" class="commSav" >normal?(f)$FFPOLY(GF5) </span>
+<div id="mathAns8-312" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+<p>Note that this is actually a trivial case, because a normal polynomial
+of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> must have a nonzero term of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math>.  We will refer
+back to this later.
+</p>
+
+
+<p>To get a primitive polynomial of degree 8 just issue this.
+</p>
+
+
+
+
+<div id="spadComm8-313" class="spadComm" >
+<form id="formComm8-313" action="javascript:makeRequest('8-313');" >
+<input id="comm8-313" type="text" class="command" style="width: 27em;" value="p := createPrimitivePoly(8)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-313" class="commSav" >p := createPrimitivePoly(8)$FFPOLY(GF5) </span>
+<div id="mathAns8-313" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mo>?</mo><mo>+</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 5
+</div>
+
+
+
+
+
+<div id="spadComm8-314" class="spadComm" >
+<form id="formComm8-314" action="javascript:makeRequest('8-314');" >
+<input id="comm8-314" type="text" class="command" style="width: 18em;" value="primitive?(p)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-314" class="commSav" >primitive?(p)$FFPOLY(GF5) </span>
+<div id="mathAns8-314" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>This polynomial is not normal,
+</p>
+
+
+
+
+<div id="spadComm8-315" class="spadComm" >
+<form id="formComm8-315" action="javascript:makeRequest('8-315');" >
+<input id="comm8-315" type="text" class="command" style="width: 16em;" value="normal?(p)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-315" class="commSav" >normal?(p)$FFPOLY(GF5) </span>
+<div id="mathAns8-315" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>but if you want a normal one simply write this.
+</p>
+
+
+
+
+<div id="spadComm8-316" class="spadComm" >
+<form id="formComm8-316" action="javascript:makeRequest('8-316');" >
+<input id="comm8-316" type="text" class="command" style="width: 26em;" value="n := createNormalPoly(8)$FFPOLY(GF5)  " />
+</form>
+<span id="commSav8-316" class="commSav" >n := createNormalPoly(8)$FFPOLY(GF5)  </span>
+<div id="mathAns8-316" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 5
+</div>
+
+
+
+<p>This polynomial is not primitive!
+</p>
+
+
+
+
+<div id="spadComm8-317" class="spadComm" >
+<form id="formComm8-317" action="javascript:makeRequest('8-317');" >
+<input id="comm8-317" type="text" class="command" style="width: 18em;" value="primitive?(n)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-317" class="commSav" >primitive?(n)$FFPOLY(GF5) </span>
+<div id="mathAns8-317" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>This could have been seen directly, as the constant term is 1 here,
+which is not a primitive element up to the factor ( <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>) raised to the
+degree of the polynomial.<span class="footnote">Cf. Lidl, R. &amp; Niederreiter, H.,
+<span class="italic">Finite Fields,</span> Encycl. of Math. 20, (Addison-Wesley, 1983),
+p.90, Th. 3.18.</span>
+</p>
+
+
+<p>What about polynomials that are both primitive and normal?  The
+existence of such a polynomial is by no means obvious.
+<span class="footnote">The existence of such polynomials is proved in
+Lenstra, H. W. &amp; Schoof, R. J., <span class="italic">Primitive
+Normal Bases for Finite Fields,</span> Math. Comp. 48, 1987, pp. 217-231.</span>
+</p>
+
+
+
+<p>If you really need one use either
+<span class="spadfunFrom" >createPrimitiveNormalPoly</span><span class="index">createPrimitiveNormalPoly</span><a name="chapter-8-196"/><span class="index">FiniteFieldPolynomialPackage</span><a name="chapter-8-197"/> or
+<span class="spadfunFrom" >createNormalPrimitivePoly</span><span class="index">createNormalPrimitivePoly</span><a name="chapter-8-198"/><span class="index">FiniteFieldPolynomialPackage</span><a name="chapter-8-199"/>.
+</p>
+
+
+
+
+<div id="spadComm8-318" class="spadComm" >
+<form id="formComm8-318" action="javascript:makeRequest('8-318');" >
+<input id="comm8-318" type="text" class="command" style="width: 28em;" value="createPrimitiveNormalPoly(8)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-318" class="commSav" >createPrimitiveNormalPoly(8)$FFPOLY(GF5) </span>
+<div id="mathAns8-318" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 5
+</div>
+
+
+
+<p>If you want to obtain additional polynomials of the various types
+above as given by the <span style="font-weight: bold;"> create...</span> operations above, you can use
+the <span style="font-weight: bold;"> next...</span> operations.  For instance,
+<span class="spadfunFrom" >nextIrreduciblePoly</span><span class="index">nextIrreduciblePoly</span><a name="chapter-8-200"/><span class="index">FiniteFieldPolynomialPackage</span><a name="chapter-8-201"/> yields
+the next monic irreducible polynomial with the same degree as the
+input polynomial.  By ``next'' we mean ``next in a natural order using
+the terms and coefficients.''  This will become more clear in the
+following examples.
+</p>
+
+
+<p>This is the field with five elements.
+</p>
+
+
+
+
+<div id="spadComm8-319" class="spadComm" >
+<form id="formComm8-319" action="javascript:makeRequest('8-319');" >
+<input id="comm8-319" type="text" class="command" style="width: 9em;" value="GF5 := PF 5; " />
+</form>
+<span id="commSav8-319" class="commSav" >GF5 := PF 5; </span>
+<div id="mathAns8-319" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Our first example irreducible polynomial, say of degree 3, must be
+``greater'' than this.
+</p>
+
+
+
+
+<div id="spadComm8-320" class="spadComm" >
+<form id="formComm8-320" action="javascript:makeRequest('8-320');" >
+<input id="comm8-320" type="text" class="command" style="width: 19em;" value="h := monomial(1,8)$SUP(GF5) " />
+</form>
+<span id="commSav8-320" class="commSav" >h := monomial(1,8)$SUP(GF5) </span>
+<div id="mathAns8-320" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 5
+</div>
+
+
+
+<p>You can generate it by doing this.
+</p>
+
+
+
+
+<div id="spadComm8-321" class="spadComm" >
+<form id="formComm8-321" action="javascript:makeRequest('8-321');" >
+<input id="comm8-321" type="text" class="command" style="width: 28em;" value="nh := nextIrreduciblePoly(h)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-321" class="commSav" >nh := nextIrreduciblePoly(h)$FFPOLY(GF5) </span>
+<div id="mathAns8-321" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+</div>
+
+
+
+<p>Notice that this polynomial is not the same as the one
+<span class="spadfunFrom" >createIrreduciblePoly</span><span class="index">createIrreduciblePoly</span><a name="chapter-8-202"/><span class="index">FiniteFieldPolynomialPackage</span><a name="chapter-8-203"/>.
+</p>
+
+
+
+
+<div id="spadComm8-322" class="spadComm" >
+<form id="formComm8-322" action="javascript:makeRequest('8-322');" >
+<input id="comm8-322" type="text" class="command" style="width: 25em;" value="createIrreduciblePoly(3)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-322" class="commSav" >createIrreduciblePoly(3)$FFPOLY(GF5) </span>
+<div id="mathAns8-322" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mo>?</mo><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 5
+</div>
+
+
+
+<p>You can step through all irreducible polynomials of degree 8 over
+the field with 5 elements by repeatedly issuing this.
+</p>
+
+
+
+
+<div id="spadComm8-323" class="spadComm" >
+<form id="formComm8-323" action="javascript:makeRequest('8-323');" >
+<input id="comm8-323" type="text" class="command" style="width: 28em;" value="nh := nextIrreduciblePoly(nh)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-323" class="commSav" >nh := nextIrreduciblePoly(nh)$FFPOLY(GF5) </span>
+<div id="mathAns8-323" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+</div>
+
+
+
+<p>You could also ask for the total number of these.
+</p>
+
+
+
+
+<div id="spadComm8-324" class="spadComm" >
+<form id="formComm8-324" action="javascript:makeRequest('8-324');" >
+<input id="comm8-324" type="text" class="command" style="width: 26em;" value="numberOfIrreduciblePoly(5)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-324" class="commSav" >numberOfIrreduciblePoly(5)$FFPOLY(GF5) </span>
+<div id="mathAns8-324" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>624</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>We hope that ``natural order'' on polynomials is now clear: first we
+compare the number of monomials of two polynomials (``more'' is
+``greater''); then, if necessary, the degrees of these monomials
+(lexicographically), and lastly their coefficients (also
+lexicographically, and using the operation <span style="font-weight: bold;"> lookup</span> if our field
+is not a prime field).  Also note that we make both polynomials monic
+before looking at the coefficients: multiplying either polynomial by a
+nonzero constant produces the same result.
+</p>
+
+
+<p>The package <span class="teletype">FiniteFieldPolynomialPackage</span> also provides similar
+operations for primitive and normal polynomials. With the exception of
+the number of primitive normal polynomials; we're not aware of any
+known formula for this.
+</p>
+
+
+
+
+<div id="spadComm8-325" class="spadComm" >
+<form id="formComm8-325" action="javascript:makeRequest('8-325');" >
+<input id="comm8-325" type="text" class="command" style="width: 25em;" value="numberOfPrimitivePoly(3)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-325" class="commSav" >numberOfPrimitivePoly(3)$FFPOLY(GF5) </span>
+<div id="mathAns8-325" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>20</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Take these,
+</p>
+
+
+
+
+<div id="spadComm8-326" class="spadComm" >
+<form id="formComm8-326" action="javascript:makeRequest('8-326');" >
+<input id="comm8-326" type="text" class="command" style="width: 19em;" value="m := monomial(1,1)$SUP(GF5) " />
+</form>
+<span id="commSav8-326" class="commSav" >m := monomial(1,1)$SUP(GF5) </span>
+<div id="mathAns8-326" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>?</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 5
+</div>
+
+
+
+
+
+<div id="spadComm8-327" class="spadComm" >
+<form id="formComm8-327" action="javascript:makeRequest('8-327');" >
+<input id="comm8-327" type="text" class="command" style="width: 18em;" value="f := m**3 + 4*m**2 + m + 2 " />
+</form>
+<span id="commSav8-327" class="commSav" >f := m**3 + 4*m**2 + m + 2 </span>
+<div id="mathAns8-327" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo>?</mo><mo>+</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 5
+</div>
+
+
+
+<p>and then we have:
+</p>
+
+
+
+
+<div id="spadComm8-328" class="spadComm" >
+<form id="formComm8-328" action="javascript:makeRequest('8-328');" >
+<input id="comm8-328" type="text" class="command" style="width: 26em;" value="f1 := nextPrimitivePoly(f)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-328" class="commSav" >f1 := nextPrimitivePoly(f)$FFPOLY(GF5) </span>
+<div id="mathAns8-328" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+</div>
+
+
+
+<p>What happened?
+</p>
+
+
+
+
+<div id="spadComm8-329" class="spadComm" >
+<form id="formComm8-329" action="javascript:makeRequest('8-329');" >
+<input id="comm8-329" type="text" class="command" style="width: 23em;" value="nextPrimitivePoly(f1)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-329" class="commSav" >nextPrimitivePoly(f1)$FFPOLY(GF5) </span>
+<div id="mathAns8-329" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+</div>
+
+
+
+<p>Well, for the ordering used in
+<span class="spadfunFrom" >nextPrimitivePoly</span><span class="index">nextPrimitivePoly</span><a name="chapter-8-204"/><span class="index">FiniteFieldPolynomialPackage</span><a name="chapter-8-205"/> we use
+as first criterion a comparison of the constant terms of the
+polynomials.  Analogously, in
+<span class="spadfunFrom" >nextNormalPoly</span><span class="index">nextNormalPoly</span><a name="chapter-8-206"/><span class="index">FiniteFieldPolynomialPackage</span><a name="chapter-8-207"/> we first
+compare the monomials of degree 1 less than the degree of the
+polynomials (which is nonzero, by an earlier remark).
+</p>
+
+
+
+
+<div id="spadComm8-330" class="spadComm" >
+<form id="formComm8-330" action="javascript:makeRequest('8-330');" >
+<input id="comm8-330" type="text" class="command" style="width: 19em;" value="f := m**3 + m**2 + 4*m + 1  " />
+</form>
+<span id="commSav8-330" class="commSav" >f := m**3 + m**2 + 4*m + 1  </span>
+<div id="mathAns8-330" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 5
+</div>
+
+
+
+
+
+<div id="spadComm8-331" class="spadComm" >
+<form id="formComm8-331" action="javascript:makeRequest('8-331');" >
+<input id="comm8-331" type="text" class="command" style="width: 24em;" value="f1 := nextNormalPoly(f)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-331" class="commSav" >f1 := nextNormalPoly(f)$FFPOLY(GF5) </span>
+<div id="mathAns8-331" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+</div>
+
+
+
+
+
+<div id="spadComm8-332" class="spadComm" >
+<form id="formComm8-332" action="javascript:makeRequest('8-332');" >
+<input id="comm8-332" type="text" class="command" style="width: 21em;" value="nextNormalPoly(f1)$FFPOLY(GF5) " />
+</form>
+<span id="commSav8-332" class="commSav" >nextNormalPoly(f1)$FFPOLY(GF5) </span>
+<div id="mathAns8-332" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+</div>
+
+
+
+
+<p>We don't have to restrict ourselves to prime fields.
+</p>
+
+
+<p>Let's consider, say, a field with 16 elements.
+</p>
+
+
+
+
+<div id="spadComm8-333" class="spadComm" >
+<form id="formComm8-333" action="javascript:makeRequest('8-333');" >
+<input id="comm8-333" type="text" class="command" style="width: 20em;" value="GF16 := FFX(FFX(PF 2,2),2);  " />
+</form>
+<span id="commSav8-333" class="commSav" >GF16 := FFX(FFX(PF 2,2),2);  </span>
+<div id="mathAns8-333" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>We can apply any of the operations described above.
+</p>
+
+
+
+
+<div id="spadComm8-334" class="spadComm" >
+<form id="formComm8-334" action="javascript:makeRequest('8-334');" >
+<input id="comm8-334" type="text" class="command" style="width: 26em;" value="createIrreduciblePoly(5)$FFPOLY(GF16) " />
+</form>
+<span id="commSav8-334" class="commSav" >createIrreduciblePoly(5)$FFPOLY(GF16) </span>
+<div id="mathAns8-334" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>G</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial 
+FiniteFieldExtension(FiniteFieldExtension(PrimeField 2,2),2)
+</div>
+
+
+
+<p>Axiom also provides operations for producing random polynomials of a
+given degree
+</p>
+
+
+
+
+<div id="spadComm8-335" class="spadComm" >
+<form id="formComm8-335" action="javascript:makeRequest('8-335');" >
+<input id="comm8-335" type="text" class="command" style="width: 16em;" value="random(5)$FFPOLY(GF16) " />
+</form>
+<span id="commSav8-335" class="commSav" >random(5)$FFPOLY(GF16) </span>
+<div id="mathAns8-335" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mo>%</mo><mi>F</mi><mspace width="0.5 em" /><mo>%</mo><mi>G</mi></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mo>%</mo><mi>F</mi><mspace width="0.5 em" /><mo>%</mo><mi>G</mi><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>%</mo><mi>G</mi><mo>+</mo><mo>%</mo><mi>F</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mo>%</mo><mi>F</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mo>%</mo><mi>G</mi></mrow><mo>+</mo><mo>%</mo><mi>F</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>1</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial 
+FiniteFieldExtension(FiniteFieldExtension(PrimeField 2,2),2)
+</div>
+
+
+
+<p>or with degree between two given bounds.
+</p>
+
+
+
+
+<div id="spadComm8-336" class="spadComm" >
+<form id="formComm8-336" action="javascript:makeRequest('8-336');" >
+<input id="comm8-336" type="text" class="command" style="width: 17em;" value="random(3,9)$FFPOLY(GF16) " />
+</form>
+<span id="commSav8-336" class="commSav" >random(3,9)$FFPOLY(GF16) </span>
+<div id="mathAns8-336" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mo>%</mo><mi>F</mi><mspace width="0.5 em" /><mo>%</mo><mi>G</mi></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>%</mo><mi>G</mi><mo>+</mo><mo>%</mo><mi>F</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial 
+FiniteFieldExtension(FiniteFieldExtension(PrimeField 2,2),2)
+</div>
+
+
+
+<p><span class="teletype">FiniteFieldPolynomialPackage2</span> (abbreviation <span class="teletype">FFPOLY2</span>)
+exports an operation <span style="font-weight: bold;"> rootOfIrreduciblePoly</span> for finding one root
+of an irreducible polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> <span class="index">polynomial:root of</span><a name="chapter-8-208"/> in an
+extension field of the coefficient field.  The degree of the extension
+has to be a multiple of the degree of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.  It is not checked whether
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> actually is irreducible.
+</p>
+
+
+<p>To illustrate this operation, we fix a ground field  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>GF</mi></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm8-337" class="spadComm" >
+<form id="formComm8-337" action="javascript:makeRequest('8-337');" >
+<input id="comm8-337" type="text" class="command" style="width: 14em;" value="GF2 := PrimeField 2; " />
+</form>
+<span id="commSav8-337" class="commSav" >GF2 := PrimeField 2; </span>
+<div id="mathAns8-337" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>and then an extension field.
+</p>
+
+
+
+
+<div id="spadComm8-338" class="spadComm" >
+<form id="formComm8-338" action="javascript:makeRequest('8-338');" >
+<input id="comm8-338" type="text" class="command" style="width: 12em;" value="F := FFX(GF2,12) " />
+</form>
+<span id="commSav8-338" class="commSav" >F := FFX(GF2,12) </span>
+<div id="mathAns8-338" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FiniteFieldExtension(PrimeField2,12)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>We construct an irreducible polynomial over  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>GF2</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-339" class="spadComm" >
+<form id="formComm8-339" action="javascript:makeRequest('8-339');" >
+<input id="comm8-339" type="text" class="command" style="width: 28em;" value="f := createIrreduciblePoly(6)$FFPOLY(GF2) " />
+</form>
+<span id="commSav8-339" class="commSav" >f := createIrreduciblePoly(6)$FFPOLY(GF2) </span>
+<div id="mathAns8-339" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow><mo>+</mo><mo>?</mo><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial PrimeField 2
+</div>
+
+
+
+<p>We compute a root of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-340" class="spadComm" >
+<form id="formComm8-340" action="javascript:makeRequest('8-340');" >
+<input id="comm8-340" type="text" class="command" style="width: 32em;" value="root := rootOfIrreduciblePoly(f)$FFPOLY2(F,GF2) " />
+</form>
+<span id="commSav8-340" class="commSav" >root := rootOfIrreduciblePoly(f)$FFPOLY2(F,GF2) </span>
+<div id="mathAns8-340" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><msup><mi>H</mi><mn>11</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>H</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>H</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>H</mi><mn>5</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>H</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FiniteFieldExtension(PrimeField 2,12)
+</div>
+
+
+
+<p>and check the result
+</p>
+
+
+
+<div id="spadComm8-341" class="spadComm" >
+<form id="formComm8-341" action="javascript:makeRequest('8-341');" >
+<input id="comm8-341" type="text" class="command" style="width: 25em;" value="eval(f, monomial(1,1)$SUP(F) = root) " />
+</form>
+<span id="commSav8-341" class="commSav" >eval(f, monomial(1,1)$SUP(F) = root) </span>
+<div id="mathAns8-341" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseUnivariatePolynomial 
+FiniteFieldExtension(PrimeField 2,12)
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.10.xhtml" style="margin-right: 10px;">Previous Section 8.10 Solution of Differential Equations</a><a href="section-8.12.xhtml" style="margin-right: 10px;">Next Section 8.12 Primary Decomposition of Ideals</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.12.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.12.xhtml
new file mode 100644
index 0000000..075af0c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.12.xhtml
@@ -0,0 +1,573 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.11.xhtml" style="margin-right: 10px;">Previous Section 8.11 Finite Fields</a><a href="section-8.13.xhtml" style="margin-right: 10px;">Next Section 8.13 Computation of Galois Groups</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.12">
+<h2 class="sectiontitle">8.12  Primary Decomposition of Ideals</h2>
+
+
+<a name="ugProblemIdeal" class="label"/>
+
+
+<p>Axiom provides a facility for the primary decomposition
+<span class="index">ideal:primary decomposition</span><a name="chapter-8-209"/> of <span class="index">primary decomposition of
+ideal</span><a name="chapter-8-210"/> polynomial ideals over fields of characteristic zero.  The
+algorithm
+is discussed in \cite{gtz:gbpdpi} and
+works in essentially two steps:
+</p>
+
+
+
+<ol>
+<li>
+ the problem is solved for 0-dimensional ideals by ``generic''
+projection on the last coordinate
+</li>
+<li> a ``reduction process'' uses localization and ideal quotients
+to reduce the general case to the 0-dimensional one.
+</li>
+</ol>
+
+
+<p>The Axiom constructor <span class="teletype">PolynomialIdeals</span> represents ideals with
+coefficients in any field and supports the basic ideal operations,
+including intersection, sum and quotient.  <span class="teletype">IdealDecompositionPackage</span> 
+contains the specific operations for the
+primary decomposition and the computation of the radical of an ideal
+with polynomial coefficients in a field of characteristic 0 with an
+effective algorithm for factoring polynomials.
+</p>
+
+
+<p>The following examples illustrate the capabilities of this facility.
+</p>
+
+
+<p>First consider the ideal generated by
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+(which defines a circle in the  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>-plane) and the ideal
+generated by  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>-</mo><msup><mi>y</mi><mn>2</mn></msup></mrow></mstyle></math> (corresponding to the
+straight lines  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>y</mi></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mi>y</mi></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-342" class="spadComm" >
+<form id="formComm8-342" action="javascript:makeRequest('8-342');" >
+<input id="comm8-342" type="text" class="command" style="width: 22em;" value="(n,m) : List DMP([x,y],FRAC INT) " />
+</form>
+<span id="commSav8-342" class="commSav" >(n,m) : List DMP([x,y],FRAC INT) </span>
+<div id="mathAns8-342" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm8-343" class="spadComm" >
+<form id="formComm8-343" action="javascript:makeRequest('8-343');" >
+<input id="comm8-343" type="text" class="command" style="width: 14em;" value="m := [x**2+y**2-1]  " />
+</form>
+<span id="commSav8-343" class="commSav" >m := [x**2+y**2-1]  </span>
+<div id="mathAns8-343" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List 
+DistributedMultivariatePolynomial([x,y],Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm8-344" class="spadComm" >
+<form id="formComm8-344" action="javascript:makeRequest('8-344');" >
+<input id="comm8-344" type="text" class="command" style="width: 12em;" value="n := [x**2-y**2]  " />
+</form>
+<span id="commSav8-344" class="commSav" >n := [x**2-y**2]  </span>
+<div id="mathAns8-344" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List 
+DistributedMultivariatePolynomial([x,y],Fraction Integer)
+</div>
+
+
+
+<p>We find the equations defining the intersection of the two loci.
+This correspond to the sum of the associated ideals.
+</p>
+
+
+
+
+<div id="spadComm8-345" class="spadComm" >
+<form id="formComm8-345" action="javascript:makeRequest('8-345');" >
+<input id="comm8-345" type="text" class="command" style="width: 18em;" value="id := ideal m  + ideal n  " />
+</form>
+<span id="commSav8-345" class="commSav" >id := ideal m  + ideal n  </span>
+<div id="mathAns8-345" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow><mo>,</mo><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PolynomialIdeals(Fraction Integer,
+DirectProduct(2,NonNegativeInteger),OrderedVariableList [x,y],
+DistributedMultivariatePolynomial([x,y],Fraction Integer))
+</div>
+
+
+
+<p>We can check if the locus contains only a finite number of points,
+that is, if the ideal is zero-dimensional.
+</p>
+
+
+
+
+<div id="spadComm8-346" class="spadComm" >
+<form id="formComm8-346" action="javascript:makeRequest('8-346');" >
+<input id="comm8-346" type="text" class="command" style="width: 8em;" value="zeroDim? id " />
+</form>
+<span id="commSav8-346" class="commSav" >zeroDim? id </span>
+<div id="mathAns8-346" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm8-347" class="spadComm" >
+<form id="formComm8-347" action="javascript:makeRequest('8-347');" >
+<input id="comm8-347" type="text" class="command" style="width: 12em;" value="zeroDim?(ideal m) " />
+</form>
+<span id="commSav8-347" class="commSav" >zeroDim?(ideal m) </span>
+<div id="mathAns8-347" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm8-348" class="spadComm" >
+<form id="formComm8-348" action="javascript:makeRequest('8-348');" >
+<input id="comm8-348" type="text" class="command" style="width: 12em;" value="dimension ideal m " />
+</form>
+<span id="commSav8-348" class="commSav" >dimension ideal m </span>
+<div id="mathAns8-348" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>We can find polynomial relations among the generators ( <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> are
+the parametric equations of the knot).
+</p>
+
+
+
+
+<div id="spadComm8-349" class="spadComm" >
+<form id="formComm8-349" action="javascript:makeRequest('8-349');" >
+<input id="comm8-349" type="text" class="command" style="width: 18em;" value="(f,g):DMP([x,y],FRAC INT) " />
+</form>
+<span id="commSav8-349" class="commSav" >(f,g):DMP([x,y],FRAC INT) </span>
+<div id="mathAns8-349" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm8-350" class="spadComm" >
+<form id="formComm8-350" action="javascript:makeRequest('8-350');" >
+<input id="comm8-350" type="text" class="command" style="width: 9em;" value="f := x**2-1  " />
+</form>
+<span id="commSav8-350" class="commSav" >f := x**2-1  </span>
+<div id="mathAns8-350" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DistributedMultivariatePolynomial([x,y],Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm8-351" class="spadComm" >
+<form id="formComm8-351" action="javascript:makeRequest('8-351');" >
+<input id="comm8-351" type="text" class="command" style="width: 12em;" value="g := x*(x**2-1)  " />
+</form>
+<span id="commSav8-351" class="commSav" >g := x*(x**2-1)  </span>
+<div id="mathAns8-351" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>-</mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DistributedMultivariatePolynomial([x,y],Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm8-352" class="spadComm" >
+<form id="formComm8-352" action="javascript:makeRequest('8-352');" >
+<input id="comm8-352" type="text" class="command" style="width: 14em;" value="relationsIdeal [f,g] " />
+</form>
+<span id="commSav8-352" class="commSav" >relationsIdeal [f,g] </span>
+<div id="mathAns8-352" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>B</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>]</mo></mrow><mo>&#x007c;</mo><mrow><mo>[</mo><mrow><mo>%</mo><mi>A</mi><mo>=</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mo>=</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>-</mo><mi>x</mi></mrow></mrow><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SuchThat(List Polynomial Fraction Integer,
+List Equation Polynomial Fraction Integer)
+</div>
+
+
+
+<p>We can compute the primary decomposition of an ideal.
+</p>
+
+
+
+
+<div id="spadComm8-353" class="spadComm" >
+<form id="formComm8-353" action="javascript:makeRequest('8-353');" >
+<input id="comm8-353" type="text" class="command" style="width: 20em;" value="l: List DMP([x,y,z],FRAC INT) " />
+</form>
+<span id="commSav8-353" class="commSav" >l: List DMP([x,y,z],FRAC INT) </span>
+<div id="mathAns8-353" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm8-354" class="spadComm" >
+<form id="formComm8-354" action="javascript:makeRequest('8-354');" >
+<input id="comm8-354" type="text" class="command" style="width: 24em;" value="l:=[x**2+2*y**2,x*z**2-y*z,z**2-4]  " />
+</form>
+<span id="commSav8-354" class="commSav" >l:=[x**2+2*y**2,x*z**2-y*z,z**2-4]  </span>
+<div id="mathAns8-354" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow></mrow><mo>,</mo><mrow><mrow><mi>x</mi><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mi>y</mi><mo></mo><mi>z</mi></mrow></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>4</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List 
+DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm8-355" class="spadComm" >
+<form id="formComm8-355" action="javascript:makeRequest('8-355');" >
+<input id="comm8-355" type="text" class="command" style="width: 18em;" value="ld:=primaryDecomp ideal l  " />
+</form>
+<span id="commSav8-355" class="commSav" >ld:=primaryDecomp ideal l  </span>
+<div id="mathAns8-355" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mi>y</mi></mrow></mrow><mo>,</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>,</mo><mrow><mi>z</mi><mo>+</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mi>y</mi></mrow></mrow><mo>,</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PolynomialIdeals(Fraction Integer,
+DirectProduct(3,NonNegativeInteger),
+OrderedVariableList [x,y,z],
+DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
+</div>
+
+
+
+<p>We can intersect back.
+</p>
+
+
+
+
+<div id="spadComm8-356" class="spadComm" >
+<form id="formComm8-356" action="javascript:makeRequest('8-356');" >
+<input id="comm8-356" type="text" class="command" style="width: 14em;" value="reduce(intersect,ld) " />
+</form>
+<span id="commSav8-356" class="commSav" >reduce(intersect,ld) </span>
+<div id="mathAns8-356" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mo></mo><mi>y</mi><mo></mo><mi>z</mi></mrow></mrow><mo>,</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>4</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PolynomialIdeals(Fraction Integer,
+DirectProduct(3,NonNegativeInteger),
+OrderedVariableList [x,y,z],
+DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
+</div>
+
+
+
+<p>We can compute the radical of every primary component.
+</p>
+
+
+
+
+<div id="spadComm8-357" class="spadComm" >
+<form id="formComm8-357" action="javascript:makeRequest('8-357');" >
+<input id="comm8-357" type="text" class="command" style="width: 32em;" value="reduce(intersect,[radical ld.i for i in 1..2]) " />
+</form>
+<span id="commSav8-357" class="commSav" >reduce(intersect,[radical ld.i for i in 1..2]) </span>
+<div id="mathAns8-357" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>4</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PolynomialIdeals(Fraction Integer,
+DirectProduct(3,NonNegativeInteger),
+OrderedVariableList [x,y,z],
+DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
+</div>
+
+
+
+<p>Their intersection is equal to the radical of the ideal of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>l</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-358" class="spadComm" >
+<form id="formComm8-358" action="javascript:makeRequest('8-358');" >
+<input id="comm8-358" type="text" class="command" style="width: 11em;" value="radical ideal l " />
+</form>
+<span id="commSav8-358" class="commSav" >radical ideal l </span>
+<div id="mathAns8-358" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>4</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PolynomialIdeals(Fraction Integer,
+DirectProduct(3,NonNegativeInteger),
+OrderedVariableList [x,y,z],
+DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.11.xhtml" style="margin-right: 10px;">Previous Section 8.11 Finite Fields</a><a href="section-8.13.xhtml" style="margin-right: 10px;">Next Section 8.13 Computation of Galois Groups</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.13.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.13.xhtml
new file mode 100644
index 0000000..817a7f3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.13.xhtml
@@ -0,0 +1,1072 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.13</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.12.xhtml" style="margin-right: 10px;">Previous Section 8.12 Primary Decomposition of Ideals</a><a href="section-8.14.xhtml" style="margin-right: 10px;">Next Section 8.14 Non-Associative Algebras and Modelling Genetic Laws</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.13">
+<h2 class="sectiontitle">8.13  Computation of Galois Groups</h2>
+
+
+<a name="ugProblemGalois" class="label"/>
+
+
+<p>As a sample use of Axiom's algebraic number facilities,
+<span class="index">group:Galois</span><a name="chapter-8-211"/>
+we compute
+<span class="index">Galois:group</span><a name="chapter-8-212"/>
+the Galois group of the polynomial
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>=</mo><msup><mi>x</mi><mn>5</mn></msup><mo>-</mo><mn>5</mn><mi>x</mi><mo>+</mo><mn>12</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-359" class="spadComm" >
+<form id="formComm8-359" action="javascript:makeRequest('8-359');" >
+<input id="comm8-359" type="text" class="command" style="width: 14em;" value="p := x**5 - 5*x + 12 " />
+</form>
+<span id="commSav8-359" class="commSav" >p := x**5 - 5*x + 12 </span>
+<div id="mathAns8-359" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>12</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>We would like to construct a polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> such that the splitting
+<span class="index">field:splitting</span><a name="chapter-8-213"/> field <span class="index">splitting field</span><a name="chapter-8-214"/> of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> is
+generated by one root of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.  First we construct a polynomial 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>=</mo><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> such that one root of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> generates the field generated by
+two roots of the polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.  (As it will turn out, the field
+generated by two roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> is, in fact, the splitting field of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.)
+</p>
+
+
+<p>From the proof of the primitive element theorem we know that if  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> are algebraic numbers, then the field  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mrow><mtext style="fontweight: bold;">Q</mtext></mrow><mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>)</mo></mrow></mstyle></math> is equal
+to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mrow><mtext style="fontweight: bold;">Q</mtext></mrow><mo>(</mo><mi>a</mi><mo>+</mo><mi>kb</mi><mo>)</mo></mrow></mstyle></math> for an appropriately chosen integer  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math>.  In our
+case, we construct the minimal polynomial of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>i</mi></msub><mo>-</mo><msub><mi>a</mi><mi>j</mi></msub></mrow></mstyle></math>, where  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>i</mi></msub></mrow></mstyle></math>
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>j</mi></msub></mrow></mstyle></math> are two roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.  We construct this polynomial using
+<span style="font-weight: bold;"> resultant</span>.  The main result we need is the following: If  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>
+is a polynomial with roots  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>i</mi></msub><mo>&#x2026;</mo><msub><mi>a</mi><mi>m</mi></msub></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> is a polynomial
+with roots  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>b</mi><mi>i</mi></msub><mo>&#x2026;</mo><msub><mi>b</mi><mi>n</mi></msub></mrow></mstyle></math>, then the polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>h</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>=</mo><mi>resultant</mi><mo>(</mo><mi>f</mi><mo>(</mo><mi>y</mi><mo>)</mo><mo>,</mo><mi>g</mi><mo>(</mo><mi>x</mi><mo>-</mo><mi>y</mi><mo>)</mo><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> is a polynomial of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>m</mi><mo>*</mo><mi>n</mi></mrow></mstyle></math> with roots
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>i</mi></msub><mo>+</mo><msub><mi>b</mi><mi>j</mi></msub><mo>,</mo><mi>i</mi><mo>=</mo><mn>1</mn><mo>&#x2026;</mo><mi>m</mi><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>&#x2026;</mo><mi>n</mi></mrow></mstyle></math>.
+</p>
+
+
+<p>For  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> we use the polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.  For  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> we use the
+polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mi>p</mi><mo>(</mo><mo>-</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.  Thus, the polynomial we first construct is
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>resultant</mi><mo>(</mo><mi>p</mi><mo>(</mo><mi>y</mi><mo>)</mo><mo>,</mo><mo>-</mo><mi>p</mi><mo>(</mo><mi>y</mi><mo>-</mo><mi>x</mi><mo>)</mo><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-360" class="spadComm" >
+<form id="formComm8-360" action="javascript:makeRequest('8-360');" >
+<input id="comm8-360" type="text" class="command" style="width: 31em;" value="q := resultant(eval(p,x,y),-eval(p,x,y-x),y)  " />
+</form>
+<span id="commSav8-360" class="commSav" >q := resultant(eval(p,x,y),-eval(p,x,y-x),y)  </span>
+<div id="mathAns8-360" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>25</mn></msup></mrow><mo>-</mo><mrow><mn>50</mn><mo></mo><mrow><msup><mi>x</mi><mn>21</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2375</mn><mo></mo><mrow><msup><mi>x</mi><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>90000</mn><mo></mo><mrow><msup><mi>x</mi><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5000</mn><mo></mo><mrow><msup><mi>x</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2700000</mn><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>250000</mn><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>18000000</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>64000000</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>The roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>q</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> are  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>i</mi></msub><mo>-</mo><msub><mi>a</mi><mi>j</mi></msub><mo>,</mo><mi>i</mi><mo>&#x2264;</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>&#x2264;</mo><mn>5</mn></mrow></mstyle></math>.  Of course,
+there are five pairs  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></mstyle></math> with  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>i</mi><mo>=</mo><mi>j</mi></mrow></mstyle></math>, so  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> is a 5-fold root of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>q</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>Let's get rid of this factor.
+</p>
+
+
+
+
+<div id="spadComm8-361" class="spadComm" >
+<form id="formComm8-361" action="javascript:makeRequest('8-361');" >
+<input id="comm8-361" type="text" class="command" style="width: 15em;" value="q1 := exquo(q, x**5)  " />
+</form>
+<span id="commSav8-361" class="commSav" >q1 := exquo(q, x**5)  </span>
+<div id="mathAns8-361" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>20</mn></msup></mrow><mo>-</mo><mrow><mn>50</mn><mo></mo><mrow><msup><mi>x</mi><mn>16</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2375</mn><mo></mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>90000</mn><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5000</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2700000</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>250000</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18000000</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>64000000</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Polynomial Integer,...)
+</div>
+
+
+
+<p>Factor the polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>q1</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-362" class="spadComm" >
+<form id="formComm8-362" action="javascript:makeRequest('8-362');" >
+<input id="comm8-362" type="text" class="command" style="width: 16em;" value="factoredQ := factor q1  " />
+</form>
+<span id="commSav8-362" class="commSav" >factoredQ := factor q1  </span>
+<div id="mathAns8-362" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>-</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>75</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1500</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5500</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>16000</mn><mo>)</mo></mrow><mo>*</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>+</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>125</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>500</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2500</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4000</mn><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Integer
+</div>
+
+
+
+<p>We see that  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>q1</mi></mstyle></math> has two irreducible factors, each of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math>.
+(The fact that the polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>q1</mi></mstyle></math> has two factors of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math> is
+enough to show that the Galois group of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> is the dihedral group
+of order  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math>.<span class="footnote">See McKay, Soicher, Computing Galois Groups
+over the Rationals, Journal of Number Theory 20, 273-281 (1983).  We
+do not assume the results of this paper, however, and we continue with
+the computation.</span>  Note that the type of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>factoredQ</mi></mstyle></math> is <span class="teletype">FR POLY
+INT</span>, that is, <span class="teletype">Factored Polynomial Integer</span>.  <span class="index">Factored</span><a name="chapter-8-215"/>
+This is a special data type for recording factorizations of
+polynomials with integer coefficients.
+</p>
+
+
+<p>We can access the individual factors using the operation
+<span class="spadfunFrom" >nthFactor</span><span class="index">nthFactor</span><a name="chapter-8-216"/><span class="index">Factored</span><a name="chapter-8-217"/>.
+</p>
+
+
+
+
+<div id="spadComm8-363" class="spadComm" >
+<form id="formComm8-363" action="javascript:makeRequest('8-363');" >
+<input id="comm8-363" type="text" class="command" style="width: 20em;" value="r := nthFactor(factoredQ,1)  " />
+</form>
+<span id="commSav8-363" class="commSav" >r := nthFactor(factoredQ,1)  </span>
+<div id="mathAns8-363" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>-</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>75</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1500</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5500</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>16000</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Consider the polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>=</mo><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.  This is the minimal polynomial of
+the difference of two roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.  Thus, the splitting field of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> contains a subfield of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math>.  We show that this subfield
+is, in fact, the splitting field of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> by showing that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>
+factors completely over this field.
+</p>
+
+
+<p>First we create a symbolic root of the polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.  (We
+replaced  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> by  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> in the polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>r</mi></mstyle></math> so that our symbolic root
+would be printed as  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math>.)
+</p>
+
+
+
+
+<div id="spadComm8-364" class="spadComm" >
+<form id="formComm8-364" action="javascript:makeRequest('8-364');" >
+<input id="comm8-364" type="text" class="command" style="width: 22em;" value="beta:AN := rootOf(eval(r,x,b))  " />
+</form>
+<span id="commSav8-364" class="commSav" >beta:AN := rootOf(eval(r,x,b))  </span>
+<div id="mathAns8-364" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+<p>We next tell Axiom to view  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> as a univariate polynomial in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>
+with algebraic number coefficients.  This is accomplished with this
+type declaration.
+</p>
+
+
+
+
+<div id="spadComm8-365" class="spadComm" >
+<form id="formComm8-365" action="javascript:makeRequest('8-365');" >
+<input id="comm8-365" type="text" class="command" style="width: 20em;" value="p := p::UP(x,INT)::UP(x,AN)  " />
+</form>
+<span id="commSav8-365" class="commSav" >p := p::UP(x,INT)::UP(x,AN)  </span>
+<div id="mathAns8-365" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>12</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,AlgebraicNumber)
+</div>
+
+
+
+<p>Factor  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> over the field  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>.
+(This computation will take some time!)
+</p>
+
+
+
+
+<div id="spadComm8-366" class="spadComm" >
+<form id="formComm8-366" action="javascript:makeRequest('8-366');" >
+<input id="comm8-366" type="text" class="command" style="width: 22em;" value="algFactors := factor(p,[beta])  " />
+</form>
+<span id="commSav8-366" class="commSav" >algFactors := factor(p,[beta])  </span>
+<div id="mathAns8-366" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mrow><mn>85</mn><mo></mo><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>116</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>780</mn><mo></mo><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2640</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>14895</mn><mo></mo><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>8820</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>127050</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>327000</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>405200</mn><mo></mo><mi>b</mi></mrow><mo>+</mo><mn>2062400</mn></mtd></mtr></mtable><mo>)</mo></mrow><mn>1339200</mn></mfrac><mo>)</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mfrac><mrow><mo>-</mo><mrow><mn>17</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>156</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2979</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>25410</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>14080</mn></mrow><mn>66960</mn></mfrac><mo>)</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mfrac><mrow><mrow><mn>143</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2100</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10485</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>290550</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>334800</mn><mo></mo><mi>b</mi></mrow><mo>-</mo><mn>960800</mn></mrow><mn>669600</mn></mfrac><mo>)</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mfrac><mrow><mrow><mn>143</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2100</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10485</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>290550</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>334800</mn><mo></mo><mi>b</mi></mrow><mo>-</mo><mn>960800</mn></mrow><mn>669600</mn></mfrac><mo>)</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mn>85</mn><mo></mo><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>116</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>780</mn><mo></mo><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2640</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14895</mn><mo></mo><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>8820</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>127050</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>327000</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>405200</mn><mo></mo><mi>b</mi></mrow><mo>+</mo><mn>2062400</mn></mtd></mtr></mtable><mo>)</mo></mrow><mn>1339200</mn></mfrac><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored UnivariatePolynomial(x,AlgebraicNumber)
+</div>
+
+
+
+<p>When factoring over number fields, it is important to specify the
+field over which the polynomial is to be factored, as polynomials have
+different factorizations over different fields.  When you use the
+operation <span style="font-weight: bold;"> factor</span>, the field over which the polynomial is
+factored is the field generated by
+</p>
+
+
+
+<ol>
+<li>
+ the algebraic numbers that appear
+in the coefficients of the polynomial, and
+</li>
+<li> the algebraic numbers that
+appear in a list passed as an optional second argument of the operation.
+</li>
+</ol>
+
+
+<p>In our case, the coefficients of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>
+are all rational integers and only  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>beta</mi></mstyle></math>
+appears in the list, so the field is simply
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>.
+</p>
+
+
+<p>It was necessary to give the list  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>beta</mi><mo>]</mo></mrow></mstyle></math> as a second argument of the
+operation because otherwise the polynomial would have been factored
+over the field generated by its coefficients, namely the rational
+numbers.
+</p>
+
+
+
+
+<div id="spadComm8-367" class="spadComm" >
+<form id="formComm8-367" action="javascript:makeRequest('8-367');" >
+<input id="comm8-367" type="text" class="command" style="width: 7em;" value="factor(p) " />
+</form>
+<span id="commSav8-367" class="commSav" >factor(p) </span>
+<div id="mathAns8-367" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>12</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored UnivariatePolynomial(x,AlgebraicNumber)
+</div>
+
+
+
+<p>We have shown that the splitting field of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> has degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math>.
+Since the symmetric group of degree 5 has only one transitive subgroup
+of order  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math>, we know that the Galois group of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> must be this
+group, the dihedral group <span class="index">group:dihedral</span><a name="chapter-8-218"/> of order  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>10</mn></mstyle></math>.
+Rather than stop here, we explicitly compute the action of the Galois
+group on the roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>First we assign the roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> as the values of five <span class="index">root</span><a name="chapter-8-219"/>
+variables.
+</p>
+
+
+<p>We can obtain an individual root by negating the constant coefficient of
+one of the factors of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-368" class="spadComm" >
+<form id="formComm8-368" action="javascript:makeRequest('8-368');" >
+<input id="comm8-368" type="text" class="command" style="width: 24em;" value="factor1 := nthFactor(algFactors,1)  " />
+</form>
+<span id="commSav8-368" class="commSav" >factor1 := nthFactor(algFactors,1)  </span>
+<div id="mathAns8-368" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>+</mo><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mrow><mn>85</mn><mo></mo><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>116</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>780</mn><mo></mo><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2640</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>14895</mn><mo></mo><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>8820</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>127050</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>327000</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>405200</mn><mo></mo><mi>b</mi></mrow><mo>+</mo><mn>2062400</mn></mtd></mtr></mtable><mo>)</mo></mrow><mn>1339200</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,AlgebraicNumber)
+</div>
+
+
+
+
+
+<div id="spadComm8-369" class="spadComm" >
+<form id="formComm8-369" action="javascript:makeRequest('8-369');" >
+<input id="comm8-369" type="text" class="command" style="width: 23em;" value="root1 := -coefficient(factor1,0)  " />
+</form>
+<span id="commSav8-369" class="commSav" >root1 := -coefficient(factor1,0)  </span>
+<div id="mathAns8-369" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mn>85</mn><mo></mo><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>116</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>780</mn><mo></mo><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2640</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14895</mn><mo></mo><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>8820</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>127050</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>327000</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>405200</mn><mo></mo><mi>b</mi></mrow><mo>-</mo><mn>2062400</mn></mtd></mtr></mtable><mo>)</mo></mrow><mn>1339200</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+<p>We can obtain a list of all the roots in this way.
+</p>
+
+
+
+
+<div id="spadComm8-370" class="spadComm" >
+<form id="formComm8-370" action="javascript:makeRequest('8-370');" >
+<input id="comm8-370" type="text" class="command" style="width: 44em;" value="roots := [-coefficient(nthFactor(algFactors,i),0) for i in 1..5]  " />
+</form>
+<span id="commSav8-370" class="commSav" >roots := [-coefficient(nthFactor(algFactors,i),0) for i in 1..5]  </span>
+<div id="mathAns8-370" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mfrac><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mrow><mn>85</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>116</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>780</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2640</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14895</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8820</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>127050</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>327000</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>405200</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mn>2062400</mn></mtd></mtr></mtable></mrow><mo>)</mo></mrow><mn>1339200</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd><mfrac><mrow><mrow><mn>17</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>156</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2979</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>25410</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>14080</mn></mrow><mn>66960</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd><mfrac><mrow><mo>-</mo><mrow><mn>143</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2100</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10485</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>290550</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>334800</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mn>960800</mn></mrow><mn>669600</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd><mfrac><mrow><mo>-</mo><mrow><mn>143</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2100</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10485</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>290550</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>334800</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mn>960800</mn></mrow><mn>669600</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mrow><mn>85</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>116</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>780</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2640</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>14895</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8820</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>127050</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>327000</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>405200</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mn>2062400</mn></mtd></mtr></mtable><mo>)</mo></mrow><mn>1339200</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List AlgebraicNumber
+</div>
+
+
+
+<p>The expression
+</p>
+
+
+
+<div class="verbatim"><br />
+-&nbsp;coefficient(nthFactor(algFactors,&nbsp;i),&nbsp;0)}<br />
+</div>
+
+
+<p>is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>-th root of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> and the elements of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>roots</mi></mstyle></math> are the 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>-th roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> as  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math> ranges from  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>5</mn></mstyle></math>.
+</p>
+
+
+<p>Assign the roots as the values of the variables  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a1</mi><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>a5</mi></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-371" class="spadComm" >
+<form id="formComm8-371" action="javascript:makeRequest('8-371');" >
+<input id="comm8-371" type="text" class="command" style="width: 42em;" value="(a1,a2,a3,a4,a5) := (roots.1,roots.2,roots.3,roots.4,roots.5)  " />
+</form>
+<span id="commSav8-371" class="commSav" >(a1,a2,a3,a4,a5) := (roots.1,roots.2,roots.3,roots.4,roots.5)  </span>
+<div id="mathAns8-371" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mrow><mn>85</mn><mo></mo><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>116</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>780</mn><mo></mo><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2640</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>14895</mn><mo></mo><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8820</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>127050</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>327000</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>405200</mn><mo></mo><mi>b</mi></mrow><mo>-</mo><mn>2062400</mn></mtd></mtr></mtable><mo>)</mo></mrow><mn>1339200</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+<p>Next we express the roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> as polynomials in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>beta</mi></mstyle></math>.  We
+could obtain these roots by calling the operation <span style="font-weight: bold;"> factor</span>:
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>factor</mi><mo>(</mo><mi>r</mi><mo>,</mo><mo>[</mo><mi>beta</mi><mo>]</mo><mo>)</mo></mrow></mstyle></math> factors  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> over  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>.  However,
+this is a lengthy computation and we can obtain the roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> as
+differences of the roots  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a1</mi><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>a5</mi></mrow></mstyle></math> of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.  Only ten of these
+differences are roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> and the other ten are roots of the
+other irreducible factor of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>q1</mi></mstyle></math>.  We can determine if a given value
+is a root of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> by evaluating  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> at that particular value.
+(Of course, the order in which factors are returned by the operation
+<span style="font-weight: bold;"> factor</span> is unimportant and may change with different
+implementations of the operation.  Therefore, we cannot predict in
+advance which differences are roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> and which are not.)
+</p>
+
+
+<p>Let's look at four examples (two are roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> and
+two are not).
+</p>
+
+
+
+
+<div id="spadComm8-372" class="spadComm" >
+<form id="formComm8-372" action="javascript:makeRequest('8-372');" >
+<input id="comm8-372" type="text" class="command" style="width: 12em;" value="eval(r,x,a1 - a2) " />
+</form>
+<span id="commSav8-372" class="commSav" >eval(r,x,a1 - a2) </span>
+<div id="mathAns8-372" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm8-373" class="spadComm" >
+<form id="formComm8-373" action="javascript:makeRequest('8-373');" >
+<input id="comm8-373" type="text" class="command" style="width: 12em;" value="eval(r,x,a1 - a3) " />
+</form>
+<span id="commSav8-373" class="commSav" >eval(r,x,a1 - a3) </span>
+<div id="mathAns8-373" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mn>47905</mn><mo></mo><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>66920</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>536100</mn><mo></mo><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>980400</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3345075</mn><mo></mo><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5787000</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>75572250</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>161688000</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>184600000</mn><mo></mo><mi>b</mi></mrow><mo>-</mo><mn>710912000</mn></mtd></mtr></mtable><mo>)</mo></mrow><mn>4464</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm8-374" class="spadComm" >
+<form id="formComm8-374" action="javascript:makeRequest('8-374');" >
+<input id="comm8-374" type="text" class="command" style="width: 12em;" value="eval(r,x,a1 - a4) " />
+</form>
+<span id="commSav8-374" class="commSav" >eval(r,x,a1 - a4) </span>
+<div id="mathAns8-374" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm8-375" class="spadComm" >
+<form id="formComm8-375" action="javascript:makeRequest('8-375');" >
+<input id="comm8-375" type="text" class="command" style="width: 12em;" value="eval(r,x,a1 - a5) " />
+</form>
+<span id="commSav8-375" class="commSav" >eval(r,x,a1 - a5) </span>
+<div id="mathAns8-375" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>405</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3450</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>19875</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>198000</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>588000</mn></mrow><mn>31</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial AlgebraicNumber
+</div>
+
+
+
+<p>Take one of the differences that was a root of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> and assign it to
+the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>bb</mi></mstyle></math>.
+</p>
+
+
+<p>For example, if  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>eval</mi><mo>(</mo><mi>r</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>a1</mi><mo>-</mo><mi>a4</mi><mo>)</mo></mrow></mstyle></math> returned  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>, you would enter this.
+</p>
+
+
+
+
+<div id="spadComm8-376" class="spadComm" >
+<form id="formComm8-376" action="javascript:makeRequest('8-376');" >
+<input id="comm8-376" type="text" class="command" style="width: 10em;" value="bb := a1 - a4  " />
+</form>
+<span id="commSav8-376" class="commSav" >bb := a1 - a4  </span>
+<div id="mathAns8-376" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mn>85</mn><mo></mo><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>402</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>780</mn><mo></mo><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6840</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14895</mn><mo></mo><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12150</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>127050</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>908100</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1074800</mn><mo></mo><mi>b</mi></mrow><mo>-</mo><mn>3984000</mn></mtd></mtr></mtable><mo>)</mo></mrow><mn>1339200</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+<p>Of course, if the difference is, in fact, equal to the root  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>beta</mi></mstyle></math>,
+you should choose another root of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>Automorphisms of the splitting field are given by mapping a generator
+of the field, namely  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>beta</mi></mstyle></math>, to other roots of its minimal polynomial.
+Let's see what happens when  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>beta</mi></mstyle></math> is mapped to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>bb</mi></mstyle></math>.
+</p>
+
+
+<p>We compute the images of the roots  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a1</mi><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>a5</mi></mrow></mstyle></math> under this automorphism:
+</p>
+
+
+
+
+<div id="spadComm8-377" class="spadComm" >
+<form id="formComm8-377" action="javascript:makeRequest('8-377');" >
+<input id="comm8-377" type="text" class="command" style="width: 19em;" value="aa1 := subst(a1,beta = bb)  " />
+</form>
+<span id="commSav8-377" class="commSav" >aa1 := subst(a1,beta = bb)  </span>
+<div id="mathAns8-377" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>-</mo><mrow><mn>143</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2100</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10485</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>290550</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>334800</mn><mo></mo><mi>b</mi></mrow><mo>+</mo><mn>960800</mn></mrow><mn>669600</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm8-378" class="spadComm" >
+<form id="formComm8-378" action="javascript:makeRequest('8-378');" >
+<input id="comm8-378" type="text" class="command" style="width: 19em;" value="aa2 := subst(a2,beta = bb)  " />
+</form>
+<span id="commSav8-378" class="commSav" >aa2 := subst(a2,beta = bb)  </span>
+<div id="mathAns8-378" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mrow><mn>85</mn><mo></mo><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>116</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>780</mn><mo></mo><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2640</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>14895</mn><mo></mo><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8820</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>127050</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>327000</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>405200</mn><mo></mo><mi>b</mi></mrow><mo>-</mo><mn>2062400</mn></mtd></mtr></mtable><mo>)</mo></mrow><mn>1339200</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm8-379" class="spadComm" >
+<form id="formComm8-379" action="javascript:makeRequest('8-379');" >
+<input id="comm8-379" type="text" class="command" style="width: 19em;" value="aa3 := subst(a3,beta = bb)  " />
+</form>
+<span id="commSav8-379" class="commSav" >aa3 := subst(a3,beta = bb)  </span>
+<div id="mathAns8-379" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mn>85</mn><mo></mo><mrow><msup><mi>b</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>116</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>780</mn><mo></mo><mrow><msup><mi>b</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2640</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14895</mn><mo></mo><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8820</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>127050</mn><mo></mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>327000</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>405200</mn><mo></mo><mi>b</mi></mrow><mo>-</mo><mn>2062400</mn></mtd></mtr></mtable><mo>)</mo></mrow><mn>1339200</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm8-380" class="spadComm" >
+<form id="formComm8-380" action="javascript:makeRequest('8-380');" >
+<input id="comm8-380" type="text" class="command" style="width: 19em;" value="aa4 := subst(a4,beta = bb)  " />
+</form>
+<span id="commSav8-380" class="commSav" >aa4 := subst(a4,beta = bb)  </span>
+<div id="mathAns8-380" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>-</mo><mrow><mn>143</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2100</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10485</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>290550</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>334800</mn><mo></mo><mi>b</mi></mrow><mo>+</mo><mn>960800</mn></mrow><mn>669600</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm8-381" class="spadComm" >
+<form id="formComm8-381" action="javascript:makeRequest('8-381');" >
+<input id="comm8-381" type="text" class="command" style="width: 19em;" value="aa5 := subst(a5,beta = bb)  " />
+</form>
+<span id="commSav8-381" class="commSav" >aa5 := subst(a5,beta = bb)  </span>
+<div id="mathAns8-381" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>17</mn><mo></mo><mrow><msup><mi>b</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>156</mn><mo></mo><mrow><msup><mi>b</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2979</mn><mo></mo><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>25410</mn><mo></mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>14080</mn></mrow><mn>66960</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+<p>Of course, the values  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>aa1</mi><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>aa5</mi></mrow></mstyle></math> are simply a permutation of the values
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a1</mi><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>a5</mi></mrow></mstyle></math>.
+</p>
+
+
+<p>Let's find the value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>aa1</mi></mstyle></math> (execute as many of the following five commands
+as necessary).
+</p>
+
+
+
+
+<div id="spadComm8-382" class="spadComm" >
+<form id="formComm8-382" action="javascript:makeRequest('8-382');" >
+<input id="comm8-382" type="text" class="command" style="width: 15em;" value="(aa1 = a1) :: Boolean " />
+</form>
+<span id="commSav8-382" class="commSav" >(aa1 = a1) :: Boolean </span>
+<div id="mathAns8-382" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm8-383" class="spadComm" >
+<form id="formComm8-383" action="javascript:makeRequest('8-383');" >
+<input id="comm8-383" type="text" class="command" style="width: 15em;" value="(aa1 = a2) :: Boolean " />
+</form>
+<span id="commSav8-383" class="commSav" >(aa1 = a2) :: Boolean </span>
+<div id="mathAns8-383" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm8-384" class="spadComm" >
+<form id="formComm8-384" action="javascript:makeRequest('8-384');" >
+<input id="comm8-384" type="text" class="command" style="width: 15em;" value="(aa1 = a3) :: Boolean " />
+</form>
+<span id="commSav8-384" class="commSav" >(aa1 = a3) :: Boolean </span>
+<div id="mathAns8-384" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm8-385" class="spadComm" >
+<form id="formComm8-385" action="javascript:makeRequest('8-385');" >
+<input id="comm8-385" type="text" class="command" style="width: 15em;" value="(aa1 = a4) :: Boolean " />
+</form>
+<span id="commSav8-385" class="commSav" >(aa1 = a4) :: Boolean </span>
+<div id="mathAns8-385" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm8-386" class="spadComm" >
+<form id="formComm8-386" action="javascript:makeRequest('8-386');" >
+<input id="comm8-386" type="text" class="command" style="width: 15em;" value="(aa1 = a5) :: Boolean " />
+</form>
+<span id="commSav8-386" class="commSav" >(aa1 = a5) :: Boolean </span>
+<div id="mathAns8-386" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Proceeding in this fashion, you can find the values of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>aa2</mi><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mi>aa5</mi></mrow></mstyle></math>. You have represented the automorphism  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>beta</mi><mo>-</mo><mo>&gt;</mo><mi>bb</mi></mrow></mstyle></math> as a
+permutation of the roots  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a1</mi><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>a5</mi></mrow></mstyle></math>.  If you wish, you can repeat
+this computation for all the roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>r</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> and represent the Galois
+group of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> as a subgroup of the symmetric group on five letters.
+</p>
+
+
+<p>Here are two other problems that you may attack in a similar fashion:
+</p>
+
+
+
+<ol>
+<li>
+ Show that the Galois group of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>=</mo><msup><mi>x</mi><mn>4</mn></msup><mo>+</mo><mn>2</mn><msup><mi>x</mi><mn>3</mn></msup><mo>-</mo><mn>2</mn><msup><mi>x</mi><mn>2</mn></msup><mo>-</mo><mn>3</mn><mi>x</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+is the dihedral group of order eight. <span class="index">group:dihedral</span><a name="chapter-8-220"/>
+(The splitting field of this polynomial is the Hilbert class field
+<span class="index">Hilbert class field</span><a name="chapter-8-221"/> of <span class="index">field:Hilbert class</span><a name="chapter-8-222"/> the quadratic field
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mrow><mtext style="fontweight: bold;">Q</mtext></mrow><mo>(</mo><msqrt><mn>145</mn></msqrt><mo>)</mo></mrow></mstyle></math>.)
+</li>
+<li> Show that the Galois group of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>=</mo><msup><mi>x</mi><mn>6</mn></msup><mo>+</mo><mn>108</mn></mrow></mstyle></math>
+has order 6 and is isomorphic to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>S</mi><mn>3</mn></msub><mo>,</mo></mrow></mstyle></math> the symmetric group on three letters.
+<span class="index">group:symmetric</span><a name="chapter-8-223"/> (The splitting field of this polynomial is the 
+splitting field of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mn>3</mn></msup><mo>-</mo><mn>2</mn></mrow></mstyle></math>.)
+</li>
+</ol>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.12.xhtml" style="margin-right: 10px;">Previous Section 8.12 Primary Decomposition of Ideals</a><a href="section-8.14.xhtml" style="margin-right: 10px;">Next Section 8.14 Non-Associative Algebras and Modelling Genetic Laws</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.14.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.14.xhtml
new file mode 100644
index 0000000..9f36697
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.14.xhtml
@@ -0,0 +1,703 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.14</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.13.xhtml" style="margin-right: 10px;">Previous Section 8.13 Computation of Galois Groups</a><a href="section-9.1.xhtml" style="margin-right: 10px;">Next Section 9.1  AssociationList</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.14">
+<h2 class="sectiontitle">8.14  Non-Associative Algebras and Modelling Genetic Laws</h2>
+
+
+<a name="ugProblemGenetic" class="label"/>
+
+
+<p>Many algebraic structures of mathematics and Axiom have a
+multiplication operation <span class="teletype">*</span> that satisfies the associativity law
+<span class="index">associativity law</span><a name="chapter-8-224"/>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>*</mo><mo>(</mo><mi>b</mi><mo>*</mo><mi>c</mi><mo>)</mo><mo>=</mo><mo>(</mo><mi>a</mi><mo>*</mo><mi>b</mi><mo>)</mo><mo>*</mo><mi>c</mi></mrow></mstyle></math> for all  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math> and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>c</mi></mstyle></math>.  The octonions are a well known exception.  There are many other
+interesting non-associative structures, such as the class of
+<span class="index">Lie algebra</span><a name="chapter-8-225"/> Lie algebras.<span class="footnote">Two Axiom implementations
+of Lie algebras are <span class="teletype">LieSquareMatrix</span> and <span class="teletype">FreeNilpotentLie</span>.</span>
+Lie algebras can be used, for example, to analyse Lie symmetry
+algebras of <span class="index">symmetry</span><a name="chapter-8-226"/> partial differential <span class="index">differential
+equation:partial</span><a name="chapter-8-227"/> equations.  <span class="index">partial differential equation</span><a name="chapter-8-228"/> In
+this section we show a different application of non-associative
+algebras, <span class="index">non-associative algebra</span><a name="chapter-8-229"/> the modelling of genetic
+laws.  <span class="index">algebra:non-associative</span><a name="chapter-8-230"/>
+</p>
+
+
+<p>The Axiom library contains several constructors for creating
+non-associative structures, ranging from the categories 
+<span class="teletype">Monad</span>, <span class="teletype">NonAssociativeRng</span>, and <span class="teletype">FramedNonAssociativeAlgebra</span>, 
+to the domains <span class="teletype">AlgebraGivenByStructuralConstants</span> and 
+<span class="teletype">GenericNonAssociativeAlgebra</span>.  Furthermore, the package 
+<span class="teletype">AlgebraPackage</span> provides operations for analysing the structure of
+such algebras.<span class="footnote"> The interested reader can learn more about
+these aspects of the Axiom library from the paper ``Computations in
+Algebras of Finite Rank,'' by Johannes Grabmeier and Robert Wisbauer,
+Technical Report, IBM Heidelberg Scientific Center, 1992.</span>
+</p>
+
+
+<p>Mendel's genetic laws are often written in a form like
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>Aa</mi><mspace width="0.5em"/><mo>x</mo><mspace width="0.5em"/><mi>Aa</mi><mo>=</mo><mfrac><mn>1</mn><mn>4</mn></mfrac><mi>AA</mi><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>Aa</mi><mo>+</mo><mfrac><mn>1</mn><mn>4</mn></mfrac><mi>aa</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+<p>The implementation of general algebras in Axiom allows us to
+<span class="index">Mendel's genetic laws</span><a name="chapter-8-231"/> use this as the definition for
+multiplication in an algebra.  <span class="index">genetics</span><a name="chapter-8-232"/> Hence, it is possible
+to study questions of genetic inheritance using Axiom.  To demonstrate
+this more precisely, we discuss one example from a monograph of
+A. W&#x00f6;rz-Busekros, where you can also find a general setting of this
+theory.<span class="footnote"> W&#x00f6;rz-Busekros, A., <span class="italic">Algebras in Genetics</span>,
+Springer Lectures Notes in Biomathematics 36, Berlin e.a. (1980).  In
+particular, see example 1.3.</span>
+</p>
+
+
+<p>We assume that there is an infinitely large random mating population.
+Random mating of two gametes  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>i</mi></msub></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>j</mi></msub></mrow></mstyle></math> gives zygotes
+<span class="index">zygote</span><a name="chapter-8-233"/>  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>, which produce new gametes.  <span class="index">gamete</span><a name="chapter-8-234"/> In
+classical Mendelian segregation we have  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>i</mi></msub><msub><mi>a</mi><mi>j</mi></msub><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msub><mi>a</mi><mi>i</mi></msub><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msub><mi>a</mi><mi>j</mi></msub></mrow></mstyle></math>.  In general, we have
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>a</mi><mi>i</mi></msub><msub><mi>a</mi><mi>j</mi></msub><mo>=</mo><msubsup><mo>&#x2211;</mo><mrow><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow></mrow><mrow><mi>n</mi></mrow></msubsup><msubsup><mo>&#x03b3;</mo><mrow><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></mrow><mrow><mi>k</mi></mrow></msubsup><mo></mo><msub><mi>a</mi><mi>k</mi></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<p>The segregation rates  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mo>&#x03b3;</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow></mstyle></math> are the structural constants of
+an  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-dimensional algebra.  This is provided in Axiom by the
+constructor <span class="teletype">AlgebraGivenByStructuralConstants</span> (abbreviation 
+<span class="teletype">ALGSC</span>).
+</p>
+
+
+<p>Consider two coupled autosomal loci with alleles  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>A</mi></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>B</mi></mstyle></math>, and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math>, building four different gametes  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mn>1</mn></msub><mo>=</mo><mi>AB</mi><mo>,</mo><msub><mi>a</mi><mn>2</mn></msub><mo>=</mo><mi>Ab</mi><mo>,</mo><msub><mi>a</mi><mn>3</mn></msub><mo>=</mo><mi>aB</mi><mo>,</mo></mrow></mstyle></math>
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mn>4</mn></msub><mo>=</mo><mi>ab</mi></mrow></mstyle></math> { <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a1</mi><mo>:</mo><mo>=</mo><mi>AB</mi><mo>,</mo><mi>a2</mi><mo>:</mo><mo>=</mo><mi>Ab</mi><mo>,</mo><mi>a3</mi><mo>:</mo><mo>=</mo><mi>aB</mi><mo>,</mo></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a4</mi><mo>:</mo><mo>=</mo><mi>ab</mi></mrow></mstyle></math>}.  The
+zygotes  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> produce gametes  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>i</mi></msub></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>j</mi></msub></mrow></mstyle></math> with classical
+Mendelian segregation.  Zygote  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mn>1</mn></msub><msub><mi>a</mi><mn>4</mn></msub></mrow></mstyle></math> undergoes transition to
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mn>2</mn></msub><msub><mi>a</mi><mn>3</mn></msub></mrow></mstyle></math> and vice versa with probability 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>&#x2264;</mo><mi>&#x03B8;</mi><mo>&#x2264;</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow></mstyle></math>.
+</p>
+
+
+<p>Define a list  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> of four four-by-four
+matrices giving the segregation rates.  We use the value  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>/</mo><mn>10</mn></mrow></mstyle></math> for
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03B8;</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-387" class="spadComm" >
+<form id="formComm8-387" action="javascript:makeRequest('8-387');" >
+<input id="comm8-387" type="text" class="command" style="width: 268em;" value="segregationRates : List SquareMatrix(4,FRAC INT) := [matrix [ [1, 1/2, 1/2, 9/20], [1/2, 0, 1/20, 0], [1/2, 1/20, 0, 0], [9/20, 0, 0, 0] ], matrix [ [0, 1/2, 0, 1/20], [1/2, 1, 9/20, 1/2], [0, 9/20, 0, 0], [1/20, 1/2, 0, 0] ], matrix [ [0, 0, 1/2, 1/20], [0, 0, 9/20, 0], [1/2, 9/20, 1, 1/2], [1/20, 0, 1/2, 0] ], matrix [ [0, 0, 0, 9/20], [0, 0, 1/20, 1/2], [0, 1/20, 0, 1/2], [9/20, 1/2, 1/2, 1] ] ] " />
+</form>
+<span id="commSav8-387" class="commSav" >segregationRates : List SquareMatrix(4,FRAC INT) := [matrix [ [1, 1/2, 1/2, 9/20], [1/2, 0, 1/20, 0], [1/2, 1/20, 0, 0], [9/20, 0, 0, 0] ], matrix [ [0, 1/2, 0, 1/20], [1/2, 1, 9/20, 1/2], [0, 9/20, 0, 0], [1/20, 1/2, 0, 0] ], matrix [ [0, 0, 1/2, 1/20], [0, 0, 9/20, 0], [1/2, 9/20, 1, 1/2], [1/20, 0, 1/2, 0] ], matrix [ [0, 0, 0, 9/20], [0, 0, 1/20, 1/2], [0, 1/20, 0, 1/2], [9/20, 1/2, 1/2, 1] ] ] </span>
+<div id="mathAns8-387" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>9</mn><mn>20</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mn>0</mn></mtd><mtd><mfrac><mn>1</mn><mn>20</mn></mfrac></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>20</mn></mfrac></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mfrac><mn>9</mn><mn>20</mn></mfrac></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd></mtd></mtr></mtable><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mn>0</mn></mtd><mtd><mfrac><mn>1</mn><mn>20</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mfrac><mn>9</mn><mn>20</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mfrac><mn>9</mn><mn>20</mn></mfrac></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>20</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd></mtd></mtr></mtable><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>20</mn></mfrac></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mfrac><mn>9</mn><mn>20</mn></mfrac></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>9</mn><mn>20</mn></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>20</mn></mfrac></mtd><mtd><mn>0</mn></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd></mtd></mtr></mtable><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mfrac><mn>9</mn><mn>20</mn></mfrac></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mfrac><mn>1</mn><mn>20</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mfrac><mn>1</mn><mn>20</mn></mfrac></mtd><mtd><mn>0</mn></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>9</mn><mn>20</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List SquareMatrix(4,Fraction Integer)
+</div>
+
+
+
+<p>Choose the appropriate symbols for the basis of gametes,
+</p>
+
+
+
+
+<div id="spadComm8-388" class="spadComm" >
+<form id="formComm8-388" action="javascript:makeRequest('8-388');" >
+<input id="comm8-388" type="text" class="command" style="width: 20em;" value="gametes := ['AB,'Ab,'aB,'ab]  " />
+</form>
+<span id="commSav8-388" class="commSav" >gametes := ['AB,'Ab,'aB,'ab]  </span>
+<div id="mathAns8-388" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>AB</mi><mo>,</mo><mi>Ab</mi><mo>,</mo><mi>aB</mi><mo>,</mo><mi>ab</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List OrderedVariableList [AB,Ab,aB,ab]
+</div>
+
+
+
+<p>Define the algebra.
+</p>
+
+
+
+
+<div id="spadComm8-389" class="spadComm" >
+<form id="formComm8-389" action="javascript:makeRequest('8-389');" >
+<input id="comm8-389" type="text" class="command" style="width: 34em;" value="A := ALGSC(FRAC INT, 4, gametes, segregationRates)" />
+</form>
+<span id="commSav8-389" class="commSav" >A := ALGSC(FRAC INT, 4, gametes, segregationRates)</span>
+<div id="mathAns8-389" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>AlgebraGivenByStructuralConstants(FractionInteger,4,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>What are the probabilities for zygote  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mn>1</mn></msub><msub><mi>a</mi><mn>4</mn></msub></mrow></mstyle></math> to produce the
+different gametes?
+</p>
+
+
+
+
+<div id="spadComm8-390" class="spadComm" >
+<form id="formComm8-390" action="javascript:makeRequest('8-390');" >
+<input id="comm8-390" type="text" class="command" style="width: 10em;" value="a := basis()$A" />
+</form>
+<span id="commSav8-390" class="commSav" >a := basis()$A</span>
+<div id="mathAns8-390" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>AB</mi><mo>,</mo><mi>Ab</mi><mo>,</mo><mi>aB</mi><mo>,</mo><mi>ab</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector 
+AlgebraGivenByStructuralConstants(Fraction Integer,4,[AB,Ab,aB,ab],
+[MATRIX,MATRIX,MATRIX,MATRIX])
+</div>
+
+
+
+
+
+<div id="spadComm8-391" class="spadComm" >
+<form id="formComm8-391" action="javascript:makeRequest('8-391');" >
+<input id="comm8-391" type="text" class="command" style="width: 5em;" value="a.1*a.4" />
+</form>
+<span id="commSav8-391" class="commSav" >a.1*a.4</span>
+<div id="mathAns8-391" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>9</mn><mn>20</mn></mfrac><mo></mo><mi>ab</mi></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>20</mn></mfrac><mo></mo><mi>aB</mi></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>20</mn></mfrac><mo></mo><mi>Ab</mi></mrow><mo>+</mo><mrow><mfrac><mn>9</mn><mn>20</mn></mfrac><mo></mo><mi>AB</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+AlgebraGivenByStructuralConstants(Fraction Integer,4,[AB,Ab,aB,ab],
+[MATRIX,MATRIX,MATRIX,MATRIX])
+</div>
+
+
+
+<p>Elements in this algebra whose coefficients sum to one play a
+distinguished role.  They represent a population with the distribution
+of gametes reflected by the coefficients with respect to the basis of
+gametes.
+</p>
+
+
+<p>Random mating of different populations  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> is described by
+their product  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mi>y</mi></mrow></mstyle></math>.
+</p>
+
+
+<p>This product is commutative only if the gametes are not sex-dependent,
+as in our example.
+</p>
+
+
+
+
+<div id="spadComm8-392" class="spadComm" >
+<form id="formComm8-392" action="javascript:makeRequest('8-392');" >
+<input id="comm8-392" type="text" class="command" style="width: 12em;" value="commutative?()$A " />
+</form>
+<span id="commSav8-392" class="commSav" >commutative?()$A </span>
+<div id="mathAns8-392" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>In general, it is not associative.
+</p>
+
+
+
+
+<div id="spadComm8-393" class="spadComm" >
+<form id="formComm8-393" action="javascript:makeRequest('8-393');" >
+<input id="comm8-393" type="text" class="command" style="width: 12em;" value="associative?()$A " />
+</form>
+<span id="commSav8-393" class="commSav" >associative?()$A </span>
+<div id="mathAns8-393" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Random mating within a population  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is described by  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mi>x</mi></mrow></mstyle></math>.  The next
+generation is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>*</mo><mi>x</mi><mo>)</mo><mo>*</mo><mo>(</mo><mi>x</mi><mo>*</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>Use decimal numbers to compare the distributions more easily.
+</p>
+
+
+
+
+<div id="spadComm8-394" class="spadComm" >
+<form id="formComm8-394" action="javascript:makeRequest('8-394');" >
+<input id="comm8-394" type="text" class="command" style="width: 56em;" value="x : ALGSC(DECIMAL, 4, gametes, segregationRates) :=  convert [3/10, 1/5, 1/10, 2/5]" />
+</form>
+<span id="commSav8-394" class="commSav" >x : ALGSC(DECIMAL, 4, gametes, segregationRates) :=  convert [3/10, 1/5, 1/10, 2/5]</span>
+<div id="mathAns8-394" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>0</mn><mo>.</mo><mn>4</mn></mrow><mo></mo><mi>ab</mi></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>1</mn></mrow><mo></mo><mi>aB</mi></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>2</mn></mrow><mo></mo><mi>Ab</mi></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>3</mn></mrow><mo></mo><mi>AB</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+AlgebraGivenByStructuralConstants(DecimalExpansion,4,[AB,Ab,aB,ab],
+[MATRIX,MATRIX,MATRIX,MATRIX])
+</div>
+
+
+
+<p>To compute directly the gametic distribution in the fifth generation,
+we use <span style="font-weight: bold;"> plenaryPower</span>.
+</p>
+
+
+
+
+<div id="spadComm8-395" class="spadComm" >
+<form id="formComm8-395" action="javascript:makeRequest('8-395');" >
+<input id="comm8-395" type="text" class="command" style="width: 12em;" value="plenaryPower(x,5) " />
+</form>
+<span id="commSav8-395" class="commSav" >plenaryPower(x,5) </span>
+<div id="mathAns8-395" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>0</mn><mo>.</mo><mn>36561</mn></mrow><mo></mo><mi>ab</mi></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>13439</mn></mrow><mo></mo><mi>aB</mi></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>23439</mn></mrow><mo></mo><mi>Ab</mi></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>26561</mn></mrow><mo></mo><mi>AB</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+AlgebraGivenByStructuralConstants(DecimalExpansion,4,[AB,Ab,aB,ab],
+[MATRIX,MATRIX,MATRIX,MATRIX])
+</div>
+
+
+
+<p>We now ask two questions: Does this distribution converge to an
+equilibrium state?  What are the distributions that are stable?
+</p>
+
+
+<p>This is an invariant of the algebra and it is used to answer the first
+question.  The new indeterminates describe a symbolic distribution.
+</p>
+
+
+
+
+<div id="spadComm8-396" class="spadComm" >
+<form id="formComm8-396" action="javascript:makeRequest('8-396');" >
+<input id="comm8-396" type="text" class="command" style="width: 65em;" value="q := leftRankPolynomial()$GCNAALG(FRAC INT, 4, gametes, segregationRates) :: UP(Y, POLY FRAC INT)" />
+</form>
+<span id="commSav8-396" class="commSav" >q := leftRankPolynomial()$GCNAALG(FRAC INT, 4, gametes, segregationRates) :: UP(Y, POLY FRAC INT)</span>
+<div id="mathAns8-396" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mi>Y</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mfrac><mn>29</mn><mn>20</mn></mfrac><mo></mo><mo>%</mo><mi>x4</mi></mrow><mo>-</mo><mrow><mfrac><mn>29</mn><mn>20</mn></mfrac><mo></mo><mo>%</mo><mi>x3</mi></mrow><mo>-</mo><mrow><mfrac><mn>29</mn><mn>20</mn></mfrac><mo></mo><mo>%</mo><mi>x2</mi></mrow><mo>-</mo><mrow><mfrac><mn>29</mn><mn>20</mn></mfrac><mo></mo><mo>%</mo><mi>x1</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mi>Y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mtable><mtr><mtd><mo>(</mo><mrow><mfrac><mn>9</mn><mn>20</mn></mfrac><mo></mo><mrow><mo>%</mo><msup><mi>x4</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mfrac><mn>9</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x3</mi></mrow><mo>+</mo><mrow><mfrac><mn>9</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x2</mi></mrow><mo>+</mo><mrow><mfrac><mn>9</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x1</mi></mrow><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>x4</mi></mrow><mo>+</mo><mo>.</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>9</mn><mn>20</mn></mfrac><mo></mo><mrow><mo>%</mo><msup><mi>x3</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mfrac><mn>9</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x2</mi></mrow><mo>+</mo><mrow><mfrac><mn>9</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x1</mi></mrow><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>x3</mi></mrow><mo>+</mo><mrow><mfrac><mn>9</mn><mn>20</mn></mfrac><mo></mo><mrow><mo>%</mo><msup><mi>x2</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>.</mo><mrow><mfrac><mn>9</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x1</mi><mo></mo><mo>%</mo><mi>x2</mi></mrow><mo>+</mo><mrow><mfrac><mn>9</mn><mn>20</mn></mfrac><mo></mo><mrow><mo>%</mo><msup><mi>x1</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mtd></mtr></mtable><mo>)</mo><mo></mo><mi>Y</mi></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(Y,Polynomial Fraction Integer)
+</div>
+
+
+
+
+<p>Because the coefficient  <math xmlns="&mathml;" mathsize="big"><mstyle><mfrac><mn>9</mn><mn>20</mn></mfrac></mstyle></math> has absolute value less than 1,
+all distributions do converge, by a theorem of this theory.
+</p>
+
+
+
+
+<div id="spadComm8-397" class="spadComm" >
+<form id="formComm8-397" action="javascript:makeRequest('8-397');" >
+<input id="comm8-397" type="text" class="command" style="width: 18em;" value="factor(q :: POLY FRAC INT) " />
+</form>
+<span id="commSav8-397" class="commSav" >factor(q :: POLY FRAC INT) </span>
+<div id="mathAns8-397" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>(</mo><mi>Y</mi><mo>-</mo><mo>%</mo><mi>x4</mi><mo>-</mo><mo>%</mo><mi>x3</mi><mo>-</mo><mo>%</mo><mi>x2</mi><mo>-</mo><mo>%</mo><mi>x1</mi><mo>)</mo></mrow><mo>*</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mi>Y</mi><mo>-</mo><mrow><mfrac><mn>9</mn><mn>20</mn></mfrac><mo></mo><mo>%</mo><mi>x4</mi></mrow><mo>-</mo><mrow><mfrac><mn>9</mn><mn>20</mn></mfrac><mo></mo><mo>%</mo><mi>x3</mi></mrow><mo>-</mo><mrow><mfrac><mn>9</mn><mn>20</mn></mfrac><mo></mo><mo>%</mo><mi>x2</mi></mrow><mo>-</mo><mrow><mfrac><mn>9</mn><mn>20</mn></mfrac><mo></mo><mo>%</mo><mi>x1</mi></mrow><mo>)</mo></mrow><mo></mo><mi>Y</mi></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Fraction Integer
+</div>
+
+
+
+<p>The second question is answered by searching for idempotents in the algebra.
+</p>
+
+
+
+
+<div id="spadComm8-398" class="spadComm" >
+<form id="formComm8-398" action="javascript:makeRequest('8-398');" >
+<input id="comm8-398" type="text" class="command" style="width: 54em;" value="cI := conditionsForIdempotents()$GCNAALG(FRAC INT, 4, gametes, segregationRates) " />
+</form>
+<span id="commSav8-398" class="commSav" >cI := conditionsForIdempotents()$GCNAALG(FRAC INT, 4, gametes, segregationRates) </span>
+<div id="mathAns8-398" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mrow><mfrac><mn>9</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x1</mi><mo></mo><mo>%</mo><mi>x4</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x2</mi></mrow><mo>+</mo><mo>%</mo><mi>x1</mi><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>x3</mi></mrow><mo>+</mo><mrow><mo>%</mo><mi>x1</mi><mo></mo><mo>%</mo><mi>x2</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>x1</mi><mn>2</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>x1</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo>(</mo><mo>%</mo><mi>x2</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x1</mi></mrow><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>x4</mi></mrow><mo>+</mo><mrow><mfrac><mn>9</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x2</mi><mo></mo><mo>%</mo><mi>x3</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>x2</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>%</mo><mi>x1</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>x2</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo>(</mo><mo>%</mo><mi>x3</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x1</mi></mrow><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>x4</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>x3</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mfrac><mn>9</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x2</mi></mrow><mo>+</mo><mo>%</mo><mi>x1</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>x3</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>%</mo><msup><mi>x4</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>%</mo><mi>x3</mi><mo>+</mo><mo>%</mo><mi>x2</mi><mo>+</mo><mrow><mfrac><mn>9</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x1</mi></mrow><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>x4</mi></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mo></mo><mo>%</mo><mi>x2</mi><mo></mo><mo>%</mo><mi>x3</mi></mrow></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Fraction Integer
+</div>
+
+
+
+<p>Solve these equations and look at the first solution.
+</p>
+
+
+
+
+<div id="spadComm8-399" class="spadComm" >
+<form id="formComm8-399" action="javascript:makeRequest('8-399');" >
+<input id="comm8-399" type="text" class="command" style="width: 18em;" value="gbs:= groebnerFactorize cI" />
+</form>
+<span id="commSav8-399" class="commSav" >gbs:= groebnerFactorize cI</span>
+<div id="mathAns8-399" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Polynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-400" class="spadComm" >
+<form id="formComm8-400" action="javascript:makeRequest('8-400');" >
+<input id="comm8-400" type="text" class="command" style="width: 4em;" value="gbs.1" />
+</form>
+<span id="commSav8-400" class="commSav" >gbs.1</span>
+<div id="mathAns8-400" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>x4</mi><mo>+</mo><mo>%</mo><mi>x3</mi><mo>+</mo><mo>%</mo><mi>x2</mi><mo>+</mo><mo>%</mo><mi>x1</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo>(</mo><mo>%</mo><mi>x2</mi><mo>+</mo><mo>%</mo><mi>x1</mi><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>x3</mi></mrow><mo>+</mo><mrow><mo>%</mo><mi>x1</mi><mo></mo><mo>%</mo><mi>x2</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>x1</mi><mn>2</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>x1</mi></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Fraction Integer
+</div>
+
+
+
+
+<p>Further analysis using the package <span class="teletype">PolynomialIdeals</span> shows that
+there is a two-dimensional variety of equilibrium states and all other
+solutions are contained in it.
+</p>
+
+
+<p>Choose one equilibrium state by setting two indeterminates to concrete
+values.
+</p>
+
+
+
+
+<div id="spadComm8-401" class="spadComm" >
+<form id="formComm8-401" action="javascript:makeRequest('8-401');" >
+<input id="comm8-401" type="text" class="command" style="width: 33em;" value="sol := solve concat(gbs.1,[%x1-1/10,%x2-1/10]) " />
+</form>
+<span id="commSav8-401" class="commSav" >sol := solve concat(gbs.1,[%x1-1/10,%x2-1/10]) </span>
+<div id="mathAns8-401" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mo>%</mo><mi>x4</mi><mo>=</mo><mfrac><mn>2</mn><mn>5</mn></mfrac></mrow><mo>,</mo><mrow><mo>%</mo><mi>x3</mi><mo>=</mo><mfrac><mn>2</mn><mn>5</mn></mfrac></mrow><mo>,</mo><mrow><mo>%</mo><mi>x2</mi><mo>=</mo><mfrac><mn>1</mn><mn>10</mn></mfrac></mrow><mo>,</mo><mrow><mo>%</mo><mi>x1</mi><mo>=</mo><mfrac><mn>1</mn><mn>10</mn></mfrac></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Fraction Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-402" class="spadComm" >
+<form id="formComm8-402" action="javascript:makeRequest('8-402');" >
+<input id="comm8-402" type="text" class="command" style="width: 42em;" value="e : A := represents reverse (map(rhs, sol.1) :: List FRAC INT) " />
+</form>
+<span id="commSav8-402" class="commSav" >e : A := represents reverse (map(rhs, sol.1) :: List FRAC INT) </span>
+<div id="mathAns8-402" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>2</mn><mn>5</mn></mfrac><mo></mo><mi>ab</mi></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>5</mn></mfrac><mo></mo><mi>aB</mi></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mo></mo><mi>Ab</mi></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mo></mo><mi>AB</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+AlgebraGivenByStructuralConstants(Fraction Integer,4,[AB,Ab,aB,ab],
+[MATRIX,MATRIX,MATRIX,MATRIX])
+</div>
+
+
+
+<p>Verify the result.
+</p>
+
+
+
+
+<div id="spadComm8-403" class="spadComm" >
+<form id="formComm8-403" action="javascript:makeRequest('8-403');" >
+<input id="comm8-403" type="text" class="command" style="width: 4em;" value="e*e-e " />
+</form>
+<span id="commSav8-403" class="commSav" >e*e-e </span>
+<div id="mathAns8-403" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+AlgebraGivenByStructuralConstants(Fraction Integer,4,[AB,Ab,aB,ab],
+[MATRIX,MATRIX,MATRIX,MATRIX])
+</div>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.13.xhtml" style="margin-right: 10px;">Previous Section 8.13 Computation of Galois Groups</a><a href="section-9.1.xhtml" style="margin-right: 10px;">Next Section 9.1  AssociationList</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.2.xhtml
new file mode 100644
index 0000000..e7b1bc3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.2.xhtml
@@ -0,0 +1,693 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.1.xhtml" style="margin-right: 10px;">Previous Section 8.1 Numeric Functions</a><a href="section-8.3.xhtml" style="margin-right: 10px;">Next Section 8.3 Manipulating Symbolic Roots of a Polynomial</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.2">
+<h2 class="sectiontitle">8.2  Polynomial Factorization</h2>
+
+
+<a name="ugProblemFactor" class="label"/>
+
+
+
+<p>The Axiom polynomial factorization
+<span class="index">polynomial:factorization</span><a name="chapter-8-51"/>
+facilities are available for all polynomial types and a wide variety of
+coefficient domains.
+<span class="index">factorization</span><a name="chapter-8-52"/>
+Here are some examples.
+</p>
+
+
+
+<a name="subsec-8.2.1"/>
+<div class="subsection"  id="subsec-8.2.1">
+<h3 class="subsectitle">8.2.1  Integer and Rational Number Coefficients</h3>
+
+
+<a name="ugProblemFactorIntRat" class="label"/>
+
+
+<p>Polynomials with integer
+<span class="index">polynomial:factorization:integer coefficients</span><a name="chapter-8-53"/>
+coefficients can be be factored.
+</p>
+
+
+
+
+<div id="spadComm8-26" class="spadComm" >
+<form id="formComm8-26" action="javascript:makeRequest('8-26');" >
+<input id="comm8-26" type="text" class="command" style="width: 29em;" value="v := (4*x**3+2*y**2+1)*(12*x**5-x**3*y+12) " />
+</form>
+<span id="commSav8-26" class="commSav" >v := (4*x**3+2*y**2+1)*(12*x**5-x**3*y+12) </span>
+<div id="mathAns8-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo></mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>24</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mn>24</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>4</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>)</mo></mrow><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mn>48</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>48</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>12</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-27" class="spadComm" >
+<form id="formComm8-27" action="javascript:makeRequest('8-27');" >
+<input id="comm8-27" type="text" class="command" style="width: 6em;" value="factor v " />
+</form>
+<span id="commSav8-27" class="commSav" >factor v </span>
+<div id="mathAns8-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mrow><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo></mo><mi>y</mi></mrow><mo>-</mo><mrow><mn>12</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mn>12</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Integer
+</div>
+
+
+
+<p>Also, Axiom can factor polynomials with
+<span class="index">polynomial:factorization:rational number coefficients</span><a name="chapter-8-54"/>
+rational number coefficients.
+</p>
+
+
+
+
+<div id="spadComm8-28" class="spadComm" >
+<form id="formComm8-28" action="javascript:makeRequest('8-28');" >
+<input id="comm8-28" type="text" class="command" style="width: 34em;" value="w := (4*x**3+(2/3)*x**2+1)*(12*x**5-(1/2)*x**3+12) " />
+</form>
+<span id="commSav8-28" class="commSav" >w := (4*x**3+(2/3)*x**2+1)*(12*x**5-(1/2)*x**3+12) </span>
+<div id="mathAns8-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>48</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>35</mn><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>95</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>12</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-29" class="spadComm" >
+<form id="formComm8-29" action="javascript:makeRequest('8-29');" >
+<input id="comm8-29" type="text" class="command" style="width: 6em;" value="factor w " />
+</form>
+<span id="commSav8-29" class="commSav" >factor w </span>
+<div id="mathAns8-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>48</mn><mo></mo><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>4</mn></mfrac><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Fraction Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.2.2"/>
+<div class="subsection"  id="subsec-8.2.2">
+<h3 class="subsectitle">8.2.2  Finite Field Coefficients</h3>
+
+
+<a name="ugProblemFactorFF" class="label"/>
+
+
+<p>Polynomials with coefficients in a finite field
+<span class="index">polynomial:factorization:finite field coefficients</span><a name="chapter-8-55"/>
+can be also be factored.
+<span class="index">finite field:factoring polynomial with coefficients in</span><a name="chapter-8-56"/>
+</p>
+
+
+
+
+<div id="spadComm8-30" class="spadComm" >
+<form id="formComm8-30" action="javascript:makeRequest('8-30');" >
+<input id="comm8-30" type="text" class="command" style="width: 28em;" value="u : POLY(PF(19)) :=3*x**4+2*x**2+15*x+18 " />
+</form>
+<span id="commSav8-30" class="commSav" >u : POLY(PF(19)) :=3*x**4+2*x**2+15*x+18 </span>
+<div id="mathAns8-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>18</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial PrimeField 19
+</div>
+
+
+
+<p>These include the integers mod  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>, where  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> is prime, and
+extensions of these fields.
+</p>
+
+
+
+
+<div id="spadComm8-31" class="spadComm" >
+<form id="formComm8-31" action="javascript:makeRequest('8-31');" >
+<input id="comm8-31" type="text" class="command" style="width: 6em;" value="factor u " />
+</form>
+<span id="commSav8-31" class="commSav" >factor u </span>
+<div id="mathAns8-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>18</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>8</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>13</mn><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial PrimeField 19
+</div>
+
+
+
+<p>Convert this to have coefficients in the finite
+field with  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>19</mn><mn>3</mn></msup></mrow></mstyle></math> elements.
+See <a href="section-8.11.xhtml#ugProblemFinite" class="ref" >ugProblemFinite</a>  
+for more information about finite fields.
+</p>
+
+
+
+
+<div id="spadComm8-32" class="spadComm" >
+<form id="formComm8-32" action="javascript:makeRequest('8-32');" >
+<input id="comm8-32" type="text" class="command" style="width: 21em;" value="factor(u :: POLY FFX(PF 19,3)) " />
+</form>
+<span id="commSav8-32" class="commSav" >factor(u :: POLY FFX(PF 19,3)) </span>
+<div id="mathAns8-32" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>18</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mrow><mn>5</mn><mo></mo><mrow><mo>%</mo><msup><mi>I</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mo>%</mo><mi>I</mi></mrow><mo>+</mo><mn>13</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mrow><mn>16</mn><mo></mo><mrow><mo>%</mo><msup><mi>I</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>14</mn><mo></mo><mo>%</mo><mi>I</mi></mrow><mo>+</mo><mn>13</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mrow><mn>17</mn><mo></mo><mrow><mo>%</mo><msup><mi>I</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mo>%</mo><mi>I</mi></mrow><mo>+</mo><mn>13</mn><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial FiniteFieldExtension(PrimeField 19,3)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.2.3"/>
+<div class="subsection"  id="subsec-8.2.3">
+<h3 class="subsectitle">8.2.3  Simple Algebraic Extension Field Coefficients</h3>
+
+
+<a name="ugProblemFactorAlg" class="label"/>
+
+
+<p>Polynomials with coefficients in simple algebraic extensions
+<span class="index">polynomial:factorization:algebraic extension field coefficients</span><a name="chapter-8-57"/>
+of the rational numbers can be factored.
+<span class="index">algebraic number</span><a name="chapter-8-58"/>
+<span class="index">number:algebraic</span><a name="chapter-8-59"/>
+</p>
+
+
+<p>Here,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>aa</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>bb</mi></mstyle></math> are symbolic roots of polynomials.
+</p>
+
+
+
+
+<div id="spadComm8-33" class="spadComm" >
+<form id="formComm8-33" action="javascript:makeRequest('8-33');" >
+<input id="comm8-33" type="text" class="command" style="width: 17em;" value="aa := rootOf(aa**2+aa+1) " />
+</form>
+<span id="commSav8-33" class="commSav" >aa := rootOf(aa**2+aa+1) </span>
+<div id="mathAns8-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>aa</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm8-34" class="spadComm" >
+<form id="formComm8-34" action="javascript:makeRequest('8-34');" >
+<input id="comm8-34" type="text" class="command" style="width: 31em;" value="p:=(x**3+aa**2*x+y)*(aa*x**2+aa*x+aa*y**2)**2 " />
+</form>
+<span id="commSav8-34" class="commSav" >p:=(x**3+aa**2*x+y)*(aa*x**2+aa*x+aa*y**2)**2 </span>
+<div id="mathAns8-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mi>aa</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mo>-</mo><mi>aa</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>aa</mi><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mo>-</mo><mi>aa</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mi>aa</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo></mo><mi>y</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mi>aa</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>aa</mi><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial AlgebraicNumber
+</div>
+
+
+
+<p>Note that the second argument to factor can be a list of
+algebraic extensions to factor over.
+</p>
+
+
+
+
+<div id="spadComm8-35" class="spadComm" >
+<form id="formComm8-35" action="javascript:makeRequest('8-35');" >
+<input id="comm8-35" type="text" class="command" style="width: 10em;" value="factor(p,[aa]) " />
+</form>
+<span id="commSav8-35" class="commSav" >factor(p,[aa]) </span>
+<div id="mathAns8-35" ></div>
+</div>
+
+
+
+<p><!-- Note: this answer differs from the book but is equivalent. -->
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mo>-</mo><mi>aa</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>y</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mi>aa</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msup><mrow><mo>(</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial AlgebraicNumber
+</div>
+
+
+
+<p>This factors  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mo>*</mo><mn>2</mn><mo>+</mo><mn>3</mn></mrow></mstyle></math> over the integers.
+</p>
+
+
+
+
+<div id="spadComm8-36" class="spadComm" >
+<form id="formComm8-36" action="javascript:makeRequest('8-36');" >
+<input id="comm8-36" type="text" class="command" style="width: 10em;" value="factor(x**2+3)" />
+</form>
+<span id="commSav8-36" class="commSav" >factor(x**2+3)</span>
+<div id="mathAns8-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Integer
+</div>
+
+
+
+<p>Factor the same polynomial over the field obtained by adjoining
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>aa</mi></mstyle></math> to the rational numbers.
+</p>
+
+
+
+
+<div id="spadComm8-37" class="spadComm" >
+<form id="formComm8-37" action="javascript:makeRequest('8-37');" >
+<input id="comm8-37" type="text" class="command" style="width: 14em;" value="factor(x**2+3,[aa]) " />
+</form>
+<span id="commSav8-37" class="commSav" >factor(x**2+3,[aa]) </span>
+<div id="mathAns8-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi></mrow><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial AlgebraicNumber
+</div>
+
+
+
+<p>Factor  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mo>*</mo><mn>6</mn><mo>+</mo><mn>108</mn></mrow></mstyle></math> over the same field.
+</p>
+
+
+
+
+<div id="spadComm8-38" class="spadComm" >
+<form id="formComm8-38" action="javascript:makeRequest('8-38');" >
+<input id="comm8-38" type="text" class="command" style="width: 15em;" value="factor(x**6+108,[aa]) " />
+</form>
+<span id="commSav8-38" class="commSav" >factor(x**6+108,[aa]) </span>
+<div id="mathAns8-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>12</mn><mo></mo><mi>aa</mi></mrow><mo>-</mo><mn>6</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>12</mn><mo></mo><mi>aa</mi></mrow><mo>+</mo><mn>6</mn><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm8-39" class="spadComm" >
+<form id="formComm8-39" action="javascript:makeRequest('8-39');" >
+<input id="comm8-39" type="text" class="command" style="width: 14em;" value="bb:=rootOf(bb**3-2) " />
+</form>
+<span id="commSav8-39" class="commSav" >bb:=rootOf(bb**3-2) </span>
+<div id="mathAns8-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>bb</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm8-40" class="spadComm" >
+<form id="formComm8-40" action="javascript:makeRequest('8-40');" >
+<input id="comm8-40" type="text" class="command" style="width: 15em;" value="factor(x**6+108,[bb]) " />
+</form>
+<span id="commSav8-40" class="commSav" >factor(x**6+108,[bb]) </span>
+<div id="mathAns8-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mi>bb</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>bb</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>bb</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mi>bb</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>bb</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial AlgebraicNumber
+</div>
+
+
+
+<p>Factor again over the field obtained by adjoining both  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>aa</mi></mstyle></math>
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>bb</mi></mstyle></math> to the rational numbers.
+</p>
+
+
+
+
+<div id="spadComm8-41" class="spadComm" >
+<form id="formComm8-41" action="javascript:makeRequest('8-41');" >
+<input id="comm8-41" type="text" class="command" style="width: 17em;" value="factor(x**6+108,[aa,bb]) " />
+</form>
+<span id="commSav8-41" class="commSav" >factor(x**6+108,[aa,bb]) </span>
+<div id="mathAns8-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi></mrow><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mi>bb</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mi>aa</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mi>bb</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mi>aa</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mi>bb</mi></mrow><mo>)</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mrow><mrow><mo>(</mo><mi>aa</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mi>bb</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mrow><mrow><mo>(</mo><mi>aa</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mi>bb</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mo></mo><mi>aa</mi></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mi>bb</mi></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial AlgebraicNumber
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.2.4"/>
+<div class="subsection"  id="subsec-8.2.4">
+<h3 class="subsectitle">8.2.4  Factoring Rational Functions</h3>
+
+
+<a name="ugProblemFactorRatFun" class="label"/>
+
+
+<p>Since fractions of polynomials form a field, every element (other than zero)
+<span class="index">rational function:factoring</span><a name="chapter-8-60"/>
+divides any other, so there is no useful notion of irreducible factors.
+Thus the <span style="font-weight: bold;"> factor</span> operation is not very useful for fractions
+of polynomials.
+</p>
+
+
+<p>There is, instead, a specific operation <span style="font-weight: bold;"> factorFraction</span>
+that separately factors the numerator and denominator and returns
+a fraction of the factored results.
+</p>
+
+
+
+
+<div id="spadComm8-42" class="spadComm" >
+<form id="formComm8-42" action="javascript:makeRequest('8-42');" >
+<input id="comm8-42" type="text" class="command" style="width: 22em;" value="factorFraction((x**2-4)/(y**2-4))" />
+</form>
+<span id="commSav8-42" class="commSav" >factorFraction((x**2-4)/(y**2-4))</span>
+<div id="mathAns8-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>y</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Factored Polynomial Integer
+</div>
+
+
+
+<p>You can also use <span style="font-weight: bold;"> map</span>. This expression
+applies the <span style="font-weight: bold;"> factor</span> operation
+to the numerator and denominator.
+</p>
+
+
+
+
+<div id="spadComm8-43" class="spadComm" >
+<form id="formComm8-43" action="javascript:makeRequest('8-43');" >
+<input id="comm8-43" type="text" class="command" style="width: 20em;" value="map(factor,(x**2-4)/(y**2-4))" />
+</form>
+<span id="commSav8-43" class="commSav" >map(factor,(x**2-4)/(y**2-4))</span>
+<div id="mathAns8-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mrow><mo>(</mo><mi>y</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Factored Polynomial Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.1.xhtml" style="margin-right: 10px;">Previous Section 8.1 Numeric Functions</a><a href="section-8.3.xhtml" style="margin-right: 10px;">Next Section 8.3 Manipulating Symbolic Roots of a Polynomial</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.3.xhtml
new file mode 100644
index 0000000..f940334
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.3.xhtml
@@ -0,0 +1,683 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.2.xhtml" style="margin-right: 10px;">Previous Section 8.2 Polynomial Factorization</a><a href="section-8.4.xhtml" style="margin-right: 10px;">Next Section 8.4 Computation of Eigenvalues and Eigenvectors</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.3">
+<h2 class="sectiontitle">8.3  Manipulating Symbolic Roots of a Polynomial</h2>
+
+
+<a name="ugProblemSymRoot" class="label"/>
+
+
+
+<p>In this section we show you how to work with one root or all roots
+<span class="index">root:symbolic</span><a name="chapter-8-61"/>
+of a polynomial.
+These roots are represented symbolically (as opposed to being
+numeric approximations).
+See <a href="section-8.5.xhtml#ugxProblemOnePol" class="ref" >ugxProblemOnePol</a>  and 
+<a href="section-8.5.xhtml#ugxProblemPolSys" class="ref" >ugxProblemPolSys</a>  for
+information about solving for the roots of one or more
+polynomials.
+</p>
+
+
+
+<a name="subsec-8.3.1"/>
+<div class="subsection"  id="subsec-8.3.1">
+<h3 class="subsectitle">8.3.1  Using a Single Root of a Polynomial</h3>
+
+
+<a name="ugxProblemSymRootOne" class="label"/>
+
+
+<p>Use <span style="font-weight: bold;"> rootOf</span> to get a symbolic root of a polynomial:
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>rootOf</mi><mo>(</mo><mi>p</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> returns a root of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>This creates an algebraic number  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>.
+<span class="index">algebraic number</span><a name="chapter-8-62"/>
+<span class="index">number:algebraic</span><a name="chapter-8-63"/>
+</p>
+
+
+
+
+<div id="spadComm8-44" class="spadComm" >
+<form id="formComm8-44" action="javascript:makeRequest('8-44');" >
+<input id="comm8-44" type="text" class="command" style="width: 15em;" value="a := rootOf(a**4+1,a) " />
+</form>
+<span id="commSav8-44" class="commSav" >a := rootOf(a**4+1,a) </span>
+<div id="mathAns8-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>a</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>To find the algebraic relation that defines  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math>,
+use <span style="font-weight: bold;"> definingPolynomial</span>.
+</p>
+
+
+
+
+<div id="spadComm8-45" class="spadComm" >
+<form id="formComm8-45" action="javascript:makeRequest('8-45');" >
+<input id="comm8-45" type="text" class="command" style="width: 14em;" value="definingPolynomial a " />
+</form>
+<span id="commSav8-45" class="commSav" >definingPolynomial a </span>
+<div id="mathAns8-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>You can use  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> in any further expression,
+including a nested <span style="font-weight: bold;"> rootOf</span>.
+</p>
+
+
+
+
+<div id="spadComm8-46" class="spadComm" >
+<form id="formComm8-46" action="javascript:makeRequest('8-46');" >
+<input id="comm8-46" type="text" class="command" style="width: 16em;" value="b := rootOf(b**2-a-1,b) " />
+</form>
+<span id="commSav8-46" class="commSav" >b := rootOf(b**2-a-1,b) </span>
+<div id="mathAns8-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Higher powers of the roots are automatically reduced during
+calculations.
+</p>
+
+
+
+
+<div id="spadComm8-47" class="spadComm" >
+<form id="formComm8-47" action="javascript:makeRequest('8-47');" >
+<input id="comm8-47" type="text" class="command" style="width: 4em;" value="a + b " />
+</form>
+<span id="commSav8-47" class="commSav" >a + b </span>
+<div id="mathAns8-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>b</mi><mo>+</mo><mi>a</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-48" class="spadComm" >
+<form id="formComm8-48" action="javascript:makeRequest('8-48');" >
+<input id="comm8-48" type="text" class="command" style="width: 6em;" value="% ** 5 " />
+</form>
+<span id="commSav8-48" class="commSav" >% ** 5 </span>
+<div id="mathAns8-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>11</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>a</mi></mrow><mo>-</mo><mn>4</mn><mo>)</mo></mrow><mo></mo><mi>b</mi></mrow><mo>+</mo><mrow><mn>15</mn><mo></mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow><mo>-</mo><mn>10</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>The operation <span style="font-weight: bold;"> zeroOf</span> is similar to <span style="font-weight: bold;"> rootOf</span>,
+except that it may express the root using radicals in some cases.
+<span class="index">radical</span><a name="chapter-8-64"/>
+</p>
+
+
+
+
+<div id="spadComm8-49" class="spadComm" >
+<form id="formComm8-49" action="javascript:makeRequest('8-49');" >
+<input id="comm8-49" type="text" class="command" style="width: 12em;" value="rootOf(c**2+c+1,c)" />
+</form>
+<span id="commSav8-49" class="commSav" >rootOf(c**2+c+1,c)</span>
+<div id="mathAns8-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>c</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-50" class="spadComm" >
+<form id="formComm8-50" action="javascript:makeRequest('8-50');" >
+<input id="comm8-50" type="text" class="command" style="width: 12em;" value="zeroOf(d**2+d+1,d)" />
+</form>
+<span id="commSav8-50" class="commSav" >zeroOf(d**2+d+1,d)</span>
+<div id="mathAns8-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><msqrt><mrow><mo>-</mo><mn>3</mn></mrow></msqrt></mrow><mo>-</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-51" class="spadComm" >
+<form id="formComm8-51" action="javascript:makeRequest('8-51');" >
+<input id="comm8-51" type="text" class="command" style="width: 11em;" value="rootOf(e**5-2,e)" />
+</form>
+<span id="commSav8-51" class="commSav" >rootOf(e**5-2,e)</span>
+<div id="mathAns8-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>e</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-52" class="spadComm" >
+<form id="formComm8-52" action="javascript:makeRequest('8-52');" >
+<input id="comm8-52" type="text" class="command" style="width: 11em;" value="zeroOf(f**5-2,f)" />
+</form>
+<span id="commSav8-52" class="commSav" >zeroOf(f**5-2,f)</span>
+<div id="mathAns8-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mroot><mn>2</mn><mn>5</mn></mroot></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.3.2"/>
+<div class="subsection"  id="subsec-8.3.2">
+<h3 class="subsectitle">8.3.2  Using All Roots of a Polynomial</h3>
+
+
+<a name="ugxProblemSymRootAll" class="label"/>
+
+
+<p>Use <span style="font-weight: bold;"> rootsOf</span> to get all symbolic roots of a polynomial:
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>rootsOf</mi><mo>(</mo><mi>p</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> returns a
+list of all the roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+If  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>p</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> has a multiple root of order  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>, then that root
+<span class="index">root:multiple</span><a name="chapter-8-65"/>
+appears  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> times in the list. Make sure these variables are x0 <span class="italic">etc.</span>
+</p>
+
+
+<p>Compute all the roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mo>*</mo><mn>4</mn><mo>+</mo><mn>1</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-53" class="spadComm" >
+<form id="formComm8-53" action="javascript:makeRequest('8-53');" >
+<input id="comm8-53" type="text" class="command" style="width: 16em;" value="l := rootsOf(x**4+1,x) " />
+</form>
+<span id="commSav8-53" class="commSav" >l := rootsOf(x**4+1,x) </span>
+<div id="mathAns8-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>%</mo><mi>x0</mi><mo>,</mo><mrow><mo>%</mo><mi>x0</mi><mo></mo><mo>%</mo><mi>x1</mi></mrow><mo>,</mo><mo>-</mo><mo>%</mo><mi>x0</mi><mo>,</mo><mo>-</mo><mrow><mo>%</mo><mi>x0</mi><mo></mo><mo>%</mo><mi>x1</mi></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Expression Integer
+</div>
+
+
+
+<p>As a side effect, the variables  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>x0</mi><mo>,</mo><mo>%</mo><mi>x1</mi></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>x2</mi></mrow></mstyle></math> are bound
+to the first three roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mo>*</mo><mn>4</mn><mo>+</mo><mn>1</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-54" class="spadComm" >
+<form id="formComm8-54" action="javascript:makeRequest('8-54');" >
+<input id="comm8-54" type="text" class="command" style="width: 6em;" value="%x0**5 " />
+</form>
+<span id="commSav8-54" class="commSav" >%x0**5 </span>
+<div id="mathAns8-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mo>%</mo><mi>x0</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Although they all satisfy  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mo>*</mo><mn>4</mn><mo>+</mo><mn>1</mn><mo>=</mo><mn>0</mn><mo>,</mo><mo>%</mo><mi>x0</mi><mo>,</mo><mo>%</mo><mi>x1</mi><mo>,</mo></mrow></mstyle></math>
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>x2</mi></mrow></mstyle></math> are different algebraic numbers.
+To find the algebraic relation that defines each of them,
+use <span style="font-weight: bold;"> definingPolynomial</span>.
+</p>
+
+
+
+
+<div id="spadComm8-55" class="spadComm" >
+<form id="formComm8-55" action="javascript:makeRequest('8-55');" >
+<input id="comm8-55" type="text" class="command" style="width: 16em;" value="definingPolynomial %x0 " />
+</form>
+<span id="commSav8-55" class="commSav" >definingPolynomial %x0 </span>
+<div id="mathAns8-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><msup><mi>x0</mi><mn>4</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-56" class="spadComm" >
+<form id="formComm8-56" action="javascript:makeRequest('8-56');" >
+<input id="comm8-56" type="text" class="command" style="width: 16em;" value="definingPolynomial %x1 " />
+</form>
+<span id="commSav8-56" class="commSav" >definingPolynomial %x1 </span>
+<div id="mathAns8-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><msup><mi>x1</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-57" class="spadComm" >
+<form id="formComm8-57" action="javascript:makeRequest('8-57');" >
+<input id="comm8-57" type="text" class="command" style="width: 16em;" value="definingPolynomial %x2 " />
+</form>
+<span id="commSav8-57" class="commSav" >definingPolynomial %x2 </span>
+<div id="mathAns8-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mo>%</mo><mi>x2</mi><mo>+</mo><mo>%</mo><mo>%</mo><mi>var</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>We can check that the sum and product of the roots of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>*</mo><mo>*</mo><mn>4</mn><mo>+</mo><mn>1</mn></mrow></mstyle></math> are
+its trace and norm.
+</p>
+
+
+
+
+<div id="spadComm8-58" class="spadComm" >
+<form id="formComm8-58" action="javascript:makeRequest('8-58');" >
+<input id="comm8-58" type="text" class="command" style="width: 10em;" value="x3 := last l  " />
+</form>
+<span id="commSav8-58" class="commSav" >x3 := last l  </span>
+<div id="mathAns8-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mo>%</mo><mi>x0</mi><mo></mo><mo>%</mo><mi>x1</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-59" class="spadComm" >
+<form id="formComm8-59" action="javascript:makeRequest('8-59');" >
+<input id="comm8-59" type="text" class="command" style="width: 16em;" value="%x0 + %x1 + %x2 + x3 " />
+</form>
+<span id="commSav8-59" class="commSav" >%x0 + %x1 + %x2 + x3 </span>
+<div id="mathAns8-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mo>-</mo><mo>%</mo><mi>x0</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mo>%</mo><mi>x1</mi></mrow><mo>+</mo><mo>%</mo><mi>x0</mi><mo>+</mo><mo>%</mo><mi>x2</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-60" class="spadComm" >
+<form id="formComm8-60" action="javascript:makeRequest('8-60');" >
+<input id="comm8-60" type="text" class="command" style="width: 16em;" value="%x0 * %x1 * %x2 * x3 " />
+</form>
+<span id="commSav8-60" class="commSav" >%x0 * %x1 * %x2 * x3 </span>
+<div id="mathAns8-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><mi>x2</mi><mo></mo><mrow><mo>%</mo><msup><mi>x0</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Corresponding to the pair of operations
+<span style="font-weight: bold;"> rootOf</span>/<span style="font-weight: bold;"> zeroOf</span> in
+<a href="section-8.5.xhtml#ugxProblemOnePol" class="ref" >ugxProblemOnePol</a> , there is
+an operation <span style="font-weight: bold;"> zerosOf</span> that, like <span style="font-weight: bold;"> rootsOf</span>,
+computes all the roots
+of a given polynomial, but which expresses some of them in terms of
+radicals.
+</p>
+
+
+
+
+<div id="spadComm8-61" class="spadComm" >
+<form id="formComm8-61" action="javascript:makeRequest('8-61');" >
+<input id="comm8-61" type="text" class="command" style="width: 12em;" value="zerosOf(y**4+1,y) " />
+</form>
+<span id="commSav8-61" class="commSav" >zerosOf(y**4+1,y) </span>
+<div id="mathAns8-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mfrac><mrow><mrow><msqrt><mrow><mo>-</mo><mn>1</mn></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac><mo>,</mo><mfrac><mrow><mrow><msqrt><mrow><mo>-</mo><mn>1</mn></mrow></msqrt></mrow><mo>-</mo><mn>1</mn></mrow><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac><mo>,</mo><mfrac><mrow><mo>-</mo><mrow><msqrt><mrow><mo>-</mo><mn>1</mn></mrow></msqrt></mrow><mo>-</mo><mn>1</mn></mrow><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac><mo>,</mo><mfrac><mrow><mo>-</mo><mrow><msqrt><mrow><mo>-</mo><mn>1</mn></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Expression Integer
+</div>
+
+
+
+<p>As you see, only one implicit algebraic number was created
+( <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>y1</mi></mrow></mstyle></math>), and its defining equation is this.
+The other three roots are expressed in radicals.
+</p>
+
+
+
+
+<div id="spadComm8-62" class="spadComm" >
+<form id="formComm8-62" action="javascript:makeRequest('8-62');" >
+<input id="comm8-62" type="text" class="command" style="width: 16em;" value="definingPolynomial %y1 " />
+</form>
+<span id="commSav8-62" class="commSav" >definingPolynomial %y1 </span>
+<div id="mathAns8-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>%</mo><mo>%</mo><msup><mi>var</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.2.xhtml" style="margin-right: 10px;">Previous Section 8.2 Polynomial Factorization</a><a href="section-8.4.xhtml" style="margin-right: 10px;">Next Section 8.4 Computation of Eigenvalues and Eigenvectors</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.4.xhtml
new file mode 100644
index 0000000..511de7e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.4.xhtml
@@ -0,0 +1,431 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.3.xhtml" style="margin-right: 10px;">Previous Section 8.3 Manipulating Symbolic Roots of a Polynomial</a><a href="section-8.5.xhtml" style="margin-right: 10px;">Next Section 8.5 Solution of Linear and Polynomial Equations</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.4">
+<h2 class="sectiontitle">8.4  Computation of Eigenvalues and Eigenvectors</h2>
+
+
+<a name="ugProblemEigen" class="label"/>
+
+
+<p>In this section we show you
+some of Axiom's facilities for computing and
+<span class="index">eigenvalue</span><a name="chapter-8-66"/>
+manipulating eigenvalues and eigenvectors, also called
+<span class="index">eigenvector</span><a name="chapter-8-67"/>
+characteristic values and characteristic vectors,
+<span class="index">characteristic:value</span><a name="chapter-8-68"/>
+respectively.
+<span class="index">characteristic:vector</span><a name="chapter-8-69"/>
+</p>
+
+
+
+<p>Let's first create a matrix with integer entries.
+</p>
+
+
+
+
+<div id="spadComm8-63" class="spadComm" >
+<form id="formComm8-63" action="javascript:makeRequest('8-63');" >
+<input id="comm8-63" type="text" class="command" style="width: 29em;" value="m1 := matrix [ [1,2,1],[2,1,-2],[1,-2,4] ] " />
+</form>
+<span id="commSav8-63" class="commSav" >m1 := matrix [ [1,2,1],[2,1,-2],[1,-2,4] ] </span>
+<div id="mathAns8-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>2</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>2</mn></mtd><mtd><mn>4</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>To get a list of the <span class="italic">rational</span> eigenvalues,
+use the operation <span style="font-weight: bold;"> eigenvalues</span>.
+</p>
+
+
+
+
+<div id="spadComm8-64" class="spadComm" >
+<form id="formComm8-64" action="javascript:makeRequest('8-64');" >
+<input id="comm8-64" type="text" class="command" style="width: 17em;" value="leig := eigenvalues(m1)  " />
+</form>
+<span id="commSav8-64" class="commSav" >leig := eigenvalues(m1)  </span>
+<div id="mathAns8-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>5</mn><mo>,</mo><mrow><mo>(</mo><mo>%</mo><mi>K</mi><mo>&#x007c;</mo><mrow><mrow><mo>%</mo><msup><mi>K</mi><mn>2</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>K</mi><mo>-</mo><mn>5</mn></mrow><mo>)</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Union(Fraction Polynomial Integer,SuchThat(Symbol,Polynomial Integer))
+</div>
+
+
+
+<p>Given an explicit eigenvalue, <span style="font-weight: bold;"> eigenvector</span> computes the eigenvectors
+corresponding to it.
+</p>
+
+
+
+
+<div id="spadComm8-65" class="spadComm" >
+<form id="formComm8-65" action="javascript:makeRequest('8-65');" >
+<input id="comm8-65" type="text" class="command" style="width: 19em;" value="eigenvector(first(leig),m1) " />
+</form>
+<span id="commSav8-65" class="commSav" >eigenvector(first(leig),m1) </span>
+<div id="mathAns8-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Matrix Fraction Polynomial Fraction Integer
+</div>
+
+
+
+<p>The operation <span style="font-weight: bold;"> eigenvectors</span> returns a list of pairs of values and
+vectors. When an eigenvalue is rational, Axiom gives you
+the value explicitly; otherwise, its minimal polynomial is given,
+(the polynomial of lowest degree with the eigenvalues as roots),
+together with a parametric representation of the eigenvector using the
+eigenvalue.
+This means that if you ask Axiom to <span style="font-weight: bold;"> solve</span>
+the minimal polynomial, then you can substitute these roots
+<span class="index">polynomial:minimal</span><a name="chapter-8-70"/>
+into the parametric form of the corresponding eigenvectors.
+<span class="index">minimal polynomial</span><a name="chapter-8-71"/>
+</p>
+
+
+<p>You must be aware that unless an exact eigenvalue has been computed,
+the eigenvector may be badly in error.
+</p>
+
+
+
+
+<div id="spadComm8-66" class="spadComm" >
+<form id="formComm8-66" action="javascript:makeRequest('8-66');" >
+<input id="comm8-66" type="text" class="command" style="width: 12em;" value="eigenvectors(m1) " />
+</form>
+<span id="commSav8-66" class="commSav" >eigenvectors(m1) </span>
+<div id="mathAns8-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>eigval</mi><mo>=</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>eigmult</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>eigvec</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mrow><mi>eigval</mi><mo>=</mo><mrow><mo>(</mo><mo>%</mo><mi>L</mi><mo>&#x007c;</mo><mrow><mrow><mo>%</mo><msup><mi>L</mi><mn>2</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>L</mi><mo>-</mo><mn>5</mn></mrow><mo>)</mo></mrow></mrow><mo>,</mo><mrow><mi>eigmult</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>eigvec</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mo>%</mo><mi>L</mi></mtd></mtr><mtr><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Record(eigval: Union(Fraction Polynomial Integer,SuchThat(Symbol,Polynomial Integer)),eigmult: NonNegativeInteger,eigvec: List Matrix Fraction Polynomial Integer)
+</div>
+
+
+
+<p>Another possibility is to use the operation
+<span style="font-weight: bold;"> radicalEigenvectors</span>
+tries to compute explicitly the eigenvectors
+in terms of radicals.
+<span class="index">radical</span><a name="chapter-8-72"/>
+</p>
+
+
+
+
+<div id="spadComm8-67" class="spadComm" >
+<form id="formComm8-67" action="javascript:makeRequest('8-67');" >
+<input id="comm8-67" type="text" class="command" style="width: 16em;" value="radicalEigenvectors(m1) " />
+</form>
+<span id="commSav8-67" class="commSav" >radicalEigenvectors(m1) </span>
+<div id="mathAns8-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>radval</mi><mo>=</mo><mfrac><mrow><mrow><msqrt><mn>21</mn></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mrow><mo>,</mo><mrow><mi>radmult</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>radvect</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mrow><mrow><msqrt><mn>21</mn></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>radval</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mrow><msqrt><mn>21</mn></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mrow><mo>,</mo><mrow><mi>radmult</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>radvect</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mrow><mo>-</mo><mrow><msqrt><mn>21</mn></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo><mo>,</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>radval</mi><mo>=</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>radmult</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>radvect</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Record(radval: Expression Integer,radmult: Integer,radvect: List Matrix Expression Integer)
+</div>
+
+
+
+<p>Alternatively, Axiom can compute real or complex approximations to the
+<span class="index">approximation</span><a name="chapter-8-73"/>
+eigenvectors and eigenvalues using the operations <span style="font-weight: bold;"> realEigenvectors</span>
+or <span style="font-weight: bold;"> complexEigenvectors</span>.
+They each take an additional argument  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>
+to specify the ``precision'' required.
+<span class="index">precision</span><a name="chapter-8-74"/>
+In the real case, this means that each approximation will be within
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> of the actual
+result.
+In the complex case, this means that each approximation will be within
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> of the actual result
+in each of the real and imaginary parts.
+</p>
+
+
+<p>The precision can be specified as a <span class="teletype">Float</span> if the results are
+desired in floating-point notation, or as <span class="teletype">Fraction Integer</span> if the
+results are to be expressed using rational (or complex rational) numbers.
+</p>
+
+
+
+
+<div id="spadComm8-68" class="spadComm" >
+<form id="formComm8-68" action="javascript:makeRequest('8-68');" >
+<input id="comm8-68" type="text" class="command" style="width: 19em;" value="realEigenvectors(m1,1/1000) " />
+</form>
+<span id="commSav8-68" class="commSav" >realEigenvectors(m1,1/1000) </span>
+<div id="mathAns8-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>outval</mi><mo>=</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>outmult</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>outvect</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>outval</mi><mo>=</mo><mfrac><mn>5717</mn><mn>2048</mn></mfrac></mrow><mo>,</mo><mrow><mi>outmult</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>outvect</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>5717</mn><mn>2048</mn></mfrac></mtd></mtr><mtr><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mrow><mi>outval</mi><mo>=</mo><mo>-</mo><mfrac><mn>3669</mn><mn>2048</mn></mfrac></mrow><mo>,</mo><mrow><mi>outmult</mi><mo>=</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>outvect</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>3669</mn><mn>2048</mn></mfrac></mtd></mtr><mtr><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Record(outval: Fraction Integer,outmult: Integer,outvect: List Matrix Fraction Integer)
+</div>
+
+
+
+<p>If an  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> by  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> matrix has  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> distinct eigenvalues (and
+therefore  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> eigenvectors) the operation <span style="font-weight: bold;"> eigenMatrix</span>
+gives you a matrix of the eigenvectors.
+</p>
+
+
+
+
+<div id="spadComm8-69" class="spadComm" >
+<form id="formComm8-69" action="javascript:makeRequest('8-69');" >
+<input id="comm8-69" type="text" class="command" style="width: 11em;" value="eigenMatrix(m1) " />
+</form>
+<span id="commSav8-69" class="commSav" >eigenMatrix(m1) </span>
+<div id="mathAns8-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mrow><mrow><msqrt><mn>21</mn></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mtd><mtd><mfrac><mrow><mo>-</mo><mrow><msqrt><mn>21</mn></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>2</mn></mtd><mtd><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Matrix Expression Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm8-70" class="spadComm" >
+<form id="formComm8-70" action="javascript:makeRequest('8-70');" >
+<input id="comm8-70" type="text" class="command" style="width: 22em;" value="m2 := matrix [ [-5,-2],[18,7] ] " />
+</form>
+<span id="commSav8-70" class="commSav" >m2 := matrix [ [-5,-2],[18,7] ] </span>
+<div id="mathAns8-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mn>5</mn></mtd><mtd><mo>-</mo><mn>2</mn></mtd></mtr><mtr><mtd><mn>18</mn></mtd><mtd><mn>7</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-71" class="spadComm" >
+<form id="formComm8-71" action="javascript:makeRequest('8-71');" >
+<input id="comm8-71" type="text" class="command" style="width: 11em;" value="eigenMatrix(m2) " />
+</form>
+<span id="commSav8-71" class="commSav" >eigenMatrix(m2) </span>
+<div id="mathAns8-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>If a symmetric matrix
+<span class="index">matrix:symmetric</span><a name="chapter-8-75"/>
+has a basis of orthonormal eigenvectors, then
+<span class="index">basis:orthonormal</span><a name="chapter-8-76"/>
+<span style="font-weight: bold;"> orthonormalBasis</span> computes a list of these vectors.
+<span class="index">orthonormal basis</span><a name="chapter-8-77"/>
+</p>
+
+
+
+
+<div id="spadComm8-72" class="spadComm" >
+<form id="formComm8-72" action="javascript:makeRequest('8-72');" >
+<input id="comm8-72" type="text" class="command" style="width: 20em;" value="m3 := matrix [ [1,2],[2,1] ] " />
+</form>
+<span id="commSav8-72" class="commSav" >m3 := matrix [ [1,2],[2,1] ] </span>
+<div id="mathAns8-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-73" class="spadComm" >
+<form id="formComm8-73" action="javascript:makeRequest('8-73');" >
+<input id="comm8-73" type="text" class="command" style="width: 14em;" value="orthonormalBasis(m3) " />
+</form>
+<span id="commSav8-73" class="commSav" >orthonormalBasis(m3) </span>
+<div id="mathAns8-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>1</mn><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Matrix Expression Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.3.xhtml" style="margin-right: 10px;">Previous Section 8.3 Manipulating Symbolic Roots of a Polynomial</a><a href="section-8.5.xhtml" style="margin-right: 10px;">Next Section 8.5 Solution of Linear and Polynomial Equations</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.5.xhtml
new file mode 100644
index 0000000..e018d38
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.5.xhtml
@@ -0,0 +1,893 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.4.xhtml" style="margin-right: 10px;">Previous Section 8.4 Computation of Eigenvalues and Eigenvectors</a><a href="section-8.6.xhtml" style="margin-right: 10px;">Next Section 8.6 Limits</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.5">
+<h2 class="sectiontitle">8.5  Solution of Linear and Polynomial Equations</h2>
+
+
+<a name="ugProblemLinPolEqn" class="label"/>
+
+
+<p>In this section we discuss the Axiom facilities for solving
+systems of linear equations, finding the roots of polynomials and
+<span class="index">linear equation</span><a name="chapter-8-78"/>
+solving systems of polynomial equations.
+For a discussion of the solution of differential equations, see
+<a href="section-8.10.xhtml#ugProblemDEQ" class="ref" >ugProblemDEQ</a> .
+</p>
+
+
+
+<a name="subsec-8.5.1"/>
+<div class="subsection"  id="subsec-8.5.1">
+<h3 class="subsectitle">8.5.1  Solution of Systems of Linear Equations</h3>
+
+
+<a name="ugxProblemLinSys" class="label"/>
+
+
+<p>You can use the operation <span style="font-weight: bold;"> solve</span> to solve systems of linear equations.
+<span class="index">equation:linear:solving</span><a name="chapter-8-79"/>
+</p>
+
+
+<p>The operation <span style="font-weight: bold;"> solve</span> takes two arguments, the list of equations and the
+list of the unknowns to be solved for.
+A system of linear equations need not have a unique solution.
+</p>
+
+
+<p>To solve the linear system:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>8</mn></mtd></mtr><mtr><mtd><mn>3</mn><mi>x</mi></mtd><mtd><mo>-</mo></mtd><mtd><mn>2</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>2</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>2</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>17</mn></mtd></mtr></mtable></mrow></mstyle></math>
+evaluate this expression.
+</p>
+
+
+
+
+<div id="spadComm8-74" class="spadComm" >
+<form id="formComm8-74" action="javascript:makeRequest('8-74');" >
+<input id="comm8-74" type="text" class="command" style="width: 33em;" value="solve([x+y+z=8,3*x-2*y+z=0,x+2*y+2*z=17],[x,y,z])" />
+</form>
+<span id="commSav8-74" class="commSav" >solve([x+y+z=8,3*x-2*y+z=0,x+2*y+2*z=17],[x,y,z])</span>
+<div id="mathAns8-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>=</mo><mn>7</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Fraction Polynomial Integer
+</div>
+
+
+
+<p>Parameters are given as new variables starting with a percent sign and
+<span class="teletype">%</span> and
+the variables are expressed in terms of the parameters.
+If the system has no solutions then the empty list is returned.
+</p>
+
+
+<p>When you solve the linear system
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>2</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>3</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>2</mn><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>3</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>4</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>3</mn><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>4</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>5</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>2</mn></mtd></mtr></mtable></mrow></mstyle></math>
+with this expression
+you get a solution involving a parameter.
+</p>
+
+
+
+
+<div id="spadComm8-75" class="spadComm" >
+<form id="formComm8-75" action="javascript:makeRequest('8-75');" >
+<input id="comm8-75" type="text" class="command" style="width: 38em;" value="solve([x+2*y+3*z=2,2*x+3*y+4*z=2,3*x+4*y+5*z=2],[x,y,z])" />
+</form>
+<span id="commSav8-75" class="commSav" >solve([x+2*y+3*z=2,2*x+3*y+4*z=2,3*x+4*y+5*z=2],[x,y,z])</span>
+<div id="mathAns8-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mrow><mo>%</mo><mi>Q</mi><mo>-</mo><mn>2</mn></mrow></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mo>%</mo><mi>Q</mi></mrow><mo>+</mo><mn>2</mn></mrow></mrow><mo>,</mo><mrow><mi>z</mi><mo>=</mo><mo>%</mo><mi>Q</mi></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Fraction Polynomial Integer
+</div>
+
+
+
+<p>The system can also be presented as a matrix and a vector.
+The matrix contains the coefficients of the linear equations and
+the vector contains the numbers appearing on the right-hand sides
+of the equations.
+You may input the matrix as a list of rows and the vector as a
+list of its elements.
+</p>
+
+
+<p>To solve the system:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>8</mn></mtd></mtr><mtr><mtd><mn>3</mn><mi>x</mi></mtd><mtd><mo>-</mo></mtd><mtd><mn>2</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>2</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>2</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>17</mn></mtd></mtr></mtable></mrow></mstyle></math>
+in matrix form you would evaluate this expression.
+</p>
+
+
+
+
+<div id="spadComm8-76" class="spadComm" >
+<form id="formComm8-76" action="javascript:makeRequest('8-76');" >
+<input id="comm8-76" type="text" class="command" style="width: 30em;" value="solve([ [1,1,1],[3,-2,1],[1,2,2] ],[8,0,17])" />
+</form>
+<span id="commSav8-76" class="commSav" >solve([ [1,1,1],[3,-2,1],[1,2,2] ],[8,0,17])</span>
+<div id="mathAns8-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mrow><mo>[</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(particular: Union(Vector Fraction Integer,"failed"),
+basis: List Vector Fraction Integer)
+</div>
+
+
+
+<p>The solutions are presented as a <span class="teletype">Record</span> with two
+components: the component <span class="italic">particular</span> contains a particular solution of the given system or
+the item <span class="teletype">"failed"</span> if there are no solutions, the component
+<span class="italic">basis</span> contains a list of vectors that
+are a basis for the space of solutions of the corresponding
+homogeneous system.
+If the system of linear equations does not have a unique solution,
+then the <span class="italic">basis</span> component contains
+non-trivial vectors.
+</p>
+
+
+<p>This happens when you solve the linear system
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>2</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>3</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>2</mn><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>3</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>4</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>3</mn><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>4</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>5</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>2</mn></mtd></mtr></mtable></mrow></mstyle></math>
+with this command.
+</p>
+
+
+
+
+<div id="spadComm8-77" class="spadComm" >
+<form id="formComm8-77" action="javascript:makeRequest('8-77');" >
+<input id="comm8-77" type="text" class="command" style="width: 28em;" value="solve([ [1,2,3],[2,3,4],[3,4,5] ],[2,2,2])" />
+</form>
+<span id="commSav8-77" class="commSav" >solve([ [1,2,3],[2,3,4],[3,4,5] ],[2,2,2])</span>
+<div id="mathAns8-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mrow><mo>[</mo><mo>-</mo><mn>2</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(particular: Union(Vector Fraction Integer,"failed"),
+basis: List Vector Fraction Integer)
+</div>
+
+
+
+
+<p>All solutions of this system are obtained by adding the particular
+solution with a linear combination of the <span class="italic">basis</span> vectors.
+</p>
+
+
+<p>When no solution exists then <span class="teletype">"failed"</span> is returned as the
+<span class="italic">particular</span> component, as follows:
+</p>
+
+
+
+
+<div id="spadComm8-78" class="spadComm" >
+<form id="formComm8-78" action="javascript:makeRequest('8-78');" >
+<input id="comm8-78" type="text" class="command" style="width: 28em;" value="solve([ [1,2,3],[2,3,4],[3,4,5] ],[2,3,2])" />
+</form>
+<span id="commSav8-78" class="commSav" >solve([ [1,2,3],[2,3,4],[3,4,5] ],[2,3,2])</span>
+<div id="mathAns8-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(particular: Union(Vector Fraction Integer,"failed"),
+basis: List Vector Fraction Integer)
+</div>
+
+
+
+<p>When you want to solve a system of homogeneous equations (that is,
+a system where the numbers on the right-hand sides of the
+<span class="index">nullspace</span><a name="chapter-8-80"/>
+equations are all zero) in the matrix form you can omit the second
+argument and use the <span style="font-weight: bold;"> nullSpace</span> operation.
+</p>
+
+
+<p>This computes the solutions of the following system of equations:
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>2</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>3</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>2</mn><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>3</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>4</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>3</mn><mi>x</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>4</mn><mi>y</mi></mtd><mtd><mo>+</mo></mtd><mtd><mn>5</mn><mi>z</mi></mtd><mtd><mo>=</mo></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mrow></mstyle></math>
+The result is given as a list of vectors and
+these vectors form a basis for the solution space.
+</p>
+
+
+
+
+<div id="spadComm8-79" class="spadComm" >
+<form id="formComm8-79" action="javascript:makeRequest('8-79');" >
+<input id="comm8-79" type="text" class="command" style="width: 26em;" value="nullSpace([ [1,2,3],[2,3,4],[3,4,5] ])" />
+</form>
+<span id="commSav8-79" class="commSav" >nullSpace([ [1,2,3],[2,3,4],[3,4,5] ])</span>
+<div id="mathAns8-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Vector Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.5.2"/>
+<div class="subsection"  id="subsec-8.5.2">
+<h3 class="subsectitle">8.5.2  Solution of a Single Polynomial Equation</h3>
+
+
+<a name="ugxProblemOnePol" class="label"/>
+
+
+<p>Axiom can solve polynomial equations producing either approximate
+<span class="index">polynomial:root finding</span><a name="chapter-8-81"/>
+or exact solutions.
+<span class="index">equation:polynomial:solving</span><a name="chapter-8-82"/>
+Exact solutions are either members of the ground
+field or can be presented symbolically as roots of irreducible polynomials.
+</p>
+
+
+<p>This returns the one rational root along with an irreducible
+polynomial describing the other solutions.
+</p>
+
+
+
+
+<div id="spadComm8-80" class="spadComm" >
+<form id="formComm8-80" action="javascript:makeRequest('8-80');" >
+<input id="comm8-80" type="text" class="command" style="width: 12em;" value="solve(x**3  = 8,x)" />
+</form>
+<span id="commSav8-80" class="commSav" >solve(x**3  = 8,x)</span>
+<div id="mathAns8-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mn>2</mn></mrow><mo>,</mo><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>4</mn></mrow><mo>=</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Equation Fraction Polynomial Integer
+</div>
+
+
+
+<p>If you want solutions expressed in terms of radicals you would use this
+instead.
+<span class="index">radical</span><a name="chapter-8-83"/>
+</p>
+
+
+
+
+<div id="spadComm8-81" class="spadComm" >
+<form id="formComm8-81" action="javascript:makeRequest('8-81');" >
+<input id="comm8-81" type="text" class="command" style="width: 17em;" value="radicalSolve(x**3  = 8,x)" />
+</form>
+<span id="commSav8-81" class="commSav" >radicalSolve(x**3  = 8,x)</span>
+<div id="mathAns8-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mrow><mo>-</mo><mrow><msqrt><mrow><mo>-</mo><mn>3</mn></mrow></msqrt></mrow><mo>-</mo><mn>1</mn></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mrow><mrow><msqrt><mrow><mo>-</mo><mn>3</mn></mrow></msqrt></mrow><mo>-</mo><mn>1</mn></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Equation Expression Integer
+</div>
+
+
+
+<p>The <span style="font-weight: bold;"> solve</span> command always returns a value but
+<span style="font-weight: bold;"> radicalSolve</span> returns only the solutions that it is
+able to express in terms of radicals.
+<span class="index">radical</span><a name="chapter-8-84"/>
+</p>
+
+
+<p>If the polynomial equation has rational coefficients
+you can ask for approximations to its real roots by calling
+solve with a second argument that specifies the ``precision''
+<span class="index">precision</span><a name="chapter-8-85"/>
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>.
+This means that each approximation will be within
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> of the actual
+result.
+</p>
+
+
+<p>Notice that the type of second argument controls the type of the result.
+</p>
+
+
+
+
+<div id="spadComm8-82" class="spadComm" >
+<form id="formComm8-82" action="javascript:makeRequest('8-82');" >
+<input id="comm8-82" type="text" class="command" style="width: 33em;" value="solve(x**4 - 10*x**3 + 35*x**2 - 50*x + 25,.0001)" />
+</form>
+<span id="commSav8-82" class="commSav" >solve(x**4 - 10*x**3 + 35*x**2 - 50*x + 25,.0001)</span>
+<div id="mathAns8-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mrow><mn>3</mn><mo>.</mo><mn>6180114746</mn><mn>09375</mn></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mrow><mn>1</mn><mo>.</mo><mn>3819885253</mn><mn>90625</mn></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Equation Polynomial Float
+</div>
+
+
+
+<p>If you give a floating-point precision you get a floating-point result;
+if you give the precision as a rational number you get a rational result.
+</p>
+
+
+
+
+<div id="spadComm8-83" class="spadComm" >
+<form id="formComm8-83" action="javascript:makeRequest('8-83');" >
+<input id="comm8-83" type="text" class="command" style="width: 14em;" value="solve(x**3-2,1/1000)" />
+</form>
+<span id="commSav8-83" class="commSav" >solve(x**3-2,1/1000)</span>
+<div id="mathAns8-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mn>2581</mn><mn>2048</mn></mfrac></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Equation Polynomial Fraction Integer
+</div>
+
+
+
+<p>If you want approximate complex results you should use the
+<span class="index">approximation</span><a name="chapter-8-86"/>
+command <span style="font-weight: bold;"> complexSolve</span> that takes the same precision argument
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-84" class="spadComm" >
+<form id="formComm8-84" action="javascript:makeRequest('8-84');" >
+<input id="comm8-84" type="text" class="command" style="width: 18em;" value="complexSolve(x**3-2,.0001)" />
+</form>
+<span id="commSav8-84" class="commSav" >complexSolve(x**3-2,.0001)</span>
+<div id="mathAns8-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mrow><mn>1</mn><mo>.</mo><mn>2599182128</mn><mn>90625</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>x</mi><mo>=</mo><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>6298943279</mn><mn>5395613131</mn></mrow><mo>-</mo><mrow><mrow><mn>1</mn><mo>.</mo><mn>0910949707</mn><mn>03125</mn></mrow><mo></mo><mi>i</mi></mrow></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>x</mi><mo>=</mo><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>6298943279</mn><mn>5395613131</mn></mrow><mo>+</mo><mrow><mrow><mn>1</mn><mo>.</mo><mn>0910949707</mn><mn>03125</mn></mrow><mo></mo><mi>i</mi></mrow></mrow></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Equation Polynomial Complex Float
+</div>
+
+
+
+<p>Each approximation will be within
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> of the actual result
+in each of the real and imaginary parts.
+</p>
+
+
+
+
+<div id="spadComm8-85" class="spadComm" >
+<form id="formComm8-85" action="javascript:makeRequest('8-85');" >
+<input id="comm8-85" type="text" class="command" style="width: 22em;" value="complexSolve(x**2-2*%i+1,1/100)" />
+</form>
+<span id="commSav8-85" class="commSav" >complexSolve(x**2-2*%i+1,1/100)</span>
+<div id="mathAns8-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mrow><mo>-</mo><mfrac><mn>13028925</mn><mn>16777216</mn></mfrac><mo>-</mo><mrow><mfrac><mn>325</mn><mn>256</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mrow><mfrac><mn>13028925</mn><mn>16777216</mn></mfrac><mo>+</mo><mrow><mfrac><mn>325</mn><mn>256</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Equation Polynomial Complex Fraction Integer
+</div>
+
+
+
+<p>Note that if you omit the <span class="teletype">=</span> from the first argument
+Axiom generates an equation by equating the first argument to zero.
+Also, when only one variable is present in the equation, you
+do not need to specify the variable to be solved for, that is,
+you can omit the second argument.
+</p>
+
+
+<p>Axiom can also solve equations involving rational functions.
+Solutions where the denominator vanishes are discarded.
+</p>
+
+
+
+
+<div id="spadComm8-86" class="spadComm" >
+<form id="formComm8-86" action="javascript:makeRequest('8-86');" >
+<input id="comm8-86" type="text" class="command" style="width: 28em;" value="radicalSolve(1/x**3 + 1/x**2 + 1/x = 0,x)" />
+</form>
+<span id="commSav8-86" class="commSav" >radicalSolve(1/x**3 + 1/x**2 + 1/x = 0,x)</span>
+<div id="mathAns8-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mrow><msqrt><mrow><mo>-</mo><mn>3</mn></mrow></msqrt></mrow><mo>-</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mrow><msqrt><mrow><mo>-</mo><mn>3</mn></mrow></msqrt></mrow><mo>-</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Equation Expression Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.5.3"/>
+<div class="subsection"  id="subsec-8.5.3">
+<h3 class="subsectitle">8.5.3  Solution of Systems of Polynomial Equations</h3>
+
+
+<a name="ugxProblemPolSys" class="label"/>
+
+
+<p>Given a system of equations of rational functions with exact coefficients:
+<span class="index">equation:polynomial:solving</span><a name="chapter-8-87"/>
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><msub><mi>p</mi><mn>1</mn></msub><mo>(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>x</mi><mi>n</mi></msub><mo>)</mo></mtd></mtr><mtr><mtd><mo>&#x22ee;</mo></mtd></mtr><mtr><mtd><msub><mi>p</mi><mi>m</mi></msub><mo>(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>x</mi><mi>n</mi></msub><mo>)</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+<p>Axiom can find
+numeric or symbolic solutions.
+The system is first split into irreducible components, then for
+each component, a triangular system of equations is found that reduces
+the problem to sequential solution of univariate polynomials resulting
+from substitution of partial solutions from the previous stage.
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><msub><mi>q</mi><mn>1</mn></msub><mo>(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>x</mi><mi>n</mi></msub><mo>)</mo></mtd></mtr><mtr><mtd><mo>&#x22ee;</mo></mtd></mtr><mtr><mtd><msub><mi>q</mi><mi>m</mi></msub><mo>(</mo><msub><mi>x</mi><mi>n</mi></msub><mo>)</mo></mtd></mtr><mtr><mtd></mtd></mtr></mtable></mrow></mstyle></math>
+</p>
+
+
+<p>Symbolic solutions can be presented using ``implicit'' algebraic numbers
+defined as roots of irreducible polynomials or in terms of radicals.
+Axiom can also find approximations to the real or complex roots
+of a system of polynomial equations to any user-specified accuracy.
+</p>
+
+
+<p>The operation <span style="font-weight: bold;"> solve</span> for systems is used in a way similar
+to <span style="font-weight: bold;"> solve</span> for single equations.
+Instead of a polynomial equation, one has to give a list of
+equations and instead of a single variable to solve for, a list of
+variables.
+For solutions of single equations see 
+<a href="section-8.5.xhtml#ugxProblemOnePol" class="ref" >ugxProblemOnePol</a> .
+</p>
+
+
+<p>Use the operation <span style="font-weight: bold;"> solve</span> if you want implicitly presented
+solutions.
+</p>
+
+
+
+
+<div id="spadComm8-87" class="spadComm" >
+<form id="formComm8-87" action="javascript:makeRequest('8-87');" >
+<input id="comm8-87" type="text" class="command" style="width: 25em;" value="solve([3*x**3 + y + 1,y**2 -4],[x,y])" />
+</form>
+<span id="commSav8-87" class="commSav" >solve([3*x**3 + y + 1,y**2 -4],[x,y])</span>
+<div id="mathAns8-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>x</mi><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mrow><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mo>-</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Fraction Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-88" class="spadComm" >
+<form id="formComm8-88" action="javascript:makeRequest('8-88');" >
+<input id="comm8-88" type="text" class="command" style="width: 33em;" value="solve([x = y**2-19,y = z**2+x+3,z = 3*x],[x,y,z])" />
+</form>
+<span id="commSav8-88" class="commSav" >solve([x = y**2-19,y = z**2+x+3,z = 3*x],[x,y,z])</span>
+<div id="mathAns8-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mi>z</mi><mn>3</mn></mfrac></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mfrac><mrow><mrow><mn>3</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mi>z</mi><mo>+</mo><mn>9</mn></mrow><mn>3</mn></mfrac></mrow><mo>,</mo><mrow><mrow><mrow><mn>9</mn><mo></mo><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>55</mn><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15</mn><mo></mo><mi>z</mi></mrow><mo>-</mo><mn>90</mn></mrow><mo>=</mo><mn>0</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Fraction Polynomial Integer
+</div>
+
+
+
+<p>Use <span style="font-weight: bold;"> radicalSolve</span> if you want your solutions expressed
+in terms of radicals.
+</p>
+
+
+
+
+<div id="spadComm8-89" class="spadComm" >
+<form id="formComm8-89" action="javascript:makeRequest('8-89');" >
+<input id="comm8-89" type="text" class="command" style="width: 30em;" value="radicalSolve([3*x**3 + y + 1,y**2 -4],[x,y])" />
+</form>
+<span id="commSav8-89" class="commSav" >radicalSolve([3*x**3 + y + 1,y**2 -4],[x,y])</span>
+<div id="mathAns8-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mrow><msqrt><mrow><mo>-</mo><mn>3</mn></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mrow><msqrt><mrow><mo>-</mo><mn>3</mn></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mn>2</mn></mfrac></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mrow><mrow><msqrt><mrow><mo>-</mo><mn>1</mn></mrow></msqrt></mrow><mo></mo><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mrow><mn>2</mn><mo></mo><mrow><mroot><mn>3</mn><mn>3</mn></mroot></mrow></mrow></mfrac></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mo>-</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mrow><mrow><mrow><msqrt><mrow><mo>-</mo><mn>1</mn></mrow></msqrt></mrow><mo></mo><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mrow><mn>2</mn><mo></mo><mrow><mroot><mn>3</mn><mn>3</mn></mroot></mrow></mrow></mfrac></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mo>-</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mroot><mn>3</mn><mn>3</mn></mroot></mrow></mfrac></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mo>-</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Expression Integer
+</div>
+
+
+
+<p>To get numeric solutions you only need to give the list of
+equations and the precision desired.
+The list of variables would be redundant information since there
+can be no parameters for the numerical solver.
+</p>
+
+
+<p>If the precision is expressed as a floating-point number you get
+results expressed as floats.
+</p>
+
+
+
+
+<div id="spadComm8-90" class="spadComm" >
+<form id="formComm8-90" action="javascript:makeRequest('8-90');" >
+<input id="comm8-90" type="text" class="command" style="width: 23em;" value="solve([x**2*y - 1,x*y**2 - 2],.01)" />
+</form>
+<span id="commSav8-90" class="commSav" >solve([x**2*y - 1,x*y**2 - 2],.01)</span>
+<div id="mathAns8-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mrow><mn>1</mn><mo>.</mo><mn>5859375</mn></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mrow><mn>0</mn><mo>.</mo><mn>79296875</mn></mrow></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Polynomial Float
+</div>
+
+
+
+<p>To get complex numeric solutions, use the operation <span style="font-weight: bold;"> complexSolve</span>,
+which takes the same arguments as in the real case.
+</p>
+
+
+
+
+<div id="spadComm8-91" class="spadComm" >
+<form id="formComm8-91" action="javascript:makeRequest('8-91');" >
+<input id="comm8-91" type="text" class="command" style="width: 30em;" value="complexSolve([x**2*y - 1,x*y**2 - 2],1/1000)" />
+</form>
+<span id="commSav8-91" class="commSav" >complexSolve([x**2*y - 1,x*y**2 - 2],1/1000)</span>
+<div id="mathAns8-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mfrac><mn>1625</mn><mn>1024</mn></mfrac></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mfrac><mn>1625</mn><mn>2048</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mrow><mo>-</mo><mfrac><mn>435445573689</mn><mn>549755813888</mn></mfrac><mo>-</mo><mrow><mfrac><mn>1407</mn><mn>1024</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mrow><mo>-</mo><mfrac><mn>435445573689</mn><mn>1099511627776</mn></mfrac><mo>-</mo><mrow><mfrac><mn>1407</mn><mn>2048</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mrow><mi>y</mi><mo>=</mo><mrow><mo>-</mo><mfrac><mn>435445573689</mn><mn>549755813888</mn></mfrac><mo>+</mo><mrow><mfrac><mn>1407</mn><mn>1024</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mrow><mo>,</mo><mrow><mi>x</mi><mo>=</mo><mrow><mo>-</mo><mfrac><mn>435445573689</mn><mn>1099511627776</mn></mfrac><mo>+</mo><mrow><mfrac><mn>1407</mn><mn>2048</mn></mfrac><mo></mo><mi>i</mi></mrow></mrow></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Polynomial Complex Fraction Integer
+</div>
+
+
+
+
+<p>It is also possible to solve systems of equations in rational functions
+over the rational numbers.
+Note that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>=</mo><mn>0</mn><mo>.</mo><mn>0</mn><mo>,</mo><mi>a</mi><mo>=</mo><mn>0</mn><mo>.</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math> is not returned as a solution since
+the denominator vanishes there.
+</p>
+
+
+
+
+<div id="spadComm8-92" class="spadComm" >
+<form id="formComm8-92" action="javascript:makeRequest('8-92');" >
+<input id="comm8-92" type="text" class="command" style="width: 22em;" value="solve([x**2/a = a,a = a*x],.001)" />
+</form>
+<span id="commSav8-92" class="commSav" >solve([x**2/a = a,a = a*x],.001)</span>
+<div id="mathAns8-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mo>,</mo><mrow><mi>a</mi><mo>=</mo><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mo>,</mo><mrow><mi>a</mi><mo>=</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Polynomial Float
+</div>
+
+
+
+
+<p>When solving equations with
+denominators, all solutions where the denominator vanishes are
+discarded.
+</p>
+
+
+
+
+<div id="spadComm8-93" class="spadComm" >
+<form id="formComm8-93" action="javascript:makeRequest('8-93');" >
+<input id="comm8-93" type="text" class="command" style="width: 37em;" value="radicalSolve([x**2/a + a + y**3 - 1,a*y + a + 1],[x,y])" />
+</form>
+<span id="commSav8-93" class="commSav" >radicalSolve([x**2/a + a + y**3 - 1,a*y + a + 1],[x,y])</span>
+<div id="mathAns8-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mo>-</mo><mrow><msqrt><mfrac><mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mi>a</mi></mrow><mo>+</mo><mn>1</mn></mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mfrac></msqrt></mrow></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mi>a</mi><mo>-</mo><mn>1</mn></mrow><mi>a</mi></mfrac></mrow><mo>]</mo></mrow><mo>,</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mrow><mi>x</mi><mo>=</mo><mrow><msqrt><mfrac><mrow><mo>-</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mi>a</mi></mrow><mo>+</mo><mn>1</mn></mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mfrac></msqrt></mrow></mrow><mo>,</mo><mrow><mi>y</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mi>a</mi><mo>-</mo><mn>1</mn></mrow><mi>a</mi></mfrac></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Expression Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.4.xhtml" style="margin-right: 10px;">Previous Section 8.4 Computation of Eigenvalues and Eigenvectors</a><a href="section-8.6.xhtml" style="margin-right: 10px;">Next Section 8.6 Limits</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.6.xhtml
new file mode 100644
index 0000000..a6840e8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.6.xhtml
@@ -0,0 +1,586 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.5.xhtml" style="margin-right: 10px;">Previous Section 8.5 Solution of Linear and Polynomial Equations</a><a href="section-8.7.xhtml" style="margin-right: 10px;">Next Section 8.7 Laplace Transforms</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.6">
+<h2 class="sectiontitle">8.6  Limits</h2>
+
+
+<a name="ugProblemLimits" class="label"/>
+
+
+
+<p>To compute a limit, you must specify a functional expression,
+<span class="index">limit</span><a name="chapter-8-88"/>
+a variable, and a limiting value for that variable.
+If you do not specify a direction, Axiom attempts to
+compute a two-sided limit.
+</p>
+
+
+<p>Issue this to compute the limit
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm8-94" class="spadComm" >
+<form id="formComm8-94" action="javascript:makeRequest('8-94');" >
+<input id="comm8-94" type="text" class="command" style="width: 27em;" value="limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)" />
+</form>
+<span id="commSav8-94" class="commSav" >limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)</span>
+<div id="mathAns8-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
+</div>
+
+
+
+<p>Sometimes the limit when approached from the left is different from
+the limit from the right and, in this case, you may wish to ask for a
+one-sided limit.  Also, if you have a function that is only defined on
+one side of a particular value, <span class="index">limit:one-sided vs. two-sided</span><a name="chapter-8-89"/>
+you can compute a one-sided limit.
+</p>
+
+
+<p>The function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>log</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> is only defined to the right of zero, that is,
+for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>&gt;</mo><mn>0</mn></mrow></mstyle></math>.  Thus, when computing limits of functions involving
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>log</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>, you probably want a ``right-hand'' limit.
+</p>
+
+
+
+
+<div id="spadComm8-95" class="spadComm" >
+<form id="formComm8-95" action="javascript:makeRequest('8-95');" >
+<input id="comm8-95" type="text" class="command" style="width: 21em;" value='limit(x * log(x),x = 0,"right")' />
+</form>
+<span id="commSav8-95" class="commSav" >limit(x * log(x),x = 0,"right")</span>
+<div id="mathAns8-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+<p>When you do not specify `` <math xmlns="&mathml;" mathsize="big"><mstyle><mi>right</mi></mstyle></math>'' or `` <math xmlns="&mathml;" mathsize="big"><mstyle><mi>left</mi></mstyle></math>'' as the optional fourth
+argument, <span style="font-weight: bold;"> limit</span> tries to compute a two-sided limit.  Here the
+limit from the left does not exist, as Axiom indicates when you try to
+take a two-sided limit.
+</p>
+
+
+
+
+<div id="spadComm8-96" class="spadComm" >
+<form id="formComm8-96" action="javascript:makeRequest('8-96');" >
+<input id="comm8-96" type="text" class="command" style="width: 16em;" value="limit(x * log(x),x = 0)" />
+</form>
+<span id="commSav8-96" class="commSav" >limit(x * log(x),x = 0)</span>
+<div id="mathAns8-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>leftHandLimit</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mi>rightHandLimit</mi><mo>=</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(leftHandLimit: 
+Union(OrderedCompletion Expression Integer,"failed"),
+rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+</div>
+
+
+
+<p>A function can be defined on both sides of a particular value, but
+tend to different limits as its variable approaches that value from
+the left and from the right.  We can construct an example of this as
+follows: Since  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msqrt><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></msqrt></mrow></mstyle></math> is simply the absolute value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>, the
+function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msqrt><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></msqrt><mo>/</mo><mi>y</mi></mrow></mstyle></math> is simply the sign ( <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math> or  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>) of the
+nonzero real number  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.  Therefore,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msqrt><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></msqrt><mo>/</mo><mi>y</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow></mstyle></math> for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>&lt;</mo><mn>0</mn></mrow></mstyle></math>
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msqrt><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></msqrt><mo>/</mo><mi>y</mi><mo>=</mo><mo>+</mo><mn>1</mn></mrow></mstyle></math> for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>&gt;</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+<p>This is what happens when we take the limit at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+The answer returned by Axiom gives both a
+``left-hand'' and a ``right-hand'' limit.
+</p>
+
+
+
+
+<div id="spadComm8-97" class="spadComm" >
+<form id="formComm8-97" action="javascript:makeRequest('8-97');" >
+<input id="comm8-97" type="text" class="command" style="width: 17em;" value="limit(sqrt(y**2)/y,y = 0)" />
+</form>
+<span id="commSav8-97" class="commSav" >limit(sqrt(y**2)/y,y = 0)</span>
+<div id="mathAns8-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>leftHandLimit</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>rightHandLimit</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(leftHandLimit: 
+Union(OrderedCompletion Expression Integer,"failed"),
+rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+</div>
+
+
+
+<p>Here is another example, this time using a more complicated function.
+</p>
+
+
+
+
+<div id="spadComm8-98" class="spadComm" >
+<form id="formComm8-98" action="javascript:makeRequest('8-98');" >
+<input id="comm8-98" type="text" class="command" style="width: 21em;" value="limit(sqrt(1 - cos(t))/t,t = 0)" />
+</form>
+<span id="commSav8-98" class="commSav" >limit(sqrt(1 - cos(t))/t,t = 0)</span>
+<div id="mathAns8-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>leftHandLimit</mi><mo>=</mo><mo>-</mo><mfrac><mn>1</mn><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac></mrow><mo>,</mo><mrow><mi>rightHandLimit</mi><mo>=</mo><mfrac><mn>1</mn><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(leftHandLimit: 
+Union(OrderedCompletion Expression Integer,"failed"),
+rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+</div>
+
+
+
+<p>You can compute limits at infinity by passing either 
+<span class="index">limit:at infinity</span><a name="chapter-8-90"/>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>+</mo><mo>&#x221E;</mo></mrow></mstyle></math> or  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mo>&#x221E;</mo></mrow></mstyle></math> as the third 
+argument of <span style="font-weight: bold;"> limit</span>.
+</p>
+
+
+<p>To do this, use the constants  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>plusInfinity</mi></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>minusInfinity</mi></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-99" class="spadComm" >
+<form id="formComm8-99" action="javascript:makeRequest('8-99');" >
+<input id="comm8-99" type="text" class="command" style="width: 32em;" value="limit(sqrt(3*x**2 + 1)/(5*x),x = %plusInfinity)" />
+</form>
+<span id="commSav8-99" class="commSav" >limit(sqrt(3*x**2 + 1)/(5*x),x = %plusInfinity)</span>
+<div id="mathAns8-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><msqrt><mn>3</mn></msqrt></mrow><mn>5</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm8-100" class="spadComm" >
+<form id="formComm8-100" action="javascript:makeRequest('8-100');" >
+<input id="comm8-100" type="text" class="command" style="width: 33em;" value="limit(sqrt(3*x**2 + 1)/(5*x),x = %minusInfinity)" />
+</form>
+<span id="commSav8-100" class="commSav" >limit(sqrt(3*x**2 + 1)/(5*x),x = %minusInfinity)</span>
+<div id="mathAns8-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mrow><msqrt><mn>3</mn></msqrt></mrow><mn>5</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+<p>You can take limits of functions with parameters.
+<span class="index">limit:of function with parameters</span><a name="chapter-8-91"/>
+As you can see, the limit is expressed in terms of the parameters.
+</p>
+
+
+
+
+<div id="spadComm8-101" class="spadComm" >
+<form id="formComm8-101" action="javascript:makeRequest('8-101');" >
+<input id="comm8-101" type="text" class="command" style="width: 21em;" value="limit(sinh(a*x)/tan(b*x),x = 0)" />
+</form>
+<span id="commSav8-101" class="commSav" >limit(sinh(a*x)/tan(b*x),x = 0)</span>
+<div id="mathAns8-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mi>a</mi><mi>b</mi></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+<p>When you use <span style="font-weight: bold;"> limit</span>, you are taking the limit of a real
+function of a real variable.
+</p>
+
+
+<p>When you compute this, Axiom returns  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> because, as a function of a
+real variable,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sin</mi><mo>(</mo><mn>1</mn><mo>/</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is always between  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math>, so 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>*</mo><mi>sin</mi><mo>(</mo><mn>1</mn><mo>/</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> tends to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> as  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> tends to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-102" class="spadComm" >
+<form id="formComm8-102" action="javascript:makeRequest('8-102');" >
+<input id="comm8-102" type="text" class="command" style="width: 17em;" value="limit(z * sin(1/z),z = 0)" />
+</form>
+<span id="commSav8-102" class="commSav" >limit(z * sin(1/z),z = 0)</span>
+<div id="mathAns8-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+<p>However, as a function of a <span class="italic">complex</span> variable,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sin</mi><mo>(</mo><mn>1</mn><mo>/</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> is badly
+<span class="index">limit:real vs. complex</span><a name="chapter-8-92"/>
+behaved near  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> (one says that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sin</mi><mo>(</mo><mn>1</mn><mo>/</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> has an
+<span class="index">essential singularity</span><a name="chapter-8-93"/>
+<span class="italic">essential singularity</span> at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>).
+<span class="index">singularity:essential</span><a name="chapter-8-94"/>
+</p>
+
+
+<p>When viewed as a function of a complex variable,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>z</mi><mo>*</mo><mi>sin</mi><mo>(</mo><mn>1</mn><mo>/</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math>
+does not approach any limit as  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> tends to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> in the complex plane.
+Axiom indicates this when we call <span style="font-weight: bold;"> complexLimit</span>.
+</p>
+
+
+
+
+<div id="spadComm8-103" class="spadComm" >
+<form id="formComm8-103" action="javascript:makeRequest('8-103');" >
+<input id="comm8-103" type="text" class="command" style="width: 22em;" value="complexLimit(z * sin(1/z),z = 0)" />
+</form>
+<span id="commSav8-103" class="commSav" >complexLimit(z * sin(1/z),z = 0)</span>
+<div id="mathAns8-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>Here is another example.
+As  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> approaches  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> along the real axis,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>exp</mi><mo>(</mo><mo>-</mo><mn>1</mn><mo>/</mo><mi>x</mi><mo>*</mo><mo>*</mo><mn>2</mn><mo>)</mo></mrow></mstyle></math>
+tends to  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>.
+</p>
+
+
+
+<div id="spadComm8-104" class="spadComm" >
+<form id="formComm8-104" action="javascript:makeRequest('8-104');" >
+<input id="comm8-104" type="text" class="command" style="width: 17em;" value="limit(exp(-1/x**2),x = 0)" />
+</form>
+<span id="commSav8-104" class="commSav" >limit(exp(-1/x**2),x = 0)</span>
+<div id="mathAns8-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+<p>However, if  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is allowed to approach  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> along any path in the
+complex plane, the limiting value of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>exp</mi><mo>(</mo><mo>-</mo><mn>1</mn><mo>/</mo><mi>x</mi><mo>*</mo><mo>*</mo><mn>2</mn><mo>)</mo></mrow></mstyle></math> depends on the
+path taken because the function has an essential singularity at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+This is reflected in the error message returned by the function.
+</p>
+
+
+
+<div id="spadComm8-105" class="spadComm" >
+<form id="formComm8-105" action="javascript:makeRequest('8-105');" >
+<input id="comm8-105" type="text" class="command" style="width: 22em;" value="complexLimit(exp(-1/x**2),x = 0)" />
+</form>
+<span id="commSav8-105" class="commSav" >complexLimit(exp(-1/x**2),x = 0)</span>
+<div id="mathAns8-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>You can also take complex limits at infinity, that is, limits of a
+function of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> as  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> approaches infinity on the Riemann sphere.  Use
+the symbol  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>infinity</mi></mrow></mstyle></math> to denote ``complex infinity.''
+</p>
+
+
+<p>As above, to compute complex limits rather than real limits, use
+<span style="font-weight: bold;"> complexLimit</span>.
+</p>
+
+
+
+
+<div id="spadComm8-106" class="spadComm" >
+<form id="formComm8-106" action="javascript:makeRequest('8-106');" >
+<input id="comm8-106" type="text" class="command" style="width: 30em;" value="complexLimit((2 + z)/(1 - z),z = %infinity)" />
+</form>
+<span id="commSav8-106" class="commSav" >complexLimit((2 + z)/(1 - z),z = %infinity)</span>
+<div id="mathAns8-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OnePointCompletion Fraction Polynomial Integer
+</div>
+
+
+
+<p>In many cases, a limit of a real function of a real variable exists
+when the corresponding complex limit does not.  This limit exists.
+</p>
+
+
+
+
+<div id="spadComm8-107" class="spadComm" >
+<form id="formComm8-107" action="javascript:makeRequest('8-107');" >
+<input id="comm8-107" type="text" class="command" style="width: 23em;" value="limit(sin(x)/x,x = %plusInfinity)" />
+</form>
+<span id="commSav8-107" class="commSav" >limit(sin(x)/x,x = %plusInfinity)</span>
+<div id="mathAns8-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+<p>But this limit does not.
+</p>
+
+
+
+
+<div id="spadComm8-108" class="spadComm" >
+<form id="formComm8-108" action="javascript:makeRequest('8-108');" >
+<input id="comm8-108" type="text" class="command" style="width: 25em;" value="complexLimit(sin(x)/x,x = %infinity)" />
+</form>
+<span id="commSav8-108" class="commSav" >complexLimit(sin(x)/x,x = %infinity)</span>
+<div id="mathAns8-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.5.xhtml" style="margin-right: 10px;">Previous Section 8.5 Solution of Linear and Polynomial Equations</a><a href="section-8.7.xhtml" style="margin-right: 10px;">Next Section 8.7 Laplace Transforms</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.7.xhtml
new file mode 100644
index 0000000..55812c4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.7.xhtml
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.6.xhtml" style="margin-right: 10px;">Previous Section 8.6 Limits</a><a href="section-8.8.xhtml" style="margin-right: 10px;">Next Section 8.8 Integration</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.7">
+<h2 class="sectiontitle">8.7  Laplace Transforms</h2>
+
+
+<a name="ugProblemLaplace" class="label"/>
+
+
+<p>Axiom can compute some forward Laplace transforms, mostly
+<span class="index">Laplace transform</span><a name="chapter-8-95"/> of elementary <span class="index">function:elementary</span><a name="chapter-8-96"/>
+functions <span class="index">transform:Laplace</span><a name="chapter-8-97"/> not involving logarithms, although
+some cases of special functions are handled.
+</p>
+
+
+<p>To compute the forward Laplace transform of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>F</mi><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> with respect to
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math> and express the result as  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>s</mi><mo>)</mo></mrow></mstyle></math>, issue the command
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>laplace</mi><mo>(</mo><mi>F</mi><mo>(</mo><mi>t</mi><mo>)</mo><mo>,</mo><mi>t</mi><mo>,</mo><mi>s</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-109" class="spadComm" >
+<form id="formComm8-109" action="javascript:makeRequest('8-109');" >
+<input id="comm8-109" type="text" class="command" style="width: 35em;" value="laplace(sin(a*t)*cosh(a*t)-cos(a*t)*sinh(a*t), t, s)" />
+</form>
+<span id="commSav8-109" class="commSav" >laplace(sin(a*t)*cosh(a*t)-cos(a*t)*sinh(a*t), t, s)</span>
+<div id="mathAns8-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mn>4</mn><mo></mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mrow><mrow><msup><mi>s</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mo></mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Here are some other non-trivial examples.
+</p>
+
+
+
+
+<div id="spadComm8-110" class="spadComm" >
+<form id="formComm8-110" action="javascript:makeRequest('8-110');" >
+<input id="comm8-110" type="text" class="command" style="width: 26em;" value="laplace((exp(a*t) - exp(b*t))/t, t, s)" />
+</form>
+<span id="commSav8-110" class="commSav" >laplace((exp(a*t) - exp(b*t))/t, t, s)</span>
+<div id="mathAns8-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>s</mi><mo>-</mo><mi>a</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>log</mo><mo>(</mo><mrow><mi>s</mi><mo>-</mo><mi>b</mi></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-111" class="spadComm" >
+<form id="formComm8-111" action="javascript:makeRequest('8-111');" >
+<input id="comm8-111" type="text" class="command" style="width: 24em;" value="laplace(2/t * (1 - cos(a*t)), t, s)" />
+</form>
+<span id="commSav8-111" class="commSav" >laplace(2/t * (1 - cos(a*t)), t, s)</span>
+<div id="mathAns8-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>log</mo><mo>(</mo><mrow><mrow><msup><mi>s</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><mo>log</mo><mo>(</mo><mi>s</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-112" class="spadComm" >
+<form id="formComm8-112" action="javascript:makeRequest('8-112');" >
+<input id="comm8-112" type="text" class="command" style="width: 28em;" value="laplace(exp(-a*t) * sin(b*t) / b**2, t, s)" />
+</form>
+<span id="commSav8-112" class="commSav" >laplace(exp(-a*t) * sin(b*t) / b**2, t, s)</span>
+<div id="mathAns8-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>1</mn><mrow><mrow><mi>b</mi><mo></mo><mrow><msup><mi>s</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>a</mi><mo></mo><mi>b</mi><mo></mo><mi>s</mi></mrow><mo>+</mo><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mo></mo><mi>b</mi></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-113" class="spadComm" >
+<form id="formComm8-113" action="javascript:makeRequest('8-113');" >
+<input id="comm8-113" type="text" class="command" style="width: 26em;" value="laplace((cos(a*t) - cos(b*t))/t, t, s)" />
+</form>
+<span id="commSav8-113" class="commSav" >laplace((cos(a*t) - cos(b*t))/t, t, s)</span>
+<div id="mathAns8-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mo>log</mo><mo>(</mo><mrow><mrow><msup><mi>s</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mo>-</mo><mrow><mo>log</mo><mo>(</mo><mrow><mrow><msup><mi>s</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Axiom also knows about a few special functions.
+</p>
+
+
+
+
+<div id="spadComm8-114" class="spadComm" >
+<form id="formComm8-114" action="javascript:makeRequest('8-114');" >
+<input id="comm8-114" type="text" class="command" style="width: 22em;" value="laplace(exp(a*t+b)*Ei(c*t), t, s)" />
+</form>
+<span id="commSav8-114" class="commSav" >laplace(exp(a*t+b)*Ei(c*t), t, s)</span>
+<div id="mathAns8-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><msup><mi>e</mi><mi>b</mi></msup></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mi>s</mi><mo>+</mo><mi>c</mi><mo>-</mo><mi>a</mi></mrow><mi>c</mi></mfrac><mo>)</mo></mrow></mrow><mrow><mi>s</mi><mo>-</mo><mi>a</mi></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-115" class="spadComm" >
+<form id="formComm8-115" action="javascript:makeRequest('8-115');" >
+<input id="comm8-115" type="text" class="command" style="width: 24em;" value="laplace(a*Ci(b*t) + c*Si(d*t), t, s)" />
+</form>
+<span id="commSav8-115" class="commSav" >laplace(a*Ci(b*t) + c*Si(d*t), t, s)</span>
+<div id="mathAns8-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mi>a</mi><mo></mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><msup><mi>s</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>c</mi><mo></mo><mrow><mo>arctan</mo><mo>(</mo><mfrac><mi>d</mi><mi>s</mi></mfrac><mo>)</mo></mrow></mrow></mrow><mrow><mn>2</mn><mo></mo><mi>s</mi></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>When Axiom does not know about a particular transform,
+it keeps it as a formal transform in the answer.
+</p>
+
+
+
+
+<div id="spadComm8-116" class="spadComm" >
+<form id="formComm8-116" action="javascript:makeRequest('8-116');" >
+<input id="comm8-116" type="text" class="command" style="width: 34em;" value="laplace(sin(a*t) - a*t*cos(a*t) + exp(t**2), t, s)" />
+</form>
+<span id="commSav8-116" class="commSav" >laplace(sin(a*t) - a*t*cos(a*t) + exp(t**2), t, s)</span>
+<div id="mathAns8-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>s</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>s</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mo>)</mo></mrow><mo></mo><mrow><mi>laplace</mi><mo>(</mo><mrow><mrow><msup><mi>e</mi><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></msup></mrow><mo>,</mo><mi>t</mi><mo>,</mo><mi>s</mi></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow></mrow><mrow><mrow><msup><mi>s</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mo></mo><mrow><msup><mi>s</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.6.xhtml" style="margin-right: 10px;">Previous Section 8.6 Limits</a><a href="section-8.8.xhtml" style="margin-right: 10px;">Next Section 8.8 Integration</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.8.xhtml
new file mode 100644
index 0000000..60998dd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.8.xhtml
@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.7.xhtml" style="margin-right: 10px;">Previous Section 8.7 Laplace Transforms</a><a href="section-8.9.xhtml" style="margin-right: 10px;">Next Section 8.9 Working with Power Series</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.8">
+<h2 class="sectiontitle">8.8  Integration</h2>
+
+
+<a name="ugProblemIntegration" class="label"/>
+
+
+
+<p>Integration is the reverse process of differentiation, that is,
+<span class="index">integration</span><a name="chapter-8-98"/> an <span class="italic">integral</span> of a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> with respect
+to a variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is any function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math> such that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>D</mi><mo>(</mo><mi>g</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> is equal to
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>.
+</p>
+
+
+<p>The package <span class="teletype">FunctionSpaceIntegration</span> provides the top-level
+integration operation, <span class="spadfunFrom" >integrate</span><span class="index">integrate</span><a name="chapter-8-99"/><span class="index">FunctionSpaceIntegration</span><a name="chapter-8-100"/>,
+for integrating real-valued elementary functions.
+<span class="index">FunctionSpaceIntegration</span><a name="chapter-8-101"/>
+</p>
+
+
+
+
+<div id="spadComm8-117" class="spadComm" >
+<form id="formComm8-117" action="javascript:makeRequest('8-117');" >
+<input id="comm8-117" type="text" class="command" style="width: 22em;" value="integrate(cosh(a*x)*sinh(a*x), x)" />
+</form>
+<span id="commSav8-117" class="commSav" >integrate(cosh(a*x)*sinh(a*x), x)</span>
+<div id="mathAns8-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><msup><mrow><mo>sinh</mo><mo>(</mo><mrow><mi>a</mi><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mrow><mo>cosh</mo><mo>(</mo><mrow><mi>a</mi><mo></mo><mi>x</mi></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>Unfortunately, antiderivatives of most functions cannot be expressed in
+terms of elementary functions.
+</p>
+
+
+
+
+<div id="spadComm8-118" class="spadComm" >
+<form id="formComm8-118" action="javascript:makeRequest('8-118');" >
+<input id="comm8-118" type="text" class="command" style="width: 28em;" value="integrate(log(1 + sqrt(a * x + b)) / x, x)" />
+</form>
+<span id="commSav8-118" class="commSav" >integrate(log(1 + sqrt(a * x + b)) / x, x)</span>
+<div id="mathAns8-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mo>&#x222B;</mo><mrow><mi>x</mi></mrow></msup><mrow><mfrac><mrow><mo>log</mo><mo>(</mo><mrow><mrow><msqrt><mrow><mi>b</mi><mo>+</mo><mrow><mo>%</mo><mi>M</mi><mo></mo><mi>a</mi></mrow></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mrow><mo>%</mo><mi>M</mi></mrow></mfrac><mo></mo><mrow><mi>d</mi><mo>%</mo><mi>M</mi></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>Given an elementary function to integrate, Axiom returns a formal
+integral as above only when it can prove that the integral is not
+elementary and not when it cannot determine the integral.
+In this rare case it prints a message that it cannot
+determine if an elementary integral exists.
+</p>
+
+
+<p>Similar functions may have antiderivatives <span class="index">antiderivative</span><a name="chapter-8-102"/>
+that look quite different because the form of the antiderivative
+depends on the sign of a constant that appears in the function.
+</p>
+
+
+
+
+<div id="spadComm8-119" class="spadComm" >
+<form id="formComm8-119" action="javascript:makeRequest('8-119');" >
+<input id="comm8-119" type="text" class="command" style="width: 17em;" value="integrate(1/(x**2 - 2),x)" />
+</form>
+<span id="commSav8-119" class="commSav" >integrate(1/(x**2 - 2),x)</span>
+<div id="mathAns8-119" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>2</mn><mo>)</mo></mrow><mo></mo><mrow><msqrt><mn>2</mn></msqrt></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>x</mi></mrow></mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>2</mn></mrow></mfrac><mo>)</mo></mrow><mrow><mn>2</mn><mo></mo><mrow><msqrt><mn>2</mn></msqrt></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm8-120" class="spadComm" >
+<form id="formComm8-120" action="javascript:makeRequest('8-120');" >
+<input id="comm8-120" type="text" class="command" style="width: 17em;" value="integrate(1/(x**2 + 2),x)" />
+</form>
+<span id="commSav8-120" class="commSav" >integrate(1/(x**2 + 2),x)</span>
+<div id="mathAns8-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>arctan</mo><mo>(</mo><mfrac><mrow><mi>x</mi><mo></mo><mrow><msqrt><mn>2</mn></msqrt></mrow></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mrow><msqrt><mn>2</mn></msqrt></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Expression Integer,...)
+</div>
+
+
+
+<p>If the integrand contains parameters, then there may be several possible
+antiderivatives, depending on the signs of expressions of the parameters.
+</p>
+
+
+<p>In this case Axiom returns a list of answers that cover all the
+possible cases.  Here you use the answer involving the square root of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> when  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>&gt;</mo><mn>0</mn></mrow></mstyle></math> and <span class="index">integration:result as list of real
+functions</span><a name="chapter-8-103"/> the answer involving the square root of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>-</mo><mi>a</mi></mrow></mstyle></math> when  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>&lt;</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-121" class="spadComm" >
+<form id="formComm8-121" action="javascript:makeRequest('8-121');" >
+<input id="comm8-121" type="text" class="command" style="width: 23em;" value="integrate(x**2 / (x**4 - a**2), x)" />
+</form>
+<span id="commSav8-121" class="commSav" >integrate(x**2 / (x**4 - a**2), x)</span>
+<div id="mathAns8-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mfrac><mrow><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>a</mi><mo>)</mo></mrow><mo></mo><mrow><msqrt><mi>a</mi></msqrt></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>a</mi><mo></mo><mi>x</mi></mrow></mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>a</mi></mrow></mfrac><mo>)</mo></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>arctan</mo><mo>(</mo><mfrac><mrow><mi>x</mi><mo></mo><mrow><msqrt><mi>a</mi></msqrt></mrow></mrow><mi>a</mi></mfrac><mo>)</mo></mrow></mrow></mrow><mrow><mn>4</mn><mo></mo><mrow><msqrt><mi>a</mi></msqrt></mrow></mrow></mfrac><mo>,</mo></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>a</mi><mo>)</mo></mrow><mo></mo><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>a</mi><mo></mo><mi>x</mi></mrow></mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>a</mi></mrow></mfrac><mo>)</mo></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mrow><mo>arctan</mo><mo>(</mo><mfrac><mrow><mi>x</mi><mo></mo><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mrow><mi>a</mi></mfrac><mo>)</mo></mrow></mrow></mrow><mrow><mn>4</mn><mo></mo><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mrow></mfrac><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(List Expression Integer,...)
+</div>
+
+
+
+<p>If the parameters and the variables of integration can be complex
+numbers rather than real, then the notion of sign is not defined.  In
+this case all the possible answers can be expressed as one complex
+function.  To get that function, rather than a list of real functions,
+use <span class="spadfunFrom" >complexIntegrate</span><span class="index">complexIntegrate</span><a name="chapter-8-104"/><span class="index">FunctionSpaceComplexIntegration</span><a name="chapter-8-105"/>,
+which is provided by the package <span class="index">integration:result as a
+complex functions</span><a name="chapter-8-106"/> <span class="teletype">FunctionSpaceComplexIntegration</span>.
+<span class="index">FunctionSpaceComplexIntegration</span><a name="chapter-8-107"/>
+</p>
+
+
+<p>This operation is used for integrating complex-valued elementary
+functions.
+</p>
+
+
+
+
+<div id="spadComm8-122" class="spadComm" >
+<form id="formComm8-122" action="javascript:makeRequest('8-122');" >
+<input id="comm8-122" type="text" class="command" style="width: 28em;" value="complexIntegrate(x**2 / (x**4 - a**2), x)" />
+</form>
+<span id="commSav8-122" class="commSav" >complexIntegrate(x**2 / (x**4 - a**2), x)</span>
+<div id="mathAns8-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mrow><msqrt><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></msqrt></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mi>x</mi><mo></mo><mrow><msqrt><mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></mrow></msqrt></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>a</mi></mrow></mrow><mrow><msqrt><mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></mrow></msqrt></mrow></mfrac><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mrow><msqrt><mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></mrow></msqrt></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mi>x</mi><mo></mo><mrow><msqrt><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></msqrt></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mi>a</mi></mrow></mrow><mrow><msqrt><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></msqrt></mrow></mfrac><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msqrt><mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></mrow></msqrt></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mi>x</mi><mo></mo><mrow><msqrt><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></msqrt></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>a</mi></mrow></mrow><mrow><msqrt><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></msqrt></mrow></mfrac><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mrow><msqrt><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></msqrt></mrow><mo></mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mi>x</mi><mo></mo><mrow><msqrt><mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></mrow></msqrt></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>a</mi></mrow></mrow><mrow><msqrt><mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></mrow></msqrt></mrow></mfrac><mo>)</mo></mrow></mrow></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mn>2</mn><mo></mo><mrow><msqrt><mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></mrow></msqrt></mrow><mo></mo><mrow><msqrt><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow></msqrt></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>As with the real case, antiderivatives for most complex-valued
+functions cannot be expressed in terms of elementary functions.
+</p>
+
+
+
+
+<div id="spadComm8-123" class="spadComm" >
+<form id="formComm8-123" action="javascript:makeRequest('8-123');" >
+<input id="comm8-123" type="text" class="command" style="width: 33em;" value="complexIntegrate(log(1 + sqrt(a * x + b)) / x, x)" />
+</form>
+<span id="commSav8-123" class="commSav" >complexIntegrate(log(1 + sqrt(a * x + b)) / x, x)</span>
+<div id="mathAns8-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mo>&#x222B;</mo><mrow><mi>x</mi></mrow></msup><mrow><mfrac><mrow><mo>log</mo><mo>(</mo><mrow><mrow><msqrt><mrow><mi>b</mi><mo>+</mo><mrow><mo>%</mo><mi>M</mi><mo></mo><mi>a</mi></mrow></mrow></msqrt></mrow><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mrow><mo>%</mo><mi>M</mi></mrow></mfrac><mo></mo><mrow><mi>d</mi><mo>%</mo><mi>M</mi></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Sometimes <span style="font-weight: bold;"> integrate</span> can involve symbolic algebraic numbers
+such as those returned by <span class="spadfunFrom" >rootOf</span><span class="index">rootOf</span><a name="chapter-8-108"/><span class="index">Expression</span><a name="chapter-8-109"/>.
+To see how to work with these strange generated symbols (such as
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mo>%</mo><mi>a0</mi></mrow></mstyle></math>), see 
+<a href="section-8.3.xhtml#ugxProblemSymRootAll" class="ref" >ugxProblemSymRootAll</a> .
+</p>
+
+
+<p>Definite integration is the process of computing the area between
+<span class="index">integration:definite</span><a name="chapter-8-110"/>
+the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>-axis and the curve of a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+The fundamental theorem of calculus states that if  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math> is
+continuous on an interval  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math> and if there exists a function  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math>
+that is differentiable on  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math> and such that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>D</mi><mo>(</mo><mi>g</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>
+is equal to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>, then the definite integral of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>f</mi></mstyle></math>
+for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> in the interval  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math> is equal to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>g</mi><mo>(</mo><mi>b</mi><mo>)</mo><mo>-</mo><mi>g</mi><mo>(</mo><mi>a</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>The package <span class="teletype">RationalFunctionDefiniteIntegration</span> provides
+the top-level definite integration operation,
+<span class="spadfunFrom" >integrate</span><span class="index">integrate</span><a name="chapter-8-111"/><span class="index">RationalFunctionDefiniteIntegration</span><a name="chapter-8-112"/>,
+for integrating real-valued rational functions.
+</p>
+
+
+
+
+<div id="spadComm8-124" class="spadComm" >
+<form id="formComm8-124" action="javascript:makeRequest('8-124');" >
+<input id="comm8-124" type="text" class="command" style="width: 42em;" value="integrate((x**4 - 3*x**2 + 6)/(x**6-5*x**4+5*x**2+4), x = 1..2)" />
+</form>
+<span id="commSav8-124" class="commSav" >integrate((x**4 - 3*x**2 + 6)/(x**6-5*x**4+5*x**2+4), x = 1..2)</span>
+<div id="mathAns8-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>2</mn><mo></mo><mrow><mo>arctan</mo><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>arctan</mo><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>arctan</mo><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><mo>arctan</mo><mo>(</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>)</mo></mrow></mrow><mo>-</mo><mi>&#x03C0;</mi></mrow><mn>2</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(f1: OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+<p>Axiom checks beforehand that the function you are integrating is
+defined on the interval  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mstyle></math>, and prints an error message if it
+finds that this is not case, as in the following example:
+</p>
+
+
+
+<div class="verbatim"><br />
+integrate(1/(x**2-2),&nbsp;x&nbsp;=&nbsp;1..2)<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&nbsp;Error&nbsp;detected&nbsp;within&nbsp;library&nbsp;code:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pole&nbsp;in&nbsp;path&nbsp;of&nbsp;integration<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You&nbsp;are&nbsp;being&nbsp;returned&nbsp;to&nbsp;the&nbsp;top&nbsp;level<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;interpreter.<br />
+</div>
+
+
+<p>When parameters are present in the function, the function may or may not be
+defined on the interval of integration.
+</p>
+
+
+<p>If this is the case, Axiom issues a warning that a pole might
+lie in the path of integration, and does not compute the integral.
+</p>
+
+
+
+
+<div id="spadComm8-125" class="spadComm" >
+<form id="formComm8-125" action="javascript:makeRequest('8-125');" >
+<input id="comm8-125" type="text" class="command" style="width: 21em;" value="integrate(1/(x**2-a), x = 1..2)" />
+</form>
+<span id="commSav8-125" class="commSav" >integrate(1/(x**2-a), x = 1..2)</span>
+<div id="mathAns8-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>potentialPole</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(pole: potentialPole,...)
+</div>
+
+
+
+<p>If you know that you are using values of the parameter for which
+the function has no pole in the interval of integration, use the
+string <span class="teletype">``noPole''</span> as a third argument to
+<span class="spadfunFrom" >integrate</span><span class="index">integrate</span><a name="chapter-8-113"/><span class="index">RationalFunctionDefiniteIntegration</span><a name="chapter-8-114"/>:
+</p>
+
+
+<p>The value here is, of course, incorrect if  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sqrt</mi><mo>(</mo><mi>a</mi><mo>)</mo></mrow></mstyle></math> is between
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mn>1</mn></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>2</mn><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm8-126" class="spadComm" >
+<form id="formComm8-126" action="javascript:makeRequest('8-126');" >
+<input id="comm8-126" type="text" class="command" style="width: 28em;" value='integrate(1/(x**2-a), x = 1..2, "noPole")' />
+</form>
+<span id="commSav8-126" class="commSav" >integrate(1/(x**2-a), x = 1..2, "noPole")</span>
+<div id="mathAns8-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mo>-</mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>4</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mo></mo><mi>a</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msqrt><mi>a</mi></msqrt></mrow></mrow><mo>+</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mi>a</mi></mrow><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mo></mo><mi>a</mi></mrow><mo>+</mo><mn>1</mn></mrow></mfrac><mo>)</mo></mrow><mo>+</mo><mrow><mo>log</mo><mo>(</mo><mfrac><mrow><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>8</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>32</mn><mo></mo><mi>a</mi></mrow><mo>)</mo></mrow><mo></mo><mrow><msqrt><mi>a</mi></msqrt></mrow></mrow><mo>+</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>24</mn><mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16</mn><mo></mo><mi>a</mi></mrow></mrow><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>8</mn><mo></mo><mi>a</mi></mrow><mo>+</mo><mn>16</mn></mrow></mfrac><mo>)</mo></mrow><mfrac><mrow><mo>-</mo><mrow><mo>arctan</mo><mo>(</mo><mfrac><mrow><mn>2</mn><mo></mo><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mrow><mi>a</mi></mfrac><mo>)</mo></mrow><mo>+</mo><mrow><mo>arctan</mo><mo>(</mo><mfrac><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow><mi>a</mi></mfrac><mo>)</mo></mrow></mrow><mrow><msqrt><mrow><mo>-</mo><mi>a</mi></mrow></msqrt></mrow></mfrac><mo>)</mo></mrow><mrow><mn>4</mn><mo></mo><mrow><msqrt><mi>a</mi></msqrt></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(f2: List OrderedCompletion Expression Integer,...)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.7.xhtml" style="margin-right: 10px;">Previous Section 8.7 Laplace Transforms</a><a href="section-8.9.xhtml" style="margin-right: 10px;">Next Section 8.9 Working with Power Series</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-8.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-8.9.xhtml
new file mode 100644
index 0000000..701b3ea
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-8.9.xhtml
@@ -0,0 +1,2609 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section8.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.8.xhtml" style="margin-right: 10px;">Previous Section 8.8 Integration</a><a href="section-8.10.xhtml" style="margin-right: 10px;">Next Section 8.10 Solution of Differential Equations</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-8.9">
+<h2 class="sectiontitle">8.9  Working with Power Series</h2>
+
+
+<a name="ugProblemSeries" class="label"/>
+
+
+<p>Axiom has very sophisticated facilities for working with power
+<span class="index">series</span><a name="chapter-8-115"/>
+series.
+<span class="index">power series</span><a name="chapter-8-116"/>
+</p>
+
+
+<p>Infinite series are represented by a list of the coefficients that
+have already been determined, together with a function for computing
+the additional coefficients if needed.
+</p>
+
+
+<p>The system command that determines how many terms of a series is
+displayed is <span class="teletype">)set streams calculate</span>.  For the purposes of this
+book, we have used this system command to display fewer than ten
+terms.  <span class="index">set streams calculate</span><a name="chapter-8-117"/> Series can be created from
+expressions, from functions for the series coefficients, and from
+applications of operations on existing series.  The most general
+function for creating a series is called <span style="font-weight: bold;"> series</span>, although you
+can also use <span style="font-weight: bold;"> taylor</span>, <span style="font-weight: bold;"> laurent</span> and <span style="font-weight: bold;"> puiseux</span> in
+situations where you know what kind of exponents are involved.
+</p>
+
+
+<p>For information about solving differential equations in terms of
+power series, see 
+<a href="section-8.10.xhtml#ugxProblemDEQSeries" class="ref" >ugxProblemDEQSeries</a> .
+</p>
+
+
+
+<a name="subsec-8.9.1"/>
+<div class="subsection"  id="subsec-8.9.1">
+<h3 class="subsectitle">8.9.1  Creation of Power Series</h3>
+
+
+<a name="ugxProblemSeriesCreate" class="label"/>
+
+
+<p>This is the easiest way to create a power series.  This tells Axiom
+that  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> is to be treated as a power series, <span class="index">series:creating</span><a name="chapter-8-118"/>
+so functions of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> are again power series.
+</p>
+
+
+
+
+<div id="spadComm8-127" class="spadComm" >
+<form id="formComm8-127" action="javascript:makeRequest('8-127');" >
+<input id="comm8-127" type="text" class="command" style="width: 10em;" value="x := series 'x " />
+</form>
+<span id="commSav8-127" class="commSav" >x := series 'x </span>
+<div id="mathAns8-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>We didn't say anything about the coefficients of the power series, so
+the coefficients are general expressions over the integers.  This
+allows us to introduce denominators, symbolic constants, and other
+variables as needed.
+</p>
+
+
+<p>Here the coefficients are integers (note that the coefficients are the
+Fibonacci <span class="index">Fibonacci numbers</span><a name="chapter-8-119"/> numbers).
+</p>
+
+
+
+
+<div id="spadComm8-128" class="spadComm" >
+<form id="formComm8-128" action="javascript:makeRequest('8-128');" >
+<input id="comm8-128" type="text" class="command" style="width: 12em;" value="1/(1 - x - x**2) " />
+</form>
+<span id="commSav8-128" class="commSav" >1/(1 - x - x**2) </span>
+<div id="mathAns8-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>13</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>21</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>34</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>55</mn><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>89</mn><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>This series has coefficients that are rational numbers.
+</p>
+
+
+
+
+<div id="spadComm8-129" class="spadComm" >
+<form id="formComm8-129" action="javascript:makeRequest('8-129');" >
+<input id="comm8-129" type="text" class="command" style="width: 5em;" value="sin(x) " />
+</form>
+<span id="commSav8-129" class="commSav" >sin(x) </span>
+<div id="mathAns8-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>-</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>39916800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>When you enter this expression you introduce the symbolic constants
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sin</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>cos</mi><mo>(</mo><mn>1</mn><mo>)</mo><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm8-130" class="spadComm" >
+<form id="formComm8-130" action="javascript:makeRequest('8-130');" >
+<input id="comm8-130" type="text" class="command" style="width: 8em;" value="sin(1 + x) " />
+</form>
+<span id="commSav8-130" class="commSav" >sin(1 + x) </span>
+<div id="mathAns8-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>sin</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mrow><mrow><mo>cos</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo></mo><mi>x</mi></mrow><mo>-</mo><mrow><mfrac><mrow><mo>sin</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><mo>cos</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mo>sin</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mo>cos</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><mo>sin</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><mo>cos</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mo>sin</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mn>40320</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mo>cos</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><mo>sin</mo><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>When you enter the expression
+the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> appears in the resulting series expansion.
+</p>
+
+
+
+
+<div id="spadComm8-131" class="spadComm" >
+<form id="formComm8-131" action="javascript:makeRequest('8-131');" >
+<input id="comm8-131" type="text" class="command" style="width: 8em;" value="sin(a * x) " />
+</form>
+<span id="commSav8-131" class="commSav" >sin(a * x) </span>
+<div id="mathAns8-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>a</mi><mo></mo><mi>x</mi></mrow><mo>-</mo><mrow><mfrac><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>a</mi><mn>5</mn></msup></mrow><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><msup><mi>a</mi><mn>7</mn></msup></mrow><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>a</mi><mn>9</mn></msup></mrow><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><msup><mi>a</mi><mn>11</mn></msup></mrow><mn>39916800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>You can also convert an expression into a series expansion.  This
+expression creates the series expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>/</mo><mi>log</mi><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>y</mi><mo>=</mo><mn>1</mn></mrow></mstyle></math>.
+For details and more examples, see <a href="section-8.9.xhtml#ugxProblemSeriesConversions" class="ref" >ugxProblemSeriesConversions</a> 
+.
+</p>
+
+
+
+
+<div id="spadComm8-132" class="spadComm" >
+<form id="formComm8-132" action="javascript:makeRequest('8-132');" >
+<input id="comm8-132" type="text" class="command" style="width: 15em;" value="series(1/log(y),y = 1)" />
+</form>
+<span id="commSav8-132" class="commSav" >series(1/log(y),y = 1)</span>
+<div id="mathAns8-132" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mrow><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo></mrow></msup></mrow><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>-</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mo></mo><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>19</mn><mn>720</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3</mn><mn>160</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>863</mn><mn>60480</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>275</mn><mn>24192</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>33953</mn><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>8183</mn><mn>1036800</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>3250433</mn><mn>479001600</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>10</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,y,1)
+</div>
+
+
+
+<p>You can create power series with more general coefficients.  You
+normally accomplish this via a type declaration (see 
+<a href="section-2.3.xhtml#ugTypesDeclare" class="ref" >ugTypesDeclare</a> ).  
+See <a href="section-8.9.xhtml#ugxProblemSeriesFunctions" class="ref" >ugxProblemSeriesFunctions</a>  for some warnings about working with 
+declared series.
+</p>
+
+
+<p>We declare that  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> is a one-variable Taylor series
+<span class="index">series:Taylor</span><a name="chapter-8-120"/> (<span class="teletype">UTS</span> is the abbreviation for 
+<span class="teletype">UnivariateTaylorSeries</span>) in the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math> with <span class="teletype">FLOAT</span> 
+(that is, floating-point) coefficients, centered about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>.</mo></mrow></mstyle></math> Then, by
+assignment, we obtain the Taylor expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>exp</mi><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mstyle></math> with
+floating-point coefficients.  <span class="index">UnivariateTaylorSeries</span><a name="chapter-8-121"/>
+</p>
+
+
+
+
+<div id="spadComm8-133" class="spadComm" >
+<form id="formComm8-133" action="javascript:makeRequest('8-133');" >
+<input id="comm8-133" type="text" class="command" style="width: 20em;" value="y : UTS(FLOAT,'z,0) := exp(z) " />
+</form>
+<span id="commSav8-133" class="commSav" >y : UTS(FLOAT,'z,0) := exp(z) </span>
+<div id="mathAns8-133" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>+</mo><mi>z</mi><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>1666666666</mn><mo></mo><mn>6666666667</mn></mrow><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mn>0</mn><mo>.</mo><mn>0416666666</mn><mo></mo><mn>6666666666</mn><mn>7</mn></mrow><mo></mo><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>0083333333</mn><mo></mo><mn>3333333333</mn><mn>34</mn></mrow><mo></mo><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mn>0</mn><mo>.</mo><mn>0013888888</mn><mo></mo><mn>8888888888</mn><mn>89</mn></mrow><mo></mo><mrow><msup><mi>z</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>0001984126</mn><mo></mo><mn>9841269841</mn><mn>27</mn></mrow><mo></mo><mrow><msup><mi>z</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mn>0</mn><mo>.</mo><mn>0000248015</mn><mo></mo><mn>8730158730</mn><mn>1587</mn></mrow><mo></mo><mrow><msup><mi>z</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>0000027557</mn><mo></mo><mn>3192239858</mn><mn>90653</mn></mrow><mo></mo><mrow><msup><mi>z</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mn>0</mn><mo>.</mo><mn>2755731922</mn><mo></mo><mn>3985890653</mn><mi>E</mi><mo>-</mo><mn>6</mn></mrow><mo></mo><mrow><msup><mi>z</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>z</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Float,z,0.0)
+</div>
+
+
+
+<p>You can also create a power series by giving an explicit formula for
+its  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th coefficient.  For details and more examples, see
+<a href="section-8.9.xhtml#ugxProblemSeriesFormula" class="ref" >ugxProblemSeriesFormula</a> .
+</p>
+
+
+<p>To create a series about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>w</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math> whose  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Taylor coefficient is
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>/</mo><mi>n</mi><mo>!</mo></mrow></mstyle></math>, you can evaluate this expression.  This is the Taylor
+expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>exp</mi><mo>(</mo><mi>w</mi><mo>)</mo></mrow></mstyle></math> at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>w</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-134" class="spadComm" >
+<form id="formComm8-134" action="javascript:makeRequest('8-134');" >
+<input id="comm8-134" type="text" class="command" style="width: 20em;" value="series(1/factorial(n),n,w = 0)" />
+</form>
+<span id="commSav8-134" class="commSav" >series(1/factorial(n),n,w = 0)</span>
+<div id="mathAns8-134" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>1</mn><mo>+</mo><mi>w</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>40320</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>w</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,w,0)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.9.2"/>
+<div class="subsection"  id="subsec-8.9.2">
+<h3 class="subsectitle">8.9.2  Coefficients of Power Series</h3>
+
+
+<a name="ugxProblemSeriesCoefficients" class="label"/>
+
+
+<p>You can extract any coefficient from a power series---even one that
+hasn't been computed yet.  This is possible because in Axiom, infinite
+series are represented by a list of the coefficients that have already
+been determined, together with a function for computing the additional
+coefficients.  (This is known as <span class="italic">lazy evaluation</span>.) When you ask
+for a <span class="index">series:lazy evaluation</span><a name="chapter-8-122"/> coefficient that hasn't yet been
+computed, Axiom computes <span class="index">lazy evaluation</span><a name="chapter-8-123"/> whatever additional
+coefficients it needs and then stores them in the representation of
+the power series.
+</p>
+
+
+<p>Here's an example of how to extract the coefficients of a power series.
+<span class="index">series:extracting coefficients</span><a name="chapter-8-124"/>
+</p>
+
+
+
+
+<div id="spadComm8-135" class="spadComm" >
+<form id="formComm8-135" action="javascript:makeRequest('8-135');" >
+<input id="comm8-135" type="text" class="command" style="width: 10em;" value="x := series(x) " />
+</form>
+<span id="commSav8-135" class="commSav" >x := series(x) </span>
+<div id="mathAns8-135" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+<div id="spadComm8-136" class="spadComm" >
+<form id="formComm8-136" action="javascript:makeRequest('8-136');" >
+<input id="comm8-136" type="text" class="command" style="width: 15em;" value="y := exp(x) * sin(x)  " />
+</form>
+<span id="commSav8-136" class="commSav" >y := exp(x) * sin(x)  </span>
+<div id="mathAns8-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>x</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>30</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>90</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>630</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>22680</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>113400</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>1247400</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>This coefficient is readily available.
+</p>
+
+
+
+
+<div id="spadComm8-137" class="spadComm" >
+<form id="formComm8-137" action="javascript:makeRequest('8-137');" >
+<input id="comm8-137" type="text" class="command" style="width: 12em;" value="coefficient(y,6) " />
+</form>
+<span id="commSav8-137" class="commSav" >coefficient(y,6) </span>
+<div id="mathAns8-137" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>1</mn><mn>90</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>But let's get the fifteenth coefficient of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-138" class="spadComm" >
+<form id="formComm8-138" action="javascript:makeRequest('8-138');" >
+<input id="comm8-138" type="text" class="command" style="width: 13em;" value="coefficient(y,15)  " />
+</form>
+<span id="commSav8-138" class="commSav" >coefficient(y,15)  </span>
+<div id="mathAns8-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>1</mn><mn>10216206000</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>If you look at  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> then you see that the coefficients up to order  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>15</mn></mstyle></math>
+have all been computed.
+</p>
+
+
+
+
+<div id="spadComm8-139" class="spadComm" >
+<form id="formComm8-139" action="javascript:makeRequest('8-139');" >
+<input id="comm8-139" type="text" class="command" style="width: 2em;" value="y " />
+</form>
+<span id="commSav8-139" class="commSav" >y </span>
+<div id="mathAns8-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>x</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>30</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>90</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>630</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>22680</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>113400</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>1247400</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>97297200</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>681080400</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>10216206000</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>16</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.9.3"/>
+<div class="subsection"  id="subsec-8.9.3">
+<h3 class="subsectitle">8.9.3  Power Series Arithmetic</h3>
+
+
+<a name="ugxProblemSeriesArithmetic" class="label"/>
+
+
+<p>You can manipulate power series using the usual arithmetic operations
+<span class="index">series:arithmetic</span><a name="chapter-8-125"/>
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mo>+</mo></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>-</mo></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>*</mo></mstyle></math>, and  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>/</mo></mstyle></math> (from UnivariatePuiseuxSeries)
+</p>
+
+
+<p>The results of these operations are also power series.
+</p>
+
+
+
+
+<div id="spadComm8-140" class="spadComm" >
+<form id="formComm8-140" action="javascript:makeRequest('8-140');" >
+<input id="comm8-140" type="text" class="command" style="width: 10em;" value="x := series x " />
+</form>
+<span id="commSav8-140" class="commSav" >x := series x </span>
+<div id="mathAns8-140" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+<div id="spadComm8-141" class="spadComm" >
+<form id="formComm8-141" action="javascript:makeRequest('8-141');" >
+<input id="comm8-141" type="text" class="command" style="width: 13em;" value="(3 + x) / (1 + 7*x)" />
+</form>
+<span id="commSav8-141" class="commSav" >(3 + x) / (1 + 7*x)</span>
+<div id="mathAns8-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>3</mn><mo>-</mo><mrow><mn>20</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>140</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>980</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6860</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>48020</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>336140</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2352980</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>16470860</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>115296020</mn><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>807072140</mn><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>You can also compute  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>*</mo><mo>*</mo><mi>g</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>, where  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>
+are two power series.
+</p>
+
+
+
+
+<div id="spadComm8-142" class="spadComm" >
+<form id="formComm8-142" action="javascript:makeRequest('8-142');" >
+<input id="comm8-142" type="text" class="command" style="width: 14em;" value="base := 1 / (1 - x)  " />
+</form>
+<span id="commSav8-142" class="commSav" >base := 1 / (1 - x)  </span>
+<div id="mathAns8-142" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+<div id="spadComm8-143" class="spadComm" >
+<form id="formComm8-143" action="javascript:makeRequest('8-143');" >
+<input id="comm8-143" type="text" class="command" style="width: 13em;" value="expon := x * base  " />
+</form>
+<span id="commSav8-143" class="commSav" >expon := x * base  </span>
+<div id="mathAns8-143" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+<div id="spadComm8-144" class="spadComm" >
+<form id="formComm8-144" action="javascript:makeRequest('8-144');" >
+<input id="comm8-144" type="text" class="command" style="width: 10em;" value="base ** expon " />
+</form>
+<span id="commSav8-144" class="commSav" >base ** expon </span>
+<div id="mathAns8-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>1</mn><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>3</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>7</mn><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>43</mn><mn>12</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>649</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>241</mn><mn>30</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3706</mn><mn>315</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>85763</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>245339</mn><mn>10080</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.9.4"/>
+<div class="subsection"  id="subsec-8.9.4">
+<h3 class="subsectitle">8.9.4  Functions on Power Series</h3>
+
+
+<a name="ugxProblemSeriesFunctions" class="label"/>
+
+
+<p>Once you have created a power series, you can apply transcendental
+functions
+(for example, <span style="font-weight: bold;"> exp</span>, <span style="font-weight: bold;"> log</span>, <span style="font-weight: bold;"> sin</span>, <span style="font-weight: bold;"> tan</span>,
+<span style="font-weight: bold;"> cosh</span>, etc.) to it.
+</p>
+
+
+<p>To demonstrate this, we first create the power series
+expansion of the rational function
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mrow><mn>1</mn><mo>-</mo><mn>6</mn><mi>x</mi><mo>+</mo><msup><mi>x</mi><mn>2</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+<p>about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-145" class="spadComm" >
+<form id="formComm8-145" action="javascript:makeRequest('8-145');" >
+<input id="comm8-145" type="text" class="command" style="width: 10em;" value="x := series 'x " />
+</form>
+<span id="commSav8-145" class="commSav" >x := series 'x </span>
+<div id="mathAns8-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+<div id="spadComm8-146" class="spadComm" >
+<form id="formComm8-146" action="javascript:makeRequest('8-146');" >
+<input id="comm8-146" type="text" class="command" style="width: 22em;" value="rat := x**2 / (1 - 6*x + x**2)  " />
+</form>
+<span id="commSav8-146" class="commSav" >rat := x**2 / (1 - 6*x + x**2)  </span>
+<div id="mathAns8-146" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>35</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>204</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1189</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6930</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>40391</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>235416</mn><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>1372105</mn><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7997214</mn><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>46611179</mn><mo></mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>13</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>If you want to compute the series expansion of
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>sin</mo><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mrow><mrow><mn>1</mn><mo>-</mo><mn>6</mn><mi>x</mi><mo>+</mo><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>)</mo></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+<p>you simply compute the sine of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>rat</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-147" class="spadComm" >
+<form id="formComm8-147" action="javascript:makeRequest('8-147');" >
+<input id="comm8-147" type="text" class="command" style="width: 6em;" value="sin(rat) " />
+</form>
+<span id="commSav8-147" class="commSav" >sin(rat) </span>
+<div id="mathAns8-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>35</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>204</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>7133</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6927</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>80711</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>235068</mn><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>164285281</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>31888513</mn><mn>4</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>371324777</mn><mn>8</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>13</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p> <span style="font-weight: bold;"> Warning:</span>
+the type of the coefficients of a power series may
+affect the kind of computations that you can do with that series.
+This can only happen when you have made a declaration to
+specify a series domain with a certain type of coefficient.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>If you evaluate then you have declared that  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> is a one variable
+Taylor series <span class="index">series:Taylor</span><a name="chapter-8-126"/> (<span class="teletype">UTS</span> is the abbreviation for
+<span class="teletype">UnivariateTaylorSeries</span>) in the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> with <span class="teletype">FRAC INT</span>
+(that is, fractions of integer) coefficients, centered about  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-148" class="spadComm" >
+<form id="formComm8-148" action="javascript:makeRequest('8-148');" >
+<input id="comm8-148" type="text" class="command" style="width: 18em;" value="y : UTS(FRAC INT,y,0) := y " />
+</form>
+<span id="commSav8-148" class="commSav" >y : UTS(FRAC INT,y,0) := y </span>
+<div id="mathAns8-148" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Fraction Integer,y,0)
+</div>
+
+
+
+<p>You can now compute certain power series in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>, <span class="italic">provided</span> that
+these series have rational coefficients.
+</p>
+
+
+
+
+<div id="spadComm8-149" class="spadComm" >
+<form id="formComm8-149" action="javascript:makeRequest('8-149');" >
+<input id="comm8-149" type="text" class="command" style="width: 5em;" value="exp(y) " />
+</form>
+<span id="commSav8-149" class="commSav" >exp(y) </span>
+<div id="mathAns8-149" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>1</mn><mo>+</mo><mi>y</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>40320</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>y</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Fraction Integer,y,0)
+</div>
+
+
+
+<p>You can get examples of such series by applying transcendental
+functions to series in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> that have no constant terms.
+</p>
+
+
+
+
+<div id="spadComm8-150" class="spadComm" >
+<form id="formComm8-150" action="javascript:makeRequest('8-150');" >
+<input id="comm8-150" type="text" class="command" style="width: 7em;" value="tan(y**2) " />
+</form>
+<span id="commSav8-150" class="commSav" >tan(y**2) </span>
+<div id="mathAns8-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>15</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>y</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Fraction Integer,y,0)
+</div>
+
+
+
+
+
+<div id="spadComm8-151" class="spadComm" >
+<form id="formComm8-151" action="javascript:makeRequest('8-151');" >
+<input id="comm8-151" type="text" class="command" style="width: 10em;" value="cos(y + y**5) " />
+</form>
+<span id="commSav8-151" class="commSav" >cos(y + y**5) </span>
+<div id="mathAns8-151" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>721</mn><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>6721</mn><mn>40320</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1844641</mn><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>y</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Fraction Integer,y,0)
+</div>
+
+
+
+<p>Similarly, you can compute the logarithm of a power series with rational
+coefficients if the constant coefficient is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm8-152" class="spadComm" >
+<form id="formComm8-152" action="javascript:makeRequest('8-152');" >
+<input id="comm8-152" type="text" class="command" style="width: 11em;" value="log(1 + sin(y)) " />
+</form>
+<span id="commSav8-152" class="commSav" >log(1 + sin(y)) </span>
+<div id="mathAns8-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>y</mi><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>45</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>61</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>17</mn><mn>2520</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>277</mn><mn>72576</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>31</mn><mn>14175</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>y</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Fraction Integer,y,0)
+</div>
+
+
+
+<p>If you wanted to apply, say, the operation <span style="font-weight: bold;"> exp</span> to a power series
+with a nonzero constant coefficient  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mn>0</mn></msub></mrow></mstyle></math>, then the constant
+coefficient of the result would be  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>e</mi><mrow><msub><mi>a</mi><mn>0</mn></msub></mrow></msup></mrow></mstyle></math>, which is <span class="italic">not</span> a
+rational number.  Therefore, evaluating  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>exp</mi><mo>(</mo><mn>2</mn><mo>+</mo><mi>tan</mi><mo>(</mo><mi>y</mi><mo>)</mo><mo>)</mo></mrow></mstyle></math> would
+generate an error message.
+</p>
+
+
+<p>If you want to compute the Taylor expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>exp</mi><mo>(</mo><mn>2</mn><mo>+</mo><mi>tan</mi><mo>(</mo><mi>y</mi><mo>)</mo><mo>)</mo></mrow></mstyle></math>, you
+must ensure that the coefficient domain has an operation <span style="font-weight: bold;"> exp</span>
+defined for it.  An example of such a domain is <span class="teletype">Expression
+Integer</span>, the type of formal functional expressions over the integers.
+</p>
+
+
+<p>When working with coefficients of this type,
+</p>
+
+
+
+
+<div id="spadComm8-153" class="spadComm" >
+<form id="formComm8-153" action="javascript:makeRequest('8-153');" >
+<input id="comm8-153" type="text" class="command" style="width: 18em;" value="z : UTS(EXPR INT,z,0) := z " />
+</form>
+<span id="commSav8-153" class="commSav" >z : UTS(EXPR INT,z,0) := z </span>
+<div id="mathAns8-153" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>z</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,z,0)
+</div>
+
+
+
+<p>this presents no problems.
+</p>
+
+
+
+
+<div id="spadComm8-154" class="spadComm" >
+<form id="formComm8-154" action="javascript:makeRequest('8-154');" >
+<input id="comm8-154" type="text" class="command" style="width: 11em;" value="exp(2 + tan(z)) " />
+</form>
+<span id="commSav8-154" class="commSav" >exp(2 + tan(z)) </span>
+<div id="mathAns8-154" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo></mo><mi>z</mi></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>3</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>8</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>37</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>59</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>240</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>137</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><mn>871</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>5760</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>41641</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>325249</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>z</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>z</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,z,0)
+</div>
+
+
+
+<p>Another way to create Taylor series whose coefficients are expressions
+over the integers is to use <span style="font-weight: bold;"> taylor</span> which works similarly to
+<span class="index">series:Taylor</span><a name="chapter-8-127"/> <span style="font-weight: bold;"> series</span>.
+</p>
+
+
+<p>This is equivalent to the previous computation, except that now we
+are using the variable  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>w</mi></mstyle></math> instead of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-155" class="spadComm" >
+<form id="formComm8-155" action="javascript:makeRequest('8-155');" >
+<input id="comm8-155" type="text" class="command" style="width: 10em;" value="w := taylor 'w " />
+</form>
+<span id="commSav8-155" class="commSav" >w := taylor 'w </span>
+<div id="mathAns8-155" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>w</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,w,0)
+</div>
+
+
+
+
+
+<div id="spadComm8-156" class="spadComm" >
+<form id="formComm8-156" action="javascript:makeRequest('8-156');" >
+<input id="comm8-156" type="text" class="command" style="width: 11em;" value="exp(2 + tan(w)) " />
+</form>
+<span id="commSav8-156" class="commSav" >exp(2 + tan(w)) </span>
+<div id="mathAns8-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo></mo><mi>w</mi></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>3</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>8</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>37</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>59</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>240</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>137</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><mn>871</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>5760</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>41641</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>325249</mn><mo></mo><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>w</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>w</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,w,0)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.9.5"/>
+<div class="subsection"  id="subsec-8.9.5">
+<h3 class="subsectitle">8.9.5  Converting to Power Series</h3>
+
+
+<a name="ugxProblemSeriesConversions" class="label"/>
+
+
+<p>The <span class="teletype">ExpressionToUnivariatePowerSeries</span> package provides
+operations for computing series expansions of functions.
+<span class="index">ExpressionToUnivariatePowerSeries</span><a name="chapter-8-128"/>
+</p>
+
+
+<p>Evaluate this to compute the Taylor expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sin</mi><mi>x</mi></mrow></mstyle></math> about
+<span class="index">series:Taylor</span><a name="chapter-8-129"/>  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.  The first argument,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sin</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>,
+specifies the function whose series expansion is to be computed and
+the second argument,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>, specifies that the series is to be
+expanded in power of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>0</mn><mo>)</mo></mrow></mstyle></math>, that is, in power of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-157" class="spadComm" >
+<form id="formComm8-157" action="javascript:makeRequest('8-157');" >
+<input id="comm8-157" type="text" class="command" style="width: 14em;" value="taylor(sin(x),x = 0)" />
+</form>
+<span id="commSav8-157" class="commSav" >taylor(sin(x),x = 0)</span>
+<div id="mathAns8-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>-</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>Here is the Taylor expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sin</mi><mi>x</mi></mrow></mstyle></math> about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac></mrow></mstyle></math>:
+</p>
+
+
+
+
+<div id="spadComm8-158" class="spadComm" >
+<form id="formComm8-158" action="javascript:makeRequest('8-158');" >
+<input id="comm8-158" type="text" class="command" style="width: 17em;" value="taylor(sin(x),x = %pi/6)" />
+</form>
+<span id="commSav8-158" class="commSav" >taylor(sin(x),x = %pi/6)</span>
+<div id="mathAns8-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>+</mo><mrow><mfrac><mrow><msqrt><mn>3</mn></msqrt></mrow><mn>2</mn></mfrac><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><msqrt><mn>3</mn></msqrt></mrow><mn>12</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>48</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><msqrt><mn>3</mn></msqrt></mrow><mn>240</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>1440</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mrow><msqrt><mn>3</mn></msqrt></mrow><mn>10080</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>80640</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><msqrt><mn>3</mn></msqrt></mrow><mn>725760</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>7257600</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mi>&#x03C0;</mi><mn>6</mn></mfrac><mo>)</mo></mrow><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,x,pi/6)
+</div>
+
+
+
+
+<p>The function to be expanded into a series may have variables other
+than <span class="index">series:multiple variables</span><a name="chapter-8-130"/> the series variable.
+</p>
+
+
+<p>For example, we may expand  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>tan</mi><mo>(</mo><mi>x</mi><mo>*</mo><mi>y</mi><mo>)</mo></mrow></mstyle></math> as a Taylor series in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm8-159" class="spadComm" >
+<form id="formComm8-159" action="javascript:makeRequest('8-159');" >
+<input id="comm8-159" type="text" class="command" style="width: 15em;" value="taylor(tan(x*y),x = 0)" />
+</form>
+<span id="commSav8-159" class="commSav" >taylor(tan(x*y),x = 0)</span>
+<div id="mathAns8-159" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>y</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>2</mn><mo></mo><mrow><msup><mi>y</mi><mn>5</mn></msup></mrow></mrow><mn>15</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>17</mn><mo></mo><mrow><msup><mi>y</mi><mn>7</mn></msup></mrow></mrow><mn>315</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>62</mn><mo></mo><mrow><msup><mi>y</mi><mn>9</mn></msup></mrow></mrow><mn>2835</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>or as a Taylor series in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-160" class="spadComm" >
+<form id="formComm8-160" action="javascript:makeRequest('8-160');" >
+<input id="comm8-160" type="text" class="command" style="width: 15em;" value="taylor(tan(x*y),y = 0)" />
+</form>
+<span id="commSav8-160" class="commSav" >taylor(tan(x*y),y = 0)</span>
+<div id="mathAns8-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x</mi><mo></mo><mi>y</mi></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mn>3</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mn>15</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>17</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mn>315</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mn>62</mn><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mn>2835</mn></mfrac><mo></mo><mrow><msup><mi>y</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>y</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,y,0)
+</div>
+
+
+
+<p>A more interesting function is 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mi>t</mi><msup><mi>e</mi><mrow><mi>x</mi><mi>t</mi></mrow></msup></mrow><mrow><msup><mi>e</mi><mi>t</mi></msup><mo>-</mo><mn>1</mn></mrow></mfrac></mstyle></math> 
+When we expand this function as a Taylor
+series in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math> the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th order coefficient is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Bernoulli
+<span class="index">Bernoulli:polynomial</span><a name="chapter-8-131"/> polynomial <span class="index">polynomial:Bernoulli</span><a name="chapter-8-132"/>
+divided by  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>!</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-161" class="spadComm" >
+<form id="formComm8-161" action="javascript:makeRequest('8-161');" >
+<input id="comm8-161" type="text" class="command" style="width: 31em;" value="bern := taylor(t*exp(x*t)/(exp(t) - 1),t = 0) " />
+</form>
+<span id="commSav8-161" class="commSav" >bern := taylor(t*exp(x*t)/(exp(t) - 1),t = 0) </span>
+<div id="mathAns8-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>1</mn><mo>+</mo><mrow><mfrac><mrow><mrow><mn>2</mn><mo></mo><mi>x</mi></mrow><mo>-</mo><mn>1</mn></mrow><mn>2</mn></mfrac><mo></mo><mi>t</mi></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow><mn>12</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mi>x</mi></mrow><mn>12</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><mrow><mn>30</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>60</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>15</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mi>x</mi></mrow><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><mrow><mn>42</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>126</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>105</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>21</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mn>30240</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>21</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>21</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mi>x</mi></mrow><mn>30240</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><mrow><mn>30</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>120</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>140</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>70</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>20</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mn>1209600</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><mrow><mn>10</mn><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>45</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>60</mn><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>42</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>20</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mi>x</mi></mrow></mrow><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><mrow><mn>66</mn><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>330</mn><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>495</mn><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>462</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>330</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>99</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>5</mn></mrow><mn>239500800</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>t</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,t,0)
+</div>
+
+
+
+<p>Therefore, this and the next expression produce the same result.
+</p>
+
+
+
+
+<div id="spadComm8-162" class="spadComm" >
+<form id="formComm8-162" action="javascript:makeRequest('8-162');" >
+<input id="comm8-162" type="text" class="command" style="width: 24em;" value="factorial(6) * coefficient(bern,6) " />
+</form>
+<span id="commSav8-162" class="commSav" >factorial(6) * coefficient(bern,6) </span>
+<div id="mathAns8-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>42</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>126</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>105</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>21</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mn>42</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm8-163" class="spadComm" >
+<form id="formComm8-163" action="javascript:makeRequest('8-163');" >
+<input id="comm8-163" type="text" class="command" style="width: 10em;" value="bernoulliB(6,x)" />
+</form>
+<span id="commSav8-163" class="commSav" >bernoulliB(6,x)</span>
+<div id="mathAns8-163" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>5</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>42</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+<p>Technically, a series with terms of negative degree is not considered
+to be a Taylor series, but, rather, a <span class="index">series:Laurent</span><a name="chapter-8-133"/> 
+<span class="italic">Laurent series</span>.  <span class="index">Laurent series</span><a name="chapter-8-134"/> If you try to compute a
+Taylor series expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mfrac><mi>x</mi><mrow><mo>log</mo><mi>x</mi></mrow></mfrac></mrow></mstyle></math> at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow></mstyle></math> via
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>taylor</mi><mo>(</mo><mi>x</mi><mo>/</mo><mi>log</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>,</mo><mi>x</mi><mo>=</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math> you get an error message.  The reason is that
+the function has a <span class="italic">pole</span> at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow></mstyle></math>, meaning that its series
+expansion about this point has terms of negative degree.  A series
+with finitely many terms of negative degree is called a Laurent
+series.
+</p>
+
+
+<p>You get the desired series expansion by issuing this.
+</p>
+
+
+
+
+<div id="spadComm8-164" class="spadComm" >
+<form id="formComm8-164" action="javascript:makeRequest('8-164');" >
+<input id="comm8-164" type="text" class="command" style="width: 16em;" value="laurent(x/log(x),x = 1)" />
+</form>
+<span id="commSav8-164" class="commSav" >laurent(x/log(x),x = 1)</span>
+<div id="mathAns8-164" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mrow><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo></mrow></msup></mrow><mo>+</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>+</mo><mrow><mfrac><mn>5</mn><mn>12</mn></mfrac><mo></mo><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>11</mn><mn>720</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>1440</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>271</mn><mn>60480</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>13</mn><mn>4480</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>7297</mn><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>425</mn><mn>290304</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>530113</mn><mn>479001600</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>10</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Expression Integer,x,1)
+</div>
+
+
+
+<p>Similarly, a series with terms of fractional degree is neither a
+Taylor series nor a Laurent series.  Such a series is called a
+<span class="index">series:Puiseux</span><a name="chapter-8-135"/> <span class="italic">Puiseux series</span>.  <span class="index">Puiseux series</span><a name="chapter-8-136"/>
+The expression  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>laurent</mi><mo>(</mo><mi>sqrt</mi><mo>(</mo><mi>sec</mi><mo>(</mo><mi>x</mi><mo>)</mo><mo>)</mo><mo>,</mo><mi>x</mi><mo>=</mo><mn>3</mn><mo>*</mo><mo>%</mo><mi>pi</mi><mo>/</mo><mn>2</mn><mo>)</mo></mrow></mstyle></math> results in an
+error message because the series expansion about this point has terms
+of fractional degree.
+</p>
+
+
+<p>However, this command produces what you want.
+</p>
+
+
+
+
+<div id="spadComm8-165" class="spadComm" >
+<form id="formComm8-165" action="javascript:makeRequest('8-165');" >
+<input id="comm8-165" type="text" class="command" style="width: 24em;" value="puiseux(sqrt(sec(x)),x = 3 * %pi/2)" />
+</form>
+<span id="commSav8-165" class="commSav" >puiseux(sqrt(sec(x)),x = 3 * %pi/2)</span>
+<div id="mathAns8-165" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mrow><mn>3</mn><mo></mo><mi>&#x03C0;</mi></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mrow><mo>(</mo><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>)</mo></mrow></msup></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mrow><mn>3</mn><mo></mo><mi>&#x03C0;</mi></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mfrac><mn>3</mn><mn>2</mn></mfrac></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>160</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mrow><mn>3</mn><mo></mo><mi>&#x03C0;</mi></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mfrac><mn>7</mn><mn>2</mn></mfrac></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mfrac><mrow><mn>3</mn><mo></mo><mi>&#x03C0;</mi></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mn>5</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,(3*pi)/2)
+</div>
+
+
+
+<p>Finally, consider the case of functions that do not have Puiseux
+expansions about certain points.  An example of this is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>x</mi></msup></mrow></mstyle></math> about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.   <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>puiseux</mi><mo>(</mo><mi>x</mi><mo>*</mo><mo>*</mo><mi>x</mi><mo>,</mo><mi>x</mi><mo>=</mo><mn>0</mn><mo>)</mo></mrow></mstyle></math> produces an error message because of the
+type of singularity of the function at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+<p>The general function <span style="font-weight: bold;"> series</span> can be used in this case.
+Notice that the series returned is not, strictly speaking, a power series
+because of the  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>log</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> in the expansion.
+</p>
+
+
+
+
+<div id="spadComm8-166" class="spadComm" >
+<form id="formComm8-166" action="javascript:makeRequest('8-166');" >
+<input id="comm8-166" type="text" class="command" style="width: 11em;" value="series(x**x,x=0)" />
+</form>
+<span id="commSav8-166" class="commSav" >series(x**x,x=0)</span>
+<div id="mathAns8-166" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>1</mn><mo>+</mo><mrow><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>3</mn></msup></mrow><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>4</mn></msup></mrow><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>5</mn></msup></mrow><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>6</mn></msup></mrow><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>7</mn></msup></mrow><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>8</mn></msup></mrow><mn>40320</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>9</mn></msup></mrow><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mrow><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>10</mn></msup></mrow><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: GeneralUnivariatePowerSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>The operation <span style="font-weight: bold;"> series</span> returns the most general type of
+infinite series.
+The user who is not interested in distinguishing
+between various types of infinite series may wish to use this operation
+exclusively.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.9.6"/>
+<div class="subsection"  id="subsec-8.9.6">
+<h3 class="subsectitle">8.9.6  Power Series from Formulas</h3>
+
+
+<a name="ugxProblemSeriesFormula" class="label"/>
+
+
+<p>The <span class="teletype">GenerateUnivariatePowerSeries</span> package enables you to
+<span class="index">series:giving formula for coefficients</span><a name="chapter-8-137"/> create power series
+from explicit formulas for their  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th coefficients.  In what
+follows, we construct series expansions for certain transcendental
+functions by giving formulas for their coefficients.  You can also
+compute such series expansions directly simply by specifying the
+function and the point about which the series is to be expanded.
+<span class="index">GenerateUnivariatePowerSeries</span><a name="chapter-8-138"/> See
+<a href="section-8.9.xhtml#ugxProblemSeriesConversions" class="ref" >ugxProblemSeriesConversions</a>  for more information.
+</p>
+
+
+<p>Consider the Taylor expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow></mstyle></math> <span class="index">series:Taylor</span><a name="chapter-8-139"/>
+about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>:
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><msup><mi>e</mi><mi>x</mi></msup></mtd><mtd><mo>=</mo></mtd><mtd><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mfrac><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mn>6</mn></mfrac><mo>+</mo><mo>&#x00b7;</mo><mo>&#x00b7;</mo><mo>&#x00b7;</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd></mtd><mtd><mo>=</mo></mtd><mtd><munderover><mo>&#x2211;</mo><mrow><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow></mrow><mrow><mo>&#x221E;</mo></mrow></munderover><mfrac><mrow><msup><mi>x</mi><mi>n</mi></msup></mrow><mrow><mi>n</mi><mo>!</mo></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+<p>The  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Taylor coefficient is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>/</mo><mi>n</mi><mo>!</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>This is how you create this series in Axiom.
+</p>
+
+
+
+
+<div id="spadComm8-167" class="spadComm" >
+<form id="formComm8-167" action="javascript:makeRequest('8-167');" >
+<input id="comm8-167" type="text" class="command" style="width: 23em;" value="series(n +-> 1/factorial(n),x = 0)" />
+</form>
+<span id="commSav8-167" class="commSav" >series(n +-> 1/factorial(n),x = 0)</span>
+<div id="mathAns8-167" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>40320</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>The first argument specifies a formula for the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th coefficient by
+giving a function that maps  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>/</mo><mi>n</mi><mo>!</mo></mrow></mstyle></math>.  The second argument
+specifies that the series is to be expanded in powers of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>0</mn><mo>)</mo></mrow></mstyle></math>,
+that is, in powers of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.  Since we did not specify an initial
+degree, the first term in the series was the term of degree 0 (the
+constant term).  Note that the formula was given as an anonymous
+function.  These are discussed in <a href="section-6.17.xhtml#ugUserAnon" class="ref" >ugUserAnon</a> .
+</p>
+
+
+<p>Consider the Taylor expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>log</mi><mi>x</mi></mrow></mstyle></math> about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow></mstyle></math>:
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>log</mo><mo>(</mo><mi>x</mi><mo>)</mo></mtd><mtd><mo>=</mo></mtd><mtd><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo><mo>-</mo><mfrac><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><msup><mo>)</mo><mn>2</mn></msup></mrow><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><msup><mo>)</mo><mn>3</mn></msup></mrow><mn>3</mn></mfrac><mo>-</mo><mo>&#x00b7;</mo><mo>&#x00b7;</mo><mo>&#x00b7;</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd></mtd><mtd><mo>=</mo></mtd><mtd><munderover><mo>&#x2211;</mo><mrow><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow></mrow><mrow><mo>&#x221E;</mo></mrow></munderover><mo>(</mo><mo>-</mo><mn>1</mn><msup><mo>)</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup><mfrac><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><msup><mo>)</mo><mi>n</mi></msup></mrow><mi>n</mi></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+<p>If you were to evaluate the expression 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>series</mi><mo>(</mo><mi>n</mi><mo>+</mo><mo>-</mo><mo>&gt;</mo><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo><mo>*</mo><mo>*</mo><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>)</mo><mo>/</mo><mi>n</mi><mo>,</mo><mi>x</mi><mo>=</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math> 
+you would get an error message because Axiom would try to
+calculate a term of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math> and therefore divide by  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>0</mn><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+<p>Instead, evaluate this.
+The third argument,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>.</mo><mo>.</mo></mrow></mstyle></math>, indicates that only terms of degree
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>1</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo></mrow></mstyle></math> are to be computed.
+</p>
+
+
+
+
+<div id="spadComm8-168" class="spadComm" >
+<form id="formComm8-168" action="javascript:makeRequest('8-168');" >
+<input id="comm8-168" type="text" class="command" style="width: 25em;" value="series(n +-> (-1)**(n-1)/n,x = 1,1..)" />
+</form>
+<span id="commSav8-168" class="commSav" >series(n +-> (-1)**(n-1)/n,x = 1,1..)</span>
+<div id="mathAns8-168" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>7</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>8</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>11</mn></mfrac><mo></mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>O</mi><mo>(</mo><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>12</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,1)
+</div>
+
+
+
+<p>Next consider the Taylor expansion of an odd function, say,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sin</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>:
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>x</mi><mo>-</mo><mfrac><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mrow><mn>3</mn><mo>!</mo></mrow></mfrac><mo>+</mo><mfrac><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mrow><mn>5</mn><mo>!</mo></mrow></mfrac><mo>-</mo></mrow><mo>&#x00b7;</mo><mo>&#x00b7;</mo><mo>&#x00b7;</mo></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+<p>Here every other coefficient is zero and we would like to give an
+explicit formula only for the odd Taylor coefficients.
+</p>
+
+
+<p>This is one way to do it.  The third argument,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>.</mo><mo>.</mo></mrow></mstyle></math>, specifies that
+the first term to be computed is the term of degree 1.  The fourth
+argument,  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math>, specifies that we increment by  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>2</mn></mstyle></math> to find the degrees
+of subsequent terms, that is, the next term is of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>+</mo><mn>2</mn></mrow></mstyle></math>, the
+next of degree  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>+</mo><mn>2</mn><mo>+</mo><mn>2</mn></mrow></mstyle></math>, etc.
+</p>
+
+
+
+
+<div id="spadComm8-169" class="spadComm" >
+<form id="formComm8-169" action="javascript:makeRequest('8-169');" >
+<input id="comm8-169" type="text" class="command" style="width: 36em;" value="series(n +-> (-1)**((n-1)/2)/factorial(n),x = 0,1..,2)" />
+</form>
+<span id="commSav8-169" class="commSav" >series(n +-> (-1)**((n-1)/2)/factorial(n),x = 0,1..,2)</span>
+<div id="mathAns8-169" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>-</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>39916800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>The initial degree and the increment do not have to be integers.
+For example, this expression produces a series expansion of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>sin</mo><mo>(</mo><msup><mi>x</mi><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow></msup><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-170" class="spadComm" >
+<form id="formComm8-170" action="javascript:makeRequest('8-170');" >
+<input id="comm8-170" type="text" class="command" style="width: 42em;" value="series(n +-> (-1)**((3*n-1)/2)/factorial(3*n),x = 0,1/3..,2/3)" />
+</form>
+<span id="commSav8-170" class="commSav" >series(n +-> (-1)**((3*n-1)/2)/factorial(3*n),x = 0,1/3..,2/3)</span>
+<div id="mathAns8-170" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mfrac><mn>1</mn><mn>3</mn></mfrac></msup></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mfrac><mn>5</mn><mn>3</mn></mfrac></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mfrac><mn>7</mn><mn>3</mn></mfrac></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>39916800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mfrac><mn>11</mn><mn>3</mn></mfrac></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>While the increment must be positive, the initial degree may be
+negative.  This yields the Laurent expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>csc</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+(bernoulli(numer(n+1)) is necessary because bernoulli takes integer
+arguments.)
+</p>
+
+
+
+
+<div id="spadComm8-171" class="spadComm" >
+<form id="formComm8-171" action="javascript:makeRequest('8-171');" >
+<input id="comm8-171" type="text" class="command" style="width: 72em;" value="cscx := series(n +-> (-1)**((n-1)/2) * 2 * (2**n-1) * bernoulli(numer(n+1)) / factorial(n+1), x=0, -1..,2) " />
+</form>
+<span id="commSav8-171" class="commSav" >cscx := series(n +-> (-1)**((n-1)/2) * 2 * (2**n-1) * bernoulli(numer(n+1)) / factorial(n+1), x=0, -1..,2) </span>
+<div id="mathAns8-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mrow><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo></mrow></msup></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mi>x</mi></mrow><mo>+</mo><mrow><mfrac><mn>7</mn><mn>360</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>31</mn><mn>15120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>127</mn><mn>604800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>73</mn><mn>3421440</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>Of course, the reciprocal of this power series is the Taylor expansion
+of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sin</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-172" class="spadComm" >
+<form id="formComm8-172" action="javascript:makeRequest('8-172');" >
+<input id="comm8-172" type="text" class="command" style="width: 5em;" value="1/cscx " />
+</form>
+<span id="commSav8-172" class="commSav" >1/cscx </span>
+<div id="mathAns8-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>-</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>39916800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>As a final example,here is the Taylor expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>asin</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-173" class="spadComm" >
+<form id="formComm8-173" action="javascript:makeRequest('8-173');" >
+<input id="comm8-173" type="text" class="command" style="width: 46em;" value="asinx := series(n +-> binomial(n-1,(n-1)/2)/(n*2**(n-1)),x=0,1..,2) " />
+</form>
+<span id="commSav8-173" class="commSav" >asinx := series(n +-> binomial(n-1,(n-1)/2)/(n*2**(n-1)),x=0,1..,2) </span>
+<div id="mathAns8-173" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3</mn><mn>40</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>5</mn><mn>112</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>35</mn><mn>1152</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>63</mn><mn>2816</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+<p>When we compute the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>sin</mi></mstyle></math> of this series, we get  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>
+(in the sense that all higher terms computed so far are zero).
+</p>
+
+
+
+
+<div id="spadComm8-174" class="spadComm" >
+<form id="formComm8-174" action="javascript:makeRequest('8-174');" >
+<input id="comm8-174" type="text" class="command" style="width: 8em;" value="sin(asinx) " />
+</form>
+<span id="commSav8-174" class="commSav" >sin(asinx) </span>
+<div id="mathAns8-174" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>Axiom isn't sufficiently ``symbolic'' in the sense we might wish. It
+is an open problem to decide that ``x'' is the only surviving
+term. Two attacks on the problem might be:
+</p>
+
+
+<p>(1) Notice that all of the higher terms are identically zero but
+Axiom can't decide that from the information it knows. Presumably
+we could attack this problem by looking at the sin function as
+a taylor series around x=0 and seeing the term cancellation occur.
+This uses a term-difference mechanism.
+</p>
+
+
+<p>(2) Notice that there is no way to decide that the stream for asinx
+is actually the definition of asin(x). But we could recognize that
+the stream for asin(x) has a generator term and so will a taylor
+series expansion of sin(x). From these two generators it may be
+possible in certain cases to decide that the application of one
+generator to the other will yield only ``x''. This trick involves
+finding the correct inverse for the stream functions. If we can
+find an inverse for the ``remaining tail'' of the stream we could
+conclude cancellation and thus turn an infinite stream into a
+finite object.
+</p>
+
+
+<p>In general this is the zero-equivalence problem and is undecidable.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>As we discussed in <a href="section-8.9.xhtml#ugxProblemSeriesConversions" class="ref" >ugxProblemSeriesConversions</a> , you can also use
+the operations <span style="font-weight: bold;"> taylor</span>, <span style="font-weight: bold;"> laurent</span> and <span style="font-weight: bold;"> puiseux</span> instead
+of <span style="font-weight: bold;"> series</span> if you know ahead of time what kind of exponents a
+series has.  You can't go wrong using <span style="font-weight: bold;"> series</span>, though.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.9.7"/>
+<div class="subsection"  id="subsec-8.9.7">
+<h3 class="subsectitle">8.9.7  Substituting Numerical Values in Power Series</h3>
+
+
+<a name="ugxProblemSeriesSubstitute" class="label"/>
+
+
+<p>Use <span class="spadfunFrom" >eval</span><span class="index">eval</span><a name="chapter-8-140"/><span class="index">UnivariatePowerSeriesCategory</span><a name="chapter-8-141"/>
+<span class="index">approximation</span><a name="chapter-8-142"/> to substitute a numerical value for a variable
+in <span class="index">series:numerical approximation</span><a name="chapter-8-143"/> a power series.  For
+example, here's a way to obtain numerical approximations of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>%</mo><mi>e</mi></mrow></mstyle></math> from
+the Taylor series expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>exp</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>First you create the desired Taylor expansion.
+</p>
+
+
+
+
+<div id="spadComm8-175" class="spadComm" >
+<form id="formComm8-175" action="javascript:makeRequest('8-175');" >
+<input id="comm8-175" type="text" class="command" style="width: 14em;" value="f := taylor(exp(x)) " />
+</form>
+<span id="commSav8-175" class="commSav" >f := taylor(exp(x)) </span>
+<div id="mathAns8-175" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>40320</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>362880</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3628800</mn></mfrac><mo></mo><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,x,0)
+</div>
+
+
+
+
+<p>Then you evaluate the series at the value  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>.
+The result is a sequence of the partial sums.
+</p>
+
+
+
+
+<div id="spadComm8-176" class="spadComm" >
+<form id="formComm8-176" action="javascript:makeRequest('8-176');" >
+<input id="comm8-176" type="text" class="command" style="width: 8em;" value="eval(f,1.0)" />
+</form>
+<span id="commSav8-176" class="commSav" >eval(f,1.0)</span>
+<div id="mathAns8-176" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>6666666666</mn><mo></mo><mn>666666667</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7083333333</mn><mo></mo><mn>333333333</mn></mrow><mo>,</mo><mo>.</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mo>.</mo><mn>7166666666</mn><mo></mo><mn>666666667</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7180555555</mn><mo></mo><mn>555555556</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7182539682</mn><mo></mo><mn>53968254</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>.</mo><mrow><mn>2</mn><mo>.</mo><mn>7182787698</mn><mo></mo><mn>412698413</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7182815255</mn><mo></mo><mn>731922399</mn></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Expression Float
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-8.9.8"/>
+<div class="subsection"  id="subsec-8.9.8">
+<h3 class="subsectitle">8.9.8  Example: Bernoulli Polynomials and Sums of Powers</h3>
+
+
+<a name="ugxProblemSeriesBernoulli" class="label"/>
+
+
+<p>Axiom provides operations for computing definite and
+<span class="index">summation:definite</span><a name="chapter-8-144"/> indefinite sums.
+<span class="index">summation:indefinite</span><a name="chapter-8-145"/>
+</p>
+
+
+<p>You can compute the sum of the first ten fourth powers by evaluating
+this.  This creates a list whose entries are  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>m</mi><mn>4</mn></msup></mrow></mstyle></math> as  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>m</mi></mstyle></math> ranges from
+1 to 10, and then computes the sum of the entries of that list.
+</p>
+
+
+
+
+<div id="spadComm8-177" class="spadComm" >
+<form id="formComm8-177" action="javascript:makeRequest('8-177');" >
+<input id="comm8-177" type="text" class="command" style="width: 21em;" value="reduce(+,[m**4 for m in 1..10])" />
+</form>
+<span id="commSav8-177" class="commSav" >reduce(+,[m**4 for m in 1..10])</span>
+<div id="mathAns8-177" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>25333</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>You can also compute a formula for the sum of the first  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math> fourth
+powers, where  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math> is an unspecified positive integer.
+</p>
+
+
+
+
+<div id="spadComm8-178" class="spadComm" >
+<form id="formComm8-178" action="javascript:makeRequest('8-178');" >
+<input id="comm8-178" type="text" class="command" style="width: 19em;" value="sum4 := sum(m**4, m = 1..k) " />
+</form>
+<span id="commSav8-178" class="commSav" >sum4 := sum(m**4, m = 1..k) </span>
+<div id="mathAns8-178" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>6</mn><mo></mo><mrow><msup><mi>k</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15</mn><mo></mo><mrow><msup><mi>k</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>k</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mi>k</mi></mrow><mn>30</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+<p>This formula is valid for any positive integer  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math>.  For instance, if
+we replace  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math> by 10, <span class="index">summation:definite</span><a name="chapter-8-146"/> we obtain the number
+we computed earlier.
+</p>
+
+
+
+
+<div id="spadComm8-179" class="spadComm" >
+<form id="formComm8-179" action="javascript:makeRequest('8-179');" >
+<input id="comm8-179" type="text" class="command" style="width: 13em;" value="eval(sum4, k = 10) " />
+</form>
+<span id="commSav8-179" class="commSav" >eval(sum4, k = 10) </span>
+<div id="mathAns8-179" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>25333</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+<p>You can compute a formula for the sum of the first  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math>  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th powers
+in a similar fashion.  Just replace the  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>4</mn></mstyle></math> in the definition of 
+<span style="font-weight: bold;"> sum4</span> by any expression not involving  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math>.  Axiom computes these
+formulas using Bernoulli polynomials; <span class="index">Bernoulli:polynomial</span><a name="chapter-8-147"/> we
+<span class="index">polynomial:Bernoulli</span><a name="chapter-8-148"/> use the rest of this section to describe
+this method.
+</p>
+
+
+<p>First consider this function of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-180" class="spadComm" >
+<form id="formComm8-180" action="javascript:makeRequest('8-180');" >
+<input id="comm8-180" type="text" class="command" style="width: 21em;" value="f := t*exp(x*t) / (exp(t) - 1) " />
+</form>
+<span id="commSav8-180" class="commSav" >f := t*exp(x*t) / (exp(t) - 1) </span>
+<div id="mathAns8-180" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mi>t</mi><mo></mo><mrow><msup><mi>e</mi><mrow><mo>(</mo><mi>t</mi><mo></mo><mi>x</mi><mo>)</mo></mrow></msup></mrow></mrow><mrow><mrow><msup><mi>e</mi><mi>t</mi></msup></mrow><mo>-</mo><mn>1</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Since the expressions involved get quite large, we tell
+Axiom to show us only terms of degree up to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>5</mn><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm8-181" class="spadComm" >
+<form id="formComm8-181" action="javascript:makeRequest('8-181');" >
+<input id="comm8-181" type="text" class="command" style="width: 17em;" value=")set streams calculate 5 " />
+</form>
+<span id="commSav8-181" class="commSav" >)set streams calculate 5 </span>
+<div id="mathAns8-181" ></div>
+</div>
+
+
+
+<p><span class="index">set streams calculate</span><a name="chapter-8-149"/>
+</p>
+
+
+<p>If we look at the Taylor expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> about  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>t</mi><mo>=</mo><mn>0</mn><mo>,</mo></mrow></mstyle></math>
+we see that the coefficients of the powers of  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>t</mi></mstyle></math> are polynomials
+in  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-182" class="spadComm" >
+<form id="formComm8-182" action="javascript:makeRequest('8-182');" >
+<input id="comm8-182" type="text" class="command" style="width: 16em;" value="ff := taylor(f,t = 0)  " />
+</form>
+<span id="commSav8-182" class="commSav" >ff := taylor(f,t = 0)  </span>
+<div id="mathAns8-182" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>1</mn><mo>+</mo><mrow><mfrac><mrow><mrow><mn>2</mn><mo></mo><mi>x</mi></mrow><mo>-</mo><mn>1</mn></mrow><mn>2</mn></mfrac><mo></mo><mi>t</mi></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mo></mo><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow><mn>12</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><mn>2</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mi>x</mi></mrow><mn>12</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><mrow><mn>30</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>60</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>15</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mi>x</mi></mrow><mn>720</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+<p>                         Type: UnivariateTaylorSeries(Expression Integer,t,0)
+</p>
+
+
+
+<p>In fact, the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th coefficient in this series is essentially the
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Bernoulli polynomial: the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th coefficient of the series is
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mfrac><mn>1</mn><mrow><mi>n</mi><mo>!</mo></mrow></mfrac><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>, where  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math> is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Bernoulli
+polynomial.  Thus, to obtain the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Bernoulli polynomial, we
+multiply the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th coefficient of the series  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>ff</mi></mstyle></math> by  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>!</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>For example, the sixth Bernoulli polynomial is this.
+</p>
+
+
+
+
+<div id="spadComm8-183" class="spadComm" >
+<form id="formComm8-183" action="javascript:makeRequest('8-183');" >
+<input id="comm8-183" type="text" class="command" style="width: 22em;" value="factorial(6) * coefficient(ff,6) " />
+</form>
+<span id="commSav8-183" class="commSav" >factorial(6) * coefficient(ff,6) </span>
+<div id="mathAns8-183" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>42</mn><mo></mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>126</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>105</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>21</mn><mo></mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mn>42</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>We derive some properties of the function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math>.
+First we compute  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>t</mi><mo>)</mo><mo>-</mo><mi>f</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-184" class="spadComm" >
+<form id="formComm8-184" action="javascript:makeRequest('8-184');" >
+<input id="comm8-184" type="text" class="command" style="width: 20em;" value="g := eval(f, x = x + 1) - f  " />
+</form>
+<span id="commSav8-184" class="commSav" >g := eval(f, x = x + 1) - f  </span>
+<div id="mathAns8-184" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mi>t</mi><mo></mo><mrow><msup><mi>e</mi><mrow><mo>(</mo><mrow><mi>t</mi><mo></mo><mi>x</mi></mrow><mo>+</mo><mi>t</mi><mo>)</mo></mrow></msup></mrow></mrow><mo>-</mo><mrow><mi>t</mi><mo></mo><mrow><msup><mi>e</mi><mrow><mo>(</mo><mi>t</mi><mo></mo><mi>x</mi><mo>)</mo></mrow></msup></mrow></mrow></mrow><mrow><mrow><msup><mi>e</mi><mi>t</mi></msup></mrow><mo>-</mo><mn>1</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>If we normalize  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>g</mi></mstyle></math>, we see that it has a particularly simple form.
+</p>
+
+
+
+
+<div id="spadComm8-185" class="spadComm" >
+<form id="formComm8-185" action="javascript:makeRequest('8-185');" >
+<input id="comm8-185" type="text" class="command" style="width: 9em;" value="normalize(g) " />
+</form>
+<span id="commSav8-185" class="commSav" >normalize(g) </span>
+<div id="mathAns8-185" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>t</mi><mo></mo><mrow><msup><mi>e</mi><mrow><mo>(</mo><mi>t</mi><mo></mo><mi>x</mi><mo>)</mo></mrow></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>From this it follows that the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th coefficient in the Taylor
+expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math> at  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>t</mi><mo>=</mo><mn>0</mn></mrow></mstyle></math> is <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>1</mn><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>)</mo><mo>!</mo></mrow></mfrac><msup><mi>x</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mrow></mstyle></math>.
+</p>
+
+
+<p>If you want to check this, evaluate the next expression.
+</p>
+
+
+
+
+<div id="spadComm8-186" class="spadComm" >
+<form id="formComm8-186" action="javascript:makeRequest('8-186');" >
+<input id="comm8-186" type="text" class="command" style="width: 11em;" value="taylor(g,t = 0) " />
+</form>
+<span id="commSav8-186" class="commSav" >taylor(g,t = 0) </span>
+<div id="mathAns8-186" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>t</mi><mo>+</mo><mrow><mi>x</mi><mo></mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mn>2</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mn>6</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mn>24</mn></mfrac><mo></mo><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(Expression Integer,t,0)
+</div>
+
+
+
+<p>However, since 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>)</mo><mo>=</mo><mi>f</mi><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>t</mi><mo>)</mo><mo>-</mo><mi>f</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math>
+it follows that the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th coefficient is 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>1</mn><mrow><mi>n</mi><mo>!</mo></mrow></mfrac><mo>(</mo><mrow><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mrow><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></mstyle></math> Equating
+coefficients, we see that 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>1</mn><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>)</mo><mo>!</mo></mrow></mfrac><msup><mi>x</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup><mo>=</mo><mfrac><mn>1</mn><mrow><mi>n</mi><mo>!</mo></mrow></mfrac><mo>(</mo><mrow><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mrow><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></mstyle></math> 
+and, therefore, 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>x</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup><mo>=</mo><mfrac><mn>1</mn><mi>n</mi></mfrac><mo>(</mo><mrow><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mrow><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></mstyle></math>
+</p>
+
+
+<p>Let's apply this formula repeatedly, letting  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math> vary between two
+integers  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math>, with  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>a</mi><mo>&lt;</mo><mi>b</mi></mrow></mstyle></math>:
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><msup><mi>a</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mtd><mtd><mo>=</mo></mtd><mtd><mfrac><mn>1</mn><mi>n</mi></mfrac><mo>(</mo><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>-</mo><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>a</mi><mo>)</mo><mo>)</mo></mtd></mtr><mtr><mtd><mo>(</mo><mi>a</mi><mo>+</mo><mn>1</mn><msup><mo>)</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mtd><mtd><mo>=</mo></mtd><mtd><mfrac><mn>1</mn><mi>n</mi></mfrac><mo>(</mo><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>a</mi><mo>+</mo><mn>2</mn><mo>)</mo><mo>-</mo><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>)</mo></mtd></mtr><mtr><mtd><mo>(</mo><mi>a</mi><mo>+</mo><mn>2</mn><msup><mo>)</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mtd><mtd><mo>=</mo></mtd><mtd><mfrac><mn>1</mn><mi>n</mi></mfrac><mo>(</mo><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>a</mi><mo>+</mo><mn>3</mn><mo>)</mo><mo>-</mo><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>a</mi><mo>+</mo><mn>2</mn><mo>)</mo><mo>)</mo></mtd></mtr><mtr><mtd></mtd><mtd><mo>&#x22ee;</mo></mtd><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mi>b</mi><mo>-</mo><mn>1</mn><msup><mo>)</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mtd><mtd><mo>=</mo></mtd><mtd><mfrac><mn>1</mn><mi>n</mi></mfrac><mo>(</mo><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>b</mi><mo>)</mo><mo>-</mo><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>b</mi><mo>-</mo><mn>1</mn><mo>)</mo><mo>)</mo></mtd></mtr><mtr><mtd><msup><mi>b</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mtd><mtd><mo>=</mo></mtd><mtd><mfrac><mn>1</mn><mi>n</mi></mfrac><mo>(</mo><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>b</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>-</mo><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>b</mi><mo>)</mo><mo>)</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+<p>When we add these equations we find that the sum of the left-hand
+sides is 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math> 
+the sum of the
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><msup><mo>)</mo><mrow><mtext>st</mtext></mrow></msup></mrow></mstyle></math> 
+powers from  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>b</mi></mstyle></math>.  The sum of the right-hand sides is a 
+``telescoping series.''  After cancellation, the sum is simply 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>1</mn><mi>n</mi></mfrac><mo>(</mo><mrow><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>b</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mrow><msub><mi>B</mi><mi>n</mi></msub><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mo>)</mo></mrow></mstyle></math>
+</p>
+
+
+<p>Replacing  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math> by  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math>, we have shown that
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msubsup><mo>&#x2211;</mo><mrow><mrow><mi>m</mi><mo>=</mo><mi>a</mi></mrow></mrow><mrow><mi>b</mi></mrow></msubsup><msup><mi>m</mi><mi>n</mi></msup><mo>=</mo><mfrac><mn>1</mn><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></mfrac><mo>(</mo><mrow><msub><mi>B</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>(</mo><mi>b</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mrow><msub><mi>B</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mo>)</mo></mrow></mstyle></math>
+</p>
+
+
+<p>Let's use this to obtain the formula for the sum of fourth powers.
+</p>
+
+
+<p>First we obtain the Bernoulli polynomial  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>B</mi><mn>5</mn></msub></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-187" class="spadComm" >
+<form id="formComm8-187" action="javascript:makeRequest('8-187');" >
+<input id="comm8-187" type="text" class="command" style="width: 27em;" value="B5 := factorial(5) * coefficient(ff,5)  " />
+</form>
+<span id="commSav8-187" class="commSav" >B5 := factorial(5) * coefficient(ff,5)  </span>
+<div id="mathAns8-187" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>6</mn><mo></mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>15</mn><mo></mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mi>x</mi></mrow><mn>6</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>To find the sum of the first  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math> 4th powers,
+we multiply  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>/</mo><mn>5</mn></mrow></mstyle></math> by  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>B</mi><mn>5</mn></msub><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>-</mo><msub><mi>B</mi><mn>5</mn></msub><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-188" class="spadComm" >
+<form id="formComm8-188" action="javascript:makeRequest('8-188');" >
+<input id="comm8-188" type="text" class="command" style="width: 31em;" value="1/5 * (eval(B5, x = k + 1) - eval(B5, x = 1)) " />
+</form>
+<span id="commSav8-188" class="commSav" >1/5 * (eval(B5, x = k + 1) - eval(B5, x = 1)) </span>
+<div id="mathAns8-188" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>6</mn><mo></mo><mrow><msup><mi>k</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15</mn><mo></mo><mrow><msup><mi>k</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>k</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mi>k</mi></mrow><mn>30</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>This is the same formula that we obtained via  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>sum</mi><mo>(</mo><mi>m</mi><mo>*</mo><mo>*</mo><mn>4</mn><mo>,</mo><mi>m</mi><mo>=</mo><mn>1</mn><mo>.</mo><mo>.</mo><mi>k</mi><mo>)</mo></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm8-189" class="spadComm" >
+<form id="formComm8-189" action="javascript:makeRequest('8-189');" >
+<input id="comm8-189" type="text" class="command" style="width: 4em;" value="sum4 " />
+</form>
+<span id="commSav8-189" class="commSav" >sum4 </span>
+<div id="mathAns8-189" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>6</mn><mo></mo><mrow><msup><mi>k</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15</mn><mo></mo><mrow><msup><mi>k</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mo></mo><mrow><msup><mi>k</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mi>k</mi></mrow><mn>30</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+<p>At this point you may want to do the same computation, but with an
+exponent other than  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>4</mn><mo>.</mo></mrow></mstyle></math> For example, you might try to find a formula
+for the sum of the first  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math> 20th powers.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-8.8.xhtml" style="margin-right: 10px;">Previous Section 8.8 Integration</a><a href="section-8.10.xhtml" style="margin-right: 10px;">Next Section 8.10 Solution of Differential Equations</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.1.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.1.xhtml
new file mode 100644
index 0000000..72deb3f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.1.xhtml
@@ -0,0 +1,366 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.1</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.14.xhtml" style="margin-right: 10px;">Previous Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</a><a href="section-9.2.xhtml" style="margin-right: 10px;">Next Section 9.2 BalancedBinaryTree</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.1">
+<h2 class="sectiontitle">9.1  AssociationList</h2>
+
+
+<a name="AssociationListXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">AssociationList</span> constructor provides a general structure for
+associative storage.  This type provides association lists in which
+data objects can be saved according to keys of any type.  For a given
+association list, specific types must be chosen for the keys and
+entries.  You can think of the representation of an association list
+as a list of records with key and entry fields.
+</p>
+
+
+<p>Association lists are a form of table and so most of the operations
+available for <span class="teletype">Table</span> are also available for <span class="teletype">AssociationList</span>.  
+They can also be viewed as lists and can be manipulated accordingly.
+</p>
+
+
+<p>This is a <span class="teletype">Record</span> type with age and gender fields.
+</p>
+
+
+
+
+<div id="spadComm9-1" class="spadComm" >
+<form id="formComm9-1" action="javascript:makeRequest('9-1');" >
+<input id="comm9-1" type="text" class="command" style="width: 35em;" value="Data := Record(monthsOld : Integer, gender : String)" />
+</form>
+<span id="commSav9-1" class="commSav" >Data := Record(monthsOld : Integer, gender : String)</span>
+<div id="mathAns9-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>Record(monthsOld:Integer,gender:String)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>In this expression, <span class="teletype">al</span> is declared to be an association
+list whose keys are strings and whose entries are the above records.
+</p>
+
+
+
+
+<div id="spadComm9-2" class="spadComm" >
+<form id="formComm9-2" action="javascript:makeRequest('9-2');" >
+<input id="comm9-2" type="text" class="command" style="width: 22em;" value="al : AssociationList(String,Data)" />
+</form>
+<span id="commSav9-2" class="commSav" >al : AssociationList(String,Data)</span>
+<div id="mathAns9-2" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >table</span><span class="index">table</span><a name="chapter-9-0"/><span class="index">AssociationList</span><a name="chapter-9-1"/> operation is used to create
+an empty association list.
+</p>
+
+
+
+
+<div id="spadComm9-3" class="spadComm" >
+<form id="formComm9-3" action="javascript:makeRequest('9-3');" >
+<input id="comm9-3" type="text" class="command" style="width: 9em;" value="al := table()" />
+</form>
+<span id="commSav9-3" class="commSav" >al := table()</span>
+<div id="mathAns9-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>table</mi><mo>(</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+AssociationList(String,Record(monthsOld: Integer,gender: String))
+</div>
+
+
+
+<p>You can use assignment syntax to add things to the association list.
+</p>
+
+
+
+
+<div id="spadComm9-4" class="spadComm" >
+<form id="formComm9-4" action="javascript:makeRequest('9-4');" >
+<input id="comm9-4" type="text" class="command" style="width: 20em;" value='al."bob" := [407,"male"]$Data' />
+</form>
+<span id="commSav9-4" class="commSav" >al."bob" := [407,"male"]$Data</span>
+<div id="mathAns9-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>407</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"male"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(monthsOld: Integer,gender: String)
+</div>
+
+
+
+
+
+<div id="spadComm9-5" class="spadComm" >
+<form id="formComm9-5" action="javascript:makeRequest('9-5');" >
+<input id="comm9-5" type="text" class="command" style="width: 23em;" value='al."judith" := [366,"female"]$Data' />
+</form>
+<span id="commSav9-5" class="commSav" >al."judith" := [366,"female"]$Data</span>
+<div id="mathAns9-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>366</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"female"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(monthsOld: Integer,gender: String)
+</div>
+
+
+
+
+
+<div id="spadComm9-6" class="spadComm" >
+<form id="formComm9-6" action="javascript:makeRequest('9-6');" >
+<input id="comm9-6" type="text" class="command" style="width: 22em;" value='al."katie" := [24,"female"]$Data' />
+</form>
+<span id="commSav9-6" class="commSav" >al."katie" := [24,"female"]$Data</span>
+<div id="mathAns9-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>24</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"female"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(monthsOld: Integer,gender: String)
+</div>
+
+
+
+<p>Perhaps we should have included a species field.
+</p>
+
+
+
+
+<div id="spadComm9-7" class="spadComm" >
+<form id="formComm9-7" action="javascript:makeRequest('9-7');" >
+<input id="comm9-7" type="text" class="command" style="width: 23em;" value='al."smokie" := [200,"female"]$Data' />
+</form>
+<span id="commSav9-7" class="commSav" >al."smokie" := [200,"female"]$Data</span>
+<div id="mathAns9-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>200</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"female"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(monthsOld: Integer,gender: String)
+</div>
+
+
+
+<p>Now look at what is in the association list.  Note that the last-added
+(key, entry) pair is at the beginning of the list.
+</p>
+
+
+
+
+<div id="spadComm9-8" class="spadComm" >
+<form id="formComm9-8" action="javascript:makeRequest('9-8');" >
+<input id="comm9-8" type="text" class="command" style="width: 2em;" value="al" />
+</form>
+<span id="commSav9-8" class="commSav" >al</span>
+<div id="mathAns9-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>table</mi><mo>(</mo><mrow><mtext><mrow><mtext mathvariant='monospace'>"smokie"</mtext></mrow></mtext><mo>=</mo><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>200</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"female"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mtext><mrow><mtext mathvariant='monospace'>"katie"</mtext></mrow></mtext><mo>=</mo><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>24</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"female"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mtext><mrow><mtext mathvariant='monospace'>"judith"</mtext></mrow></mtext><mo>=</mo><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>366</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"female"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mtext><mrow><mtext mathvariant='monospace'>"bob"</mtext></mrow></mtext><mo>=</mo><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>407</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"male"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mrow><mo>)</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+AssociationList(String,Record(monthsOld: Integer,gender: String))
+</div>
+
+
+
+<p>You can reset the entry for an existing key.
+</p>
+
+
+
+
+<div id="spadComm9-9" class="spadComm" >
+<form id="formComm9-9" action="javascript:makeRequest('9-9');" >
+<input id="comm9-9" type="text" class="command" style="width: 22em;" value='al."katie" := [23,"female"]$Data' />
+</form>
+<span id="commSav9-9" class="commSav" >al."katie" := [23,"female"]$Data</span>
+<div id="mathAns9-9" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>23</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"female"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(monthsOld: Integer,gender: String)
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >delete</span><span class="index">delete</span><a name="chapter-9-2"/><span class="index">AssociationList</span><a name="chapter-9-3"/> to destructively remove an
+element of the association list.  Use
+<span class="spadfunFrom" >delete</span><span class="index">delete</span><a name="chapter-9-4"/><span class="index">AssociationList</span><a name="chapter-9-5"/> to return a copy of the
+association list with the element deleted.  The second argument is the
+index of the element to delete.
+</p>
+
+
+
+
+<div id="spadComm9-10" class="spadComm" >
+<form id="formComm9-10" action="javascript:makeRequest('9-10');" >
+<input id="comm9-10" type="text" class="command" style="width: 9em;" value="delete!(al,1)" />
+</form>
+<span id="commSav9-10" class="commSav" >delete!(al,1)</span>
+<div id="mathAns9-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>table</mi><mo>(</mo><mrow><mtext><mrow><mtext mathvariant='monospace'>"katie"</mtext></mrow></mtext><mo>=</mo><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>23</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"female"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mtext><mrow><mtext mathvariant='monospace'>"judith"</mtext></mrow></mtext><mo>=</mo><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>366</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"female"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mtext><mrow><mtext mathvariant='monospace'>"bob"</mtext></mrow></mtext><mo>=</mo><mrow><mo>[</mo><mrow><mi>monthsOld</mi><mo>=</mo><mn>407</mn></mrow><mo>,</mo><mrow><mi>gender</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"male"</mtext></mrow></mtext></mrow><mo>]</mo></mrow></mrow><mo>)</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+AssociationList(String,Record(monthsOld: Integer,gender: String))
+</div>
+
+
+
+<p>For more information about tables, 
+see <a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a> .
+For more information about lists, 
+see <a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-8.14.xhtml" style="margin-right: 10px;">Previous Section 8.14  Non-Associative Algebras and Modelling Genetic Laws</a><a href="section-9.2.xhtml" style="margin-right: 10px;">Next Section 9.2 BalancedBinaryTree</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.10.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.10.xhtml
new file mode 100644
index 0000000..79032ae
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.10.xhtml
@@ -0,0 +1,1219 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.10</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.9.xhtml" style="margin-right: 10px;">Previous Section 9.9 CharacterClass</a><a href="section-9.11.xhtml" style="margin-right: 10px;">Next Section 9.11 Complex</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.10">
+<h2 class="sectiontitle">9.10  CliffordAlgebra</h2>
+
+
+<a name="CliffordAlgebraXmpPage" class="label"/>
+
+
+
+<p><span class="teletype">CliffordAlgebra(n,K,Q)</span> defines a vector space of dimension  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>2</mn><mi>n</mi></msup></mrow></mstyle></math>
+over the field  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>K</mi></mstyle></math> with a given quadratic form <span class="teletype">Q</span>.  If  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>{</mo><msub><mi>e</mi><mn>1</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>e</mi><mi>n</mi></msub><mo>}</mo></mrow></mstyle></math> is a basis for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>K</mi><mi>n</mi></msup></mrow></mstyle></math> then
+</p>
+
+
+
+<div class="verbatim"><br />
+{&nbsp;1,<br />
+&nbsp;&nbsp;e(i)&nbsp;1&nbsp;&lt;=&nbsp;i&nbsp;&lt;=&nbsp;n,<br />
+&nbsp;&nbsp;e(i1)*e(i2)&nbsp;1&nbsp;&lt;=&nbsp;i1&nbsp;&lt;&nbsp;i2&nbsp;&lt;=n,<br />
+&nbsp;&nbsp;...,<br />
+&nbsp;&nbsp;e(1)*e(2)*...*e(n)&nbsp;}<br />
+</div>
+
+
+<p>is a basis for the Clifford algebra. The algebra is defined by the relations
+</p>
+
+
+
+<div class="verbatim"><br />
+e(i)*e(i)&nbsp;=&nbsp;Q(e(i))<br />
+e(i)*e(j)&nbsp;=&nbsp;-e(j)*e(i),&nbsp;&nbsp;i&nbsp;^=&nbsp;j<br />
+</div>
+
+
+<p>Examples of Clifford Algebras are
+gaussians (complex numbers), quaternions,
+exterior algebras and spin algebras.
+</p>
+
+
+
+<a name="subsec-9.10.1"/>
+<div class="subsection"  id="subsec-9.10.1">
+<h3 class="subsectitle">9.10.1  The Complex Numbers as a Clifford Algebra</h3>
+
+
+
+<p>This is the field over which we will work, rational functions with
+integer coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-154" class="spadComm" >
+<form id="formComm9-154" action="javascript:makeRequest('9-154');" >
+<input id="comm9-154" type="text" class="command" style="width: 22em;" value="K := Fraction Polynomial Integer " />
+</form>
+<span id="commSav9-154" class="commSav" >K := Fraction Polynomial Integer </span>
+<div id="mathAns9-154" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FractionPolynomialInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>We use this matrix for the quadratic form.
+</p>
+
+
+
+
+<div id="spadComm9-155" class="spadComm" >
+<form id="formComm9-155" action="javascript:makeRequest('9-155');" >
+<input id="comm9-155" type="text" class="command" style="width: 14em;" value="m := matrix [ [-1] ] " />
+</form>
+<span id="commSav9-155" class="commSav" >m := matrix [ [-1] ] </span>
+<div id="mathAns9-155" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>We get complex arithmetic by using this domain.
+</p>
+
+
+
+
+<div id="spadComm9-156" class="spadComm" >
+<form id="formComm9-156" action="javascript:makeRequest('9-156');" >
+<input id="comm9-156" type="text" class="command" style="width: 30em;" value="C := CliffordAlgebra(1, K, quadraticForm m) " />
+</form>
+<span id="commSav9-156" class="commSav" >C := CliffordAlgebra(1, K, quadraticForm m) </span>
+<div id="mathAns9-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>CliffordAlgebra(1,FractionPolynomialInteger,MATRIX)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Here is <span class="teletype">i</span>, the usual square root of <span class="teletype">-1.</span>
+</p>
+
+
+
+
+<div id="spadComm9-157" class="spadComm" >
+<form id="formComm9-157" action="javascript:makeRequest('9-157');" >
+<input id="comm9-157" type="text" class="command" style="width: 10em;" value="i: C := e(1)   " />
+</form>
+<span id="commSav9-157" class="commSav" >i: C := e(1)   </span>
+<div id="mathAns9-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+<p>Here are some examples of the arithmetic.
+</p>
+
+
+
+
+<div id="spadComm9-158" class="spadComm" >
+<form id="formComm9-158" action="javascript:makeRequest('9-158');" >
+<input id="comm9-158" type="text" class="command" style="width: 10em;" value="x := a + b * i " />
+</form>
+<span id="commSav9-158" class="commSav" >x := a + b * i </span>
+<div id="mathAns9-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>a</mi><mo>+</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-159" class="spadComm" >
+<form id="formComm9-159" action="javascript:makeRequest('9-159');" >
+<input id="comm9-159" type="text" class="command" style="width: 10em;" value="y := c + d * i " />
+</form>
+<span id="commSav9-159" class="commSav" >y := c + d * i </span>
+<div id="mathAns9-159" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>c</mi><mo>+</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+<p>See <a href="section-9.11.xhtml#ComplexXmpPage" class="ref" >ComplexXmpPage</a>  
+for examples of Axiom's constructor implementing complex numbers.
+</p>
+
+
+
+
+<div id="spadComm9-160" class="spadComm" >
+<form id="formComm9-160" action="javascript:makeRequest('9-160');" >
+<input id="comm9-160" type="text" class="command" style="width: 4em;" value="x * y " />
+</form>
+<span id="commSav9-160" class="commSav" >x * y </span>
+<div id="mathAns9-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.10.2"/>
+<div class="subsection"  id="subsec-9.10.2">
+<h3 class="subsectitle">9.10.2  The Quaternion Numbers as a Clifford Algebra</h3>
+
+
+
+<p>This is the field over which we will work, rational functions with
+integer coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-161" class="spadComm" >
+<form id="formComm9-161" action="javascript:makeRequest('9-161');" >
+<input id="comm9-161" type="text" class="command" style="width: 22em;" value="K := Fraction Polynomial Integer " />
+</form>
+<span id="commSav9-161" class="commSav" >K := Fraction Polynomial Integer </span>
+<div id="mathAns9-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FractionPolynomialInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>We use this matrix for the quadratic form.
+</p>
+
+
+
+
+<div id="spadComm9-162" class="spadComm" >
+<form id="formComm9-162" action="javascript:makeRequest('9-162');" >
+<input id="comm9-162" type="text" class="command" style="width: 20em;" value="m := matrix [ [-1,0],[0,-1] ] " />
+</form>
+<span id="commSav9-162" class="commSav" >m := matrix [ [-1,0],[0,-1] ] </span>
+<div id="mathAns9-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>The resulting domain is the quaternions.
+</p>
+
+
+
+
+<div id="spadComm9-163" class="spadComm" >
+<form id="formComm9-163" action="javascript:makeRequest('9-163');" >
+<input id="comm9-163" type="text" class="command" style="width: 30em;" value="H  := CliffordAlgebra(2, K, quadraticForm m) " />
+</form>
+<span id="commSav9-163" class="commSav" >H  := CliffordAlgebra(2, K, quadraticForm m) </span>
+<div id="mathAns9-163" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>CliffordAlgebra(2,FractionPolynomialInteger,MATRIX)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>We use Hamilton's notation for <span class="teletype">i</span>,<span class="teletype">j</span>,<span class="teletype">k</span>.
+</p>
+
+
+
+
+<div id="spadComm9-164" class="spadComm" >
+<form id="formComm9-164" action="javascript:makeRequest('9-164');" >
+<input id="comm9-164" type="text" class="command" style="width: 10em;" value="i: H  := e(1) " />
+</form>
+<span id="commSav9-164" class="commSav" >i: H  := e(1) </span>
+<div id="mathAns9-164" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-165" class="spadComm" >
+<form id="formComm9-165" action="javascript:makeRequest('9-165');" >
+<input id="comm9-165" type="text" class="command" style="width: 10em;" value="j: H  := e(2) " />
+</form>
+<span id="commSav9-165" class="commSav" >j: H  := e(2) </span>
+<div id="mathAns9-165" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-166" class="spadComm" >
+<form id="formComm9-166" action="javascript:makeRequest('9-166');" >
+<input id="comm9-166" type="text" class="command" style="width: 10em;" value="k: H  := i * j " />
+</form>
+<span id="commSav9-166" class="commSav" >k: H  := i * j </span>
+<div id="mathAns9-166" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-167" class="spadComm" >
+<form id="formComm9-167" action="javascript:makeRequest('9-167');" >
+<input id="comm9-167" type="text" class="command" style="width: 21em;" value="x := a + b * i + c * j + d * k " />
+</form>
+<span id="commSav9-167" class="commSav" >x := a + b * i + c * j + d * k </span>
+<div id="mathAns9-167" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>a</mi><mo>+</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow><mo>+</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow><mo>+</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-168" class="spadComm" >
+<form id="formComm9-168" action="javascript:makeRequest('9-168');" >
+<input id="comm9-168" type="text" class="command" style="width: 21em;" value="y := e + f * i + g * j + h * k " />
+</form>
+<span id="commSav9-168" class="commSav" >y := e + f * i + g * j + h * k </span>
+<div id="mathAns9-168" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>e</mi><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow><mo>+</mo><mrow><mi>g</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow><mo>+</mo><mrow><mi>h</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-169" class="spadComm" >
+<form id="formComm9-169" action="javascript:makeRequest('9-169');" >
+<input id="comm9-169" type="text" class="command" style="width: 4em;" value="x + y " />
+</form>
+<span id="commSav9-169" class="commSav" >x + y </span>
+<div id="mathAns9-169" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>e</mi><mo>+</mo><mi>a</mi><mo>+</mo><mrow><mrow><mo>(</mo><mi>f</mi><mo>+</mo><mi>b</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mi>g</mi><mo>+</mo><mi>c</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mi>h</mi><mo>+</mo><mi>d</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-170" class="spadComm" >
+<form id="formComm9-170" action="javascript:makeRequest('9-170');" >
+<input id="comm9-170" type="text" class="command" style="width: 4em;" value="x * y " />
+</form>
+<span id="commSav9-170" class="commSav" >x * y </span>
+<div id="mathAns9-170" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>-</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>h</mi></mrow><mo>-</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mi>g</mi></mrow><mo>-</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mi>h</mi></mrow><mo>-</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>g</mi></mrow><mo>+</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>h</mi></mrow><mo>+</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mi>g</mi></mrow><mo>+</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mi>h</mi></mrow><mo>+</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>g</mi></mrow><mo>-</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+<p>See <a href="section-9.64.xhtml#QuaternionXmpPage" class="ref" >QuaternionXmpPage</a>  
+for examples of Axiom's constructor implementing quaternions.
+</p>
+
+
+
+
+<div id="spadComm9-171" class="spadComm" >
+<form id="formComm9-171" action="javascript:makeRequest('9-171');" >
+<input id="comm9-171" type="text" class="command" style="width: 4em;" value="y * x " />
+</form>
+<span id="commSav9-171" class="commSav" >y * x </span>
+<div id="mathAns9-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>-</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>h</mi></mrow><mo>-</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mi>g</mi></mrow><mo>-</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mi>h</mi></mrow><mo>+</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>g</mi></mrow><mo>+</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>h</mi></mrow><mo>+</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mi>g</mi></mrow><mo>-</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mi>h</mi></mrow><mo>-</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>g</mi></mrow><mo>+</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.10.3"/>
+<div class="subsection"  id="subsec-9.10.3">
+<h3 class="subsectitle">9.10.3  The Exterior Algebra on a Three Space</h3>
+
+
+
+<p>This is the field over which we will work, rational functions with
+integer coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-172" class="spadComm" >
+<form id="formComm9-172" action="javascript:makeRequest('9-172');" >
+<input id="comm9-172" type="text" class="command" style="width: 22em;" value="K := Fraction Polynomial Integer " />
+</form>
+<span id="commSav9-172" class="commSav" >K := Fraction Polynomial Integer </span>
+<div id="mathAns9-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FractionPolynomialInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>If we chose the three by three zero quadratic form, we obtain
+the exterior algebra on <span class="teletype">e(1),e(2),e(3)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-173" class="spadComm" >
+<form id="formComm9-173" action="javascript:makeRequest('9-173');" >
+<input id="comm9-173" type="text" class="command" style="width: 31em;" value="Ext := CliffordAlgebra(3, K, quadraticForm 0) " />
+</form>
+<span id="commSav9-173" class="commSav" >Ext := CliffordAlgebra(3, K, quadraticForm 0) </span>
+<div id="mathAns9-173" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>CliffordAlgebra(3,FractionPolynomialInteger,MATRIX)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>This is a three dimensional vector algebra.
+We define <span class="teletype">i</span>, <span class="teletype">j</span>, <span class="teletype">k</span> as the unit vectors.
+</p>
+
+
+
+
+<div id="spadComm9-174" class="spadComm" >
+<form id="formComm9-174" action="javascript:makeRequest('9-174');" >
+<input id="comm9-174" type="text" class="command" style="width: 10em;" value="i: Ext := e(1) " />
+</form>
+<span id="commSav9-174" class="commSav" >i: Ext := e(1) </span>
+<div id="mathAns9-174" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-175" class="spadComm" >
+<form id="formComm9-175" action="javascript:makeRequest('9-175');" >
+<input id="comm9-175" type="text" class="command" style="width: 10em;" value="j: Ext := e(2) " />
+</form>
+<span id="commSav9-175" class="commSav" >j: Ext := e(2) </span>
+<div id="mathAns9-175" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-176" class="spadComm" >
+<form id="formComm9-176" action="javascript:makeRequest('9-176');" >
+<input id="comm9-176" type="text" class="command" style="width: 10em;" value="k: Ext := e(3) " />
+</form>
+<span id="commSav9-176" class="commSav" >k: Ext := e(3) </span>
+<div id="mathAns9-176" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>e</mi><mn>3</mn></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+<p>Now it is possible to do arithmetic.
+</p>
+
+
+
+
+<div id="spadComm9-177" class="spadComm" >
+<form id="formComm9-177" action="javascript:makeRequest('9-177');" >
+<input id="comm9-177" type="text" class="command" style="width: 16em;" value="x := x1*i + x2*j + x3*k " />
+</form>
+<span id="commSav9-177" class="commSav" >x := x1*i + x2*j + x3*k </span>
+<div id="mathAns9-177" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x1</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow><mo>+</mo><mrow><mi>x2</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow><mo>+</mo><mrow><mi>x3</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>3</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-178" class="spadComm" >
+<form id="formComm9-178" action="javascript:makeRequest('9-178');" >
+<input id="comm9-178" type="text" class="command" style="width: 16em;" value="y := y1*i + y2*j + y3*k " />
+</form>
+<span id="commSav9-178" class="commSav" >y := y1*i + y2*j + y3*k </span>
+<div id="mathAns9-178" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>y1</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow><mo>+</mo><mrow><mi>y2</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow><mo>+</mo><mrow><mi>y3</mi><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>3</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-179" class="spadComm" >
+<form id="formComm9-179" action="javascript:makeRequest('9-179');" >
+<input id="comm9-179" type="text" class="command" style="width: 10em;" value="x + y         " />
+</form>
+<span id="commSav9-179" class="commSav" >x + y         </span>
+<div id="mathAns9-179" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mi>y1</mi><mo>+</mo><mi>x1</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mi>y2</mi><mo>+</mo><mi>x2</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mi>y3</mi><mo>+</mo><mi>x3</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>3</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-180" class="spadComm" >
+<form id="formComm9-180" action="javascript:makeRequest('9-180');" >
+<input id="comm9-180" type="text" class="command" style="width: 10em;" value="x * y + y * x " />
+</form>
+<span id="commSav9-180" class="commSav" >x * y + y * x </span>
+<div id="mathAns9-180" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+<p>On an <span class="teletype">n</span> space, a grade <span class="teletype">p</span> form has a dual <span class="teletype">n-p</span> form.
+In particular, in three space the dual of a grade two element identifies
+<span class="teletype">e1*e2->e3, e2*e3->e1, e3*e1->e2</span>.
+</p>
+
+
+
+
+<div id="spadComm9-181" class="spadComm" >
+<form id="formComm9-181" action="javascript:makeRequest('9-181');" >
+<input id="comm9-181" type="text" class="command" style="width: 60em;" value="dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * j + coefficient(a,[1,2]) * k " />
+</form>
+<span id="commSav9-181" class="commSav" >dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * j + coefficient(a,[1,2]) * k </span>
+<div id="mathAns9-181" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The vector cross product is then given by this.
+</p>
+
+
+
+
+<div id="spadComm9-182" class="spadComm" >
+<form id="formComm9-182" action="javascript:makeRequest('9-182');" >
+<input id="comm9-182" type="text" class="command" style="width: 8em;" value="dual2(x*y) " />
+</form>
+<span id="commSav9-182" class="commSav" >dual2(x*y) </span>
+<div id="mathAns9-182" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;dual2&nbsp;with&nbsp;type&nbsp;CliffordAlgebra(3,Fraction&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Polynomial&nbsp;Integer,MATRIX)&nbsp;-&gt;&nbsp;CliffordAlgebra(3,Fraction&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Polynomial&nbsp;Integer,MATRIX)&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mrow><mi>x2</mi><mspace width="0.5 em" /><mi>y3</mi></mrow><mo>-</mo><mrow><mi>x3</mi><mspace width="0.5 em" /><mi>y2</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mi>x1</mi><mspace width="0.5 em" /><mi>y3</mi></mrow><mo>+</mo><mrow><mi>x3</mi><mspace width="0.5 em" /><mi>y1</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mi>x1</mi><mspace width="0.5 em" /><mi>y2</mi></mrow><mo>-</mo><mrow><mi>x2</mi><mspace width="0.5 em" /><mi>y1</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>3</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.10.4"/>
+<div class="subsection"  id="subsec-9.10.4">
+<h3 class="subsectitle">9.10.4  The Dirac Spin Algebra</h3>
+
+
+
+<p>In this section we will work over the field of rational numbers.
+</p>
+
+
+
+
+<div id="spadComm9-183" class="spadComm" >
+<form id="formComm9-183" action="javascript:makeRequest('9-183');" >
+<input id="comm9-183" type="text" class="command" style="width: 15em;" value="K := Fraction Integer " />
+</form>
+<span id="commSav9-183" class="commSav" >K := Fraction Integer </span>
+<div id="mathAns9-183" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FractionInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>We define the quadratic form to be the Minkowski space-time metric.
+</p>
+
+
+
+
+<div id="spadComm9-184" class="spadComm" >
+<form id="formComm9-184" action="javascript:makeRequest('9-184');" >
+<input id="comm9-184" type="text" class="command" style="width: 42em;" value="g := matrix [ [1,0,0,0], [0,-1,0,0], [0,0,-1,0], [0,0,0,-1] ] " />
+</form>
+<span id="commSav9-184" class="commSav" >g := matrix [ [1,0,0,0], [0,-1,0,0], [0,0,-1,0], [0,0,0,-1] ] </span>
+<div id="mathAns9-184" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>We obtain the Dirac spin algebra used in Relativistic Quantum Field Theory.
+</p>
+
+
+
+
+<div id="spadComm9-185" class="spadComm" >
+<form id="formComm9-185" action="javascript:makeRequest('9-185');" >
+<input id="comm9-185" type="text" class="command" style="width: 29em;" value="D := CliffordAlgebra(4,K, quadraticForm g) " />
+</form>
+<span id="commSav9-185" class="commSav" >D := CliffordAlgebra(4,K, quadraticForm g) </span>
+<div id="mathAns9-185" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>CliffordAlgebra(4,FractionInteger,MATRIX)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>The usual notation for the basis is  <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x03b3;</mo></mstyle></math> with a superscript.  For
+Axiom input we will use <span class="teletype">gam(i)</span>:
+</p>
+
+
+
+
+<div id="spadComm9-186" class="spadComm" >
+<form id="formComm9-186" action="javascript:makeRequest('9-186');" >
+<input id="comm9-186" type="text" class="command" style="width: 20em;" value="gam := [e(i)$D for i in 1..4] " />
+</form>
+<span id="commSav9-186" class="commSav" >gam := [e(i)$D for i in 1..4] </span>
+<div id="mathAns9-186" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow><mo>,</mo><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow><mo>,</mo><mrow><msub><mi>e</mi><mn>3</mn></msub></mrow><mo>,</mo><mrow><msub><mi>e</mi><mn>4</mn></msub></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List CliffordAlgebra(4,Fraction Integer,MATRIX)
+</div>
+
+
+
+
+<p>There are various contraction identities of the form
+</p>
+
+
+
+<div class="verbatim"><br />
+g(l,t)*gam(l)*gam(m)*gam(n)*gam(r)*gam(s)*gam(t)&nbsp;=<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2*(gam(s)gam(m)gam(n)gam(r)&nbsp;+&nbsp;gam(r)*gam(n)*gam(m)*gam(s))<br />
+</div>
+
+
+<p>where a sum over <span class="teletype">l</span> and <span class="teletype">t</span> is implied.
+</p>
+
+
+<p>Verify this identity for particular values of <span class="teletype">m,n,r,s</span>.
+</p>
+
+
+
+
+<div id="spadComm9-187" class="spadComm" >
+<form id="formComm9-187" action="javascript:makeRequest('9-187');" >
+<input id="comm9-187" type="text" class="command" style="width: 21em;" value="m := 1; n:= 2; r := 3; s := 4; " />
+</form>
+<span id="commSav9-187" class="commSav" >m := 1; n:= 2; r := 3; s := 4; </span>
+<div id="mathAns9-187" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-188" class="spadComm" >
+<form id="formComm9-188" action="javascript:makeRequest('9-188');" >
+<input id="comm9-188" type="text" class="command" style="width: 74em;" value="lhs := reduce(+, [reduce(+, [ g(l,t)*gam(l)*gam(m)*gam(n)*gam(r)*gam(s)*gam(t) for l in 1..4]) for t in 1..4]) " />
+</form>
+<span id="commSav9-188" class="commSav" >lhs := reduce(+, [reduce(+, [ g(l,t)*gam(l)*gam(m)*gam(n)*gam(r)*gam(s)*gam(t) for l in 1..4]) for t in 1..4]) </span>
+<div id="mathAns9-188" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>3</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>4</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(4,Fraction Integer,MATRIX)
+</div>
+
+
+
+
+
+<div id="spadComm9-189" class="spadComm" >
+<form id="formComm9-189" action="javascript:makeRequest('9-189');" >
+<input id="comm9-189" type="text" class="command" style="width: 42em;" value="rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s) " />
+</form>
+<span id="commSav9-189" class="commSav" >rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s) </span>
+<div id="mathAns9-189" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>3</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>e</mi><mn>4</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CliffordAlgebra(4,Fraction Integer,MATRIX)
+</div>
+
+</div>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.9.xhtml" style="margin-right: 10px;">Previous Section 9.9 CharacterClass</a><a href="section-9.11.xhtml" style="margin-right: 10px;">Next Section 9.11 Complex</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.11.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.11.xhtml
new file mode 100644
index 0000000..7b32833
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.11.xhtml
@@ -0,0 +1,535 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.11</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.10.xhtml" style="margin-right: 10px;">Previous Section 9.10 CliffordAlgebra</a><a href="section-9.12.xhtml" style="margin-right: 10px;">Next Section 9.12 ContinuedFraction</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.11">
+<h2 class="sectiontitle">9.11  Complex</h2>
+
+
+<a name="ComplexXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">Complex</span> constructor implements complex objects over a
+commutative ring <span class="teletype">R</span>.  Typically, the ring <span class="teletype">R</span> is <span class="teletype">Integer</span>, 
+<span class="teletype">Fraction Integer</span>, <span class="teletype">Float</span> or <span class="teletype">DoubleFloat</span>.
+<span class="teletype">R</span> can also be a symbolic type, like <span class="teletype">Polynomial Integer</span>.
+For more information about the numerical and graphical aspects of
+complex numbers, see <a href="section-8.1.xhtml#ugProblemNumeric" class="ref" >ugProblemNumeric</a> .
+</p>
+
+
+<p>Complex objects are created by the <span class="spadfunFrom" >complex</span><span class="index">complex</span><a name="chapter-9-53"/><span class="index">Complex</span><a name="chapter-9-54"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-190" class="spadComm" >
+<form id="formComm9-190" action="javascript:makeRequest('9-190');" >
+<input id="comm9-190" type="text" class="command" style="width: 15em;" value="a := complex(4/3,5/2) " />
+</form>
+<span id="commSav9-190" class="commSav" >a := complex(4/3,5/2) </span>
+<div id="mathAns9-190" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>4</mn><mn>3</mn></mfrac><mo>+</mo><mrow><mfrac><mn>5</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-191" class="spadComm" >
+<form id="formComm9-191" action="javascript:makeRequest('9-191');" >
+<input id="comm9-191" type="text" class="command" style="width: 16em;" value="b := complex(4/3,-5/2) " />
+</form>
+<span id="commSav9-191" class="commSav" >b := complex(4/3,-5/2) </span>
+<div id="mathAns9-191" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>4</mn><mn>3</mn></mfrac><mo>-</mo><mrow><mfrac><mn>5</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+<p>The standard arithmetic operations are available.
+</p>
+
+
+
+
+<div id="spadComm9-192" class="spadComm" >
+<form id="formComm9-192" action="javascript:makeRequest('9-192');" >
+<input id="comm9-192" type="text" class="command" style="width: 4em;" value="a + b " />
+</form>
+<span id="commSav9-192" class="commSav" >a + b </span>
+<div id="mathAns9-192" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>8</mn><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-193" class="spadComm" >
+<form id="formComm9-193" action="javascript:makeRequest('9-193');" >
+<input id="comm9-193" type="text" class="command" style="width: 4em;" value="a - b " />
+</form>
+<span id="commSav9-193" class="commSav" >a - b </span>
+<div id="mathAns9-193" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>5</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-194" class="spadComm" >
+<form id="formComm9-194" action="javascript:makeRequest('9-194');" >
+<input id="comm9-194" type="text" class="command" style="width: 4em;" value="a * b " />
+</form>
+<span id="commSav9-194" class="commSav" >a * b </span>
+<div id="mathAns9-194" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>289</mn><mn>36</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+<p>If <span class="teletype">R</span> is a field, you can also divide the complex objects.
+</p>
+
+
+
+
+<div id="spadComm9-195" class="spadComm" >
+<form id="formComm9-195" action="javascript:makeRequest('9-195');" >
+<input id="comm9-195" type="text" class="command" style="width: 4em;" value="a / b " />
+</form>
+<span id="commSav9-195" class="commSav" >a / b </span>
+<div id="mathAns9-195" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>161</mn><mn>289</mn></mfrac><mo>+</mo><mrow><mfrac><mn>240</mn><mn>289</mn></mfrac><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+<p>Use a conversion (<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a>  in Section 
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> ) 
+to view the last object as a fraction of complex integers.
+</p>
+
+
+
+
+<div id="spadComm9-196" class="spadComm" >
+<form id="formComm9-196" action="javascript:makeRequest('9-196');" >
+<input id="comm9-196" type="text" class="command" style="width: 21em;" value="% :: Fraction Complex Integer " />
+</form>
+<span id="commSav9-196" class="commSav" >% :: Fraction Complex Integer </span>
+<div id="mathAns9-196" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>-</mo><mn>15</mn><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow><mrow><mn>15</mn><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Complex Integer
+</div>
+
+
+
+<p>The predefined macro <span class="teletype">%i</span> is defined to be <span class="teletype">complex(0,1)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-197" class="spadComm" >
+<form id="formComm9-197" action="javascript:makeRequest('9-197');" >
+<input id="comm9-197" type="text" class="command" style="width: 10em;" value="3.4 + 6.7 * %i" />
+</form>
+<span id="commSav9-197" class="commSav" >3.4 + 6.7 * %i</span>
+<div id="mathAns9-197" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mo>.</mo><mn>4</mn></mrow><mo>+</mo><mrow><mrow><mn>6</mn><mo>.</mo><mn>7</mn></mrow><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+<p>You can also compute the <span class="spadfunFrom" >conjugate</span><span class="index">conjugate</span><a name="chapter-9-55"/><span class="index">Complex</span><a name="chapter-9-56"/> and
+<span class="spadfunFrom" >norm</span><span class="index">norm</span><a name="chapter-9-57"/><span class="index">Complex</span><a name="chapter-9-58"/> of a complex number.
+</p>
+
+
+
+
+<div id="spadComm9-198" class="spadComm" >
+<form id="formComm9-198" action="javascript:makeRequest('9-198');" >
+<input id="comm9-198" type="text" class="command" style="width: 8em;" value="conjugate a " />
+</form>
+<span id="commSav9-198" class="commSav" >conjugate a </span>
+<div id="mathAns9-198" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>4</mn><mn>3</mn></mfrac><mo>-</mo><mrow><mfrac><mn>5</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-199" class="spadComm" >
+<form id="formComm9-199" action="javascript:makeRequest('9-199');" >
+<input id="comm9-199" type="text" class="command" style="width: 5em;" value="norm a " />
+</form>
+<span id="commSav9-199" class="commSav" >norm a </span>
+<div id="mathAns9-199" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>289</mn><mn>36</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >real</span><span class="index">real</span><a name="chapter-9-59"/><span class="index">Complex</span><a name="chapter-9-60"/> and <span class="spadfunFrom" >imag</span><span class="index">imag</span><a name="chapter-9-61"/><span class="index">Complex</span><a name="chapter-9-62"/> operations
+are provided to extract the real and imaginary parts, respectively.
+</p>
+
+
+
+
+<div id="spadComm9-200" class="spadComm" >
+<form id="formComm9-200" action="javascript:makeRequest('9-200');" >
+<input id="comm9-200" type="text" class="command" style="width: 5em;" value="real a " />
+</form>
+<span id="commSav9-200" class="commSav" >real a </span>
+<div id="mathAns9-200" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>4</mn><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-201" class="spadComm" >
+<form id="formComm9-201" action="javascript:makeRequest('9-201');" >
+<input id="comm9-201" type="text" class="command" style="width: 5em;" value="imag a " />
+</form>
+<span id="commSav9-201" class="commSav" >imag a </span>
+<div id="mathAns9-201" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>5</mn><mn>2</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The domain <span class="teletype">Complex Integer</span> is also called the Gaussian integers.
+If <span class="teletype">R</span> is the integers (or, more generally, a <span class="teletype">EuclideanDomain</span>), 
+you can compute greatest common divisors.
+</p>
+
+
+
+
+<div id="spadComm9-202" class="spadComm" >
+<form id="formComm9-202" action="javascript:makeRequest('9-202');" >
+<input id="comm9-202" type="text" class="command" style="width: 19em;" value="gcd(13 - 13*%i,31 + 27*%i)" />
+</form>
+<span id="commSav9-202" class="commSav" >gcd(13 - 13*%i,31 + 27*%i)</span>
+<div id="mathAns9-202" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>5</mn><mo>+</mo><mi>i</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Integer
+</div>
+
+
+
+<p>You can also compute least common multiples.
+</p>
+
+
+
+
+<div id="spadComm9-203" class="spadComm" >
+<form id="formComm9-203" action="javascript:makeRequest('9-203');" >
+<input id="comm9-203" type="text" class="command" style="width: 19em;" value="lcm(13 - 13*%i,31 + 27*%i)" />
+</form>
+<span id="commSav9-203" class="commSav" >lcm(13 - 13*%i,31 + 27*%i)</span>
+<div id="mathAns9-203" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>143</mn><mo>-</mo><mrow><mn>39</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Integer
+</div>
+
+
+
+<p>You can <span class="spadfunFrom" >factor</span><span class="index">factor</span><a name="chapter-9-63"/><span class="index">Complex</span><a name="chapter-9-64"/> Gaussian integers.
+</p>
+
+
+
+
+<div id="spadComm9-204" class="spadComm" >
+<form id="formComm9-204" action="javascript:makeRequest('9-204');" >
+<input id="comm9-204" type="text" class="command" style="width: 13em;" value="factor(13 - 13*%i)" />
+</form>
+<span id="commSav9-204" class="commSav" >factor(13 - 13*%i)</span>
+<div id="mathAns9-204" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>(</mo><mn>2</mn><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>i</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>(</mo><mn>3</mn><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>i</mi></mrow><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Complex Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-205" class="spadComm" >
+<form id="formComm9-205" action="javascript:makeRequest('9-205');" >
+<input id="comm9-205" type="text" class="command" style="width: 13em;" value="factor complex(2,0)" />
+</form>
+<span id="commSav9-205" class="commSav" >factor complex(2,0)</span>
+<div id="mathAns9-205" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mi>i</mi><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Complex Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.10.xhtml" style="margin-right: 10px;">Previous Section 9.10 CliffordAlgebra</a><a href="section-9.12.xhtml" style="margin-right: 10px;">Next Section 9.12 ContinuedFraction</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.12.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.12.xhtml
new file mode 100644
index 0000000..3e19482
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.12.xhtml
@@ -0,0 +1,872 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.12</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.11.xhtml" style="margin-right: 10px;">Previous Section 9.11 Complex</a><a href="section-9.13.xhtml" style="margin-right: 10px;">Next Section 9.13  CycleIndicators</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.12">
+<h2 class="sectiontitle">9.12  ContinuedFraction</h2>
+
+
+<a name="ContinuedFractionXmpPage" class="label"/>
+
+
+<p>Continued fractions have been a fascinating and useful tool in
+mathematics for well over three hundred years.  Axiom implements
+continued fractions for fractions of any Euclidean domain.  In
+practice, this usually means rational numbers.  In this section we
+demonstrate some of the operations available for manipulating both
+finite and infinite continued fractions.  It may be helpful if you
+review <a href="section-9.76.xhtml#StreamXmpPage" class="ref" >StreamXmpPage</a>  to remind 
+yourself of some of the operations with streams.
+</p>
+
+
+<p>The <span class="teletype">ContinuedFraction</span> domain is a field and therefore you can
+add, subtract, multiply and divide the fractions.
+</p>
+
+
+<p>The <span class="spadfunFrom" >continuedFraction</span><span class="index">continuedFraction</span><a name="chapter-9-65"/><span class="index">ContinuedFraction</span><a name="chapter-9-66"/> operation
+converts its fractional argument to a continued fraction.
+</p>
+
+
+
+
+<div id="spadComm9-206" class="spadComm" >
+<form id="formComm9-206" action="javascript:makeRequest('9-206');" >
+<input id="comm9-206" type="text" class="command" style="width: 26em;" value="c := continuedFraction(314159/100000) " />
+</form>
+<span id="commSav9-206" class="commSav" >c := continuedFraction(314159/100000) </span>
+<div id="mathAns9-206" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>7</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>15</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>1</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>25</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>1</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>7</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>4</mn></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ContinuedFraction Integer
+</div>
+
+
+
+<p>This display is a compact form of the bulkier
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------------------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;---------------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;---------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;+&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4<br />
+</div>
+
+
+
+<p>You can write any rational number in a similar form.  The fraction
+will be finite and you can always take the ``numerators'' to be <span class="teletype">1</span>.
+That is, any rational number can be written as a simple, finite
+continued fraction of the form
+</p>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a(1)&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a(2)&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a(3)&nbsp;+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a(n-1)&nbsp;+&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a(n)<br />
+</div>
+
+
+
+<p>The  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mi>i</mi></msub></mrow></mstyle></math> are called partial quotients and the operation
+<span class="spadfunFrom" >partialQuotients</span><span class="index">partialQuotients</span><a name="chapter-9-67"/><span class="index">ContinuedFraction</span><a name="chapter-9-68"/> creates a stream of them.
+</p>
+
+
+
+
+<div id="spadComm9-207" class="spadComm" >
+<form id="formComm9-207" action="javascript:makeRequest('9-207');" >
+<input id="comm9-207" type="text" class="command" style="width: 13em;" value="partialQuotients c " />
+</form>
+<span id="commSav9-207" class="commSav" >partialQuotients c </span>
+<div id="mathAns9-207" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>15</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>7</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>By considering more and more of the fraction, you get the
+<span class="spadfunFrom" >convergents</span><span class="index">convergents</span><a name="chapter-9-69"/><span class="index">ContinuedFraction</span><a name="chapter-9-70"/>.  For example, the first
+convergent is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mn>1</mn></msub></mrow></mstyle></math>, the second is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>a</mi><mn>1</mn></msub><mo>+</mo><mn>1</mn><mo>/</mo><msub><mi>a</mi><mn>2</mn></msub></mrow></mstyle></math> and so on.
+</p>
+
+
+
+
+<div id="spadComm9-208" class="spadComm" >
+<form id="formComm9-208" action="javascript:makeRequest('9-208');" >
+<input id="comm9-208" type="text" class="command" style="width: 10em;" value="convergents c " />
+</form>
+<span id="commSav9-208" class="commSav" >convergents c </span>
+<div id="mathAns9-208" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mfrac><mn>22</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>333</mn><mn>106</mn></mfrac><mo>,</mo><mfrac><mn>355</mn><mn>113</mn></mfrac><mo>,</mo><mfrac><mn>9208</mn><mn>2931</mn></mfrac><mo>,</mo><mfrac><mn>9563</mn><mn>3044</mn></mfrac><mo>,</mo><mfrac><mn>76149</mn><mn>24239</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Fraction Integer
+</div>
+
+
+
+<p>Since this is a finite continued fraction, the last convergent is the
+original rational number, in reduced form.  The result of
+<span class="spadfunFrom" >approximants</span><span class="index">approximants</span><a name="chapter-9-71"/><span class="index">ContinuedFraction</span><a name="chapter-9-72"/> is always an infinite
+stream, though it may just repeat the ``last'' value.
+</p>
+
+
+
+
+<div id="spadComm9-209" class="spadComm" >
+<form id="formComm9-209" action="javascript:makeRequest('9-209');" >
+<input id="comm9-209" type="text" class="command" style="width: 10em;" value="approximants c " />
+</form>
+<span id="commSav9-209" class="commSav" >approximants c </span>
+<div id="mathAns9-209" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mfrac><mn>22</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>333</mn><mn>106</mn></mfrac><mo>,</mo><mfrac><mn>355</mn><mn>113</mn></mfrac><mo>,</mo><mfrac><mn>9208</mn><mn>2931</mn></mfrac><mo>,</mo><mfrac><mn>9563</mn><mn>3044</mn></mfrac><mo>,</mo><mfrac><mn>76149</mn><mn>24239</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Fraction Integer
+</div>
+
+
+
+<p>Inverting <span class="teletype">c</span> only changes the partial quotients of its fraction
+by inserting a <span class="teletype">0</span> at the beginning of the list.
+</p>
+
+
+
+
+<div id="spadComm9-210" class="spadComm" >
+<form id="formComm9-210" action="javascript:makeRequest('9-210');" >
+<input id="comm9-210" type="text" class="command" style="width: 19em;" value="pq := partialQuotients(1/c) " />
+</form>
+<span id="commSav9-210" class="commSav" >pq := partialQuotients(1/c) </span>
+<div id="mathAns9-210" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>15</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Do this to recover the original continued fraction from this list of
+partial quotients.  The three-argument form of the
+<span class="spadfunFrom" >continuedFraction</span><span class="index">continuedFraction</span><a name="chapter-9-73"/><span class="index">ContinuedFraction</span><a name="chapter-9-74"/> operation takes an
+element which is the whole part of the fraction, a stream of elements
+which are the numerators of the fraction, and a stream of elements
+which are the denominators of the fraction.
+</p>
+
+
+
+
+<div id="spadComm9-211" class="spadComm" >
+<form id="formComm9-211" action="javascript:makeRequest('9-211');" >
+<input id="comm9-211" type="text" class="command" style="width: 34em;" value="continuedFraction(first pq,repeating [1],rest pq) " />
+</form>
+<span id="commSav9-211" class="commSav" >continuedFraction(first pq,repeating [1],rest pq) </span>
+<div id="mathAns9-211" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>3</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>7</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>15</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>1</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>25</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>1</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>7</mn></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ContinuedFraction Integer
+</div>
+
+
+
+<p>The streams need not be finite for
+<span class="spadfunFrom" >continuedFraction</span><span class="index">continuedFraction</span><a name="chapter-9-75"/><span class="index">ContinuedFraction</span><a name="chapter-9-76"/>.  Can you guess
+which irrational number has the following continued fraction?  See the
+end of this section for the answer.
+</p>
+
+
+
+
+<div id="spadComm9-212" class="spadComm" >
+<form id="formComm9-212" action="javascript:makeRequest('9-212');" >
+<input id="comm9-212" type="text" class="command" style="width: 36em;" value="z:=continuedFraction(3,repeating [1],repeating [3,6]) " />
+</form>
+<span id="commSav9-212" class="commSav" >z:=continuedFraction(3,repeating [1],repeating [3,6]) </span>
+<div id="mathAns9-212" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>3</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>6</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>3</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>6</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>3</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>6</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>3</mn></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ContinuedFraction Integer
+</div>
+
+
+
+<p>In 1737 Euler discovered the infinite continued fraction expansion
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e&nbsp;-&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----&nbsp;=&nbsp;---------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14&nbsp;+&nbsp;...<br />
+</div>
+
+
+
+<p>We use this expansion to compute rational and floating point
+approximations of <span class="teletype">e</span>.  <span class="footnote">For this and other interesting
+expansions, see C. D. Olds, <span class="italic">Continued Fractions,</span> New
+Mathematical Library, (New York: Random House, 1963), pp.  134--139.</span>
+</p>
+
+
+<p>By looking at the above expansion, we see that the whole part is <span class="teletype">0</span>
+and the numerators are all equal to <span class="teletype">1</span>.  This constructs the
+stream of denominators.
+</p>
+
+
+
+
+<div id="spadComm9-213" class="spadComm" >
+<form id="formComm9-213" action="javascript:makeRequest('9-213');" >
+<input id="comm9-213" type="text" class="command" style="width: 36em;" value="dens:Stream Integer := cons(1,generate((x+->x+4),6)) " />
+</form>
+<span id="commSav9-213" class="commSav" >dens:Stream Integer := cons(1,generate((x+->x+4),6)) </span>
+<div id="mathAns9-213" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>14</mn><mo>,</mo><mn>18</mn><mo>,</mo><mn>22</mn><mo>,</mo><mn>26</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Therefore this is the continued fraction expansion for
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>e</mi><mo>-</mo><mn>1</mn><mo>)</mo><mo>/</mo><mn>2</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm9-214" class="spadComm" >
+<form id="formComm9-214" action="javascript:makeRequest('9-214');" >
+<input id="comm9-214" type="text" class="command" style="width: 31em;" value="cf := continuedFraction(0,repeating [1],dens) " />
+</form>
+<span id="commSav9-214" class="commSav" >cf := continuedFraction(0,repeating [1],dens) </span>
+<div id="mathAns9-214" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>1</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>6</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>10</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>14</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>18</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>22</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>26</mn></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ContinuedFraction Integer
+</div>
+
+
+
+<p>These are the rational number convergents.
+</p>
+
+
+
+
+<div id="spadComm9-215" class="spadComm" >
+<form id="formComm9-215" action="javascript:makeRequest('9-215');" >
+<input id="comm9-215" type="text" class="command" style="width: 15em;" value="ccf := convergents cf " />
+</form>
+<span id="commSav9-215" class="commSav" >ccf := convergents cf </span>
+<div id="mathAns9-215" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mfrac><mn>6</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>61</mn><mn>71</mn></mfrac><mo>,</mo><mfrac><mn>860</mn><mn>1001</mn></mfrac><mo>,</mo><mfrac><mn>15541</mn><mn>18089</mn></mfrac><mo>,</mo><mfrac><mn>342762</mn><mn>398959</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Fraction Integer
+</div>
+
+
+
+<p>You can get rational convergents for <span class="teletype">e</span> by multiplying by <span class="teletype">2</span> and
+adding <span class="teletype">1</span>.
+</p>
+
+
+
+
+<div id="spadComm9-216" class="spadComm" >
+<form id="formComm9-216" action="javascript:makeRequest('9-216');" >
+<input id="comm9-216" type="text" class="command" style="width: 26em;" value="eConvergents := [2*e + 1 for e in ccf] " />
+</form>
+<span id="commSav9-216" class="commSav" >eConvergents := [2*e + 1 for e in ccf] </span>
+<div id="mathAns9-216" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mfrac><mn>19</mn><mn>7</mn></mfrac><mo>,</mo><mfrac><mn>193</mn><mn>71</mn></mfrac><mo>,</mo><mfrac><mn>2721</mn><mn>1001</mn></mfrac><mo>,</mo><mfrac><mn>49171</mn><mn>18089</mn></mfrac><mo>,</mo><mfrac><mn>1084483</mn><mn>398959</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Fraction Integer
+</div>
+
+
+
+<p>You can also compute the floating point approximations to these convergents.
+</p>
+
+
+
+
+<div id="spadComm9-217" class="spadComm" >
+<form id="formComm9-217" action="javascript:makeRequest('9-217');" >
+<input id="comm9-217" type="text" class="command" style="width: 20em;" value="eConvergents :: Stream Float " />
+</form>
+<span id="commSav9-217" class="commSav" >eConvergents :: Stream Float </span>
+<div id="mathAns9-217" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>3</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7142857142</mn><mn>857142857</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7183098591</mn><mn>549295775</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mo>.</mo><mn>7182817182</mn><mn>817182817</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>7182818287</mn><mn>356957267</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mo>.</mo><mn>7182818284</mn><mspace width="0.5 em" /><mn>585634113</mn></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Float
+</div>
+
+
+
+<p>Compare this to the value of <span class="teletype">e</span> computed by the
+<span class="spadfunFrom" >exp</span><span class="index">exp</span><a name="chapter-9-77"/><span class="index">Float</span><a name="chapter-9-78"/> operation in <span class="teletype">Float</span>.
+</p>
+
+
+
+
+<div id="spadComm9-218" class="spadComm" >
+<form id="formComm9-218" action="javascript:makeRequest('9-218');" >
+<input id="comm9-218" type="text" class="command" style="width: 5em;" value="exp 1.0" />
+</form>
+<span id="commSav9-218" class="commSav" >exp 1.0</span>
+<div id="mathAns9-218" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>7182818284</mn><mspace width="0.5 em" /><mn>590452354</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>In about 1658, Lord Brouncker established the following expansion
+for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>4</mn><mo>/</mo><mi>&#x03C0;</mi></mrow></mstyle></math>,
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;---------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;49<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;81<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;+&nbsp;...<br />
+</div>
+
+
+
+<p>Let's use this expansion to compute rational and floating point
+approximations for  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03C0;</mi></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm9-219" class="spadComm" >
+<form id="formComm9-219" action="javascript:makeRequest('9-219');" >
+<input id="comm9-219" type="text" class="command" style="width: 44em;" value="cf := continuedFraction(1,[(2*i+1)**2 for i in 0..],repeating [2])" />
+</form>
+<span id="commSav9-219" class="commSav" >cf := continuedFraction(1,[(2*i+1)**2 for i in 0..],repeating [2])</span>
+<div id="mathAns9-219" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>2</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>9</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>2</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>25</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>2</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>49</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>2</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>81</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>2</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>121</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>2</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>169</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>2</mn></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ContinuedFraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-220" class="spadComm" >
+<form id="formComm9-220" action="javascript:makeRequest('9-220');" >
+<input id="comm9-220" type="text" class="command" style="width: 15em;" value="ccf := convergents cf " />
+</form>
+<span id="commSav9-220" class="commSav" >ccf := convergents cf </span>
+<div id="mathAns9-220" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo><mfrac><mn>15</mn><mn>13</mn></mfrac><mo>,</mo><mfrac><mn>105</mn><mn>76</mn></mfrac><mo>,</mo><mfrac><mn>315</mn><mn>263</mn></mfrac><mo>,</mo><mfrac><mn>3465</mn><mn>2578</mn></mfrac><mo>,</mo><mfrac><mn>45045</mn><mn>36979</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-221" class="spadComm" >
+<form id="formComm9-221" action="javascript:makeRequest('9-221');" >
+<input id="comm9-221" type="text" class="command" style="width: 24em;" value="piConvergents := [4/p for p in ccf] " />
+</form>
+<span id="commSav9-221" class="commSav" >piConvergents := [4/p for p in ccf] </span>
+<div id="mathAns9-221" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mfrac><mn>8</mn><mn>3</mn></mfrac><mo>,</mo><mfrac><mn>52</mn><mn>15</mn></mfrac><mo>,</mo><mfrac><mn>304</mn><mn>105</mn></mfrac><mo>,</mo><mfrac><mn>1052</mn><mn>315</mn></mfrac><mo>,</mo><mfrac><mn>10312</mn><mn>3465</mn></mfrac><mo>,</mo><mfrac><mn>147916</mn><mn>45045</mn></mfrac><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Fraction Integer
+</div>
+
+
+
+<p>As you can see, the values are converging to
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>&#x03C0;</mi><mo>=</mo><mn>3</mn><mo>.</mo><mn>14159265358979323846</mn><mo>.</mo><mo>.</mo><mo>.</mo></mrow></mstyle></math>,
+but not very quickly.
+</p>
+
+
+
+
+<div id="spadComm9-222" class="spadComm" >
+<form id="formComm9-222" action="javascript:makeRequest('9-222');" >
+<input id="comm9-222" type="text" class="command" style="width: 20em;" value="piConvergents :: Stream Float " />
+</form>
+<span id="commSav9-222" class="commSav" >piConvergents :: Stream Float </span>
+<div id="mathAns9-222" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mn>4</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>.</mo><mn>6666666666</mn><mspace width="0.5 em" /><mn>666666667</mn></mrow><mo>,</mo><mrow><mn>3</mn><mo>.</mo><mn>4666666666</mn><mspace width="0.5 em" /><mn>666666667</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mo>.</mo><mn>8952380952</mn><mspace width="0.5 em" /><mn>380952381</mn></mrow><mo>,</mo><mrow><mn>3</mn><mo>.</mo><mn>3396825396</mn><mspace width="0.5 em" /><mn>825396825</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mo>.</mo><mn>9760461760</mn><mspace width="0.5 em" /><mn>461760462</mn></mrow><mo>,</mo><mrow><mn>3</mn><mo>.</mo><mn>2837384837</mn><mspace width="0.5 em" /><mn>384837385</mn></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Float
+</div>
+
+
+
+<p>You need not restrict yourself to continued fractions of integers.
+Here is an expansion for a quotient of Gaussian integers.
+</p>
+
+
+
+
+<div id="spadComm9-223" class="spadComm" >
+<form id="formComm9-223" action="javascript:makeRequest('9-223');" >
+<input id="comm9-223" type="text" class="command" style="width: 32em;" value="continuedFraction((- 122 + 597*%i)/(4 - 4*%i))" />
+</form>
+<span id="commSav9-223" class="commSav" >continuedFraction((- 122 + 597*%i)/(4 - 4*%i))</span>
+<div id="mathAns9-223" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>90</mn><mo>+</mo><mrow><mn>59</mn><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mn>1</mn><mo>-</mo><mn>2</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mo>-</mo><mn>1</mn><mo>+</mo><mn>2</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ContinuedFraction Complex Integer
+</div>
+
+
+
+<p>This is an expansion for a quotient of polynomials in one variable
+with rational number coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-224" class="spadComm" >
+<form id="formComm9-224" action="javascript:makeRequest('9-224');" >
+<input id="comm9-224" type="text" class="command" style="width: 36em;" value="r : Fraction UnivariatePolynomial(x,Fraction Integer) " />
+</form>
+<span id="commSav9-224" class="commSav" >r : Fraction UnivariatePolynomial(x,Fraction Integer) </span>
+<div id="mathAns9-224" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm9-225" class="spadComm" >
+<form id="formComm9-225" action="javascript:makeRequest('9-225');" >
+<input id="comm9-225" type="text" class="command" style="width: 29em;" value="r := ((x - 1) * (x - 2)) / ((x-3) * (x-4)) " />
+</form>
+<span id="commSav9-225" class="commSav" >r := ((x - 1) * (x - 2)) / ((x-3) * (x-4)) </span>
+<div id="mathAns9-225" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>2</mn></mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>12</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-226" class="spadComm" >
+<form id="formComm9-226" action="javascript:makeRequest('9-226');" >
+<input id="comm9-226" type="text" class="command" style="width: 14em;" value="continuedFraction r " />
+</form>
+<span id="commSav9-226" class="commSav" >continuedFraction r </span>
+<div id="mathAns9-226" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mfrac><mn>1</mn><mn>4</mn></mfrac><mi>x</mi><mo>-</mo><mfrac><mn>9</mn><mn>8</mn></mfrac></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>|</mo></mrow><mrow><mo>|</mo><mfrac><mn>16</mn><mn>3</mn></mfrac><mi>x</mi><mo>-</mo><mfrac><mn>40</mn><mn>3</mn></mfrac></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ContinuedFraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>To conclude this section, we give you evidence that
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;=&nbsp;3&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;---------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;+&nbsp;...<br />
+</div>
+
+
+
+<p>is the expansion of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msqrt><mn>11</mn></msqrt></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm9-227" class="spadComm" >
+<form id="formComm9-227" action="javascript:makeRequest('9-227');" >
+<input id="comm9-227" type="text" class="command" style="width: 31em;" value="[i*i for i in convergents(z) :: Stream Float] " />
+</form>
+<span id="commSav9-227" class="commSav" >[i*i for i in convergents(z) :: Stream Float] </span>
+<div id="mathAns9-227" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mn>9</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>11</mn><mo>.</mo><mn>1111111111</mn><mspace width="0.5 em" /><mn>11111111</mn></mrow><mo>,</mo><mrow><mn>10</mn><mo>.</mo><mn>9944598337</mn><mspace width="0.5 em" /><mn>9501385</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>11</mn><mo>.</mo><mn>0002777777</mn><mspace width="0.5 em" /><mn>77777778</mn></mrow><mo>,</mo><mrow><mn>10</mn><mo>.</mo><mn>9999860763</mn><mspace width="0.5 em" /><mn>98799786</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>11</mn><mo>.</mo><mn>0000006979</mn><mspace width="0.5 em" /><mn>29731039</mn></mrow><mo>,</mo><mrow><mn>10</mn><mo>.</mo><mn>9999999650</mn><mspace width="0.5 em" /><mn>15834446</mn></mrow><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Float
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.11.xhtml" style="margin-right: 10px;">Previous Section 9.11 Complex</a><a href="section-9.13.xhtml" style="margin-right: 10px;">Next Section 9.13  CycleIndicators</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.13.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.13.xhtml
new file mode 100644
index 0000000..fb2cb17
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.13.xhtml
@@ -0,0 +1,1614 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.13</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.12.xhtml" style="margin-right: 10px;">Previous Section 9.12  ContinuedFraction</a><a href="section-9.14.xhtml" style="margin-right: 10px;">Next Section 9.14 DeRhamComplex</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.13">
+<h2 class="sectiontitle">9.13  CycleIndicators</h2>
+
+
+<a name="CycleIndicatorsXmpPage" class="label"/>
+
+
+<p>This section is based upon the paper J. H. Redfield, ``The Theory of
+Group-Reduced Distributions'', American J. Math.,49 (1927) 433-455,
+and is an application of group theory to enumeration problems.  It is
+a development of the work by P. A. MacMahon on the application of
+symmetric functions and Hammond operators to combinatorial theory.
+</p>
+
+
+<p>The theory is based upon the power sum symmetric functions
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>s</mi><mi>i</mi></msub></mrow></mstyle></math> which are the sum of the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>-th powers of the
+variables.  The cycle index of a permutation is an expression that
+specifies the sizes of the cycles of a permutation, and may be
+represented as a partition.  A partition of a non-negative integer
+<span class="teletype">n</span> is a collection of positive integers called its parts whose
+sum is <span class="teletype">n</span>.  For example, the partition  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><msup><mn>3</mn><mn>2</mn></msup><mspace width="0.5 em" /><mn>2</mn><mspace width="0.5 em" /><msup><mn>1</mn><mn>2</mn></msup><mo>)</mo></mrow></mstyle></math> will be
+used to represent  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> and will indicate that the
+permutation has two cycles of length 3, one of length 2 and two of
+length 1.  The cycle index of a permutation group is the sum of the
+cycle indices of its permutations divided by the number of
+permutations.  The cycle indices of certain groups are provided.
+</p>
+
+
+<p>The operation <span class="teletype">complete</span> returns the cycle index of the
+symmetric group of order <span class="teletype">n</span> for argument <span class="teletype">n</span>.
+Alternatively, it is the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th complete homogeneous symmetric
+function expressed in terms of power sum symmetric functions.
+</p>
+
+
+
+
+<div id="spadComm9-1" class="spadComm" >
+<form id="formComm9-1" action="javascript:makeRequest('9-1');" >
+<input id="comm9-1" type="text" class="command" style="width: 7em;" value="complete 1" />
+</form>
+<span id="commSav9-1" class="commSav" >complete 1</span>
+<div id="mathAns9-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-2" class="spadComm" >
+<form id="formComm9-2" action="javascript:makeRequest('9-2');" >
+<input id="comm9-2" type="text" class="command" style="width: 7em;" value="complete 2" />
+</form>
+<span id="commSav9-2" class="commSav" >complete 2</span>
+<div id="mathAns9-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>2</mn></msup><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-3" class="spadComm" >
+<form id="formComm9-3" action="javascript:makeRequest('9-3');" >
+<input id="comm9-3" type="text" class="command" style="width: 7em;" value="complete 3" />
+</form>
+<span id="commSav9-3" class="commSav" >complete 3</span>
+<div id="mathAns9-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>3</mn></msup><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-4" class="spadComm" >
+<form id="formComm9-4" action="javascript:makeRequest('9-4');" >
+<input id="comm9-4" type="text" class="command" style="width: 7em;" value="complete 7" />
+</form>
+<span id="commSav9-4" class="commSav" >complete 7</span>
+<div id="mathAns9-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mfrac><mn>1</mn><mn>7</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>6</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>5</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>2</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>5</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>4</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>3</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>4</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>4</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>3</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>18</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>72</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>4</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>48</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>48</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>3</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>240</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>5</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>7</mn></msup><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="teletype">elementary</span> computes the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th
+elementary symmetric function for argument <span class="teletype">n.</span>
+</p>
+
+
+
+
+<div id="spadComm9-5" class="spadComm" >
+<form id="formComm9-5" action="javascript:makeRequest('9-5');" >
+<input id="comm9-5" type="text" class="command" style="width: 8em;" value="elementary 7" />
+</form>
+<span id="commSav9-5" class="commSav" >elementary 7</span>
+<div id="mathAns9-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mfrac><mn>1</mn><mn>7</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>6</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>5</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>2</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>10</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>5</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>4</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>3</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>4</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>4</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>3</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>18</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>72</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>4</mn></msup></mrow><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>1</mn><mn>48</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>48</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>3</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>240</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>5</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5040</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>7</mn></msup><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="teletype">alternating</span> returns the cycle index of the alternating 
+group having an even number of even parts in each cycle partition.
+</p>
+
+
+
+
+<div id="spadComm9-6" class="spadComm" >
+<form id="formComm9-6" action="javascript:makeRequest('9-6');" >
+<input id="comm9-6" type="text" class="command" style="width: 9em;" value="alternating 7" />
+</form>
+<span id="commSav9-6" class="commSav" >alternating 7</span>
+<div id="mathAns9-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mfrac><mn>2</mn><mn>7</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>5</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>4</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>36</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>4</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>3</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2520</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>7</mn></msup><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="teletype">cyclic</span> returns the cycle index of the cyclic group.
+</p>
+
+
+
+
+<div id="spadComm9-7" class="spadComm" >
+<form id="formComm9-7" action="javascript:makeRequest('9-7');" >
+<input id="comm9-7" type="text" class="command" style="width: 6em;" value="cyclic 7" />
+</form>
+<span id="commSav9-7" class="commSav" >cyclic 7</span>
+<div id="mathAns9-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>6</mn><mn>7</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>7</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>7</mn></msup><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="teletype">dihedral</span> is the cycle index of the
+dihedral group.
+</p>
+
+
+
+
+<div id="spadComm9-8" class="spadComm" >
+<form id="formComm9-8" action="javascript:makeRequest('9-8');" >
+<input id="comm9-8" type="text" class="command" style="width: 7em;" value="dihedral 7" />
+</form>
+<span id="commSav9-8" class="commSav" >dihedral 7</span>
+<div id="mathAns9-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>3</mn><mn>7</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>14</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>7</mn></msup><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="teletype">graphs</span> for argument <span class="teletype">n</span> returns the cycle
+index of the group of permutations on the edges of the complete graph
+with <span class="teletype">n</span> nodes induced by applying the symmetric group to the
+nodes.
+</p>
+
+
+
+
+<div id="spadComm9-9" class="spadComm" >
+<form id="formComm9-9" action="javascript:makeRequest('9-9');" >
+<input id="comm9-9" type="text" class="command" style="width: 6em;" value="graphs 5" />
+</form>
+<span id="commSav9-9" class="commSav" >graphs 5</span>
+<div id="mathAns9-9" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>6</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>5</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>5</mn><mn>2</mn></msup><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>4</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>2</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>4</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>120</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>10</mn></msup><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+<p>The cycle index of a direct product of two groups is the product of
+the cycle indices of the groups.  Redfield provided two operations on
+two cycle indices which will be called ``cup'' and ``cap'' here.  The
+<span class="teletype">cup</span> of two cycle indices is a kind of scalar product that
+combines monomials for permutations with the same cycles.  The <span class="teletype">cap</span> operation provides the sum of the coefficients of the result of
+the <span class="teletype">cup</span> operation which will be an integer that enumerates what
+Redfield called group-reduced distributions.
+</p>
+
+
+<p>We can, for example, represent <span class="teletype">complete 2 * complete 2</span> as the
+set of objects <span class="teletype">a a b b</span> and 
+<span class="teletype">complete 2 * complete 1 * complete 1</span> as <span class="teletype">c c d e.</span>
+</p>
+
+
+<p>This integer is the number of different sets of four pairs.
+</p>
+
+
+
+
+<div id="spadComm9-10" class="spadComm" >
+<form id="formComm9-10" action="javascript:makeRequest('9-10');" >
+<input id="comm9-10" type="text" class="command" style="width: 30em;" value="cap(complete 2**2, complete 2*complete 1**2)" />
+</form>
+<span id="commSav9-10" class="commSav" >cap(complete 2**2, complete 2*complete 1**2)</span>
+<div id="mathAns9-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+a&nbsp;a&nbsp;b&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;a&nbsp;b&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;a&nbsp;b&nbsp;b&nbsp;&nbsp;&nbsp;a&nbsp;a&nbsp;b&nbsp;b<br />
+c&nbsp;c&nbsp;d&nbsp;e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;d&nbsp;c&nbsp;e&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;e&nbsp;c&nbsp;d&nbsp;&nbsp;&nbsp;d&nbsp;e&nbsp;c&nbsp;c<br />
+</div>
+
+
+
+<p>This integer is the number of different sets of four pairs no two
+pairs being equal.
+</p>
+
+
+
+
+<div id="spadComm9-11" class="spadComm" >
+<form id="formComm9-11" action="javascript:makeRequest('9-11');" >
+<input id="comm9-11" type="text" class="command" style="width: 31em;" value="cap(elementary 2**2, complete 2*complete 1**2)" />
+</form>
+<span id="commSav9-11" class="commSav" >cap(elementary 2**2, complete 2*complete 1**2)</span>
+<div id="mathAns9-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>For example,
+</p>
+
+
+
+<div class="verbatim"><br />
+a&nbsp;a&nbsp;b&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;a&nbsp;b&nbsp;b<br />
+c&nbsp;d&nbsp;c&nbsp;e&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;e&nbsp;c&nbsp;d<br />
+</div>
+
+
+<p>In this case the configurations enumerated are easily constructed,
+however the theory merely enumerates them providing little help in
+actually constructing them.
+</p>
+
+
+<p>Here are the number of 6-pairs, first from <span class="teletype">a a a b b c,</span> second
+from <span class="teletype">d d e e f g.</span>
+</p>
+
+
+
+
+<div id="spadComm9-12" class="spadComm" >
+<form id="formComm9-12" action="javascript:makeRequest('9-12');" >
+<input id="comm9-12" type="text" class="command" style="width: 44em;" value="cap(complete 3*complete 2*complete 1,complete 2**2*complete 1**2)" />
+</form>
+<span id="commSav9-12" class="commSav" >cap(complete 3*complete 2*complete 1,complete 2**2*complete 1**2)</span>
+<div id="mathAns9-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>24</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Here it is again, but with no equal pairs.
+</p>
+
+
+
+
+<div id="spadComm9-13" class="spadComm" >
+<form id="formComm9-13" action="javascript:makeRequest('9-13');" >
+<input id="comm9-13" type="text" class="command" style="width: 48em;" value="cap(elementary 3*elementary 2*elementary 1,complete 2**2*complete 1**2)" />
+</form>
+<span id="commSav9-13" class="commSav" >cap(elementary 3*elementary 2*elementary 1,complete 2**2*complete 1**2)</span>
+<div id="mathAns9-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-14" class="spadComm" >
+<form id="formComm9-14" action="javascript:makeRequest('9-14');" >
+<input id="comm9-14" type="text" class="command" style="width: 46em;" value="cap(complete 3*complete 2*complete 1,elementary 2**2*elementary 1**2)" />
+</form>
+<span id="commSav9-14" class="commSav" >cap(complete 3*complete 2*complete 1,elementary 2**2*elementary 1**2)</span>
+<div id="mathAns9-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The number of 6-triples, first from <span class="teletype">a a a b b c,</span> second from
+<span class="teletype">d d e e f g,</span> third from <span class="teletype">h h i i j j.</span>
+</p>
+
+
+
+
+<div id="spadComm9-15" class="spadComm" >
+<form id="formComm9-15" action="javascript:makeRequest('9-15');" >
+<input id="comm9-15" type="text" class="command" style="width: 61em;" value="eval(cup(complete 3*complete 2*complete 1, cup(complete 2**2*complete 1**2,complete 2**3)))" />
+</form>
+<span id="commSav9-15" class="commSav" >eval(cup(complete 3*complete 2*complete 1, cup(complete 2**2*complete 1**2,complete 2**3)))</span>
+<div id="mathAns9-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1500</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The cycle index of vertices of a square is dihedral 4.
+</p>
+
+
+
+
+<div id="spadComm9-16" class="spadComm" >
+<form id="formComm9-16" action="javascript:makeRequest('9-16');" >
+<input id="comm9-16" type="text" class="command" style="width: 12em;" value="square:=dihedral 4" />
+</form>
+<span id="commSav9-16" class="commSav" >square:=dihedral 4</span>
+<div id="mathAns9-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>2</mn><mn>2</mn></msup><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>4</mn></msup><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+<p>The number of different squares with 2 red vertices and 2 blue vertices.
+</p>
+
+
+
+
+<div id="spadComm9-17" class="spadComm" >
+<form id="formComm9-17" action="javascript:makeRequest('9-17');" >
+<input id="comm9-17" type="text" class="command" style="width: 17em;" value="cap(complete 2**2,square)" />
+</form>
+<span id="commSav9-17" class="commSav" >cap(complete 2**2,square)</span>
+<div id="mathAns9-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The number of necklaces with 3 red beads, 2 blue beads and 2 green beads.
+</p>
+
+
+
+
+<div id="spadComm9-18" class="spadComm" >
+<form id="formComm9-18" action="javascript:makeRequest('9-18');" >
+<input id="comm9-18" type="text" class="command" style="width: 27em;" value="cap(complete 3*complete 2**2,dihedral 7)" />
+</form>
+<span id="commSav9-18" class="commSav" >cap(complete 3*complete 2**2,dihedral 7)</span>
+<div id="mathAns9-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>18</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The number of graphs with 5 nodes and 7 edges.
+</p>
+
+
+
+
+<div id="spadComm9-19" class="spadComm" >
+<form id="formComm9-19" action="javascript:makeRequest('9-19');" >
+<input id="comm9-19" type="text" class="command" style="width: 24em;" value="cap(graphs 5,complete 7*complete 3)" />
+</form>
+<span id="commSav9-19" class="commSav" >cap(graphs 5,complete 7*complete 3)</span>
+<div id="mathAns9-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The cycle index of rotations of vertices of a cube.
+</p>
+
+
+
+
+<div id="spadComm9-20" class="spadComm" >
+<form id="formComm9-20" action="javascript:makeRequest('9-20');" >
+<input id="comm9-20" type="text" class="command" style="width: 13em;" value="s(x) == powerSum(x)" />
+</form>
+<span id="commSav9-20" class="commSav" >s(x) == powerSum(x)</span>
+<div id="mathAns9-20" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm9-21" class="spadComm" >
+<form id="formComm9-21" action="javascript:makeRequest('9-21');" >
+<input id="comm9-21" type="text" class="command" style="width: 38em;" value="cube:=(1/24)*(s 1**8+9*s 2**4 + 8*s 3**2*s 1**2+6*s 4**2)" />
+</form>
+<span id="commSav9-21" class="commSav" >cube:=(1/24)*(s 1**8+9*s 2**4 + 8*s 3**2*s 1**2+6*s 4**2)</span>
+<div id="mathAns9-21" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;s&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SymmetricPolynomial&nbsp;Fraction&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>4</mn><mn>2</mn></msup><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>2</mn><mn>4</mn></msup><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>8</mn></msup><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+<p>The number of cubes with 4 red vertices and 4 blue vertices.
+</p>
+
+
+
+
+<div id="spadComm9-22" class="spadComm" >
+<form id="formComm9-22" action="javascript:makeRequest('9-22');" >
+<input id="comm9-22" type="text" class="command" style="width: 16em;" value="cap(complete 4**2,cube)" />
+</form>
+<span id="commSav9-22" class="commSav" >cap(complete 4**2,cube)</span>
+<div id="mathAns9-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The number of labeled graphs with degree sequence <span class="teletype">2 2 2 1 1</span>
+with no loops or multiple edges.
+</p>
+
+
+
+
+<div id="spadComm9-23" class="spadComm" >
+<form id="formComm9-23" action="javascript:makeRequest('9-23');" >
+<input id="comm9-23" type="text" class="command" style="width: 44em;" value="cap(complete 2**3*complete 1**2,wreath(elementary 4,elementary 2))" />
+</form>
+<span id="commSav9-23" class="commSav" >cap(complete 2**3*complete 1**2,wreath(elementary 4,elementary 2))</span>
+<div id="mathAns9-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Again, but with loops allowed but not multiple edges.
+</p>
+
+
+
+
+<div id="spadComm9-24" class="spadComm" >
+<form id="formComm9-24" action="javascript:makeRequest('9-24');" >
+<input id="comm9-24" type="text" class="command" style="width: 43em;" value="cap(complete 2**3*complete 1**2,wreath(elementary 4,complete 2))" />
+</form>
+<span id="commSav9-24" class="commSav" >cap(complete 2**3*complete 1**2,wreath(elementary 4,complete 2))</span>
+<div id="mathAns9-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>17</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Again, but with multiple edges allowed, but not loops
+</p>
+
+
+
+
+<div id="spadComm9-25" class="spadComm" >
+<form id="formComm9-25" action="javascript:makeRequest('9-25');" >
+<input id="comm9-25" type="text" class="command" style="width: 43em;" value="cap(complete 2**3*complete 1**2,wreath(complete 4,elementary 2))" />
+</form>
+<span id="commSav9-25" class="commSav" >cap(complete 2**3*complete 1**2,wreath(complete 4,elementary 2))</span>
+<div id="mathAns9-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Again, but with both multiple edges and loops allowed
+</p>
+
+
+
+
+<div id="spadComm9-26" class="spadComm" >
+<form id="formComm9-26" action="javascript:makeRequest('9-26');" >
+<input id="comm9-26" type="text" class="command" style="width: 42em;" value="cap(complete 2**3*complete 1**2,wreath(complete 4,complete 2))" />
+</form>
+<span id="commSav9-26" class="commSav" >cap(complete 2**3*complete 1**2,wreath(complete 4,complete 2))</span>
+<div id="mathAns9-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>23</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Having constructed a cycle index for a configuration we are at liberty
+to evaluate the  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>s</mi><mi>i</mi></msub></mrow></mstyle></math> components any way we please.  For example we
+can produce enumerating generating functions.  This is done by
+providing a function <span class="teletype">f</span> on an integer <span class="teletype">i</span> to the value
+required of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>s</mi><mi>i</mi></msub></mrow></mstyle></math>, and then evaluating <span class="teletype">eval(f, cycleindex)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-27" class="spadComm" >
+<form id="formComm9-27" action="javascript:makeRequest('9-27');" >
+<input id="comm9-27" type="text" class="command" style="width: 19em;" value="x: ULS(FRAC INT,'x,0) := 'x " />
+</form>
+<span id="commSav9-27" class="commSav" >x: ULS(FRAC INT,'x,0) := 'x </span>
+<div id="mathAns9-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+
+
+<div id="spadComm9-28" class="spadComm" >
+<form id="formComm9-28" action="javascript:makeRequest('9-28');" >
+<input id="comm9-28" type="text" class="command" style="width: 26em;" value="ZeroOrOne: INT -> ULS(FRAC INT, 'x, 0) " />
+</form>
+<span id="commSav9-28" class="commSav" >ZeroOrOne: INT -> ULS(FRAC INT, 'x, 0) </span>
+<div id="mathAns9-28" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm9-29" class="spadComm" >
+<form id="formComm9-29" action="javascript:makeRequest('9-29');" >
+<input id="comm9-29" type="text" class="command" style="width: 26em;" value="Integers: INT -> ULS(FRAC INT, 'x, 0) " />
+</form>
+<span id="commSav9-29" class="commSav" >Integers: INT -> ULS(FRAC INT, 'x, 0) </span>
+<div id="mathAns9-29" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>For the integers 0 and 1, or two colors.
+</p>
+
+
+
+
+<div id="spadComm9-30" class="spadComm" >
+<form id="formComm9-30" action="javascript:makeRequest('9-30');" >
+<input id="comm9-30" type="text" class="command" style="width: 15em;" value="ZeroOrOne n == 1+x**n " />
+</form>
+<span id="commSav9-30" class="commSav" >ZeroOrOne n == 1+x**n </span>
+<div id="mathAns9-30" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm9-31" class="spadComm" >
+<form id="formComm9-31" action="javascript:makeRequest('9-31');" >
+<input id="comm9-31" type="text" class="command" style="width: 8em;" value="ZeroOrOne 5 " />
+</form>
+<span id="commSav9-31" class="commSav" >ZeroOrOne 5 </span>
+<div id="mathAns9-31" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;ZeroOrOne&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnivariateLaurentSeries(Fraction&nbsp;Integer,x,0)&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>For the integers <span class="teletype">0, 1, 2, ...</span> we have this.
+</p>
+
+
+
+
+<div id="spadComm9-32" class="spadComm" >
+<form id="formComm9-32" action="javascript:makeRequest('9-32');" >
+<input id="comm9-32" type="text" class="command" style="width: 17em;" value="Integers n == 1/(1-x**n) " />
+</form>
+<span id="commSav9-32" class="commSav" >Integers n == 1/(1-x**n) </span>
+<div id="mathAns9-32" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm9-33" class="spadComm" >
+<form id="formComm9-33" action="javascript:makeRequest('9-33');" >
+<input id="comm9-33" type="text" class="command" style="width: 8em;" value="Integers 5 " />
+</form>
+<span id="commSav9-33" class="commSav" >Integers 5 </span>
+<div id="mathAns9-33" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;Integers&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnivariateLaurentSeries(Fraction&nbsp;Integer,x,0)&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>The coefficient of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>n</mi></msup></mrow></mstyle></math> is the number of graphs with 5 nodes and <span class="teletype">n</span>
+edges. 
+</p>
+
+
+<p>Note that there is an eval function that takes two arguments. It has the 
+signature:
+</p>
+
+
+
+<div class="verbatim"><br />
+((Integer&nbsp;-&gt;&nbsp;D1),SymmetricPolynomial&nbsp;Fraction&nbsp;Integer)&nbsp;-&gt;&nbsp;D1<br />
+&nbsp;&nbsp;from&nbsp;EvaluateCycleIndicators&nbsp;D1&nbsp;if&nbsp;D1&nbsp;has&nbsp;ALGEBRA&nbsp;FRAC&nbsp;INT<br />
+</div>
+
+
+<p>This function is not normally exposed (it will not normally be considered
+in the list of eval functions) as it is only useful for this particular
+domain. To use it we ask that it be considered thus:
+</p>
+
+
+
+
+<div id="spadComm9-34" class="spadComm" >
+<form id="formComm9-34" action="javascript:makeRequest('9-34');" >
+<input id="comm9-34" type="text" class="command" style="width: 10em;" value=")expose EVALCYC" />
+</form>
+<span id="commSav9-34" class="commSav" >)expose EVALCYC</span>
+<div id="mathAns9-34" ></div>
+</div>
+
+
+
+<p>and now we can use it:
+</p>
+
+
+
+
+<div id="spadComm9-35" class="spadComm" >
+<form id="formComm9-35" action="javascript:makeRequest('9-35');" >
+<input id="comm9-35" type="text" class="command" style="width: 18em;" value="eval(ZeroOrOne, graphs 5) " />
+</form>
+<span id="commSav9-35" class="commSav" >eval(ZeroOrOne, graphs 5) </span>
+<div id="mathAns9-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>The coefficient of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>n</mi></msup></mrow></mstyle></math> is the number of necklaces with
+<span class="teletype">n</span> red beads and <span class="teletype">n-8</span> green beads.
+</p>
+
+
+
+
+<div id="spadComm9-36" class="spadComm" >
+<form id="formComm9-36" action="javascript:makeRequest('9-36');" >
+<input id="comm9-36" type="text" class="command" style="width: 18em;" value="eval(ZeroOrOne,dihedral 8) " />
+</form>
+<span id="commSav9-36" class="commSav" >eval(ZeroOrOne,dihedral 8) </span>
+<div id="mathAns9-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>The coefficient of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>n</mi></msup></mrow></mstyle></math> is the number of partitions of <span class="teletype">n</span> into 4
+or fewer parts.
+</p>
+
+
+
+
+<div id="spadComm9-37" class="spadComm" >
+<form id="formComm9-37" action="javascript:makeRequest('9-37');" >
+<input id="comm9-37" type="text" class="command" style="width: 18em;" value="eval(Integers,complete 4) " />
+</form>
+<span id="commSav9-37" class="commSav" >eval(Integers,complete 4) </span>
+<div id="mathAns9-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>11</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>The coefficient of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>n</mi></msup></mrow></mstyle></math> is the number of partitions of <span class="teletype">n</span> into 4
+boxes containing ordered distinct parts.
+</p>
+
+
+
+
+<div id="spadComm9-38" class="spadComm" >
+<form id="formComm9-38" action="javascript:makeRequest('9-38');" >
+<input id="comm9-38" type="text" class="command" style="width: 19em;" value="eval(Integers,elementary 4) " />
+</form>
+<span id="commSav9-38" class="commSav" >eval(Integers,elementary 4) </span>
+<div id="mathAns9-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>11</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>14</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>The coefficient of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>n</mi></msup></mrow></mstyle></math> is the number of different cubes with <span class="teletype">n</span>
+red vertices and <span class="teletype">8-n</span> green ones.
+</p>
+
+
+
+
+<div id="spadComm9-39" class="spadComm" >
+<form id="formComm9-39" action="javascript:makeRequest('9-39');" >
+<input id="comm9-39" type="text" class="command" style="width: 14em;" value="eval(ZeroOrOne,cube) " />
+</form>
+<span id="commSav9-39" class="commSav" >eval(ZeroOrOne,cube) </span>
+<div id="mathAns9-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>The coefficient of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>n</mi></msup></mrow></mstyle></math> is the number of different cubes with integers
+on the vertices whose sum is <span class="teletype">n.</span>
+</p>
+
+
+
+
+<div id="spadComm9-40" class="spadComm" >
+<form id="formComm9-40" action="javascript:makeRequest('9-40');" >
+<input id="comm9-40" type="text" class="command" style="width: 14em;" value="eval(Integers,cube) " />
+</form>
+<span id="commSav9-40" class="commSav" >eval(Integers,cube) </span>
+<div id="mathAns9-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>21</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>37</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>85</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>151</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>The coefficient of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>n</mi></msup></mrow></mstyle></math> is the number of graphs with 5 nodes and with
+integers on the edges whose sum is <span class="teletype">n.</span>  In other words, the
+enumeration is of multigraphs with 5 nodes and <span class="teletype">n</span> edges.
+</p>
+
+
+
+
+<div id="spadComm9-41" class="spadComm" >
+<form id="formComm9-41" action="javascript:makeRequest('9-41');" >
+<input id="comm9-41" type="text" class="command" style="width: 16em;" value="eval(Integers,graphs 5) " />
+</form>
+<span id="commSav9-41" class="commSav" >eval(Integers,graphs 5) </span>
+<div id="mathAns9-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>17</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>35</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>76</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>149</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>Graphs with 15 nodes enumerated with respect to number of edges.
+</p>
+
+
+
+
+<div id="spadComm9-42" class="spadComm" >
+<form id="formComm9-42" action="javascript:makeRequest('9-42');" >
+<input id="comm9-42" type="text" class="command" style="width: 18em;" value="eval(ZeroOrOne ,graphs 15) " />
+</form>
+<span id="commSav9-42" class="commSav" >eval(ZeroOrOne ,graphs 15) </span>
+<div id="mathAns9-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>11</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>26</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>68</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>177</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>Necklaces with 7 green beads, 8 white beads, 5 yellow beads and 10
+red beads.
+</p>
+
+
+
+
+<div id="spadComm9-43" class="spadComm" >
+<form id="formComm9-43" action="javascript:makeRequest('9-43');" >
+<input id="comm9-43" type="text" class="command" style="width: 41em;" value="cap(dihedral 30,complete 7*complete 8*complete 5*complete 10)" />
+</form>
+<span id="commSav9-43" class="commSav" >cap(dihedral 30,complete 7*complete 8*complete 5*complete 10)</span>
+<div id="mathAns9-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>49958972383320</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="teletype">SFunction</span> is the S-function or Schur function of a
+partition written as a descending list of integers expressed in terms
+of power sum symmetric functions.
+</p>
+
+
+<p>In this case the argument partition represents a tableau shape.  For
+example <span class="teletype">3,2,2,1</span> represents a tableau with three boxes in the
+first row, two boxes in the second and third rows, and one box in the
+fourth row.  <span class="teletype">SFunction [3,2,2,1]</span> counts the number of different
+tableaux of shape <span class="teletype">3, 2, 2, 1</span> filled with objects with an
+ascending order in the columns and a non-descending order in the rows.
+</p>
+
+
+
+
+<div id="spadComm9-44" class="spadComm" >
+<form id="formComm9-44" action="javascript:makeRequest('9-44');" >
+<input id="comm9-44" type="text" class="command" style="width: 20em;" value="sf3221:= SFunction [3,2,2,1] " />
+</form>
+<span id="commSav9-44" class="commSav" >sf3221:= SFunction [3,2,2,1] </span>
+<div id="mathAns9-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>6</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>2</mn><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>6</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>4</mn><mn>2</mn></msup><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>4</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>4</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>4</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>36</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>2</mn><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>36</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>24</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>36</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>3</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>72</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>3</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>5</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>192</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>2</mn><mn>4</mn></msup><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>48</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>96</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>4</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>144</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mn>2</mn><mspace width="0.5 em" /></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>1</mn><mn>6</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>576</mn></mfrac><mspace width="0.5 em" /><mrow><mo>(</mo><msup><mn>1</mn><mn>8</mn></msup><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SymmetricPolynomial Fraction Integer
+</div>
+
+
+
+<p>This is the number filled with <span class="teletype">a a b b c c d d.</span>
+</p>
+
+
+
+
+<div id="spadComm9-45" class="spadComm" >
+<form id="formComm9-45" action="javascript:makeRequest('9-45');" >
+<input id="comm9-45" type="text" class="command" style="width: 18em;" value="cap(sf3221,complete 2**4) " />
+</form>
+<span id="commSav9-45" class="commSav" >cap(sf3221,complete 2**4) </span>
+<div id="mathAns9-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The configurations enumerated above are:
+</p>
+
+
+
+<div class="verbatim"><br />
+a&nbsp;a&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;a&nbsp;c&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;a&nbsp;d<br />
+b&nbsp;c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;b<br />
+c&nbsp;d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;c<br />
+d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d<br />
+</div>
+
+
+
+<p>This is the number of tableaux filled with <span class="teletype">1..8.</span>
+</p>
+
+
+
+
+<div id="spadComm9-46" class="spadComm" >
+<form id="formComm9-46" action="javascript:makeRequest('9-46');" >
+<input id="comm9-46" type="text" class="command" style="width: 18em;" value="cap(sf3221, powerSum 1**8)" />
+</form>
+<span id="commSav9-46" class="commSav" >cap(sf3221, powerSum 1**8)</span>
+<div id="mathAns9-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>70</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The coefficient of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>x</mi><mi>n</mi></msup></mrow></mstyle></math> is the number of column strict reverse plane
+partitions of <span class="teletype">n</span> of shape <span class="teletype">3 2 2 1.</span>
+</p>
+
+
+
+
+<div id="spadComm9-47" class="spadComm" >
+<form id="formComm9-47" action="javascript:makeRequest('9-47');" >
+<input id="comm9-47" type="text" class="command" style="width: 15em;" value="eval(Integers, sf3221)" />
+</form>
+<span id="commSav9-47" class="commSav" >eval(Integers, sf3221)</span>
+<div id="mathAns9-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>14</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>47</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>15</mn></msup></mrow><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+</div>
+
+
+
+<p>The smallest is
+</p>
+
+
+
+<div class="verbatim"><br />
+0&nbsp;0&nbsp;0<br />
+1&nbsp;1<br />
+2&nbsp;2<br />
+3<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.12.xhtml" style="margin-right: 10px;">Previous Section 9.12  ContinuedFraction</a><a href="section-9.14.xhtml" style="margin-right: 10px;">Next Section 9.14 DeRhamComplex</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.14.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.14.xhtml
new file mode 100644
index 0000000..bcb7746
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.14.xhtml
@@ -0,0 +1,1078 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.14</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.13.xhtml" style="margin-right: 10px;">Previous Section 9.13 CycleIndicators</a><a href="section-9.15.xhtml" style="margin-right: 10px;">Next Section 9.15 DecimalExpansion</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.14">
+<h2 class="sectiontitle">9.14  DeRhamComplex</h2>
+
+
+<a name="DeRhamComplexXmpPage" class="label"/>
+
+
+<p>The domain constructor <span class="teletype">DeRhamComplex</span> creates the class of
+differential forms of arbitrary degree over a coefficient ring.  The
+De Rham complex constructor takes two arguments: a ring, <span class="teletype">coefRing,</span> and a list of coordinate variables.
+</p>
+
+
+<p>This is the ring of coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-48" class="spadComm" >
+<form id="formComm9-48" action="javascript:makeRequest('9-48');" >
+<input id="comm9-48" type="text" class="command" style="width: 14em;" value="coefRing := Integer " />
+</form>
+<span id="commSav9-48" class="commSav" >coefRing := Integer </span>
+<div id="mathAns9-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>Integer</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>These are the coordinate variables.
+</p>
+
+
+
+
+<div id="spadComm9-49" class="spadComm" >
+<form id="formComm9-49" action="javascript:makeRequest('9-49');" >
+<input id="comm9-49" type="text" class="command" style="width: 19em;" value="lv : List Symbol := [x,y,z] " />
+</form>
+<span id="commSav9-49" class="commSav" >lv : List Symbol := [x,y,z] </span>
+<div id="mathAns9-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>This is the De Rham complex of Euclidean three-space using coordinates
+<span class="teletype">x, y</span> and <span class="teletype">z.</span>
+</p>
+
+
+
+
+<div id="spadComm9-50" class="spadComm" >
+<form id="formComm9-50" action="javascript:makeRequest('9-50');" >
+<input id="comm9-50" type="text" class="command" style="width: 18em;" value="der := DERHAM(coefRing,lv) " />
+</form>
+<span id="commSav9-50" class="commSav" >der := DERHAM(coefRing,lv) </span>
+<div id="mathAns9-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>DeRhamComplex</mi><mo>(</mo><mi>Integer</mi><mo>,</mo><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>]</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+<p> 
+This complex allows us to describe differential forms having
+expressions of integers as coefficients.  These coefficients can
+involve any number of variables, for example, <span class="teletype">f(x,t,r,y,u,z).</span>
+As we've chosen to work with ordinary Euclidean three-space,
+expressions involving these forms are treated as functions of 
+<span class="teletype">x, y</span> and <span class="teletype">z</span> with the additional arguments <span class="teletype">t, r</span> 
+and <span class="teletype">u</span> regarded as symbolic constants.
+</p>
+
+
+<p>Here are some examples of coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-51" class="spadComm" >
+<form id="formComm9-51" action="javascript:makeRequest('9-51');" >
+<input id="comm9-51" type="text" class="command" style="width: 17em;" value="R := Expression coefRing " />
+</form>
+<span id="commSav9-51" class="commSav" >R := Expression coefRing </span>
+<div id="mathAns9-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>ExpressionInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-52" class="spadComm" >
+<form id="formComm9-52" action="javascript:makeRequest('9-52');" >
+<input id="comm9-52" type="text" class="command" style="width: 24em;" value="f : R := x**2*y*z-5*x**3*y**2*z**5 " />
+</form>
+<span id="commSav9-52" class="commSav" >f : R := x**2*y*z-5*x**3*y**2*z**5 </span>
+<div id="mathAns9-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-53" class="spadComm" >
+<form id="formComm9-53" action="javascript:makeRequest('9-53');" >
+<input id="comm9-53" type="text" class="command" style="width: 30em;" value="g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2 " />
+</form>
+<span id="commSav9-53" class="commSav" >g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2 </span>
+<div id="mathAns9-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-54" class="spadComm" >
+<form id="formComm9-54" action="javascript:makeRequest('9-54');" >
+<input id="comm9-54" type="text" class="command" style="width: 19em;" value="h : R :=x*y*z-2*x**3*y*z**2 " />
+</form>
+<span id="commSav9-54" class="commSav" >h : R :=x*y*z-2*x**3*y*z**2 </span>
+<div id="mathAns9-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>We now define the multiplicative basis elements for the exterior
+algebra over <span class="teletype">R</span>.
+</p>
+
+
+
+
+<div id="spadComm9-55" class="spadComm" >
+<form id="formComm9-55" action="javascript:makeRequest('9-55');" >
+<input id="comm9-55" type="text" class="command" style="width: 17em;" value="dx : der := generator(1) " />
+</form>
+<span id="commSav9-55" class="commSav" >dx : der := generator(1) </span>
+<div id="mathAns9-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>dx</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+
+
+<div id="spadComm9-56" class="spadComm" >
+<form id="formComm9-56" action="javascript:makeRequest('9-56');" >
+<input id="comm9-56" type="text" class="command" style="width: 16em;" value="dy : der := generator(2)" />
+</form>
+<span id="commSav9-56" class="commSav" >dy : der := generator(2)</span>
+<div id="mathAns9-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>dy</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+
+
+<div id="spadComm9-57" class="spadComm" >
+<form id="formComm9-57" action="javascript:makeRequest('9-57');" >
+<input id="comm9-57" type="text" class="command" style="width: 16em;" value="dz : der := generator(3)" />
+</form>
+<span id="commSav9-57" class="commSav" >dz : der := generator(3)</span>
+<div id="mathAns9-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>dz</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>This is an alternative way to give the above assignments.
+</p>
+
+
+
+
+<div id="spadComm9-58" class="spadComm" >
+<form id="formComm9-58" action="javascript:makeRequest('9-58');" >
+<input id="comm9-58" type="text" class="command" style="width: 32em;" value="[dx,dy,dz] := [generator(i)$der for i in 1..3] " />
+</form>
+<span id="commSav9-58" class="commSav" >[dx,dy,dz] := [generator(i)$der for i in 1..3] </span>
+<div id="mathAns9-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>dx</mi><mo>,</mo><mi>dy</mi><mo>,</mo><mi>dz</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>Now we define some one-forms.
+</p>
+
+
+
+
+<div id="spadComm9-59" class="spadComm" >
+<form id="formComm9-59" action="javascript:makeRequest('9-59');" >
+<input id="comm9-59" type="text" class="command" style="width: 23em;" value="alpha : der := f*dx + g*dy + h*dz " />
+</form>
+<span id="commSav9-59" class="commSav" >alpha : der := f*dx + g*dy + h*dz </span>
+<div id="mathAns9-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dy</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+
+
+<div id="spadComm9-60" class="spadComm" >
+<form id="formComm9-60" action="javascript:makeRequest('9-60');" >
+<input id="comm9-60" type="text" class="command" style="width: 32em;" value="beta  : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy " />
+</form>
+<span id="commSav9-60" class="commSav" >beta  : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy </span>
+<div id="mathAns9-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mi>dy</mi></mrow><mo>+</mo><mrow><mrow><mo>cos</mo><mo>(</mo><mrow><mrow><mo>tan</mo><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>A well-known theorem states that the composition of
+<span class="spadfunFrom" >exteriorDifferential</span><span class="index">exteriorDifferential</span><a name="chapter-9-0"/><span class="index">DeRhamComplex</span><a name="chapter-9-1"/> with itself is the
+zero map for continuous forms.  Let's verify this theorem for <span class="teletype">alpha</span>.
+</p>
+
+
+
+
+<div id="spadComm9-61" class="spadComm" >
+<form id="formComm9-61" action="javascript:makeRequest('9-61');" >
+<input id="comm9-61" type="text" class="command" style="width: 18em;" value="exteriorDifferential alpha " />
+</form>
+<span id="commSav9-61" class="commSav" >exteriorDifferential alpha </span>
+<div id="mathAns9-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>14</mn><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dy</mi><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>25</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>21</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi><mspace width="0.5 em" /><mi>dy</mi></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>We see a lengthy output of the last expression, but nevertheless, the
+composition is zero.
+</p>
+
+
+
+
+<div id="spadComm9-62" class="spadComm" >
+<form id="formComm9-62" action="javascript:makeRequest('9-62');" >
+<input id="comm9-62" type="text" class="command" style="width: 16em;" value="exteriorDifferential % " />
+</form>
+<span id="commSav9-62" class="commSav" >exteriorDifferential % </span>
+<div id="mathAns9-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>Now we check that <span class="spadfunFrom" >exteriorDifferential</span><span class="index">exteriorDifferential</span><a name="chapter-9-2"/><span class="index">DeRhamComplex</span><a name="chapter-9-3"/>
+is a ``graded derivation'' <span class="teletype">D,</span> that is, <span class="teletype">D</span> satisfies:
+</p>
+
+
+
+<div class="verbatim"><br />
+D(a*b)&nbsp;=&nbsp;D(a)*b&nbsp;+&nbsp;(-1)**degree(a)*a*D(b)<br />
+</div>
+
+
+
+
+
+<div id="spadComm9-63" class="spadComm" >
+<form id="formComm9-63" action="javascript:makeRequest('9-63');" >
+<input id="comm9-63" type="text" class="command" style="width: 15em;" value="gamma := alpha * beta " />
+</form>
+<span id="commSav9-63" class="commSav" >gamma := alpha * beta </span>
+<div id="mathAns9-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dy</mi><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mrow><mrow><mo>tan</mo><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mrow><mrow><mo>(</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mrow><mrow><mo>tan</mo><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow></mrow><mo>)</mo></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo><mspace width="0.5 em" /><mi>dx</mi><mspace width="0.5 em" /><mi>dy</mi></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>We try this for the one-forms <span class="teletype">alpha</span> and <span class="teletype">beta</span>.
+</p>
+
+
+
+
+<div id="spadComm9-64" class="spadComm" >
+<form id="formComm9-64" action="javascript:makeRequest('9-64');" >
+<input id="comm9-64" type="text" class="command" style="width: 68em;" value="exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - alpha * exteriorDifferential(beta)) " />
+</form>
+<span id="commSav9-64" class="commSav" >exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - alpha * exteriorDifferential(beta)) </span>
+<div id="mathAns9-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>Now we define some ``basic operators'' (see 
+<a href="section-9.3.xhtml#BasicOperatorXmpPage" class="ref" >OperatorXmpPage</a> ).
+</p>
+
+
+
+
+<div id="spadComm9-65" class="spadComm" >
+<form id="formComm9-65" action="javascript:makeRequest('9-65');" >
+<input id="comm9-65" type="text" class="command" style="width: 16em;" value="a : BOP := operator('a) " />
+</form>
+<span id="commSav9-65" class="commSav" >a : BOP := operator('a) </span>
+<div id="mathAns9-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>a</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+
+
+<div id="spadComm9-66" class="spadComm" >
+<form id="formComm9-66" action="javascript:makeRequest('9-66');" >
+<input id="comm9-66" type="text" class="command" style="width: 16em;" value="b : BOP := operator('b) " />
+</form>
+<span id="commSav9-66" class="commSav" >b : BOP := operator('b) </span>
+<div id="mathAns9-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+
+
+<div id="spadComm9-67" class="spadComm" >
+<form id="formComm9-67" action="javascript:makeRequest('9-67');" >
+<input id="comm9-67" type="text" class="command" style="width: 16em;" value="c : BOP := operator('c) " />
+</form>
+<span id="commSav9-67" class="commSav" >c : BOP := operator('c) </span>
+<div id="mathAns9-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>c</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>We also define some indeterminate one- and two-forms using these
+operators.
+</p>
+
+
+
+
+<div id="spadComm9-68" class="spadComm" >
+<form id="formComm9-68" action="javascript:makeRequest('9-68');" >
+<input id="comm9-68" type="text" class="command" style="width: 37em;" value="sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz " />
+</form>
+<span id="commSav9-68" class="commSav" >sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz </span>
+<div id="mathAns9-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mi>c</mi><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo><mrow><mrow><mi>b</mi><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dy</mi></mrow><mo>+</mo><mrow><mrow><mi>a</mi><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+
+
+<div id="spadComm9-69" class="spadComm" >
+<form id="formComm9-69" action="javascript:makeRequest('9-69');" >
+<input id="comm9-69" type="text" class="command" style="width: 48em;" value="theta  := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz " />
+</form>
+<span id="commSav9-69" class="commSav" >theta  := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz </span>
+<div id="mathAns9-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mi>c</mi><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dy</mi><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo><mrow><mrow><mi>b</mi><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo><mrow><mrow><mi>a</mi><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi><mspace width="0.5 em" /><mi>dy</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>This allows us to get formal definitions for the ``gradient'' ...
+</p>
+
+
+
+
+<div id="spadComm9-70" class="spadComm" >
+<form id="formComm9-70" action="javascript:makeRequest('9-70');" >
+<input id="comm9-70" type="text" class="command" style="width: 22em;" value="totalDifferential(a(x,y,z))$der " />
+</form>
+<span id="commSav9-70" class="commSav" >totalDifferential(a(x,y,z))$der </span>
+<div id="mathAns9-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>3</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo><mrow><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>2</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dy</mi></mrow><mo>+</mo><mrow><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>1</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>the ``curl'' ...
+</p>
+
+
+
+
+<div id="spadComm9-71" class="spadComm" >
+<form id="formComm9-71" action="javascript:makeRequest('9-71');" >
+<input id="comm9-71" type="text" class="command" style="width: 18em;" value="exteriorDifferential sigma " />
+</form>
+<span id="commSav9-71" class="commSav" >exteriorDifferential sigma </span>
+<div id="mathAns9-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><msub><mi>c</mi><mrow><mo>,</mo><mn>2</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mo>-</mo><mrow><mrow><msub><mi>b</mi><mrow><mo>,</mo><mn>3</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dy</mi><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><msub><mi>c</mi><mrow><mo>,</mo><mn>1</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mo>-</mo><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>3</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><msub><mi>b</mi><mrow><mo>,</mo><mn>1</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mo>-</mo><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>2</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi><mspace width="0.5 em" /><mi>dy</mi></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>and the ``divergence.''
+</p>
+
+
+
+
+<div id="spadComm9-72" class="spadComm" >
+<form id="formComm9-72" action="javascript:makeRequest('9-72');" >
+<input id="comm9-72" type="text" class="command" style="width: 18em;" value="exteriorDifferential theta " />
+</form>
+<span id="commSav9-72" class="commSav" >exteriorDifferential theta </span>
+<div id="mathAns9-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><mrow><msub><mi>c</mi><mrow><mo>,</mo><mn>1</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mo>-</mo><mrow><mrow><msub><mi>b</mi><mrow><mo>,</mo><mn>2</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>3</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi><mspace width="0.5 em" /><mi>dy</mi><mspace width="0.5 em" /><mi>dz</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>Note that the De Rham complex is an algebra with unity.  This element
+<span class="teletype">1</span> is the basis for elements for zero-forms, that is, functions
+in our space.
+</p>
+
+
+
+
+<div id="spadComm9-73" class="spadComm" >
+<form id="formComm9-73" action="javascript:makeRequest('9-73');" >
+<input id="comm9-73" type="text" class="command" style="width: 10em;" value="one : der := 1 " />
+</form>
+<span id="commSav9-73" class="commSav" >one : der := 1 </span>
+<div id="mathAns9-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>To convert a function to a function lying in the De Rham complex,
+multiply the function by ``one.''
+</p>
+
+
+
+
+<div id="spadComm9-74" class="spadComm" >
+<form id="formComm9-74" action="javascript:makeRequest('9-74');" >
+<input id="comm9-74" type="text" class="command" style="width: 25em;" value="g1 : der := a([x,t,y,u,v,z,e]) * one " />
+</form>
+<span id="commSav9-74" class="commSav" >g1 : der := a([x,t,y,u,v,z,e]) * one </span>
+<div id="mathAns9-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>a</mi><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>e</mi></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>A current limitation of Axiom forces you to write functions with more
+than four arguments using square brackets in this way.
+</p>
+
+
+
+
+<div id="spadComm9-75" class="spadComm" >
+<form id="formComm9-75" action="javascript:makeRequest('9-75');" >
+<input id="comm9-75" type="text" class="command" style="width: 29em;" value="h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one " />
+</form>
+<span id="commSav9-75" class="commSav" >h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one </span>
+<div id="mathAns9-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>a</mi><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>r</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>x</mi></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>Now note how the system keeps track of where your coordinate functions
+are located in expressions.
+</p>
+
+
+
+
+<div id="spadComm9-76" class="spadComm" >
+<form id="formComm9-76" action="javascript:makeRequest('9-76');" >
+<input id="comm9-76" type="text" class="command" style="width: 16em;" value="exteriorDifferential g1 " />
+</form>
+<span id="commSav9-76" class="commSav" >exteriorDifferential g1 </span>
+<div id="mathAns9-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>6</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>e</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>3</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>e</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dy</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>1</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>e</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dx</mi></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+
+
+<div id="spadComm9-77" class="spadComm" >
+<form id="formComm9-77" action="javascript:makeRequest('9-77');" >
+<input id="comm9-77" type="text" class="command" style="width: 16em;" value="exteriorDifferential h1 " />
+</form>
+<span id="commSav9-77" class="commSav" >exteriorDifferential h1 </span>
+<div id="mathAns9-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>6</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>r</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>dz</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo>(</mo><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>7</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>r</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>2</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>r</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo>)</mo><mspace width="0.5 em" /><mi>dy</mi><mo>+</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo>(</mo><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>10</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>r</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>5</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>r</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>3</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>r</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msub><mi>a</mi><mrow><mo>,</mo><mn>1</mn></mrow></msub></mrow><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>r</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo>)</mo><mspace width="0.5 em" /><mi>dx</mi></mtd></mtr></mtable></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DeRhamComplex(Integer,[x,y,z])
+</div>
+
+
+
+<p>In this example of Euclidean three-space, the basis for the De Rham complex
+consists of the eight forms: <span class="teletype">1</span>, <span class="teletype">dx</span>, <span class="teletype">dy</span>, <span class="teletype">dz</span>,
+<span class="teletype">dx*dy</span>, <span class="teletype">dx*dz</span>, <span class="teletype">dy*dz</span>, and <span class="teletype">dx*dy*dz</span>.
+</p>
+
+
+
+
+<div id="spadComm9-78" class="spadComm" >
+<form id="formComm9-78" action="javascript:makeRequest('9-78');" >
+<input id="comm9-78" type="text" class="command" style="width: 18em;" value="coefficient(gamma, dx*dy) " />
+</form>
+<span id="commSav9-78" class="commSav" >coefficient(gamma, dx*dy) </span>
+<div id="mathAns9-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mrow><mrow><mo>tan</mo><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow></mrow><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-79" class="spadComm" >
+<form id="formComm9-79" action="javascript:makeRequest('9-79');" >
+<input id="comm9-79" type="text" class="command" style="width: 16em;" value="coefficient(gamma, one) " />
+</form>
+<span id="commSav9-79" class="commSav" >coefficient(gamma, one) </span>
+<div id="mathAns9-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-80" class="spadComm" >
+<form id="formComm9-80" action="javascript:makeRequest('9-80');" >
+<input id="comm9-80" type="text" class="command" style="width: 14em;" value="coefficient(g1,one) " />
+</form>
+<span id="commSav9-80" class="commSav" >coefficient(g1,one) </span>
+<div id="mathAns9-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>a</mi><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>e</mi></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.13.xhtml" style="margin-right: 10px;">Previous Section 9.13 CycleIndicators</a><a href="section-9.15.xhtml" style="margin-right: 10px;">Next Section 9.15 DecimalExpansion</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.15.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.15.xhtml
new file mode 100644
index 0000000..e7bf99e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.15.xhtml
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.15</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.14.xhtml" style="margin-right: 10px;">Previous Section 9.14 DeRhamComplex</a><a href="section-9.16.xhtml" style="margin-right: 10px;">Next Section 9.16 DistributedMultivariatePolynomial</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.15">
+<h2 class="sectiontitle">9.15  DecimalExpansion</h2>
+
+
+<a name="DecimalExpansionXmpPage" class="label"/>
+
+
+<p>All rationals have repeating decimal expansions.  Operations to access
+the individual digits of a decimal expansion can be obtained by
+converting the value to <span class="teletype">RadixExpansion(10)</span>.  More examples of
+expansions are available in 
+<a href="section-9.4.xhtml#BinaryExpansionXmpPage" class="ref" >BinaryExpansionXmpPage</a> ,
+<a href="section-9.33.xhtml#HexadecimalExpansionXmpPage" class="ref" >HexadecimalExpansionXmpPage</a> , and 
+<a href="section-9.65.xhtml#RadixExpansionXmpPage" class="ref" >RadixExpansionXmpPage</a> .
+</p>
+
+
+<p>The operation <span class="spadfunFrom" >decimal</span><span class="index">decimal</span><a name="chapter-9-4"/><span class="index">DecimalExpansion</span><a name="chapter-9-5"/> is used to create
+this expansion of type <span class="teletype">DecimalExpansion</span>.
+</p>
+
+
+
+
+<div id="spadComm9-81" class="spadComm" >
+<form id="formComm9-81" action="javascript:makeRequest('9-81');" >
+<input id="comm9-81" type="text" class="command" style="width: 13em;" value="r := decimal(22/7) " />
+</form>
+<span id="commSav9-81" class="commSav" >r := decimal(22/7) </span>
+<div id="mathAns9-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>142857</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DecimalExpansion
+</div>
+
+
+
+<p>Arithmetic is exact.
+</p>
+
+
+
+
+<div id="spadComm9-82" class="spadComm" >
+<form id="formComm9-82" action="javascript:makeRequest('9-82');" >
+<input id="comm9-82" type="text" class="command" style="width: 12em;" value="r + decimal(6/7) " />
+</form>
+<span id="commSav9-82" class="commSav" >r + decimal(6/7) </span>
+<div id="mathAns9-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DecimalExpansion
+</div>
+
+
+
+<p>The period of the expansion can be short or long ...
+</p>
+
+
+
+
+<div id="spadComm9-83" class="spadComm" >
+<form id="formComm9-83" action="javascript:makeRequest('9-83');" >
+<input id="comm9-83" type="text" class="command" style="width: 22em;" value="[decimal(1/i) for i in 350..354] " />
+</form>
+<span id="commSav9-83" class="commSav" >[decimal(1/i) for i in 350..354] </span>
+<div id="mathAns9-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>00</mn><mrow><mover accent="true"><mrow><mn>285714</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>002849</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>00284</mn><mrow><mover accent="true"><mrow><mn>09</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>00283286118980169971671388101983</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn><mrow><mover accent="true"><mrow><mn>0282485875706214689265536723163841807909604519774011299435</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List DecimalExpansion
+</div>
+
+
+
+<p>or very long.
+</p>
+
+
+
+
+<div id="spadComm9-84" class="spadComm" >
+<form id="formComm9-84" action="javascript:makeRequest('9-84');" >
+<input id="comm9-84" type="text" class="command" style="width: 11em;" value="decimal(1/2049) " />
+</form>
+<span id="commSav9-84" class="commSav" >decimal(1/2049) </span>
+<div id="mathAns9-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>000488042947779404587603709126403123474865788189360663738408979990239</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mover accent="true"><mrow><mn>141044411908247925817471937530502684236212786725231820400195217179111</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mover accent="true"><mrow><mn>761835041483650561249389946315275744265495363591996095656417764763299</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mover accent="true"><mrow><mn>170326988775012201073694485114690092728160078086871644704734016593460</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mover accent="true"><mrow><mn>22449975597852611029770619814543679843826256710590531966813079551</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DecimalExpansion
+</div>
+
+
+
+<p>These numbers are bona fide algebraic objects.
+</p>
+
+
+
+
+<div id="spadComm9-85" class="spadComm" >
+<form id="formComm9-85" action="javascript:makeRequest('9-85');" >
+<input id="comm9-85" type="text" class="command" style="width: 38em;" value="p := decimal(1/4)*x**2 + decimal(2/3)*x + decimal(4/9)  " />
+</form>
+<span id="commSav9-85" class="commSav" >p := decimal(1/4)*x**2 + decimal(2/3)*x + decimal(4/9)  </span>
+<div id="mathAns9-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>0</mn><mo>.</mo><mn>25</mn></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>6</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>4</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial DecimalExpansion
+</div>
+
+
+
+
+
+<div id="spadComm9-86" class="spadComm" >
+<form id="formComm9-86" action="javascript:makeRequest('9-86');" >
+<input id="comm9-86" type="text" class="command" style="width: 17em;" value="q := differentiate(p, x) " />
+</form>
+<span id="commSav9-86" class="commSav" >q := differentiate(p, x) </span>
+<div id="mathAns9-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>0</mn><mo>.</mo><mn>5</mn></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>6</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial DecimalExpansion
+</div>
+
+
+
+
+
+<div id="spadComm9-87" class="spadComm" >
+<form id="formComm9-87" action="javascript:makeRequest('9-87');" >
+<input id="comm9-87" type="text" class="command" style="width: 10em;" value="g := gcd(p, q) " />
+</form>
+<span id="commSav9-87" class="commSav" >g := gcd(p, q) </span>
+<div id="mathAns9-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>+</mo><mrow><mn>1</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>3</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial DecimalExpansion
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.14.xhtml" style="margin-right: 10px;">Previous Section 9.14 DeRhamComplex</a><a href="section-9.16.xhtml" style="margin-right: 10px;">Next Section 9.16 DistributedMultivariatePolynomial</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.16.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.16.xhtml
new file mode 100644
index 0000000..b1ef0b0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.16.xhtml
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.16</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.15.xhtml" style="margin-right: 10px;">Previous Section 9.15 DecimalExpansion</a><a href="section-9.17.xhtml" style="margin-right: 10px;">Next Section 9.17 DoubleFloat</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.16">
+<h2 class="sectiontitle">9.16  DistributedMultivariatePolynomial</h2>
+
+
+<a name="DistributedMultivariatePolynomialXmpPage" class="label"/>
+
+
+
+<p><span class="teletype">DistributedMultivariatePolynomial</span> which is abbreviated as <span class="teletype">DMP</span>
+and <span class="teletype">HomogeneousDistributedMultivariatePolynomial</span>, which is abbreviated
+as <span class="teletype">HDMP</span>, are very similar to <span class="teletype">MultivariatePolynomial</span> except that 
+they are represented and displayed in a non-recursive manner.
+</p>
+
+
+
+
+<div id="spadComm9-88" class="spadComm" >
+<form id="formComm9-88" action="javascript:makeRequest('9-88');" >
+<input id="comm9-88" type="text" class="command" style="width: 24em;" value="(d1,d2,d3) : DMP([z,y,x],FRAC INT) " />
+</form>
+<span id="commSav9-88" class="commSav" >(d1,d2,d3) : DMP([z,y,x],FRAC INT) </span>
+<div id="mathAns9-88" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The constructor <span class="teletype">DMP</span> orders its monomials lexicographically while
+<span class="teletype">HDMP</span> orders them by total order refined by reverse lexicographic
+order.
+</p>
+
+
+
+
+<div id="spadComm9-89" class="spadComm" >
+<form id="formComm9-89" action="javascript:makeRequest('9-89');" >
+<input id="comm9-89" type="text" class="command" style="width: 24em;" value="d1 := -4*z + 4*y**2*x + 16*x**2 + 1 " />
+</form>
+<span id="commSav9-89" class="commSav" >d1 := -4*z + 4*y**2*x + 16*x**2 + 1 </span>
+<div id="mathAns9-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-90" class="spadComm" >
+<form id="formComm9-90" action="javascript:makeRequest('9-90');" >
+<input id="comm9-90" type="text" class="command" style="width: 17em;" value="d2 := 2*z*y**2 + 4*x + 1 " />
+</form>
+<span id="commSav9-90" class="commSav" >d2 := 2*z*y**2 + 4*x + 1 </span>
+<div id="mathAns9-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-91" class="spadComm" >
+<form id="formComm9-91" action="javascript:makeRequest('9-91');" >
+<input id="comm9-91" type="text" class="command" style="width: 19em;" value="d3 := 2*z*x**2 - 2*y**2 - x " />
+</form>
+<span id="commSav9-91" class="commSav" >d3 := 2*z*x**2 - 2*y**2 - x </span>
+<div id="mathAns9-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+</div>
+
+
+
+<p>These constructors are mostly used in Gr&#x00f6;bner basis calculations.
+</p>
+
+
+
+
+<div id="spadComm9-92" class="spadComm" >
+<form id="formComm9-92" action="javascript:makeRequest('9-92');" >
+<input id="comm9-92" type="text" class="command" style="width: 14em;" value="groebner [d1,d2,d3] " />
+</form>
+<span id="commSav9-92" class="commSav" >groebner [d1,d2,d3] </span>
+<div id="mathAns9-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mi>z</mi><mo>-</mo><mrow><mfrac><mn>1568</mn><mn>2745</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1264</mn><mn>305</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>6</mn><mn>305</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>182</mn><mn>549</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2047</mn><mn>610</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>103</mn><mn>2745</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mfrac><mn>2857</mn><mn>10980</mn></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>112</mn><mn>2745</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>84</mn><mn>305</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1264</mn><mn>305</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>13</mn><mn>549</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>84</mn><mn>305</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1772</mn><mn>2745</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mfrac><mn>2</mn><mn>2745</mn></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>29</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>17</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>32</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>15</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-93" class="spadComm" >
+<form id="formComm9-93" action="javascript:makeRequest('9-93');" >
+<input id="comm9-93" type="text" class="command" style="width: 24em;" value="(n1,n2,n3) : HDMP([z,y,x],FRAC INT) " />
+</form>
+<span id="commSav9-93" class="commSav" >(n1,n2,n3) : HDMP([z,y,x],FRAC INT) </span>
+<div id="mathAns9-93" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm9-94" class="spadComm" >
+<form id="formComm9-94" action="javascript:makeRequest('9-94');" >
+<input id="comm9-94" type="text" class="command" style="width: 6em;" value="n1 := d1 " />
+</form>
+<span id="commSav9-94" class="commSav" >n1 := d1 </span>
+<div id="mathAns9-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-95" class="spadComm" >
+<form id="formComm9-95" action="javascript:makeRequest('9-95');" >
+<input id="comm9-95" type="text" class="command" style="width: 6em;" value="n2 := d2 " />
+</form>
+<span id="commSav9-95" class="commSav" >n2 := d2 </span>
+<div id="mathAns9-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-96" class="spadComm" >
+<form id="formComm9-96" action="javascript:makeRequest('9-96');" >
+<input id="comm9-96" type="text" class="command" style="width: 6em;" value="n3 := d3 " />
+</form>
+<span id="commSav9-96" class="commSav" >n3 := d3 </span>
+<div id="mathAns9-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+</div>
+
+
+
+<p>Note that we get a different Gr&#x00f6;bner basis when we use the 
+<span class="teletype">HDMP</span> polynomials, as expected.
+</p>
+
+
+
+
+<div id="spadComm9-97" class="spadComm" >
+<form id="formComm9-97" action="javascript:makeRequest('9-97');" >
+<input id="comm9-97" type="text" class="command" style="width: 14em;" value="groebner [n1,n2,n3] " />
+</form>
+<span id="commSav9-97" class="commSav" >groebner [n1,n2,n3] </span>
+<div id="mathAns9-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>3</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mfrac><mn>1</mn><mn>8</mn></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>29</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>7</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mfrac><mn>9</mn><mn>16</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>z</mi><mo>+</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mfrac><mn>3</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+</div>
+
+
+
+<p><span class="teletype">GeneralDistributedMultivariatePolynomial</span> is somewhat
+more flexible in the sense that as well as accepting a list of
+variables to specify the variable ordering, it also takes a
+predicate on exponent vectors to specify the term ordering.
+With this polynomial type the user can experiment with the effect
+of using completely arbitrary term orderings.
+This flexibility is mostly important for algorithms such as
+Gr\"{o}bner basis calculations which can be very
+sensitive to term ordering.
+</p>
+
+
+<p>For more information on related topics, see
+<a href="ugIntroVariablesPage" class="ref" >ugIntroVariablesPage</a>  in Section 
+<a href="ugIntroVariablesNumber" class="ref" >ugIntroVariablesNumber</a> ,
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a>  in Section 
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> ,
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >PolynomialXmpPage</a> ,
+<a href="section-9.83.xhtml#UnivariatePolynomialXmpPage" class="ref" >UnivariatePolynomialXmpPage</a> , and
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >MultivariatePolynomialXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.15.xhtml" style="margin-right: 10px;">Previous Section 9.15 DecimalExpansion</a><a href="section-9.17.xhtml" style="margin-right: 10px;">Next Section 9.17 DoubleFloat</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.17.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.17.xhtml
new file mode 100644
index 0000000..7865f48
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.17.xhtml
@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.17</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.16.xhtml" style="margin-right: 10px;">Previous Section 9.16 DistributedMultivariatePolynomial</a><a href="section-9.18.xhtml" style="margin-right: 10px;">Next Section 9.18 EqTable</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.17">
+<h2 class="sectiontitle">9.17  DoubleFloat</h2>
+
+
+<a name="DoubleFloatXmpPage" class="label"/>
+
+
+<p>Axiom provides two kinds of floating point numbers.  The domain 
+<span class="teletype">Float</span> (abbreviation <span class="teletype">FLOAT</span>) implements a model of arbitrary
+precision floating point numbers.  The domain <span class="teletype">DoubleFloat</span>
+(abbreviation <span class="teletype">DFLOAT</span>) is intended to make available hardware
+floating point arithmetic in Axiom.  The actual model of floating
+point <span class="teletype">DoubleFloat</span> that provides is system-dependent.  For
+example, on the IBM system 370 Axiom uses IBM double precision which
+has fourteen hexadecimal digits of precision or roughly sixteen
+decimal digits.  Arbitrary precision floats allow the user to specify
+the precision at which arithmetic operations are computed.  Although
+this is an attractive facility, it comes at a cost. Arbitrary-precision 
+floating-point arithmetic typically takes twenty to two hundred times 
+more time than hardware floating point.
+</p>
+
+
+<p>The usual arithmetic and elementary functions are available for 
+<span class="teletype">DoubleFloat</span>.  Use <span class="teletype">)show DoubleFloat</span> to get a list of operations
+or the HyperDoc browse facility to get more extensive documentation
+about <span class="teletype">DoubleFloat</span>.
+</p>
+
+
+<p>By default, floating point numbers that you enter into Axiom are of
+type <span class="teletype">Float</span>.
+</p>
+
+
+
+
+<div id="spadComm9-98" class="spadComm" >
+<form id="formComm9-98" action="javascript:makeRequest('9-98');" >
+<input id="comm9-98" type="text" class="command" style="width: 5em;" value="2.71828" />
+</form>
+<span id="commSav9-98" class="commSav" >2.71828</span>
+<div id="mathAns9-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>71828</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>You must therefore tell Axiom that you want to use <span class="teletype">DoubleFloat</span>
+values and operations.  The following are some conservative guidelines
+for getting Axiom to use <span class="teletype">DoubleFloat</span>.
+</p>
+
+
+<p>To get a value of type <span class="teletype">DoubleFloat</span>, use a target with <span class="teletype">@</span>, ...
+</p>
+
+
+
+
+<div id="spadComm9-99" class="spadComm" >
+<form id="formComm9-99" action="javascript:makeRequest('9-99');" >
+<input id="comm9-99" type="text" class="command" style="width: 13em;" value="2.71828@DoubleFloat" />
+</form>
+<span id="commSav9-99" class="commSav" >2.71828@DoubleFloat</span>
+<div id="mathAns9-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>71828</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+<p>a conversion, ...
+</p>
+
+
+
+
+<div id="spadComm9-100" class="spadComm" >
+<form id="formComm9-100" action="javascript:makeRequest('9-100');" >
+<input id="comm9-100" type="text" class="command" style="width: 15em;" value="2.71828 :: DoubleFloat" />
+</form>
+<span id="commSav9-100" class="commSav" >2.71828 :: DoubleFloat</span>
+<div id="mathAns9-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>71828</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+<p>or an assignment to a declared variable.  It is more efficient if you
+use a target rather than an explicit or implicit conversion.
+</p>
+
+
+
+
+<div id="spadComm9-101" class="spadComm" >
+<form id="formComm9-101" action="javascript:makeRequest('9-101');" >
+<input id="comm9-101" type="text" class="command" style="width: 22em;" value="eApprox : DoubleFloat := 2.71828 " />
+</form>
+<span id="commSav9-101" class="commSav" >eApprox : DoubleFloat := 2.71828 </span>
+<div id="mathAns9-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>71828</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+<p>You also need to declare functions that work with <span class="teletype">DoubleFloat</span>.
+</p>
+
+
+
+
+<div id="spadComm9-102" class="spadComm" >
+<form id="formComm9-102" action="javascript:makeRequest('9-102');" >
+<input id="comm9-102" type="text" class="command" style="width: 26em;" value="avg : List DoubleFloat -> DoubleFloat " />
+</form>
+<span id="commSav9-102" class="commSav" >avg : List DoubleFloat -> DoubleFloat </span>
+<div id="mathAns9-102" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div class="verbatim"><br />
+avg&nbsp;l&nbsp;==<br />
+&nbsp;&nbsp;empty?&nbsp;l&nbsp;=&gt;&nbsp;0&nbsp;::&nbsp;DoubleFloat<br />
+&nbsp;&nbsp;reduce(_+,l)&nbsp;/&nbsp;#l<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm9-103" class="spadComm" >
+<form id="formComm9-103" action="javascript:makeRequest('9-103');" >
+<input id="comm9-103" type="text" class="command" style="width: 5em;" value="avg [] " />
+</form>
+<span id="commSav9-103" class="commSav" >avg [] </span>
+<div id="mathAns9-103" ></div>
+</div>
+
+
+<p> this complains but succeeds
+</p>
+
+
+
+
+<div id="spadComm9-104" class="spadComm" >
+<form id="formComm9-104" action="javascript:makeRequest('9-104');" >
+<input id="comm9-104" type="text" class="command" style="width: 13em;" value="avg [3.4,9.7,-6.8] " />
+</form>
+<span id="commSav9-104" class="commSav" >avg [3.4,9.7,-6.8] </span>
+<div id="mathAns9-104" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;avg&nbsp;with&nbsp;type&nbsp;List&nbsp;Float&nbsp;-&gt;&nbsp;DoubleFloat&nbsp;<br />
+<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+<p>Use package-calling for operations from <span class="teletype">DoubleFloat</span> unless
+the arguments themselves are already of type <span class="teletype">DoubleFloat</span>.
+</p>
+
+
+
+
+<div id="spadComm9-105" class="spadComm" >
+<form id="formComm9-105" action="javascript:makeRequest('9-105');" >
+<input id="comm9-105" type="text" class="command" style="width: 18em;" value="cos(3.1415926)$DoubleFloat" />
+</form>
+<span id="commSav9-105" class="commSav" >cos(3.1415926)$DoubleFloat</span>
+<div id="mathAns9-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>999999999999999</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+
+
+<div id="spadComm9-106" class="spadComm" >
+<form id="formComm9-106" action="javascript:makeRequest('9-106');" >
+<input id="comm9-106" type="text" class="command" style="width: 20em;" value="cos(3.1415926 :: DoubleFloat)" />
+</form>
+<span id="commSav9-106" class="commSav" >cos(3.1415926 :: DoubleFloat)</span>
+<div id="mathAns9-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>999999999999999</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+<p>By far, the most common usage of <span class="teletype">DoubleFloat</span> is for functions to
+be graphed.  For more information about Axiom's numerical and
+graphical facilities, see Section
+<a href="section-7.0.xhtml#ugGraph" class="ref" >ugGraph</a> , 
+<a href="section-8.1.xhtml#ugProblemNumeric" class="ref" >ugProblemNumeric</a> , and 
+<a href="section-9.17.xhtml#DoubleFloatXmpPage" class="ref" >FloatXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.16.xhtml" style="margin-right: 10px;">Previous Section 9.16 DistributedMultivariatePolynomial</a><a href="section-9.18.xhtml" style="margin-right: 10px;">Next Section 9.18 EqTable</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.18.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.18.xhtml
new file mode 100644
index 0000000..40265af
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.18.xhtml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.18</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.17.xhtml" style="margin-right: 10px;">Previous Section 9.17 DoubleFloat</a><a href="section-9.19.xhtml" style="margin-right: 10px;">Next Section 9.19 Equation</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.18">
+<h2 class="sectiontitle">9.18  EqTable</h2>
+
+<p> 
+<a name="EqTableXmpPage" class="label"/>
+</p>
+
+
+
+<p>The <span class="teletype">EqTable</span> domain provides tables where the keys are compared
+using <span class="spadfunFrom" >eq?</span><span class="index">eq?</span><a name="chapter-9-6"/><span class="index">EqTable</span><a name="chapter-9-7"/>.  Keys are considered equal only if
+they are the same instance of a structure.  This is useful if the keys
+are themselves updatable structures.  Otherwise, all operations are
+the same as for type <span class="teletype">Table</span>.  See 
+<a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a>  for general
+information about tables.
+</p>
+
+
+<p>The operation <span class="spadfunFrom" >table</span><span class="index">table</span><a name="chapter-9-8"/><span class="index">EqTable</span><a name="chapter-9-9"/> is here used to create a table
+where the keys are lists of integers.
+</p>
+
+
+
+
+<div id="spadComm9-107" class="spadComm" >
+<form id="formComm9-107" action="javascript:makeRequest('9-107');" >
+<input id="comm9-107" type="text" class="command" style="width: 30em;" value="e: EqTable(List Integer, Integer) := table() " />
+</form>
+<span id="commSav9-107" class="commSav" >e: EqTable(List Integer, Integer) := table() </span>
+<div id="mathAns9-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>table</mi><mo>(</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: EqTable(List Integer,Integer)
+</div>
+
+
+
+<p>These two lists are equal according to <span class="spadopFrom" title="List">=</span>, but not
+according to <span class="spadfunFrom" >eq?</span><span class="index">eq?</span><a name="chapter-9-10"/><span class="index">List</span><a name="chapter-9-11"/>.
+</p>
+
+
+
+
+<div id="spadComm9-108" class="spadComm" >
+<form id="formComm9-108" action="javascript:makeRequest('9-108');" >
+<input id="comm9-108" type="text" class="command" style="width: 10em;" value="l1 := [1,2,3] " />
+</form>
+<span id="commSav9-108" class="commSav" >l1 := [1,2,3] </span>
+<div id="mathAns9-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-109" class="spadComm" >
+<form id="formComm9-109" action="javascript:makeRequest('9-109');" >
+<input id="comm9-109" type="text" class="command" style="width: 10em;" value="l2 := [1,2,3] " />
+</form>
+<span id="commSav9-109" class="commSav" >l2 := [1,2,3] </span>
+<div id="mathAns9-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Because the two lists are not <span class="spadfunFrom" >eq?</span><span class="index">eq?</span><a name="chapter-9-12"/><span class="index">List</span><a name="chapter-9-13"/>, separate values
+can be stored under each.
+</p>
+
+
+
+
+<div id="spadComm9-110" class="spadComm" >
+<form id="formComm9-110" action="javascript:makeRequest('9-110');" >
+<input id="comm9-110" type="text" class="command" style="width: 10em;" value="e.l1 := 111    " />
+</form>
+<span id="commSav9-110" class="commSav" >e.l1 := 111    </span>
+<div id="mathAns9-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>111</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-111" class="spadComm" >
+<form id="formComm9-111" action="javascript:makeRequest('9-111');" >
+<input id="comm9-111" type="text" class="command" style="width: 10em;" value="e.l2 := 222    " />
+</form>
+<span id="commSav9-111" class="commSav" >e.l2 := 222    </span>
+<div id="mathAns9-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>222</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-112" class="spadComm" >
+<form id="formComm9-112" action="javascript:makeRequest('9-112');" >
+<input id="comm9-112" type="text" class="command" style="width: 3em;" value="e.l1" />
+</form>
+<span id="commSav9-112" class="commSav" >e.l1</span>
+<div id="mathAns9-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>111</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.17.xhtml" style="margin-right: 10px;">Previous Section 9.17 DoubleFloat</a><a href="section-9.19.xhtml" style="margin-right: 10px;">Next Section 9.19 Equation</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.19.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.19.xhtml
new file mode 100644
index 0000000..55e96db
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.19.xhtml
@@ -0,0 +1,410 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.19</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.18.xhtml" style="margin-right: 10px;">Previous Section 9.18 EqTable</a><a href="section-9.20.xhtml" style="margin-right: 10px;">Next Section 9.20 Exit</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.19">
+<h2 class="sectiontitle">9.19  Equation</h2>
+
+
+<a name="EquationXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">Equation</span> domain provides equations as mathematical objects.
+These are used, for example, as the input to various
+<span class="spadfunFrom" >solve</span><span class="index">solve</span><a name="chapter-9-14"/><span class="index">TransSolvePackage</span><a name="chapter-9-15"/> operations.
+</p>
+
+
+<p>Equations are created using the equals symbol, <span class="spadopFrom" title="Equation">=</span>.
+</p>
+
+
+
+
+<div id="spadComm9-113" class="spadComm" >
+<form id="formComm9-113" action="javascript:makeRequest('9-113');" >
+<input id="comm9-113" type="text" class="command" style="width: 14em;" value="eq1 := 3*x + 4*y = 5 " />
+</form>
+<span id="commSav9-113" class="commSav" >eq1 := 3*x + 4*y = 5 </span>
+<div id="mathAns9-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>=</mo><mn>5</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-114" class="spadComm" >
+<form id="formComm9-114" action="javascript:makeRequest('9-114');" >
+<input id="comm9-114" type="text" class="command" style="width: 14em;" value="eq2 := 2*x + 2*y = 3 " />
+</form>
+<span id="commSav9-114" class="commSav" >eq2 := 2*x + 2*y = 3 </span>
+<div id="mathAns9-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>=</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Polynomial Integer
+</div>
+
+
+
+<p>The left- and right-hand sides of an equation are accessible using
+the operations <span class="spadfunFrom" >lhs</span><span class="index">lhs</span><a name="chapter-9-16"/><span class="index">Equation</span><a name="chapter-9-17"/> and <span class="spadfunFrom" >rhs</span><span class="index">rhs</span><a name="chapter-9-18"/><span class="index">Equation</span><a name="chapter-9-19"/>.
+</p>
+
+
+
+
+<div id="spadComm9-115" class="spadComm" >
+<form id="formComm9-115" action="javascript:makeRequest('9-115');" >
+<input id="comm9-115" type="text" class="command" style="width: 6em;" value="lhs eq1 " />
+</form>
+<span id="commSav9-115" class="commSav" >lhs eq1 </span>
+<div id="mathAns9-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-116" class="spadComm" >
+<form id="formComm9-116" action="javascript:makeRequest('9-116');" >
+<input id="comm9-116" type="text" class="command" style="width: 6em;" value="rhs eq1 " />
+</form>
+<span id="commSav9-116" class="commSav" >rhs eq1 </span>
+<div id="mathAns9-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Arithmetic operations are supported and operate on both sides of the
+equation.
+</p>
+
+
+
+
+<div id="spadComm9-117" class="spadComm" >
+<form id="formComm9-117" action="javascript:makeRequest('9-117');" >
+<input id="comm9-117" type="text" class="command" style="width: 8em;" value="eq1 + eq2   " />
+</form>
+<span id="commSav9-117" class="commSav" >eq1 + eq2   </span>
+<div id="mathAns9-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>=</mo><mn>8</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-118" class="spadComm" >
+<form id="formComm9-118" action="javascript:makeRequest('9-118');" >
+<input id="comm9-118" type="text" class="command" style="width: 8em;" value="eq1 * eq2   " />
+</form>
+<span id="commSav9-118" class="commSav" >eq1 * eq2   </span>
+<div id="mathAns9-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>14</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mrow><mo>=</mo><mn>15</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-119" class="spadComm" >
+<form id="formComm9-119" action="javascript:makeRequest('9-119');" >
+<input id="comm9-119" type="text" class="command" style="width: 8em;" value="2*eq2 - eq1 " />
+</form>
+<span id="commSav9-119" class="commSav" >2*eq2 - eq1 </span>
+<div id="mathAns9-119" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Polynomial Integer
+</div>
+
+
+
+<p>Equations may be created for any type so the arithmetic operations
+will be defined only when they make sense.  For example, exponentiation 
+is not defined for equations involving non-square matrices.
+</p>
+
+
+
+
+<div id="spadComm9-120" class="spadComm" >
+<form id="formComm9-120" action="javascript:makeRequest('9-120');" >
+<input id="comm9-120" type="text" class="command" style="width: 5em;" value="eq1**2 " />
+</form>
+<span id="commSav9-120" class="commSav" >eq1**2 </span>
+<div id="mathAns9-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mrow><mo>=</mo><mn>25</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Polynomial Integer
+</div>
+
+
+
+<p>Note that an equals symbol is also used to <span class="italic">test</span> for equality of
+values in certain contexts.  For example, <span class="teletype">x+1</span> and <span class="teletype">y</span> are
+unequal as polynomials.
+</p>
+
+
+
+
+<div id="spadComm9-121" class="spadComm" >
+<form id="formComm9-121" action="javascript:makeRequest('9-121');" >
+<input id="comm9-121" type="text" class="command" style="width: 26em;" value='if x+1 = y then "equal" else "unequal"' />
+</form>
+<span id="commSav9-121" class="commSav" >if x+1 = y then "equal" else "unequal"</span>
+<div id="mathAns9-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"unequal"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-122" class="spadComm" >
+<form id="formComm9-122" action="javascript:makeRequest('9-122');" >
+<input id="comm9-122" type="text" class="command" style="width: 12em;" value="eqpol := x+1 = y " />
+</form>
+<span id="commSav9-122" class="commSav" >eqpol := x+1 = y </span>
+<div id="mathAns9-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mi>y</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Polynomial Integer
+</div>
+
+
+
+<p>If an equation is used where a <span class="teletype">Boolean</span> value is required, then
+it is evaluated using the equality test from the operand type.
+</p>
+
+
+
+
+<div id="spadComm9-123" class="spadComm" >
+<form id="formComm9-123" action="javascript:makeRequest('9-123');" >
+<input id="comm9-123" type="text" class="command" style="width: 25em;" value='if eqpol then "equal" else "unequal" ' />
+</form>
+<span id="commSav9-123" class="commSav" >if eqpol then "equal" else "unequal" </span>
+<div id="mathAns9-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"unequal"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>If one wants a <span class="teletype">Boolean</span> value rather than an equation, all one
+has to do is ask!
+</p>
+
+
+
+
+<div id="spadComm9-124" class="spadComm" >
+<form id="formComm9-124" action="javascript:makeRequest('9-124');" >
+<input id="comm9-124" type="text" class="command" style="width: 10em;" value="eqpol::Boolean " />
+</form>
+<span id="commSav9-124" class="commSav" >eqpol::Boolean </span>
+<div id="mathAns9-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.18.xhtml" style="margin-right: 10px;">Previous Section 9.18 EqTable</a><a href="section-9.20.xhtml" style="margin-right: 10px;">Next Section 9.20 Exit</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.2.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.2.xhtml
new file mode 100644
index 0000000..ea6038c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.2.xhtml
@@ -0,0 +1,394 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.2</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.1.xhtml" style="margin-right: 10px;">Previous Section 9.1 AssociationList</a><a href="section-9.3.xhtml" style="margin-right: 10px;">Next Section 9.3 BasicOperator</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.2">
+<h2 class="sectiontitle">9.2  BalancedBinaryTree</h2>
+
+
+<a name="BalancedBinaryTreeXmpPage" class="label"/>
+
+
+<p><span class="teletype">BalancedBinaryTrees(S)</span> is the domain of balanced binary trees
+with elements of type <span class="teletype">S</span> at the nodes.  A binary tree is either
+<span class="teletype">empty</span> or else consists of a <span class="teletype">node</span> having a <span class="teletype">value</span> and
+two branches, each branch a binary tree.  A balanced binary tree is
+one that is balanced with respect its leaves.  One with  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>2</mn><mi>k</mi></msup></mrow></mstyle></math> leaves
+is perfectly ``balanced'': the tree has minimum depth, and the <span class="teletype">left</span> and <span class="teletype">right</span> branch of every interior node is identical in
+shape.
+</p>
+
+
+<p>Balanced binary trees are useful in algebraic computation for
+so-called ``divide-and-conquer'' algorithms.  Conceptually, the data
+for a problem is initially placed at the root of the tree.  The
+original data is then split into two subproblems, one for each
+subtree.  And so on.  Eventually, the problem is solved at the leaves
+of the tree.  A solution to the original problem is obtained by some
+mechanism that can reassemble the pieces.  In fact, an implementation
+of the Chinese Remainder Algorithm using balanced binary trees was
+first proposed by David Y. Y.  Yun at the IBM T. J.  Watson Research
+Center in Yorktown Heights, New York, in 1978.  It served as the
+prototype for polymorphic algorithms in Axiom.
+</p>
+
+
+<p>In what follows, rather than perform a series of computations with a
+single expression, the expression is reduced modulo a number of
+integer primes, a computation is done with modular arithmetic for each
+prime, and the Chinese Remainder Algorithm is used to obtain the
+answer to the original problem.  We illustrate this principle with the
+computation of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>12</mn><mn>2</mn></msup><mo>=</mo><mn>144</mn></mrow></mstyle></math>.
+</p>
+
+
+<p>A list of moduli.
+</p>
+
+
+
+
+<div id="spadComm9-11" class="spadComm" >
+<form id="formComm9-11" action="javascript:makeRequest('9-11');" >
+<input id="comm9-11" type="text" class="command" style="width: 11em;" value="lm := [3,5,7,11]" />
+</form>
+<span id="commSav9-11" class="commSav" >lm := [3,5,7,11]</span>
+<div id="mathAns9-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>The expression <span class="teletype">modTree(n, lm)</span> creates a balanced binary tree
+with leaf values <span class="teletype">n mod m</span> for each modulus <span class="teletype">m</span> in <span class="teletype">lm</span>.
+</p>
+
+
+
+
+<div id="spadComm9-12" class="spadComm" >
+<form id="formComm9-12" action="javascript:makeRequest('9-12');" >
+<input id="comm9-12" type="text" class="command" style="width: 10em;" value="modTree(12,lm)" />
+</form>
+<span id="commSav9-12" class="commSav" >modTree(12,lm)</span>
+<div id="mathAns9-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>Operation <span class="teletype">modTree</span> does this using operations on balanced binary
+trees.  We trace its steps.  Create a balanced binary tree <span class="teletype">t</span> of
+zeros with four leaves.
+</p>
+
+
+
+
+<div id="spadComm9-13" class="spadComm" >
+<form id="formComm9-13" action="javascript:makeRequest('9-13');" >
+<input id="comm9-13" type="text" class="command" style="width: 22em;" value="t := balancedBinaryTree( #lm, 0)" />
+</form>
+<span id="commSav9-13" class="commSav" >t := balancedBinaryTree( #lm, 0)</span>
+<div id="mathAns9-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow><mo>,</mo><mn>0</mn><mo>,</mo><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BalancedBinaryTree NonNegativeInteger
+</div>
+
+
+
+<p>The leaves of the tree are set to the individual moduli.
+</p>
+
+
+
+
+<div id="spadComm9-14" class="spadComm" >
+<form id="formComm9-14" action="javascript:makeRequest('9-14');" >
+<input id="comm9-14" type="text" class="command" style="width: 11em;" value="setleaves!(t,lm)" />
+</form>
+<span id="commSav9-14" class="commSav" >setleaves!(t,lm)</span>
+<div id="mathAns9-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>5</mn><mo>]</mo></mrow><mo>,</mo><mn>0</mn><mo>,</mo><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BalancedBinaryTree NonNegativeInteger
+</div>
+
+
+
+<p>Use <span class="teletype">mapUp!</span> to do a bottom-up traversal of <span class="teletype">t</span>, setting each
+interior node to the product of the values at the nodes of its
+children.
+</p>
+
+
+
+
+<div id="spadComm9-15" class="spadComm" >
+<form id="formComm9-15" action="javascript:makeRequest('9-15');" >
+<input id="comm9-15" type="text" class="command" style="width: 9em;" value="mapUp!(t,_*)" />
+</form>
+<span id="commSav9-15" class="commSav" >mapUp!(t,_*)</span>
+<div id="mathAns9-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1155</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The value at the node of every subtree is the product of the moduli
+of the leaves of the subtree.
+</p>
+
+
+
+
+<div id="spadComm9-16" class="spadComm" >
+<form id="formComm9-16" action="javascript:makeRequest('9-16');" >
+<input id="comm9-16" type="text" class="command" style="width: 1em;" value="t" />
+</form>
+<span id="commSav9-16" class="commSav" >t</span>
+<div id="mathAns9-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>15</mn><mo>,</mo><mn>5</mn><mo>]</mo></mrow><mo>,</mo><mn>1155</mn><mo>,</mo><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>77</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BalancedBinaryTree NonNegativeInteger
+</div>
+
+
+
+<p>Operation <span class="teletype">mapDown!</span><span class="teletype">(t,a,fn)</span> replaces the value <span class="teletype">v</span> at
+each node of <span class="teletype">t</span> by <span class="teletype">fn(a,v)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-17" class="spadComm" >
+<form id="formComm9-17" action="javascript:makeRequest('9-17');" >
+<input id="comm9-17" type="text" class="command" style="width: 14em;" value="mapDown!(t,12,_rem)" />
+</form>
+<span id="commSav9-17" class="commSav" >mapDown!(t,12,_rem)</span>
+<div id="mathAns9-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>12</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow><mo>,</mo><mn>12</mn><mo>,</mo><mrow><mo>[</mo><mn>5</mn><mo>,</mo><mn>12</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BalancedBinaryTree NonNegativeInteger
+</div>
+
+
+
+<p>The operation <span class="teletype">leaves</span> returns the leaves of the resulting tree.
+In this case, it returns the list of <span class="teletype">12 mod m</span> for each modulus
+<span class="teletype">m</span>.
+</p>
+
+
+
+
+<div id="spadComm9-18" class="spadComm" >
+<form id="formComm9-18" action="javascript:makeRequest('9-18');" >
+<input id="comm9-18" type="text" class="command" style="width: 6em;" value="leaves %" />
+</form>
+<span id="commSav9-18" class="commSav" >leaves %</span>
+<div id="mathAns9-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+<p>Compute the square of the images of <span class="teletype">12</span> modulo each <span class="teletype">m</span>.
+</p>
+
+
+
+
+<div id="spadComm9-19" class="spadComm" >
+<form id="formComm9-19" action="javascript:makeRequest('9-19');" >
+<input id="comm9-19" type="text" class="command" style="width: 32em;" value="squares := [x**2 rem m for x in % for m in lm]" />
+</form>
+<span id="commSav9-19" class="commSav" >squares := [x**2 rem m for x in % for m in lm]</span>
+<div id="mathAns9-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+<p>Call the Chinese Remainder Algorithm to get the answer for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>12</mn><mn>2</mn></msup></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm9-20" class="spadComm" >
+<form id="formComm9-20" action="javascript:makeRequest('9-20');" >
+<input id="comm9-20" type="text" class="command" style="width: 16em;" value="chineseRemainder(%,lm)" />
+</form>
+<span id="commSav9-20" class="commSav" >chineseRemainder(%,lm)</span>
+<div id="mathAns9-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>144</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.1.xhtml" style="margin-right: 10px;">Previous Section 9.1 AssociationList</a><a href="section-9.3.xhtml" style="margin-right: 10px;">Next Section 9.3 BasicOperator</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.20.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.20.xhtml
new file mode 100644
index 0000000..600b27f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.20.xhtml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.20</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.19.xhtml" style="margin-right: 10px;">Previous Section 9.19 Equation</a><a href="section-9.21.xhtml" style="margin-right: 10px;">Next Section 9.21 Expression</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.20">
+<h2 class="sectiontitle">9.20  Exit</h2>
+
+
+<a name="ExitXmpPage" class="label"/>
+
+
+<p>A function that does not return directly to its caller has <span class="teletype">Exit</span>
+as its return type.  The operation <span class="teletype">error</span> is an example of one
+which does not return to its caller.  Instead, it causes a return to
+top-level.
+</p>
+
+
+
+
+<div id="spadComm9-125" class="spadComm" >
+<form id="formComm9-125" action="javascript:makeRequest('9-125');" >
+<input id="comm9-125" type="text" class="command" style="width: 5em;" value="n := 0 " />
+</form>
+<span id="commSav9-125" class="commSav" >n := 0 </span>
+<div id="mathAns9-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>The function <span class="teletype">gasp</span> is given return type <span class="teletype">Exit</span> since it is
+guaranteed never to return a value to its caller.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+gasp():&nbsp;Exit&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;free&nbsp;n<br />
+&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;:=&nbsp;n&nbsp;+&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;error&nbsp;"Oh&nbsp;no!"<br />
+&nbsp;<br />
+Function&nbsp;declaration&nbsp;gasp&nbsp;:&nbsp;()&nbsp;-&gt;&nbsp;Exit&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+<br />
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The return type of <span class="teletype">half</span> is determined by resolving the types of
+the two branches of the <span class="teletype">if</span>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+half(k)&nbsp;==<br />
+&nbsp;&nbsp;if&nbsp;odd?&nbsp;k&nbsp;then&nbsp;gasp()<br />
+&nbsp;&nbsp;else&nbsp;k&nbsp;quo&nbsp;2<br />
+</div>
+
+
+
+<p>Because <span class="teletype">gasp</span> has the return type <span class="teletype">Exit</span>, the type of 
+<span class="teletype">if</span> in <span class="teletype">half</span> is resolved to be <span class="teletype">Integer</span>.
+</p>
+
+
+
+
+<div id="spadComm9-126" class="spadComm" >
+<form id="formComm9-126" action="javascript:makeRequest('9-126');" >
+<input id="comm9-126" type="text" class="command" style="width: 5em;" value="half 4 " />
+</form>
+<span id="commSav9-126" class="commSav" >half 4 </span>
+<div id="mathAns9-126" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;gasp&nbsp;with&nbsp;type&nbsp;()&nbsp;-&gt;&nbsp;Exit&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;half&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-127" class="spadComm" >
+<form id="formComm9-127" action="javascript:makeRequest('9-127');" >
+<input id="comm9-127" type="text" class="command" style="width: 5em;" value="half 3 " />
+</form>
+<span id="commSav9-127" class="commSav" >half 3 </span>
+<div id="mathAns9-127" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Error&nbsp;signalled&nbsp;from&nbsp;user&nbsp;code&nbsp;in&nbsp;function&nbsp;gasp:&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Oh&nbsp;no!<br />
+</div>
+
+
+
+
+
+<div id="spadComm9-128" class="spadComm" >
+<form id="formComm9-128" action="javascript:makeRequest('9-128');" >
+<input id="comm9-128" type="text" class="command" style="width: 2em;" value="n " />
+</form>
+<span id="commSav9-128" class="commSav" >n </span>
+<div id="mathAns9-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>For functions which return no value at all, use <span class="teletype">Void</span>.  See
+<a href="ugUserPage" class="ref" >ugUserPage</a>  in Section 
+<a href="ugUserNumber" class="ref" >ugUserNumber</a>  and 
+<a href="section-9.86.xhtml#VoidXmpPage" class="ref" >VoidXmpPage</a>  for
+more information.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.19.xhtml" style="margin-right: 10px;">Previous Section 9.19 Equation</a><a href="section-9.21.xhtml" style="margin-right: 10px;">Next Section 9.21 Expression</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.21.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.21.xhtml
new file mode 100644
index 0000000..f6d47c1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.21.xhtml
@@ -0,0 +1,826 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.21</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.20.xhtml" style="margin-right: 10px;">Previous Section 9.20 Exit</a><a href="section-9.22.xhtml" style="margin-right: 10px;">Next Section 9.22 Factored</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.21">
+<h2 class="sectiontitle">9.21  Expression</h2>
+
+
+<a name="ExpressionXmpPage" class="label"/>
+
+
+<p><span class="teletype">Expression</span> is a constructor that creates domains whose objects
+can have very general symbolic forms.  Here are some examples:
+</p>
+
+
+<p>This is an object of type <span class="teletype">Expression Integer</span>.
+</p>
+
+
+
+
+<div id="spadComm9-129" class="spadComm" >
+<form id="formComm9-129" action="javascript:makeRequest('9-129');" >
+<input id="comm9-129" type="text" class="command" style="width: 14em;" value="sin(x) + 3*cos(x)**2" />
+</form>
+<span id="commSav9-129" class="commSav" >sin(x) + 3*cos(x)**2</span>
+<div id="mathAns9-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>This is an object of type <span class="teletype">Expression Float</span>.
+</p>
+
+
+
+
+<div id="spadComm9-130" class="spadComm" >
+<form id="formComm9-130" action="javascript:makeRequest('9-130');" >
+<input id="comm9-130" type="text" class="command" style="width: 10em;" value="tan(x) - 3.45*x" />
+</form>
+<span id="commSav9-130" class="commSav" >tan(x) - 3.45*x</span>
+<div id="mathAns9-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>tan</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>-</mo><mrow><mrow><mn>3</mn><mo>.</mo><mn>45</mn></mrow><mspace width="0.5 em" /><mi>x</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Float
+</div>
+
+
+
+<p>This object contains symbolic function applications, sums,
+products, square roots, and a quotient.
+</p>
+
+
+
+
+<div id="spadComm9-131" class="spadComm" >
+<form id="formComm9-131" action="javascript:makeRequest('9-131');" >
+<input id="comm9-131" type="text" class="command" style="width: 32em;" value="(tan sqrt 7 - sin sqrt 11)**2 / (4 - cos(x - y))" />
+</form>
+<span id="commSav9-131" class="commSav" >(tan sqrt 7 - sin sqrt 11)**2 / (4 - cos(x - y))</span>
+<div id="mathAns9-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>-</mo><mrow><msup><mrow><mo>tan</mo><mo>(</mo><mrow><msqrt><mn>7</mn></msqrt></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mrow><msqrt><mn>11</mn></msqrt></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>tan</mo><mo>(</mo><mrow><msqrt><mn>7</mn></msqrt></mrow><mo>)</mo></mrow></mrow><mo>-</mo><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mrow><msqrt><mn>11</mn></msqrt></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mrow><mrow><mo>cos</mo><mo>(</mo><mrow><mi>y</mi><mo>-</mo><mi>x</mi></mrow><mo>)</mo></mrow><mo>-</mo><mn>4</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>As you can see, <span class="teletype">Expression</span> actually takes an argument domain.
+The <span class="italic">coefficients</span> of the terms within the expression belong to
+the argument domain.  <span class="teletype">Integer</span> and <span class="teletype">Float</span>, along with 
+<span class="teletype">Complex Integer</span> and <span class="teletype">Complex Float</span> are the most common
+coefficient domains.
+</p>
+
+
+<p>The choice of whether to use a <span class="teletype">Complex</span> coefficient domain or not
+is important since Axiom can perform some simplifications on
+real-valued objects
+</p>
+
+
+
+
+<div id="spadComm9-132" class="spadComm" >
+<form id="formComm9-132" action="javascript:makeRequest('9-132');" >
+<input id="comm9-132" type="text" class="command" style="width: 21em;" value="log(exp  x)@Expression(Integer)" />
+</form>
+<span id="commSav9-132" class="commSav" >log(exp  x)@Expression(Integer)</span>
+<div id="mathAns9-132" ></div>
+</div>
+
+<p> 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>... which are not valid on complex ones.
+</p>
+
+
+
+
+<div id="spadComm9-133" class="spadComm" >
+<form id="formComm9-133" action="javascript:makeRequest('9-133');" >
+<input id="comm9-133" type="text" class="command" style="width: 26em;" value="log(exp  x)@Expression(Complex Integer)" />
+</form>
+<span id="commSav9-133" class="commSav" >log(exp  x)@Expression(Complex Integer)</span>
+<div id="mathAns9-133" ></div>
+</div>
+
+<p> 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>log</mo><mo>(</mo><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><mo>)</mo></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: Expression Complex Integer
+</div>
+
+
+
+<p>Many potential coefficient domains, such as <span class="teletype">AlgebraicNumber</span>, are
+not usually used because <span class="teletype">Expression</span> can subsume them.
+</p>
+
+
+
+
+<div id="spadComm9-134" class="spadComm" >
+<form id="formComm9-134" action="javascript:makeRequest('9-134');" >
+<input id="comm9-134" type="text" class="command" style="width: 19em;" value="sqrt 3 + sqrt(2 + sqrt(-5)) " />
+</form>
+<span id="commSav9-134" class="commSav" >sqrt 3 + sqrt(2 + sqrt(-5)) </span>
+<div id="mathAns9-134" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msqrt><mrow><mrow><msqrt><mrow><mo>-</mo><mn>5</mn></mrow></msqrt></mrow><mo>+</mo><mn>2</mn></mrow></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AlgebraicNumber
+</div>
+
+
+
+
+
+<div id="spadComm9-135" class="spadComm" >
+<form id="formComm9-135" action="javascript:makeRequest('9-135');" >
+<input id="comm9-135" type="text" class="command" style="width: 17em;" value="% :: Expression Integer " />
+</form>
+<span id="commSav9-135" class="commSav" >% :: Expression Integer </span>
+<div id="mathAns9-135" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msqrt><mrow><mrow><msqrt><mrow><mo>-</mo><mn>5</mn></mrow></msqrt></mrow><mo>+</mo><mn>2</mn></mrow></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Note that we sometimes talk about ``an object of type <span class="teletype">Expression</span>.'' This is not really correct because we should say, for
+example, ``an object of type <span class="teletype">Expression Integer</span>'' or ``an object
+of type <span class="teletype">Expression Float</span>.''  By a similar abuse of language,
+when we refer to an ``expression'' in this section we will mean an
+object of type <span class="teletype">Expression R</span> for some domain <span class="teletype">R</span>.
+</p>
+
+
+<p>The Axiom documentation contains many examples of the use of <span class="teletype">Expression</span>.  For the rest of this section, we'll give you some
+pointers to those examples plus give you some idea of how to
+manipulate expressions.
+</p>
+
+
+<p>It is important for you to know that <span class="teletype">Expression</span> creates domains
+that have category <span class="teletype">Field</span>.  Thus you can invert any non-zero
+expression and you shouldn't expect an operation like <span class="teletype">factor</span> to
+give you much information.  You can imagine expressions as being
+represented as quotients of ``multivariate'' polynomials where the
+``variables'' are kernels (see 
+<a href="section-9.37.xhtml#KernelXmpPage" class="ref" >KernelXmpPage</a> ).  A kernel can
+either be a symbol such as <span class="teletype">x</span> or a symbolic function application
+like <span class="teletype">sin(x + 4)</span>.  The second example is actually a nested kernel
+since the argument to <span class="teletype">sin</span> contains the kernel <span class="teletype">x</span>.
+</p>
+
+
+
+
+<div id="spadComm9-136" class="spadComm" >
+<form id="formComm9-136" action="javascript:makeRequest('9-136');" >
+<input id="comm9-136" type="text" class="command" style="width: 19em;" value="height mainKernel sin(x + 4)" />
+</form>
+<span id="commSav9-136" class="commSav" >height mainKernel sin(x + 4)</span>
+<div id="mathAns9-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Actually, the argument to <span class="teletype">sin</span> is an expression, and so the
+structure of <span class="teletype">Expression</span> is recursive.  
+<a href="section-9.37.xhtml#KernelXmpPage" class="ref" >KernelXmpPage</a> 
+demonstrates how to extract the kernels in an expression.
+</p>
+
+
+<p>Use the HyperDoc Browse facility to see what operations are applicable
+to expression.  At the time of this writing, there were 262 operations
+with 147 distinct name in <span class="teletype">Expression Integer</span>.  For example,
+<span class="spadfunFrom" >numer</span><span class="index">numer</span><a name="chapter-9-20"/><span class="index">Expression</span><a name="chapter-9-21"/> and <span class="spadfunFrom" >denom</span><span class="index">denom</span><a name="chapter-9-22"/><span class="index">Expression</span><a name="chapter-9-23"/>
+extract the numerator and denominator of an expression.
+</p>
+
+
+
+
+<div id="spadComm9-137" class="spadComm" >
+<form id="formComm9-137" action="javascript:makeRequest('9-137');" >
+<input id="comm9-137" type="text" class="command" style="width: 30em;" value="e := (sin(x) - 4)**2 / ( 1 - 2*y*sqrt(- y) ) " />
+</form>
+<span id="commSav9-137" class="commSav" >e := (sin(x) - 4)**2 / ( 1 - 2*y*sqrt(- y) ) </span>
+<div id="mathAns9-137" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>-</mo><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>-</mo><mn>16</mn></mrow><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msqrt><mrow><mo>-</mo><mi>y</mi></mrow></msqrt></mrow></mrow><mo>-</mo><mn>1</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-138" class="spadComm" >
+<form id="formComm9-138" action="javascript:makeRequest('9-138');" >
+<input id="comm9-138" type="text" class="command" style="width: 6em;" value="numer e " />
+</form>
+<span id="commSav9-138" class="commSav" >numer e </span>
+<div id="mathAns9-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>-</mo><mn>16</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+SparseMultivariatePolynomial(Integer,Kernel Expression Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-139" class="spadComm" >
+<form id="formComm9-139" action="javascript:makeRequest('9-139');" >
+<input id="comm9-139" type="text" class="command" style="width: 6em;" value="denom e " />
+</form>
+<span id="commSav9-139" class="commSav" >denom e </span>
+<div id="mathAns9-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msqrt><mrow><mo>-</mo><mi>y</mi></mrow></msqrt></mrow></mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+SparseMultivariatePolynomial(Integer,Kernel Expression Integer)
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >D</span><span class="index">D</span><a name="chapter-9-24"/><span class="index">Expression</span><a name="chapter-9-25"/> to compute partial derivatives.
+</p>
+
+
+
+
+<div id="spadComm9-140" class="spadComm" >
+<form id="formComm9-140" action="javascript:makeRequest('9-140');" >
+<input id="comm9-140" type="text" class="command" style="width: 6em;" value="D(e, x) " />
+</form>
+<span id="commSav9-140" class="commSav" >D(e, x) </span>
+<div id="mathAns9-140" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>-</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msqrt><mrow><mo>-</mo><mi>y</mi></mrow></msqrt></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mrow><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msqrt><mrow><mo>-</mo><mi>y</mi></mrow></msqrt></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>See 
+<a href="ugIntroCalcDerivPage" class="ref" >ugIntroCalcDerivPage</a>  in Section 
+<a href="ugIntroCalcDerivNumber" class="ref" >ugIntroCalcDerivNumber</a> 
+for more examples of expressions and derivatives.
+</p>
+
+
+
+
+<div id="spadComm9-141" class="spadComm" >
+<form id="formComm9-141" action="javascript:makeRequest('9-141');" >
+<input id="comm9-141" type="text" class="command" style="width: 14em;" value="D(e, [x, y], [1, 2]) " />
+</form>
+<span id="commSav9-141" class="commSav" >D(e, [x, y], [1, 2]) </span>
+<div id="mathAns9-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2304</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>960</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>9216</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3840</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msqrt><mrow><mo>-</mo><mi>y</mi></mrow></msqrt></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>960</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2160</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>180</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>3</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>3840</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8640</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>720</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>12</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>256</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1792</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1120</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>112</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msqrt><mrow><mo>-</mo><mi>y</mi></mrow></msqrt></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>1024</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1792</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>448</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>See 
+<a href="ugIntroCalcLimitsPage" class="ref" >ugIntroCalcLimitsPage</a>  in Section
+<a href="ugIntroCalcLimitsNumber" class="ref" >ugIntroCalcLimitsNumber</a>  and 
+<a href="ugIntroSeriesPage" class="ref" >ugIntroSeriesPage</a>  in Section
+<a href="ugIntroSeriesNumber" class="ref" >ugIntroSeriesNumber</a>  
+for more examples of expressions and
+calculus.  Differential equations involving expressions are discussed
+in <a href="ugProblemDEQPage" class="ref" >ugProblemDEQPage</a>  in Section 
+<a href="ugProblemDEQNumber" class="ref" >ugProblemDEQNumber</a> .
+Chapter 8 has many advanced examples: see
+<a href="ugProblemIntegrationPage" class="ref" >ugProblemIntegrationPage</a>  
+in Section
+<a href="ugProblemIntegrationNumber" class="ref" >ugProblemIntegrationNumber</a>  
+for a discussion of Axiom's integration facilities.
+</p>
+
+
+<p>When an expression involves no ``symbol kernels'' (for example, 
+<span class="teletype">x</span>), it may be possible to numerically evaluate the expression.
+</p>
+
+
+<p>If you suspect the evaluation will create a complex number, use 
+<span class="teletype">complexNumeric</span>.
+</p>
+
+
+
+
+<div id="spadComm9-142" class="spadComm" >
+<form id="formComm9-142" action="javascript:makeRequest('9-142');" >
+<input id="comm9-142" type="text" class="command" style="width: 20em;" value="complexNumeric(cos(2 - 3*%i))" />
+</form>
+<span id="commSav9-142" class="commSav" >complexNumeric(cos(2 - 3*%i))</span>
+<div id="mathAns9-142" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>4</mn><mo>.</mo><mn>1896256909</mn><mspace width="0.5 em" /><mn>688072301</mn></mrow><mo>+</mo><mrow><mrow><mn>9</mn><mo>.</mo><mn>1092278937</mn><mspace width="0.5 em" /><mn>55336598</mn></mrow><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Float
+</div>
+
+
+
+<p>If you know it will be real, use <span class="teletype">numeric</span>.
+</p>
+
+
+
+
+<div id="spadComm9-143" class="spadComm" >
+<form id="formComm9-143" action="javascript:makeRequest('9-143');" >
+<input id="comm9-143" type="text" class="command" style="width: 11em;" value="numeric(tan 3.8)" />
+</form>
+<span id="commSav9-143" class="commSav" >numeric(tan 3.8)</span>
+<div id="mathAns9-143" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>7735560905</mn><mspace width="0.5 em" /><mn>0312607286</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The <span class="teletype">numeric</span> operation will display an error message if the
+evaluation yields a calue with an non-zero imaginary part.  Both of
+these operations have an optional second argument <span class="teletype">n</span> which
+specifies that the accuracy of the approximation be up to <span class="teletype">n</span>
+decimal places.
+</p>
+
+
+<p>When an expression involves no ``symbolic application'' kernels, it
+may be possible to convert it a polynomial or rational function in the
+variables that are present.
+</p>
+
+
+
+
+<div id="spadComm9-144" class="spadComm" >
+<form id="formComm9-144" action="javascript:makeRequest('9-144');" >
+<input id="comm9-144" type="text" class="command" style="width: 16em;" value="e2 := cos(x**2 - y + 3) " />
+</form>
+<span id="commSav9-144" class="commSav" >e2 := cos(x**2 - y + 3) </span>
+<div id="mathAns9-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>cos</mo><mo>(</mo><mrow><mi>y</mi><mo>-</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>3</mn></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-145" class="spadComm" >
+<form id="formComm9-145" action="javascript:makeRequest('9-145');" >
+<input id="comm9-145" type="text" class="command" style="width: 16em;" value="e3 := asin(e2) - %pi/2 " />
+</form>
+<span id="commSav9-145" class="commSav" >e3 := asin(e2) - %pi/2 </span>
+<div id="mathAns9-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mi>y</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-146" class="spadComm" >
+<form id="formComm9-146" action="javascript:makeRequest('9-146');" >
+<input id="comm9-146" type="text" class="command" style="width: 17em;" value="e3 :: Polynomial Integer " />
+</form>
+<span id="commSav9-146" class="commSav" >e3 :: Polynomial Integer </span>
+<div id="mathAns9-146" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mi>y</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>This also works for the polynomial types where specific variables
+and their ordering are given.
+</p>
+
+
+
+
+<div id="spadComm9-147" class="spadComm" >
+<form id="formComm9-147" action="javascript:makeRequest('9-147');" >
+<input id="comm9-147" type="text" class="command" style="width: 18em;" value="e3 :: DMP([x, y], Integer) " />
+</form>
+<span id="commSav9-147" class="commSav" >e3 :: DMP([x, y], Integer) </span>
+<div id="mathAns9-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>y</mi><mo>+</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DistributedMultivariatePolynomial([x,y],Integer)
+</div>
+
+
+
+<p>Finally, a certain amount of simplication takes place as expressions
+are constructed.
+</p>
+
+
+
+
+<div id="spadComm9-148" class="spadComm" >
+<form id="formComm9-148" action="javascript:makeRequest('9-148');" >
+<input id="comm9-148" type="text" class="command" style="width: 6em;" value="sin %pi" />
+</form>
+<span id="commSav9-148" class="commSav" >sin %pi</span>
+<div id="mathAns9-148" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-149" class="spadComm" >
+<form id="formComm9-149" action="javascript:makeRequest('9-149');" >
+<input id="comm9-149" type="text" class="command" style="width: 9em;" value="cos(%pi / 4)" />
+</form>
+<span id="commSav9-149" class="commSav" >cos(%pi / 4)</span>
+<div id="mathAns9-149" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><msqrt><mn>2</mn></msqrt></mrow><mn>2</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>For simplications that involve multiple terms of the expression, use
+<span class="teletype">simplify</span>.
+</p>
+
+
+
+
+<div id="spadComm9-150" class="spadComm" >
+<form id="formComm9-150" action="javascript:makeRequest('9-150');" >
+<input id="comm9-150" type="text" class="command" style="width: 28em;" value="tan(x)**6 + 3*tan(x)**4 + 3*tan(x)**2 + 1 " />
+</form>
+<span id="commSav9-150" class="commSav" >tan(x)**6 + 3*tan(x)**4 + 3*tan(x)**2 + 1 </span>
+<div id="mathAns9-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mrow><mo>tan</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>6</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mrow><mo>tan</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mrow><mo>tan</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-151" class="spadComm" >
+<form id="formComm9-151" action="javascript:makeRequest('9-151');" >
+<input id="comm9-151" type="text" class="command" style="width: 8em;" value="simplify % " />
+</form>
+<span id="commSav9-151" class="commSav" >simplify % </span>
+<div id="mathAns9-151" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>1</mn><mrow><msup><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>6</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>See <a href="ugUserRulesPage" class="ref" >ugUserRulesPage</a>  in Section 
+<a href="ugUserRulesNumber" class="ref" >ugUserRulesNumber</a>  for
+examples of how to write your own rewrite rules for expressions.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.20.xhtml" style="margin-right: 10px;">Previous Section 9.20 Exit</a><a href="section-9.22.xhtml" style="margin-right: 10px;">Next Section 9.22 Factored</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.22.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.22.xhtml
new file mode 100644
index 0000000..f02d71d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.22.xhtml
@@ -0,0 +1,1306 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.22</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.21.xhtml" style="margin-right: 10px;">Previous Section 9.21 Expression</a><a href="section-9.23.xhtml" style="margin-right: 10px;">Next Section 9.23 FactoredFunctions2</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.22">
+<h2 class="sectiontitle">9.22  Factored</h2>
+
+
+<a name="FactoredXmpPage" class="label"/>
+
+
+<p><span class="teletype">Factored</span> creates a domain whose objects are kept in factored
+form as long as possible.  Thus certain operations like
+<span class="spadopFrom" title="Factored">*</span> (multiplication) and
+<span class="spadfunFrom" >gcd</span><span class="index">gcd</span><a name="chapter-9-26"/><span class="index">Factored</span><a name="chapter-9-27"/> are relatively easy to do.  Others, such
+as addition, require somewhat more work, and the result may not be
+completely factored unless the argument domain <span class="teletype">R</span> provides a
+<span class="spadfunFrom" >factor</span><span class="index">factor</span><a name="chapter-9-28"/><span class="index">Factored</span><a name="chapter-9-29"/> operation.  Each object consists of a
+unit and a list of factors, where each factor consists of a member of
+<span class="teletype">R</span> (the <span class="em">base</span>), an exponent, and a flag indicating what is
+known about the base.  A flag may be one of ``<span class="teletype">nil</span>'', ``<span class="teletype">sqfr</span>'',
+``<span class="teletype">irred</span>'' or ``<span class="teletype">prime</span>'', which mean that nothing is known about
+the base, it is square-free, it is irreducible, or it is prime,
+respectively.  The current restriction to factored objects of integral
+domains allows simplification to be performed without worrying about
+multiplication order.
+</p>
+
+
+
+<a name="subsec-9.22.1"/>
+<div class="subsection"  id="subsec-9.22.1">
+<h3 class="subsectitle">9.22.1  Decomposing Factored Objects</h3>
+
+
+
+<p>In this section we will work with a factored integer.
+</p>
+
+
+
+
+<div id="spadComm9-152" class="spadComm" >
+<form id="formComm9-152" action="javascript:makeRequest('9-152');" >
+<input id="comm9-152" type="text" class="command" style="width: 12em;" value="g := factor(4312) " />
+</form>
+<span id="commSav9-152" class="commSav" >g := factor(4312) </span>
+<div id="mathAns9-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>7</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>11</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>Let's begin by decomposing <span class="teletype">g</span> into pieces.  The only possible
+units for integers are <span class="teletype">1</span> and <span class="teletype">-1</span>.
+</p>
+
+
+
+
+<div id="spadComm9-153" class="spadComm" >
+<form id="formComm9-153" action="javascript:makeRequest('9-153');" >
+<input id="comm9-153" type="text" class="command" style="width: 6em;" value="unit(g) " />
+</form>
+<span id="commSav9-153" class="commSav" >unit(g) </span>
+<div id="mathAns9-153" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>There are three factors.
+</p>
+
+
+
+
+<div id="spadComm9-154" class="spadComm" >
+<form id="formComm9-154" action="javascript:makeRequest('9-154');" >
+<input id="comm9-154" type="text" class="command" style="width: 13em;" value="numberOfFactors(g) " />
+</form>
+<span id="commSav9-154" class="commSav" >numberOfFactors(g) </span>
+<div id="mathAns9-154" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>We can make a list of the bases, ...
+</p>
+
+
+
+
+<div id="spadComm9-155" class="spadComm" >
+<form id="formComm9-155" action="javascript:makeRequest('9-155');" >
+<input id="comm9-155" type="text" class="command" style="width: 32em;" value="[nthFactor(g,i) for i in 1..numberOfFactors(g)] " />
+</form>
+<span id="commSav9-155" class="commSav" >[nthFactor(g,i) for i in 1..numberOfFactors(g)] </span>
+<div id="mathAns9-155" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>and the exponents, ...
+</p>
+
+
+
+
+<div id="spadComm9-156" class="spadComm" >
+<form id="formComm9-156" action="javascript:makeRequest('9-156');" >
+<input id="comm9-156" type="text" class="command" style="width: 34em;" value="[nthExponent(g,i) for i in 1..numberOfFactors(g)] " />
+</form>
+<span id="commSav9-156" class="commSav" >[nthExponent(g,i) for i in 1..numberOfFactors(g)] </span>
+<div id="mathAns9-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>and the flags.  You can see that all the bases (factors) are prime.
+</p>
+
+
+
+
+<div id="spadComm9-157" class="spadComm" >
+<form id="formComm9-157" action="javascript:makeRequest('9-157');" >
+<input id="comm9-157" type="text" class="command" style="width: 31em;" value="[nthFlag(g,i) for i in 1..numberOfFactors(g)] " />
+</form>
+<span id="commSav9-157" class="commSav" >[nthFlag(g,i) for i in 1..numberOfFactors(g)] </span>
+<div id="mathAns9-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtext><mrow><mtext mathvariant='monospace'>"prime"</mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"prime"</mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"prime"</mtext></mrow></mtext><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Union("nil","sqfr","irred","prime")
+</div>
+
+
+
+<p>A useful operation for pulling apart a factored object into a list
+of records of the components is <span class="spadfunFrom" >factorList</span><span class="index">factorList</span><a name="chapter-9-30"/><span class="index">Factored</span><a name="chapter-9-31"/>.
+</p>
+
+
+
+
+<div id="spadComm9-158" class="spadComm" >
+<form id="formComm9-158" action="javascript:makeRequest('9-158');" >
+<input id="comm9-158" type="text" class="command" style="width: 10em;" value="factorList(g) " />
+</form>
+<span id="commSav9-158" class="commSav" >factorList(g) </span>
+<div id="mathAns9-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>[</mo><mrow><mi>flg</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"prime"</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mi>fctr</mi><mo>=</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>xpnt</mi><mo>=</mo><mn>3</mn></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>flg</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"prime"</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mi>fctr</mi><mo>=</mo><mn>7</mn></mrow><mo>,</mo><mrow><mi>xpnt</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>flg</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"prime"</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mi>fctr</mi><mo>=</mo><mn>11</mn></mrow><mo>,</mo><mrow><mi>xpnt</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List Record(flg: Union("nil","sqfr","irred","prime"),
+fctr: Integer,xpnt: Integer)
+</div>
+
+
+
+<p>If you don't care about the flags, use <span class="spadfunFrom" >factors</span><span class="index">factors</span><a name="chapter-9-32"/><span class="index">Factored</span><a name="chapter-9-33"/>.
+</p>
+
+
+
+
+<div id="spadComm9-159" class="spadComm" >
+<form id="formComm9-159" action="javascript:makeRequest('9-159');" >
+<input id="comm9-159" type="text" class="command" style="width: 8em;" value="factors(g) " />
+</form>
+<span id="commSav9-159" class="commSav" >factors(g) </span>
+<div id="mathAns9-159" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>[</mo><mrow><mi>factor</mi><mo>=</mo><mn>2</mn></mrow><mo>,</mo><mrow><mi>exponent</mi><mo>=</mo><mn>3</mn></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>factor</mi><mo>=</mo><mn>7</mn></mrow><mo>,</mo><mrow><mi>exponent</mi><mo>=</mo><mn>2</mn></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>factor</mi><mo>=</mo><mn>11</mn></mrow><mo>,</mo><mrow><mi>exponent</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Record(factor: Integer,exponent: Integer)
+</div>
+
+
+
+<p>Neither of these operations returns the unit.
+</p>
+
+
+
+
+<div id="spadComm9-160" class="spadComm" >
+<form id="formComm9-160" action="javascript:makeRequest('9-160');" >
+<input id="comm9-160" type="text" class="command" style="width: 12em;" value="first(%).factor " />
+</form>
+<span id="commSav9-160" class="commSav" >first(%).factor </span>
+<div id="mathAns9-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.22.2"/>
+<div class="subsection"  id="subsec-9.22.2">
+<h3 class="subsectitle">9.22.2  Expanding Factored Objects</h3>
+
+
+
+<p>Recall that we are working with this factored integer.
+</p>
+
+
+
+
+<div id="spadComm9-161" class="spadComm" >
+<form id="formComm9-161" action="javascript:makeRequest('9-161');" >
+<input id="comm9-161" type="text" class="command" style="width: 12em;" value="g := factor(4312) " />
+</form>
+<span id="commSav9-161" class="commSav" >g := factor(4312) </span>
+<div id="mathAns9-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>7</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>11</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>To multiply out the factors with their multiplicities, use
+<span class="spadfunFrom" >expand</span><span class="index">expand</span><a name="chapter-9-34"/><span class="index">Factored</span><a name="chapter-9-35"/>.
+</p>
+
+
+
+
+<div id="spadComm9-162" class="spadComm" >
+<form id="formComm9-162" action="javascript:makeRequest('9-162');" >
+<input id="comm9-162" type="text" class="command" style="width: 7em;" value="expand(g) " />
+</form>
+<span id="commSav9-162" class="commSav" >expand(g) </span>
+<div id="mathAns9-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4312</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>If you would like, say, the distinct factors multiplied together but
+with multiplicity one, you could do it this way.
+</p>
+
+
+
+
+<div id="spadComm9-163" class="spadComm" >
+<form id="formComm9-163" action="javascript:makeRequest('9-163');" >
+<input id="comm9-163" type="text" class="command" style="width: 28em;" value="reduce(*,[t.factor for t in factors(g)]) " />
+</form>
+<span id="commSav9-163" class="commSav" >reduce(*,[t.factor for t in factors(g)]) </span>
+<div id="mathAns9-163" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>154</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.22.3"/>
+<div class="subsection"  id="subsec-9.22.3">
+<h3 class="subsectitle">9.22.3  Arithmetic with Factored Objects</h3>
+
+
+
+<p>We're still working with this factored integer.
+</p>
+
+
+
+
+<div id="spadComm9-164" class="spadComm" >
+<form id="formComm9-164" action="javascript:makeRequest('9-164');" >
+<input id="comm9-164" type="text" class="command" style="width: 12em;" value="g := factor(4312) " />
+</form>
+<span id="commSav9-164" class="commSav" >g := factor(4312) </span>
+<div id="mathAns9-164" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>7</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>11</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>We'll also define this factored integer.
+</p>
+
+
+
+
+<div id="spadComm9-165" class="spadComm" >
+<form id="formComm9-165" action="javascript:makeRequest('9-165');" >
+<input id="comm9-165" type="text" class="command" style="width: 14em;" value="f := factor(246960) " />
+</form>
+<span id="commSav9-165" class="commSav" >f := factor(246960) </span>
+<div id="mathAns9-165" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mn>7</mn><mn>3</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>Operations involving multiplication and division are particularly
+easy with factored objects.
+</p>
+
+
+
+
+<div id="spadComm9-166" class="spadComm" >
+<form id="formComm9-166" action="javascript:makeRequest('9-166');" >
+<input id="comm9-166" type="text" class="command" style="width: 4em;" value="f * g " />
+</form>
+<span id="commSav9-166" class="commSav" >f * g </span>
+<div id="mathAns9-166" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>7</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mn>7</mn><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mn>11</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-167" class="spadComm" >
+<form id="formComm9-167" action="javascript:makeRequest('9-167');" >
+<input id="comm9-167" type="text" class="command" style="width: 5em;" value="f**500 " />
+</form>
+<span id="commSav9-167" class="commSav" >f**500 </span>
+<div id="mathAns9-167" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>2000</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>3</mn><mn>1000</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>5</mn><mn>500</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>7</mn><mn>1500</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-168" class="spadComm" >
+<form id="formComm9-168" action="javascript:makeRequest('9-168');" >
+<input id="comm9-168" type="text" class="command" style="width: 6em;" value="gcd(f,g) " />
+</form>
+<span id="commSav9-168" class="commSav" >gcd(f,g) </span>
+<div id="mathAns9-168" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>7</mn><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-169" class="spadComm" >
+<form id="formComm9-169" action="javascript:makeRequest('9-169');" >
+<input id="comm9-169" type="text" class="command" style="width: 6em;" value="lcm(f,g) " />
+</form>
+<span id="commSav9-169" class="commSav" >lcm(f,g) </span>
+<div id="mathAns9-169" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mn>7</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mn>11</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>If we use addition and subtraction things can slow down because
+we may need to compute greatest common divisors.
+</p>
+
+
+
+
+<div id="spadComm9-170" class="spadComm" >
+<form id="formComm9-170" action="javascript:makeRequest('9-170');" >
+<input id="comm9-170" type="text" class="command" style="width: 4em;" value="f + g " />
+</form>
+<span id="commSav9-170" class="commSav" >f + g </span>
+<div id="mathAns9-170" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>7</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>641</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-171" class="spadComm" >
+<form id="formComm9-171" action="javascript:makeRequest('9-171');" >
+<input id="comm9-171" type="text" class="command" style="width: 4em;" value="f - g " />
+</form>
+<span id="commSav9-171" class="commSav" >f - g </span>
+<div id="mathAns9-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>7</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>619</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>Test for equality with <span class="teletype">0</span> and <span class="teletype">1</span> by using
+<span class="spadfunFrom" >zero?</span><span class="index">zero?</span><a name="chapter-9-36"/><span class="index">Factored</span><a name="chapter-9-37"/> and <span class="spadfunFrom" >one?</span><span class="index">one?</span><a name="chapter-9-38"/><span class="index">Factored</span><a name="chapter-9-39"/>,
+respectively.
+</p>
+
+
+
+
+<div id="spadComm9-172" class="spadComm" >
+<form id="formComm9-172" action="javascript:makeRequest('9-172');" >
+<input id="comm9-172" type="text" class="command" style="width: 11em;" value="zero?(factor(0))" />
+</form>
+<span id="commSav9-172" class="commSav" >zero?(factor(0))</span>
+<div id="mathAns9-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-173" class="spadComm" >
+<form id="formComm9-173" action="javascript:makeRequest('9-173');" >
+<input id="comm9-173" type="text" class="command" style="width: 6em;" value="zero?(g) " />
+</form>
+<span id="commSav9-173" class="commSav" >zero?(g) </span>
+<div id="mathAns9-173" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-174" class="spadComm" >
+<form id="formComm9-174" action="javascript:makeRequest('9-174');" >
+<input id="comm9-174" type="text" class="command" style="width: 10em;" value="one?(factor(1))" />
+</form>
+<span id="commSav9-174" class="commSav" >one?(factor(1))</span>
+<div id="mathAns9-174" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-175" class="spadComm" >
+<form id="formComm9-175" action="javascript:makeRequest('9-175');" >
+<input id="comm9-175" type="text" class="command" style="width: 6em;" value="one?(f) " />
+</form>
+<span id="commSav9-175" class="commSav" >one?(f) </span>
+<div id="mathAns9-175" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Another way to get the zero and one factored objects is to use
+package calling (see 
+<a href="ugTypesPkgCallPage" class="ref" >ugTypesPkgCallPage</a>  in Section 
+<a href="ugTypesPkgCallNumber" class="ref" >ugTypesPkgCallNumber</a> ).
+</p>
+
+
+
+
+<div id="spadComm9-176" class="spadComm" >
+<form id="formComm9-176" action="javascript:makeRequest('9-176');" >
+<input id="comm9-176" type="text" class="command" style="width: 13em;" value="0$Factored(Integer)" />
+</form>
+<span id="commSav9-176" class="commSav" >0$Factored(Integer)</span>
+<div id="mathAns9-176" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-177" class="spadComm" >
+<form id="formComm9-177" action="javascript:makeRequest('9-177');" >
+<input id="comm9-177" type="text" class="command" style="width: 13em;" value="1$Factored(Integer)" />
+</form>
+<span id="commSav9-177" class="commSav" >1$Factored(Integer)</span>
+<div id="mathAns9-177" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.22.4"/>
+<div class="subsection"  id="subsec-9.22.4">
+<h3 class="subsectitle">9.22.4  Creating New Factored Objects</h3>
+
+
+
+<p>The <span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-40"/><span class="index">Factored</span><a name="chapter-9-41"/> operation is used to iterate across
+the unit and bases of a factored object.  See
+<a href="FactoredFunctionsTwoXmpPage" class="ref" >FactoredFunctionsTwoXmpPage</a>  for a discussion of
+<span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-42"/><span class="index">Factored</span><a name="chapter-9-43"/>.
+</p>
+
+
+<p>The following four operations take a base and an exponent and create a
+factored object.  They differ in handling the flag component.
+</p>
+
+
+
+
+<div id="spadComm9-178" class="spadComm" >
+<form id="formComm9-178" action="javascript:makeRequest('9-178');" >
+<input id="comm9-178" type="text" class="command" style="width: 11em;" value="nilFactor(24,2) " />
+</form>
+<span id="commSav9-178" class="commSav" >nilFactor(24,2) </span>
+<div id="mathAns9-178" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mn>24</mn><mn>2</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>This factor has no associated information.
+</p>
+
+
+
+
+<div id="spadComm9-179" class="spadComm" >
+<form id="formComm9-179" action="javascript:makeRequest('9-179');" >
+<input id="comm9-179" type="text" class="command" style="width: 10em;" value="nthFlag(%,1) " />
+</form>
+<span id="commSav9-179" class="commSav" >nthFlag(%,1) </span>
+<div id="mathAns9-179" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"nil"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("nil",...)
+</div>
+
+
+
+<p>This factor is asserted to be square-free.
+</p>
+
+
+
+
+<div id="spadComm9-180" class="spadComm" >
+<form id="formComm9-180" action="javascript:makeRequest('9-180');" >
+<input id="comm9-180" type="text" class="command" style="width: 12em;" value="sqfrFactor(30,2) " />
+</form>
+<span id="commSav9-180" class="commSav" >sqfrFactor(30,2) </span>
+<div id="mathAns9-180" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mn>30</mn><mn>2</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>This factor is asserted to be irreducible.
+</p>
+
+
+
+
+<div id="spadComm9-181" class="spadComm" >
+<form id="formComm9-181" action="javascript:makeRequest('9-181');" >
+<input id="comm9-181" type="text" class="command" style="width: 17em;" value="irreducibleFactor(13,10) " />
+</form>
+<span id="commSav9-181" class="commSav" >irreducibleFactor(13,10) </span>
+<div id="mathAns9-181" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mn>13</mn><mn>10</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>This factor is asserted to be prime.
+</p>
+
+
+
+
+<div id="spadComm9-182" class="spadComm" >
+<form id="formComm9-182" action="javascript:makeRequest('9-182');" >
+<input id="comm9-182" type="text" class="command" style="width: 12em;" value="primeFactor(11,5) " />
+</form>
+<span id="commSav9-182" class="commSav" >primeFactor(11,5) </span>
+<div id="mathAns9-182" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mn>11</mn><mn>5</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>A partial inverse to <span class="spadfunFrom" >factorList</span><span class="index">factorList</span><a name="chapter-9-44"/><span class="index">Factored</span><a name="chapter-9-45"/> is
+<span class="spadfunFrom" >makeFR</span><span class="index">makeFR</span><a name="chapter-9-46"/><span class="index">Factored</span><a name="chapter-9-47"/>.
+</p>
+
+
+
+
+<div id="spadComm9-183" class="spadComm" >
+<form id="formComm9-183" action="javascript:makeRequest('9-183');" >
+<input id="comm9-183" type="text" class="command" style="width: 12em;" value="h := factor(-720) " />
+</form>
+<span id="commSav9-183" class="commSav" >h := factor(-720) </span>
+<div id="mathAns9-183" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mrow><msup><mn>2</mn><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>5</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>The first argument is the unit and the second is a list of records as
+returned by <span class="spadfunFrom" >factorList</span><span class="index">factorList</span><a name="chapter-9-48"/><span class="index">Factored</span><a name="chapter-9-49"/>.
+</p>
+
+
+
+
+<div id="spadComm9-184" class="spadComm" >
+<form id="formComm9-184" action="javascript:makeRequest('9-184');" >
+<input id="comm9-184" type="text" class="command" style="width: 23em;" value="h - makeFR(unit(h),factorList(h)) " />
+</form>
+<span id="commSav9-184" class="commSav" >h - makeFR(unit(h),factorList(h)) </span>
+<div id="mathAns9-184" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.22.5"/>
+<div class="subsection"  id="subsec-9.22.5">
+<h3 class="subsectitle">9.22.5  Factored Objects with Variables</h3>
+
+
+
+<p>Some of the operations available for polynomials are also available
+for factored polynomials.
+</p>
+
+
+
+
+<div id="spadComm9-185" class="spadComm" >
+<form id="formComm9-185" action="javascript:makeRequest('9-185');" >
+<input id="comm9-185" type="text" class="command" style="width: 43em;" value="p := (4*x*x-12*x+9)*y*y + (4*x*x-12*x+9)*y + 28*x*x - 84*x + 63 " />
+</form>
+<span id="commSav9-185" class="commSav" >p := (4*x*x-12*x+9)*y*y + (4*x*x-12*x+9)*y + 28*x*x - 84*x + 63 </span>
+<div id="mathAns9-185" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>9</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>9</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>28</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>84</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>63</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-186" class="spadComm" >
+<form id="formComm9-186" action="javascript:makeRequest('9-186');" >
+<input id="comm9-186" type="text" class="command" style="width: 11em;" value="fp := factor(p) " />
+</form>
+<span id="commSav9-186" class="commSav" >fp := factor(p) </span>
+<div id="mathAns9-186" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>3</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>y</mi><mo>+</mo><mn>7</mn><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Integer
+</div>
+
+
+
+<p>You can differentiate with respect to a variable.
+</p>
+
+
+
+
+<div id="spadComm9-187" class="spadComm" >
+<form id="formComm9-187" action="javascript:makeRequest('9-187');" >
+<input id="comm9-187" type="text" class="command" style="width: 5em;" value="D(p,x) " />
+</form>
+<span id="commSav9-187" class="commSav" >D(p,x) </span>
+<div id="mathAns9-187" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>12</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>12</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>56</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>84</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-188" class="spadComm" >
+<form id="formComm9-188" action="javascript:makeRequest('9-188');" >
+<input id="comm9-188" type="text" class="command" style="width: 6em;" value="D(fp,x) " />
+</form>
+<span id="commSav9-188" class="commSav" >D(fp,x) </span>
+<div id="mathAns9-188" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>3</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>y</mi><mo>+</mo><mn>7</mn><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-189" class="spadComm" >
+<form id="formComm9-189" action="javascript:makeRequest('9-189');" >
+<input id="comm9-189" type="text" class="command" style="width: 14em;" value="numberOfFactors(%) " />
+</form>
+<span id="commSav9-189" class="commSav" >numberOfFactors(%) </span>
+<div id="mathAns9-189" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.21.xhtml" style="margin-right: 10px;">Previous Section 9.21 Expression</a><a href="section-9.23.xhtml" style="margin-right: 10px;">Next Section 9.23 FactoredFunctions2</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.23.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.23.xhtml
new file mode 100644
index 0000000..467f4fc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.23.xhtml
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.23</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.22.xhtml" style="margin-right: 10px;">Previous Section 9.22 Factored</a><a href="section-9.24.xhtml" style="margin-right: 10px;">Next Section 9.24 File</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.23">
+<h2 class="sectiontitle">9.23  FactoredFunctions2</h2>
+
+
+<a name="FactoredFunctions2XmpPage" class="label"/>
+
+
+<p>The <span class="teletype">FactoredFunctions2</span> package implements one operation,
+<span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-50"/><span class="index">FactoredFunctions2</span><a name="chapter-9-51"/>, for applying an operation to every
+base in a factored object and to the unit.
+</p>
+
+
+
+
+<div id="spadComm9-190" class="spadComm" >
+<form id="formComm9-190" action="javascript:makeRequest('9-190');" >
+<input id="comm9-190" type="text" class="command" style="width: 13em;" value="double(x) == x + x " />
+</form>
+<span id="commSav9-190" class="commSav" >double(x) == x + x </span>
+<div id="mathAns9-190" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm9-191" class="spadComm" >
+<form id="formComm9-191" action="javascript:makeRequest('9-191');" >
+<input id="comm9-191" type="text" class="command" style="width: 12em;" value="f := factor(720) " />
+</form>
+<span id="commSav9-191" class="commSav" >f := factor(720) </span>
+<div id="mathAns9-191" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>5</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>Actually, the <span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-52"/><span class="index">FactoredFunctions2</span><a name="chapter-9-53"/> operation used
+in this example comes from <span class="teletype">Factored</span> itself, since <span class="teletype">double</span> 
+takes an integer argument and returns an integer result.
+</p>
+
+
+
+
+<div id="spadComm9-192" class="spadComm" >
+<form id="formComm9-192" action="javascript:makeRequest('9-192');" >
+<input id="comm9-192" type="text" class="command" style="width: 10em;" value="map(double,f) " />
+</form>
+<span id="commSav9-192" class="commSav" >map(double,f) </span>
+<div id="mathAns9-192" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mn>4</mn><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>6</mn><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mn>10</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>If we want to use an operation that returns an object that has a type
+different from the operation's argument,
+the <span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-54"/><span class="index">FactoredFunctions2</span><a name="chapter-9-55"/> in <span class="teletype">Factored</span>
+cannot be used and we use the one in <span class="teletype">FactoredFunctions2</span>.
+</p>
+
+
+
+
+<div id="spadComm9-193" class="spadComm" >
+<form id="formComm9-193" action="javascript:makeRequest('9-193');" >
+<input id="comm9-193" type="text" class="command" style="width: 14em;" value="makePoly(b) == x + b " />
+</form>
+<span id="commSav9-193" class="commSav" >makePoly(b) == x + b </span>
+<div id="mathAns9-193" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>In fact, the ``2'' in the name of the package means that we might
+be using factored objects of two different types.
+</p>
+
+
+
+
+<div id="spadComm9-194" class="spadComm" >
+<form id="formComm9-194" action="javascript:makeRequest('9-194');" >
+<input id="comm9-194" type="text" class="command" style="width: 14em;" value="g := map(makePoly,f) " />
+</form>
+<span id="commSav9-194" class="commSav" >g := map(makePoly,f) </span>
+<div id="mathAns9-194" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>3</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>5</mn><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Integer
+</div>
+
+
+
+<p>It is important to note that both versions of
+<span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-56"/><span class="index">FactoredFunctions2</span><a name="chapter-9-57"/> destroy any information known
+about the bases (the fact that they are prime, for instance).
+</p>
+
+
+<p>The flags for each base are set to ``nil'' in the object returned
+by <span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-58"/><span class="index">FactoredFunctions2</span><a name="chapter-9-59"/>.
+</p>
+
+
+
+
+<div id="spadComm9-195" class="spadComm" >
+<form id="formComm9-195" action="javascript:makeRequest('9-195');" >
+<input id="comm9-195" type="text" class="command" style="width: 9em;" value="nthFlag(g,1) " />
+</form>
+<span id="commSav9-195" class="commSav" >nthFlag(g,1) </span>
+<div id="mathAns9-195" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"nil"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("nil",...)
+</div>
+
+
+
+<p>For more information about factored objects and their use, see
+<a href="section-9.22.xhtml#FactoredXmpPage" class="ref" >FactoredXmpPage</a>  and 
+<a href="ugProblemGaloisPage" class="ref" >ugProblemGaloisPage</a>  in Section 
+<a href="ugProblemGaloisNumber" class="ref" >ugProblemGaloisNumber</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.22.xhtml" style="margin-right: 10px;">Previous Section 9.22 Factored</a><a href="section-9.24.xhtml" style="margin-right: 10px;">Next Section 9.24 File</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.24.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.24.xhtml
new file mode 100644
index 0000000..7670600
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.24.xhtml
@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.24</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.23.xhtml" style="margin-right: 10px;">Previous Section 9.23 FactoredFunctions2</a><a href="section-9.25.xhtml" style="margin-right: 10px;">Next Section 9.25 FileName</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.24">
+<h2 class="sectiontitle">9.24  File</h2>
+
+
+<a name="FileXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">File(S)</span> domain provides a basic interface to read and
+write values of type <span class="teletype">S</span> in files.
+</p>
+
+
+<p>Before working with a file, it must be made accessible to Axiom with
+the <span class="spadfunFrom" >open</span><span class="index">open</span><a name="chapter-9-60"/><span class="index">File</span><a name="chapter-9-61"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-196" class="spadComm" >
+<form id="formComm9-196" action="javascript:makeRequest('9-196');" >
+<input id="comm9-196" type="text" class="command" style="width: 36em;" value='ifile:File List Integer:=open("/tmp/jazz1","output")  ' />
+</form>
+<span id="commSav9-196" class="commSav" >ifile:File List Integer:=open("/tmp/jazz1","output")  </span>
+<div id="mathAns9-196" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/jazz1"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: File List Integer
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >open</span><span class="index">open</span><a name="chapter-9-62"/><span class="index">File</span><a name="chapter-9-63"/> function arguments are a <span class="teletype">FileName</span>
+and a <span class="teletype">String</span> specifying the mode.  If a full pathname is not
+specified, the current default directory is assumed.  The mode must be
+one of ``<span class="teletype">input</span>'' or ``<span class="teletype">output</span>''.  If it is not specified, 
+``<span class="teletype">input</span>'' is assumed.  Once the file has been opened, you can read or
+write data.
+</p>
+
+
+<p>The operations <span class="spadfunFrom" >read</span><span class="index">read</span><a name="chapter-9-64"/><span class="index">File</span><a name="chapter-9-65"/> and <span class="spadfunFrom" >write</span><span class="index">write</span><a name="chapter-9-66"/><span class="index">File</span><a name="chapter-9-67"/> are
+provided.
+</p>
+
+
+
+
+<div id="spadComm9-197" class="spadComm" >
+<form id="formComm9-197" action="javascript:makeRequest('9-197');" >
+<input id="comm9-197" type="text" class="command" style="width: 16em;" value="write!(ifile, [-1,2,3])" />
+</form>
+<span id="commSav9-197" class="commSav" >write!(ifile, [-1,2,3])</span>
+<div id="mathAns9-197" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-198" class="spadComm" >
+<form id="formComm9-198" action="javascript:makeRequest('9-198');" >
+<input id="comm9-198" type="text" class="command" style="width: 20em;" value="write!(ifile, [10,-10,0,111])" />
+</form>
+<span id="commSav9-198" class="commSav" >write!(ifile, [10,-10,0,111])</span>
+<div id="mathAns9-198" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>10</mn><mo>,</mo><mo>-</mo><mn>10</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>111</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-199" class="spadComm" >
+<form id="formComm9-199" action="javascript:makeRequest('9-199');" >
+<input id="comm9-199" type="text" class="command" style="width: 12em;" value="write!(ifile, [7])" />
+</form>
+<span id="commSav9-199" class="commSav" >write!(ifile, [7])</span>
+<div id="mathAns9-199" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>You can change from writing to reading (or vice versa) by reopening a file.
+</p>
+
+
+
+
+<div id="spadComm9-200" class="spadComm" >
+<form id="formComm9-200" action="javascript:makeRequest('9-200');" >
+<input id="comm9-200" type="text" class="command" style="width: 16em;" value='reopen!(ifile, "input")' />
+</form>
+<span id="commSav9-200" class="commSav" >reopen!(ifile, "input")</span>
+<div id="mathAns9-200" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/jazz1"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: File List Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-201" class="spadComm" >
+<form id="formComm9-201" action="javascript:makeRequest('9-201');" >
+<input id="comm9-201" type="text" class="command" style="width: 8em;" value="read! ifile" />
+</form>
+<span id="commSav9-201" class="commSav" >read! ifile</span>
+<div id="mathAns9-201" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-202" class="spadComm" >
+<form id="formComm9-202" action="javascript:makeRequest('9-202');" >
+<input id="comm9-202" type="text" class="command" style="width: 8em;" value="read! ifile" />
+</form>
+<span id="commSav9-202" class="commSav" >read! ifile</span>
+<div id="mathAns9-202" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>10</mn><mo>,</mo><mo>-</mo><mn>10</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>111</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >read</span><span class="index">read</span><a name="chapter-9-68"/><span class="index">File</span><a name="chapter-9-69"/> operation can cause an error if one tries
+to read more data than is in the file.  To guard against this
+possibility the <span class="spadfunFrom" >readIfCan</span><span class="index">readIfCan</span><a name="chapter-9-70"/><span class="index">File</span><a name="chapter-9-71"/> operation should be
+used.
+</p>
+
+
+
+
+<div id="spadComm9-203" class="spadComm" >
+<form id="formComm9-203" action="javascript:makeRequest('9-203');" >
+<input id="comm9-203" type="text" class="command" style="width: 12em;" value="readIfCan! ifile  " />
+</form>
+<span id="commSav9-203" class="commSav" >readIfCan! ifile  </span>
+<div id="mathAns9-203" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(List Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-204" class="spadComm" >
+<form id="formComm9-204" action="javascript:makeRequest('9-204');" >
+<input id="comm9-204" type="text" class="command" style="width: 12em;" value="readIfCan! ifile  " />
+</form>
+<span id="commSav9-204" class="commSav" >readIfCan! ifile  </span>
+<div id="mathAns9-204" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>You can find the current mode of the file, and the file's name.
+</p>
+
+
+
+
+<div id="spadComm9-205" class="spadComm" >
+<form id="formComm9-205" action="javascript:makeRequest('9-205');" >
+<input id="comm9-205" type="text" class="command" style="width: 8em;" value="iomode ifile" />
+</form>
+<span id="commSav9-205" class="commSav" >iomode ifile</span>
+<div id="mathAns9-205" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"input"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-206" class="spadComm" >
+<form id="formComm9-206" action="javascript:makeRequest('9-206');" >
+<input id="comm9-206" type="text" class="command" style="width: 7em;" value="name ifile" />
+</form>
+<span id="commSav9-206" class="commSav" >name ifile</span>
+<div id="mathAns9-206" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/jazz1"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FileName
+</div>
+
+
+
+<p>When you are finished with a file, you should close it.
+</p>
+
+
+
+
+<div id="spadComm9-207" class="spadComm" >
+<form id="formComm9-207" action="javascript:makeRequest('9-207');" >
+<input id="comm9-207" type="text" class="command" style="width: 8em;" value="close! ifile" />
+</form>
+<span id="commSav9-207" class="commSav" >close! ifile</span>
+<div id="mathAns9-207" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/jazz1"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: File List Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-208" class="spadComm" >
+<form id="formComm9-208" action="javascript:makeRequest('9-208');" >
+<input id="comm9-208" type="text" class="command" style="width: 14em;" value=")system rm /tmp/jazz1" />
+</form>
+<span id="commSav9-208" class="commSav" >)system rm /tmp/jazz1</span>
+<div id="mathAns9-208" ></div>
+</div>
+
+
+
+<p>A limitation of the underlying LISP system is that not all values can
+be represented in a file.  In particular, delayed values containing
+compiled functions cannot be saved.
+</p>
+
+
+<p>For more information on related topics, see 
+<a href="section-9.81.xhtml#TextFileXmpPage" class="ref" >TextFileXmpPage</a> ,
+<a href="section-9.38.xhtml#KeyedAccessFileXmpPage" class="ref" >KeyedAccessFileXmpPage</a> , 
+<a href="section-9.41.xhtml#LibraryXmpPage" class="ref" >LibraryXmpPage</a> , and
+<a href="section-9.25.xhtml#FileNameXmpPage" class="ref" >FileNameXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.23.xhtml" style="margin-right: 10px;">Previous Section 9.23 FactoredFunctions2</a><a href="section-9.25.xhtml" style="margin-right: 10px;">Next Section 9.25 FileName</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.25.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.25.xhtml
new file mode 100644
index 0000000..6d3b0a5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.25.xhtml
@@ -0,0 +1,605 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.25</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.24.xhtml" style="margin-right: 10px;">Previous Section 9.24 File</a><a href="section-9.26.xhtml" style="margin-right: 10px;">Next Section 9.26 FlexibleArray</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.25">
+<h2 class="sectiontitle">9.25  FileName</h2>
+
+
+<a name="FileNameXmpPage" class="label"/>
+
+<p> 
+The <span class="teletype">FileName</span> domain provides an interface to the computer's file
+system.  Functions are provided to manipulate file names and to test
+properties of files.
+ 
+The simplest way to use file names in the Axiom interpreter is to rely
+on conversion to and from strings.  The syntax of these strings
+depends on the operating system.
+</p>
+
+
+
+
+<div id="spadComm9-209" class="spadComm" >
+<form id="formComm9-209" action="javascript:makeRequest('9-209');" >
+<input id="comm9-209" type="text" class="command" style="width: 9em;" value="fn: FileName " />
+</form>
+<span id="commSav9-209" class="commSav" >fn: FileName </span>
+<div id="mathAns9-209" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>On Linux, this is a proper file syntax:
+</p>
+
+
+
+
+<div id="spadComm9-210" class="spadComm" >
+<form id="formComm9-210" action="javascript:makeRequest('9-210');" >
+<input id="comm9-210" type="text" class="command" style="width: 17em;" value='fn := "/tmp/fname.input" ' />
+</form>
+<span id="commSav9-210" class="commSav" >fn := "/tmp/fname.input" </span>
+<div id="mathAns9-210" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/fname.input"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FileName
+</div>
+
+
+
+<p>Although it is very convenient to be able to use string notation
+for file names in the interpreter, it is desirable to have a portable
+way of creating and manipulating file names from within programs.
+</p>
+
+
+<p>A measure of portability is obtained by considering a file name
+to consist of three parts: the <span class="italic">directory</span>, the <span class="italic">name</span>,
+and the <span class="italic">extension</span>.
+</p>
+
+
+
+
+<div id="spadComm9-211" class="spadComm" >
+<form id="formComm9-211" action="javascript:makeRequest('9-211');" >
+<input id="comm9-211" type="text" class="command" style="width: 9em;" value="directory fn " />
+</form>
+<span id="commSav9-211" class="commSav" >directory fn </span>
+<div id="mathAns9-211" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-212" class="spadComm" >
+<form id="formComm9-212" action="javascript:makeRequest('9-212');" >
+<input id="comm9-212" type="text" class="command" style="width: 6em;" value="name fn " />
+</form>
+<span id="commSav9-212" class="commSav" >name fn </span>
+<div id="mathAns9-212" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"fname"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-213" class="spadComm" >
+<form id="formComm9-213" action="javascript:makeRequest('9-213');" >
+<input id="comm9-213" type="text" class="command" style="width: 9em;" value="extension fn " />
+</form>
+<span id="commSav9-213" class="commSav" >extension fn </span>
+<div id="mathAns9-213" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"input"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>The meaning of these three parts depends on the operating system.
+For example, on CMS the file ``<span class="teletype">SPADPROF INPUT M</span>''
+would have directory ``<span class="teletype">M</span>'', name ``<span class="teletype">SPADPROF</span>'' and
+extension ``<span class="teletype">INPUT</span>''.
+ 
+It is possible to create a filename from its parts.
+</p>
+
+
+
+
+<div id="spadComm9-214" class="spadComm" >
+<form id="formComm9-214" action="javascript:makeRequest('9-214');" >
+<input id="comm9-214" type="text" class="command" style="width: 34em;" value='fn := filename("/u/smwatt/work", "fname", "input") ' />
+</form>
+<span id="commSav9-214" class="commSav" >fn := filename("/u/smwatt/work", "fname", "input") </span>
+<div id="mathAns9-214" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/u/smwatt/work/fname.input"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FileName
+</div>
+
+
+
+<p>When writing programs, it is helpful to refer to directories via
+variables.
+</p>
+
+
+
+
+<div id="spadComm9-215" class="spadComm" >
+<form id="formComm9-215" action="javascript:makeRequest('9-215');" >
+<input id="comm9-215" type="text" class="command" style="width: 12em;" value='objdir := "/tmp" ' />
+</form>
+<span id="commSav9-215" class="commSav" >objdir := "/tmp" </span>
+<div id="mathAns9-215" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-216" class="spadComm" >
+<form id="formComm9-216" action="javascript:makeRequest('9-216');" >
+<input id="comm9-216" type="text" class="command" style="width: 27em;" value='fn := filename(objdir, "table", "spad") ' />
+</form>
+<span id="commSav9-216" class="commSav" >fn := filename(objdir, "table", "spad") </span>
+<div id="mathAns9-216" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/table.spad"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FileName
+</div>
+
+
+
+<p>If the directory or the extension is given as an empty string, then
+a default is used.  On AIX, the defaults are the current directory
+and no extension.
+</p>
+
+
+
+
+<div id="spadComm9-217" class="spadComm" >
+<form id="formComm9-217" action="javascript:makeRequest('9-217');" >
+<input id="comm9-217" type="text" class="command" style="width: 22em;" value='fn := filename("", "letter", "") ' />
+</form>
+<span id="commSav9-217" class="commSav" >fn := filename("", "letter", "") </span>
+<div id="mathAns9-217" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"letter"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FileName
+</div>
+
+
+<p> 
+Three tests provide information about names in the file system.
+</p>
+
+
+<p>The <span class="spadfunFrom" >exists?</span><span class="index">exists?</span><a name="chapter-9-72"/><span class="index">FileName</span><a name="chapter-9-73"/> operation tests whether the named
+file exists.
+</p>
+
+
+
+
+<div id="spadComm9-218" class="spadComm" >
+<form id="formComm9-218" action="javascript:makeRequest('9-218');" >
+<input id="comm9-218" type="text" class="command" style="width: 14em;" value='exists? "/etc/passwd"' />
+</form>
+<span id="commSav9-218" class="commSav" >exists? "/etc/passwd"</span>
+<div id="mathAns9-218" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >readable?</span><span class="index">readable?</span><a name="chapter-9-74"/><span class="index">FileName</span><a name="chapter-9-75"/> tells whether the named file
+can be read.  If the file does not exist, then it cannot be read.
+</p>
+
+
+
+
+<div id="spadComm9-219" class="spadComm" >
+<form id="formComm9-219" action="javascript:makeRequest('9-219');" >
+<input id="comm9-219" type="text" class="command" style="width: 16em;" value='readable? "/etc/passwd"' />
+</form>
+<span id="commSav9-219" class="commSav" >readable? "/etc/passwd"</span>
+<div id="mathAns9-219" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-220" class="spadComm" >
+<form id="formComm9-220" action="javascript:makeRequest('9-220');" >
+<input id="comm9-220" type="text" class="command" style="width: 22em;" value='readable? "/etc/security/passwd"' />
+</form>
+<span id="commSav9-220" class="commSav" >readable? "/etc/security/passwd"</span>
+<div id="mathAns9-220" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-221" class="spadComm" >
+<form id="formComm9-221" action="javascript:makeRequest('9-221');" >
+<input id="comm9-221" type="text" class="command" style="width: 16em;" value='readable? "/ect/passwd"' />
+</form>
+<span id="commSav9-221" class="commSav" >readable? "/ect/passwd"</span>
+<div id="mathAns9-221" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Likewise, the operation <span class="spadfunFrom" >writable?</span><span class="index">writable?</span><a name="chapter-9-76"/><span class="index">FileName</span><a name="chapter-9-77"/> tells
+whether the named file can be written.  If the file does not exist,
+the test is determined by the properties of the directory.
+</p>
+
+
+
+
+<div id="spadComm9-222" class="spadComm" >
+<form id="formComm9-222" action="javascript:makeRequest('9-222');" >
+<input id="comm9-222" type="text" class="command" style="width: 16em;" value='writable? "/etc/passwd"' />
+</form>
+<span id="commSav9-222" class="commSav" >writable? "/etc/passwd"</span>
+<div id="mathAns9-222" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-223" class="spadComm" >
+<form id="formComm9-223" action="javascript:makeRequest('9-223');" >
+<input id="comm9-223" type="text" class="command" style="width: 14em;" value='writable? "/dev/null"' />
+</form>
+<span id="commSav9-223" class="commSav" >writable? "/dev/null"</span>
+<div id="mathAns9-223" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-224" class="spadComm" >
+<form id="formComm9-224" action="javascript:makeRequest('9-224');" >
+<input id="comm9-224" type="text" class="command" style="width: 20em;" value='writable? "/etc/DoesNotExist"' />
+</form>
+<span id="commSav9-224" class="commSav" >writable? "/etc/DoesNotExist"</span>
+<div id="mathAns9-224" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-225" class="spadComm" >
+<form id="formComm9-225" action="javascript:makeRequest('9-225');" >
+<input id="comm9-225" type="text" class="command" style="width: 20em;" value='writable? "/tmp/DoesNotExist"' />
+</form>
+<span id="commSav9-225" class="commSav" >writable? "/tmp/DoesNotExist"</span>
+<div id="mathAns9-225" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+<p> 
+The <span class="spadfunFrom" >new</span><span class="index">new</span><a name="chapter-9-78"/><span class="index">FileName</span><a name="chapter-9-79"/> operation constructs the name of a new
+writable file.  The argument sequence is the same as for
+<span class="spadfunFrom" >filename</span><span class="index">filename</span><a name="chapter-9-80"/><span class="index">FileName</span><a name="chapter-9-81"/>, except that the name part is
+actually a prefix for a constructed unique name.
+</p>
+
+
+<p>The resulting file is in the specified directory
+with the given extension, and the same defaults are used.
+</p>
+
+
+
+
+<div id="spadComm9-226" class="spadComm" >
+<form id="formComm9-226" action="javascript:makeRequest('9-226');" >
+<input id="comm9-226" type="text" class="command" style="width: 21em;" value='fn := new(objdir, "xxx", "yy") ' />
+</form>
+<span id="commSav9-226" class="commSav" >fn := new(objdir, "xxx", "yy") </span>
+<div id="mathAns9-226" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/xxx82404.yy"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FileName
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.24.xhtml" style="margin-right: 10px;">Previous Section 9.24 File</a><a href="section-9.26.xhtml" style="margin-right: 10px;">Next Section 9.26 FlexibleArray</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.26.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.26.xhtml
new file mode 100644
index 0000000..3446dc4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.26.xhtml
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.26</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.25.xhtml" style="margin-right: 10px;">Previous Section 9.25 FileName</a><a href="section-9.27.xhtml" style="margin-right: 10px;">Next Section 9.27  Float</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.26">
+<h2 class="sectiontitle">9.26  FlexibleArray</h2>
+
+
+<a name="FlexibleArrayXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">FlexibleArray</span> domain constructor creates one-dimensional
+arrays of elements of the same type.  Flexible arrays are an attempt
+to provide a data type that has the best features of both
+one-dimensional arrays (fast, random access to elements) and lists
+(flexibility).  They are implemented by a fixed block of storage.
+When necessary for expansion, a new, larger block of storage is
+allocated and the elements from the old storage area are copied into
+the new block.
+</p>
+
+
+<p>Flexible arrays have available most of the operations provided by 
+<span class="teletype">OneDimensionalArray</span> (see 
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a>  
+and <a href="section-9.85.xhtml#VectorXmpPage" class="ref" >VectorXmpPage</a> ).  
+Since flexible arrays are also of category 
+<span class="teletype">ExtensibleLinearAggregate</span>, they have operations <span class="teletype">concat!</span>, 
+<span class="teletype">delete!</span>, <span class="teletype">insert!</span>, <span class="teletype">merge!</span>, <span class="teletype">remove!</span>, 
+<span class="teletype">removeDuplicates!</span>, and <span class="teletype">select!</span>.  In addition, the operations
+<span class="teletype">physicalLength</span> and <span class="teletype">physicalLength!</span> provide user-control
+over expansion and contraction.
+</p>
+
+
+<p>A convenient way to create a flexible array is to apply the operation
+<span class="teletype">flexibleArray</span> to a list of values.
+</p>
+
+
+
+
+<div id="spadComm9-227" class="spadComm" >
+<form id="formComm9-227" action="javascript:makeRequest('9-227');" >
+<input id="comm9-227" type="text" class="command" style="width: 21em;" value="flexibleArray [i for i in 1..6]" />
+</form>
+<span id="commSav9-227" class="commSav" >flexibleArray [i for i in 1..6]</span>
+<div id="mathAns9-227" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray PositiveInteger
+</div>
+
+
+
+<p>Create a flexible array of six zeroes.
+</p>
+
+
+
+
+<div id="spadComm9-228" class="spadComm" >
+<form id="formComm9-228" action="javascript:makeRequest('9-228');" >
+<input id="comm9-228" type="text" class="command" style="width: 18em;" value="f : FARRAY INT := new(6,0)" />
+</form>
+<span id="commSav9-228" class="commSav" >f : FARRAY INT := new(6,0)</span>
+<div id="mathAns9-228" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>For  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo>&#x2026;</mo><mn>6</mn></mrow></mstyle></math> set the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>-th element to  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>.  Display <span class="teletype">f</span>.
+</p>
+
+
+
+
+<div id="spadComm9-229" class="spadComm" >
+<form id="formComm9-229" action="javascript:makeRequest('9-229');" >
+<input id="comm9-229" type="text" class="command" style="width: 22em;" value="for i in 1..6 repeat f.i := i; f" />
+</form>
+<span id="commSav9-229" class="commSav" >for i in 1..6 repeat f.i := i; f</span>
+<div id="mathAns9-229" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>Initially, the physical length is the same as the number of elements.
+</p>
+
+
+
+
+<div id="spadComm9-230" class="spadComm" >
+<form id="formComm9-230" action="javascript:makeRequest('9-230');" >
+<input id="comm9-230" type="text" class="command" style="width: 11em;" value="physicalLength f" />
+</form>
+<span id="commSav9-230" class="commSav" >physicalLength f</span>
+<div id="mathAns9-230" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>6</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Add an element to the end of <span class="teletype">f</span>.
+</p>
+
+
+
+
+<div id="spadComm9-231" class="spadComm" >
+<form id="formComm9-231" action="javascript:makeRequest('9-231');" >
+<input id="comm9-231" type="text" class="command" style="width: 9em;" value="concat!(f,11)" />
+</form>
+<span id="commSav9-231" class="commSav" >concat!(f,11)</span>
+<div id="mathAns9-231" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>See that its physical length has grown.
+</p>
+
+
+
+
+<div id="spadComm9-232" class="spadComm" >
+<form id="formComm9-232" action="javascript:makeRequest('9-232');" >
+<input id="comm9-232" type="text" class="command" style="width: 11em;" value="physicalLength f" />
+</form>
+<span id="commSav9-232" class="commSav" >physicalLength f</span>
+<div id="mathAns9-232" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Make <span class="teletype">f</span> grow to have room for <span class="teletype">15</span> elements.
+</p>
+
+
+
+
+<div id="spadComm9-233" class="spadComm" >
+<form id="formComm9-233" action="javascript:makeRequest('9-233');" >
+<input id="comm9-233" type="text" class="command" style="width: 14em;" value="physicalLength!(f,15)" />
+</form>
+<span id="commSav9-233" class="commSav" >physicalLength!(f,15)</span>
+<div id="mathAns9-233" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>Concatenate the elements of <span class="teletype">f</span> to itself.  The physical length
+allows room for three more values at the end.
+</p>
+
+
+
+
+<div id="spadComm9-234" class="spadComm" >
+<form id="formComm9-234" action="javascript:makeRequest('9-234');" >
+<input id="comm9-234" type="text" class="command" style="width: 8em;" value="concat!(f,f)" />
+</form>
+<span id="commSav9-234" class="commSav" >concat!(f,f)</span>
+<div id="mathAns9-234" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>Use <span class="teletype">insert!</span> to add an element to the front of a flexible array.
+</p>
+
+
+
+
+<div id="spadComm9-235" class="spadComm" >
+<form id="formComm9-235" action="javascript:makeRequest('9-235');" >
+<input id="comm9-235" type="text" class="command" style="width: 10em;" value="insert!(22,f,1)" />
+</form>
+<span id="commSav9-235" class="commSav" >insert!(22,f,1)</span>
+<div id="mathAns9-235" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>22</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>Create a second flexible array from <span class="teletype">f</span> consisting of the elements
+from index 10 forward.
+</p>
+
+
+
+
+<div id="spadComm9-236" class="spadComm" >
+<form id="formComm9-236" action="javascript:makeRequest('9-236');" >
+<input id="comm9-236" type="text" class="command" style="width: 8em;" value="g := f(10..)" />
+</form>
+<span id="commSav9-236" class="commSav" >g := f(10..)</span>
+<div id="mathAns9-236" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>Insert this array at the front of <span class="teletype">f</span>.
+</p>
+
+
+
+
+<div id="spadComm9-237" class="spadComm" >
+<form id="formComm9-237" action="javascript:makeRequest('9-237');" >
+<input id="comm9-237" type="text" class="command" style="width: 10em;" value="insert!(g,f,1)" />
+</form>
+<span id="commSav9-237" class="commSav" >insert!(g,f,1)</span>
+<div id="mathAns9-237" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>22</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>Merge the flexible array <span class="teletype">f</span> into <span class="teletype">g</span> after sorting each in place.
+</p>
+
+
+
+
+<div id="spadComm9-238" class="spadComm" >
+<form id="formComm9-238" action="javascript:makeRequest('9-238');" >
+<input id="comm9-238" type="text" class="command" style="width: 16em;" value="merge!(sort! f, sort! g)" />
+</form>
+<span id="commSav9-238" class="commSav" >merge!(sort! f, sort! g)</span>
+<div id="mathAns9-238" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>22</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>Remove duplicates in place.
+</p>
+
+
+
+
+<div id="spadComm9-239" class="spadComm" >
+<form id="formComm9-239" action="javascript:makeRequest('9-239');" >
+<input id="comm9-239" type="text" class="command" style="width: 13em;" value="removeDuplicates! f" />
+</form>
+<span id="commSav9-239" class="commSav" >removeDuplicates! f</span>
+<div id="mathAns9-239" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>22</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>Remove all odd integers.
+</p>
+
+
+
+
+<div id="spadComm9-240" class="spadComm" >
+<form id="formComm9-240" action="javascript:makeRequest('9-240');" >
+<input id="comm9-240" type="text" class="command" style="width: 16em;" value="select!(i +-> even? i,f)" />
+</form>
+<span id="commSav9-240" class="commSav" >select!(i +-> even? i,f)</span>
+<div id="mathAns9-240" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>22</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FlexibleArray Integer
+</div>
+
+
+
+<p>All these operations have shrunk the physical length of <span class="teletype">f</span>.
+</p>
+
+
+
+
+<div id="spadComm9-241" class="spadComm" >
+<form id="formComm9-241" action="javascript:makeRequest('9-241');" >
+<input id="comm9-241" type="text" class="command" style="width: 11em;" value="physicalLength f" />
+</form>
+<span id="commSav9-241" class="commSav" >physicalLength f</span>
+<div id="mathAns9-241" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>To force Axiom not to shrink flexible arrays call the <span class="teletype">shrinkable</span>
+operation with the argument <span class="teletype">false</span>.  You must package call this
+operation.  The previous value is returned.
+</p>
+
+
+
+
+<div id="spadComm9-242" class="spadComm" >
+<form id="formComm9-242" action="javascript:makeRequest('9-242');" >
+<input id="comm9-242" type="text" class="command" style="width: 27em;" value="shrinkable(false)$FlexibleArray(Integer)" />
+</form>
+<span id="commSav9-242" class="commSav" >shrinkable(false)$FlexibleArray(Integer)</span>
+<div id="mathAns9-242" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.25.xhtml" style="margin-right: 10px;">Previous Section 9.25 FileName</a><a href="section-9.27.xhtml" style="margin-right: 10px;">Next Section 9.27  Float</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.27.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.27.xhtml
new file mode 100644
index 0000000..2afb6cc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.27.xhtml
@@ -0,0 +1,1249 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.27</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.26.xhtml" style="margin-right: 10px;">Previous Section 9.26  FlexibleArray</a><a href="section-9.28.xhtml" style="margin-right: 10px;">Next Section 9.28 Fraction</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.27">
+<h2 class="sectiontitle">9.27  Float</h2>
+
+
+<a name="FloatXmpPage" class="label"/>
+
+
+<p>Axiom provides two kinds of floating point numbers.  The domain 
+<span class="teletype">Float</span> (abbreviation <span class="teletype">FLOAT</span>) implements a model of arbitrary
+precision floating point numbers.  The domain <span class="teletype">DoubleFloat</span>
+(abbreviation <span class="teletype">DFLOAT</span>) is intended to make available hardware
+floating point arithmetic in Axiom.  The actual model of floating
+point that <span class="teletype">DoubleFloat</span> provides is system-dependent.  For
+example, on the IBM system 370 Axiom uses IBM double precision which
+has fourteen hexadecimal digits of precision or roughly sixteen
+decimal digits.  Arbitrary precision floats allow the user to specify
+the precision at which arithmetic operations are computed.  Although
+this is an attractive facility, it comes at a cost.
+Arbitrary-precision floating-point arithmetic typically takes twenty
+to two hundred times more time than hardware floating point.
+</p>
+
+
+<p>For more information about Axiom's numeric and graphic facilities, see
+<a href="ugGraphPage" class="ref" >ugGraphPage</a>  in Section 
+<a href="ugGraphNumber" class="ref" >ugGraphNumber</a> ,
+<a href="section-8.1.xhtml#ugProblemNumeric" class="ref" >ugProblemNumeric</a> , and 
+<a href="section-9.17.xhtml#DoubleFloatXmpPage" class="ref" >DoubleFloatXmpPage</a> .
+</p>
+
+
+
+<a name="subsec-9.27.1"/>
+<div class="subsection"  id="subsec-9.27.1">
+<h3 class="subsectitle">9.27.1  Introduction to Float</h3>
+
+
+
+<p>Scientific notation is supported for input and output of floating
+point numbers.  A floating point number is written as a string of
+digits containing a decimal point optionally followed by the letter
+``<span class="teletype">E</span>'', and then the exponent.
+</p>
+
+
+<p>We begin by doing some calculations using arbitrary precision floats.
+The default precision is twenty decimal digits.
+</p>
+
+
+
+
+<div id="spadComm9-1" class="spadComm" >
+<form id="formComm9-1" action="javascript:makeRequest('9-1');" >
+<input id="comm9-1" type="text" class="command" style="width: 4em;" value="1.234" />
+</form>
+<span id="commSav9-1" class="commSav" >1.234</span>
+<div id="mathAns9-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>234</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>A decimal base for the exponent is assumed, so the number 
+<span class="teletype">1.234E2</span> denotes  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm9-2" class="spadComm" >
+<form id="formComm9-2" action="javascript:makeRequest('9-2');" >
+<input id="comm9-2" type="text" class="command" style="width: 5em;" value="1.234E2" />
+</form>
+<span id="commSav9-2" class="commSav" >1.234E2</span>
+<div id="mathAns9-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>123</mn><mo>.</mo><mn>4</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The normal arithmetic operations are available for floating point numbers.
+</p>
+
+
+
+
+<div id="spadComm9-3" class="spadComm" >
+<form id="formComm9-3" action="javascript:makeRequest('9-3');" >
+<input id="comm9-3" type="text" class="command" style="width: 19em;" value="sqrt(1.2 + 2.3 / 3.4 ** 4.5)" />
+</form>
+<span id="commSav9-3" class="commSav" >sqrt(1.2 + 2.3 / 3.4 ** 4.5)</span>
+<div id="mathAns9-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mn>0996972790</mn><mspace width="0.5 em" /><mn>671286226</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.27.2"/>
+<div class="subsection"  id="subsec-9.27.2">
+<h3 class="subsectitle">9.27.2  Conversion Functions</h3>
+
+
+
+<p>You can use conversion (<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a>  in Section
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> ) to
+go back and forth between <span class="teletype">Integer</span>, <span class="teletype">Fraction Integer</span> and
+<span class="teletype">Float</span>, as appropriate.
+</p>
+
+
+
+
+<div id="spadComm9-4" class="spadComm" >
+<form id="formComm9-4" action="javascript:makeRequest('9-4');" >
+<input id="comm9-4" type="text" class="command" style="width: 11em;" value="i := 3 :: Float " />
+</form>
+<span id="commSav9-4" class="commSav" >i := 3 :: Float </span>
+<div id="mathAns9-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm9-5" class="spadComm" >
+<form id="formComm9-5" action="javascript:makeRequest('9-5');" >
+<input id="comm9-5" type="text" class="command" style="width: 9em;" value="i :: Integer " />
+</form>
+<span id="commSav9-5" class="commSav" >i :: Integer </span>
+<div id="mathAns9-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-6" class="spadComm" >
+<form id="formComm9-6" action="javascript:makeRequest('9-6');" >
+<input id="comm9-6" type="text" class="command" style="width: 15em;" value="i :: Fraction Integer " />
+</form>
+<span id="commSav9-6" class="commSav" >i :: Fraction Integer </span>
+<div id="mathAns9-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Since you are explicitly asking for a conversion, you must take
+responsibility for any loss of exactness.
+</p>
+
+
+
+
+<div id="spadComm9-7" class="spadComm" >
+<form id="formComm9-7" action="javascript:makeRequest('9-7');" >
+<input id="comm9-7" type="text" class="command" style="width: 12em;" value="r := 3/7 :: Float " />
+</form>
+<span id="commSav9-7" class="commSav" >r := 3/7 :: Float </span>
+<div id="mathAns9-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>4285714285</mn><mspace width="0.5 em" /><mn>7142857143</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm9-8" class="spadComm" >
+<form id="formComm9-8" action="javascript:makeRequest('9-8');" >
+<input id="comm9-8" type="text" class="command" style="width: 15em;" value="r :: Fraction Integer " />
+</form>
+<span id="commSav9-8" class="commSav" >r :: Fraction Integer </span>
+<div id="mathAns9-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>3</mn><mn>7</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>This conversion cannot be performed: use <span class="spadfunFrom" >truncate</span><span class="index">truncate</span><a name="chapter-9-0"/><span class="index">Float</span><a name="chapter-9-1"/>
+or <span class="spadfunFrom" >round</span><span class="index">round</span><a name="chapter-9-2"/><span class="index">Float</span><a name="chapter-9-3"/> if that is what you intend.
+</p>
+
+
+
+
+<div id="spadComm9-9" class="spadComm" >
+<form id="formComm9-9" action="javascript:makeRequest('9-9');" >
+<input id="comm9-9" type="text" class="command" style="width: 9em;" value="r :: Integer " />
+</form>
+<span id="commSav9-9" class="commSav" >r :: Integer </span>
+<div id="mathAns9-9" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Cannot&nbsp;convert&nbsp;from&nbsp;type&nbsp;Float&nbsp;to&nbsp;Integer&nbsp;for&nbsp;value<br />
+&nbsp;&nbsp;&nbsp;0.4285714285&nbsp;7142857143<br />
+</div>
+
+
+
+<p>The operations <span class="spadfunFrom" >truncate</span><span class="index">truncate</span><a name="chapter-9-4"/><span class="index">Float</span><a name="chapter-9-5"/> and <span class="spadfunFrom" >round</span><span class="index">round</span><a name="chapter-9-6"/><span class="index">Float</span><a name="chapter-9-7"/>
+truncate  ...
+</p>
+
+
+
+
+<div id="spadComm9-10" class="spadComm" >
+<form id="formComm9-10" action="javascript:makeRequest('9-10');" >
+<input id="comm9-10" type="text" class="command" style="width: 8em;" value="truncate 3.6" />
+</form>
+<span id="commSav9-10" class="commSav" >truncate 3.6</span>
+<div id="mathAns9-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>and round to the nearest integral <span class="teletype">Float</span> respectively.
+</p>
+
+
+
+
+<div id="spadComm9-11" class="spadComm" >
+<form id="formComm9-11" action="javascript:makeRequest('9-11');" >
+<input id="comm9-11" type="text" class="command" style="width: 6em;" value="round 3.6" />
+</form>
+<span id="commSav9-11" class="commSav" >round 3.6</span>
+<div id="mathAns9-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>4</mn><mo>.</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm9-12" class="spadComm" >
+<form id="formComm9-12" action="javascript:makeRequest('9-12');" >
+<input id="comm9-12" type="text" class="command" style="width: 10em;" value="truncate(-3.6)" />
+</form>
+<span id="commSav9-12" class="commSav" >truncate(-3.6)</span>
+<div id="mathAns9-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>3</mn><mo>.</mo><mn>0</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm9-13" class="spadComm" >
+<form id="formComm9-13" action="javascript:makeRequest('9-13');" >
+<input id="comm9-13" type="text" class="command" style="width: 8em;" value="round(-3.6)" />
+</form>
+<span id="commSav9-13" class="commSav" >round(-3.6)</span>
+<div id="mathAns9-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>4</mn><mo>.</mo><mn>0</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >fractionPart</span><span class="index">fractionPart</span><a name="chapter-9-8"/><span class="index">Float</span><a name="chapter-9-9"/> computes the
+fractional part of <span class="teletype">x</span>, that is, <span class="teletype">x - truncate x</span>.
+</p>
+
+
+
+
+<div id="spadComm9-14" class="spadComm" >
+<form id="formComm9-14" action="javascript:makeRequest('9-14');" >
+<input id="comm9-14" type="text" class="command" style="width: 11em;" value="fractionPart 3.6" />
+</form>
+<span id="commSav9-14" class="commSav" >fractionPart 3.6</span>
+<div id="mathAns9-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>6</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >digits</span><span class="index">digits</span><a name="chapter-9-10"/><span class="index">Float</span><a name="chapter-9-11"/> allows the user to set the
+precision.  It returns the previous value it was using.
+</p>
+
+
+
+
+<div id="spadComm9-15" class="spadComm" >
+<form id="formComm9-15" action="javascript:makeRequest('9-15');" >
+<input id="comm9-15" type="text" class="command" style="width: 7em;" value="digits 40 " />
+</form>
+<span id="commSav9-15" class="commSav" >digits 40 </span>
+<div id="mathAns9-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>20</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-16" class="spadComm" >
+<form id="formComm9-16" action="javascript:makeRequest('9-16');" >
+<input id="comm9-16" type="text" class="command" style="width: 6em;" value="sqrt 0.2" />
+</form>
+<span id="commSav9-16" class="commSav" >sqrt 0.2</span>
+<div id="mathAns9-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>4472135954</mn><mspace width="0.5 em" /><mn>9995793928</mn><mspace width="0.5 em" /><mn>1834733746</mn><mspace width="0.5 em" /><mn>2552470881</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm9-17" class="spadComm" >
+<form id="formComm9-17" action="javascript:makeRequest('9-17');" >
+<input id="comm9-17" type="text" class="command" style="width: 8em;" value="pi()$Float " />
+</form>
+<span id="commSav9-17" class="commSav" >pi()$Float </span>
+<div id="mathAns9-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mn>1415926535</mn><mspace width="0.5 em" /><mn>8979323846</mn><mspace width="0.5 em" /><mn>2643383279</mn><mspace width="0.5 em" /><mn>502884197</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The precision is only limited by the computer memory available.
+Calculations at 500 or more digits of precision are not difficult.
+</p>
+
+
+
+
+<div id="spadComm9-18" class="spadComm" >
+<form id="formComm9-18" action="javascript:makeRequest('9-18');" >
+<input id="comm9-18" type="text" class="command" style="width: 8em;" value="digits 500 " />
+</form>
+<span id="commSav9-18" class="commSav" >digits 500 </span>
+<div id="mathAns9-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>40</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-19" class="spadComm" >
+<form id="formComm9-19" action="javascript:makeRequest('9-19');" >
+<input id="comm9-19" type="text" class="command" style="width: 8em;" value="pi()$Float " />
+</form>
+<span id="commSav9-19" class="commSav" >pi()$Float </span>
+<div id="mathAns9-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>3</mn><mo>.</mo><mn>1415926535</mn><mspace width="0.5 em" /><mn>8979323846</mn><mspace width="0.5 em" /><mn>2643383279</mn><mspace width="0.5 em" /><mn>5028841971</mn><mspace width="0.5 em" /><mn>6939937510</mn><mspace width="0.5 em" /><mn>5820974944</mn></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mn>5923078164</mn><mspace width="0.5 em" /><mn>0628620899</mn><mspace width="0.5 em" /><mn>8628034825</mn><mspace width="0.5 em" /><mn>3421170679</mn><mspace width="0.5 em" /><mn>8214808651</mn><mspace width="0.5 em" /><mn>3282306647</mn></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mn>0938446095</mn><mspace width="0.5 em" /><mn>5058223172</mn><mspace width="0.5 em" /><mn>5359408128</mn><mspace width="0.5 em" /><mn>4811174502</mn><mspace width="0.5 em" /><mn>8410270193</mn><mspace width="0.5 em" /><mn>8521105559</mn></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mn>6446229489</mn><mspace width="0.5 em" /><mn>5493038196</mn><mspace width="0.5 em" /><mn>4428810975</mn><mspace width="0.5 em" /><mn>6659334461</mn><mspace width="0.5 em" /><mn>2847564823</mn><mspace width="0.5 em" /><mn>3786783165</mn></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mn>2712019091</mn><mspace width="0.5 em" /><mn>4564856692</mn><mspace width="0.5 em" /><mn>3460348610</mn><mspace width="0.5 em" /><mn>4543266482</mn><mspace width="0.5 em" /><mn>1339360726</mn><mspace width="0.5 em" /><mn>0249141273</mn></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mn>7245870066</mn><mspace width="0.5 em" /><mn>0631558817</mn><mspace width="0.5 em" /><mn>4881520920</mn><mspace width="0.5 em" /><mn>9628292540</mn><mspace width="0.5 em" /><mn>9171536436</mn><mspace width="0.5 em" /><mn>7892590360</mn></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mn>0113305305</mn><mspace width="0.5 em" /><mn>4882046652</mn><mspace width="0.5 em" /><mn>1384146951</mn><mspace width="0.5 em" /><mn>9415116094</mn><mspace width="0.5 em" /><mn>3305727036</mn><mspace width="0.5 em" /><mn>5759591953</mn></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mn>0921861173</mn><mspace width="0.5 em" /><mn>8193261179</mn><mspace width="0.5 em" /><mn>3105118548</mn><mspace width="0.5 em" /><mn>0744623799</mn><mspace width="0.5 em" /><mn>6274956735</mn><mspace width="0.5 em" /><mn>1885752724</mn></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mn>8912279381</mn><mspace width="0.5 em" /><mn>830119491</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Reset <span class="spadfunFrom" >digits</span><span class="index">digits</span><a name="chapter-9-12"/><span class="index">Float</span><a name="chapter-9-13"/> to its default value.
+</p>
+
+
+
+
+<div id="spadComm9-20" class="spadComm" >
+<form id="formComm9-20" action="javascript:makeRequest('9-20');" >
+<input id="comm9-20" type="text" class="command" style="width: 6em;" value="digits 20" />
+</form>
+<span id="commSav9-20" class="commSav" >digits 20</span>
+<div id="mathAns9-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>500</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Numbers of type <span class="teletype">Float</span> are represented as a record of two
+integers, namely, the mantissa and the exponent where the base of the
+exponent is binary.  That is, the floating point number <span class="teletype">(m,e)</span>
+represents the number  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>.  A consequence of using a binary
+base is that decimal numbers can not, in general, be represented
+exactly.
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.27.3"/>
+<div class="subsection"  id="subsec-9.27.3">
+<h3 class="subsectitle">9.27.3  Output Functions</h3>
+
+
+
+<p>A number of operations exist for specifying how numbers of type 
+<span class="teletype">Float</span> are to be displayed.  By default, spaces are inserted every ten
+digits in the output for readability.<span class="footnote">Note that you cannot
+include spaces in the input form of a floating point number, though
+you can use underscores.</span>
+</p>
+
+
+<p>Output spacing can be modified with the <span class="spadfunFrom" >outputSpacing</span><span class="index">outputSpacing</span><a name="chapter-9-14"/><span class="index">Float</span><a name="chapter-9-15"/> 
+operation.  This inserts no spaces and then displays the value of <span class="teletype">x</span>.
+</p>
+
+
+
+
+<div id="spadComm9-21" class="spadComm" >
+<form id="formComm9-21" action="javascript:makeRequest('9-21');" >
+<input id="comm9-21" type="text" class="command" style="width: 21em;" value="outputSpacing 0; x := sqrt 0.2 " />
+</form>
+<span id="commSav9-21" class="commSav" >outputSpacing 0; x := sqrt 0.2 </span>
+<div id="mathAns9-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>44721359549995793928</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Issue this to have the spaces inserted every <span class="teletype">5</span> digits.
+</p>
+
+
+
+
+<div id="spadComm9-22" class="spadComm" >
+<form id="formComm9-22" action="javascript:makeRequest('9-22');" >
+<input id="comm9-22" type="text" class="command" style="width: 13em;" value="outputSpacing 5; x " />
+</form>
+<span id="commSav9-22" class="commSav" >outputSpacing 5; x </span>
+<div id="mathAns9-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>44721</mn><mspace width="0.5 em" /><mn>35954</mn><mspace width="0.5 em" /><mn>99957</mn><mspace width="0.5 em" /><mn>93928</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>By default, the system displays floats in either fixed format
+or scientific format, depending on the magnitude of the number.
+</p>
+
+
+
+
+<div id="spadComm9-23" class="spadComm" >
+<form id="formComm9-23" action="javascript:makeRequest('9-23');" >
+<input id="comm9-23" type="text" class="command" style="width: 10em;" value="y := x/10**10 " />
+</form>
+<span id="commSav9-23" class="commSav" >y := x/10**10 </span>
+<div id="mathAns9-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>44721</mn><mspace width="0.5 em" /><mn>35954</mn><mspace width="0.5 em" /><mn>99957</mn><mspace width="0.5 em" /><mn>93928</mn><mspace width="0.5 em" /><mrow><mtext>E&nbsp;</mtext></mrow><mo>-</mo><mn>10</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>A particular format may be requested with the operations
+<span class="spadfunFrom" >outputFloating</span><span class="index">outputFloating</span><a name="chapter-9-16"/><span class="index">Float</span><a name="chapter-9-17"/> and <span class="spadfunFrom" >outputFixed</span><span class="index">outputFixed</span><a name="chapter-9-18"/><span class="index">Float</span><a name="chapter-9-19"/>.
+</p>
+
+
+
+
+<div id="spadComm9-24" class="spadComm" >
+<form id="formComm9-24" action="javascript:makeRequest('9-24');" >
+<input id="comm9-24" type="text" class="command" style="width: 14em;" value="outputFloating(); x  " />
+</form>
+<span id="commSav9-24" class="commSav" >outputFloating(); x  </span>
+<div id="mathAns9-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>44721</mn><mspace width="0.5 em" /><mn>35954</mn><mspace width="0.5 em" /><mn>99957</mn><mspace width="0.5 em" /><mn>93928</mn><mspace width="0.5 em" /><mrow><mtext>E&nbsp;</mtext></mrow><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm9-25" class="spadComm" >
+<form id="formComm9-25" action="javascript:makeRequest('9-25');" >
+<input id="comm9-25" type="text" class="command" style="width: 12em;" value="outputFixed(); y  " />
+</form>
+<span id="commSav9-25" class="commSav" >outputFixed(); y  </span>
+<div id="mathAns9-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>00000</mn><mspace width="0.5 em" /><mn>00000</mn><mspace width="0.5 em" /><mn>44721</mn><mspace width="0.5 em" /><mn>35954</mn><mspace width="0.5 em" /><mn>99957</mn><mspace width="0.5 em" /><mn>93928</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Additionally, you can ask for <span class="teletype">n</span> digits to be displayed after the
+decimal point.
+</p>
+
+
+
+
+<div id="spadComm9-26" class="spadComm" >
+<form id="formComm9-26" action="javascript:makeRequest('9-26');" >
+<input id="comm9-26" type="text" class="command" style="width: 14em;" value="outputFloating 2; y  " />
+</form>
+<span id="commSav9-26" class="commSav" >outputFloating 2; y  </span>
+<div id="mathAns9-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>45</mn><mspace width="0.5 em" /><mrow><mtext>E&nbsp;</mtext></mrow><mo>-</mo><mn>10</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+
+
+<div id="spadComm9-27" class="spadComm" >
+<form id="formComm9-27" action="javascript:makeRequest('9-27');" >
+<input id="comm9-27" type="text" class="command" style="width: 12em;" value="outputFixed 2; x  " />
+</form>
+<span id="commSav9-27" class="commSav" >outputFixed 2; x  </span>
+<div id="mathAns9-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>45</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>This resets the output printing to the default behavior.
+</p>
+
+
+
+
+<div id="spadComm9-28" class="spadComm" >
+<form id="formComm9-28" action="javascript:makeRequest('9-28');" >
+<input id="comm9-28" type="text" class="command" style="width: 10em;" value="outputGeneral()" />
+</form>
+<span id="commSav9-28" class="commSav" >outputGeneral()</span>
+<div id="mathAns9-28" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.27.4"/>
+<div class="subsection"  id="subsec-9.27.4">
+<h3 class="subsectitle">9.27.4  An Example: Determinant of a Hilbert Matrix</h3>
+
+
+
+<p>Consider the problem of computing the determinant of a <span class="teletype">10</span> by
+<span class="teletype">10</span> Hilbert matrix.  The  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></mstyle></math>-th entry of a Hilbert
+matrix is given by <span class="teletype">1/(i+j+1)</span>.
+</p>
+
+
+<p>First do the computation using rational numbers to obtain the
+exact result.
+</p>
+
+
+
+
+<div id="spadComm9-29" class="spadComm" >
+<form id="formComm9-29" action="javascript:makeRequest('9-29');" >
+<input id="comm9-29" type="text" class="command" style="width: 54em;" value="a: Matrix Fraction Integer := matrix [ [1/(i+j+1) for j in 0..9] for i in 0..9] " />
+</form>
+<span id="commSav9-29" class="commSav" >a: Matrix Fraction Integer := matrix [ [1/(i+j+1) for j in 0..9] for i in 0..9] </span>
+<div id="mathAns9-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>10</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>10</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>11</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>10</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>11</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>12</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>10</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>11</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>12</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>13</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>10</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>11</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>12</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>13</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>14</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>10</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>11</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>12</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>13</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>14</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>15</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>10</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>11</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>12</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>13</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>14</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>15</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>16</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>8</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>10</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>11</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>12</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>13</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>14</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>15</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>16</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>17</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>9</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>10</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>11</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>12</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>13</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>14</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>15</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>16</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>17</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>18</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>10</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>11</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>12</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>13</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>14</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>15</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>16</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>17</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>18</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>19</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Integer
+</div>
+
+
+
+<p>This version of <span class="spadfunFrom" >determinant</span><span class="index">determinant</span><a name="chapter-9-20"/><span class="index">Matrix</span><a name="chapter-9-21"/> uses Gaussian elimination.
+</p>
+
+
+
+
+<div id="spadComm9-30" class="spadComm" >
+<form id="formComm9-30" action="javascript:makeRequest('9-30');" >
+<input id="comm9-30" type="text" class="command" style="width: 12em;" value="d:= determinant a " />
+</form>
+<span id="commSav9-30" class="commSav" >d:= determinant a </span>
+<div id="mathAns9-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>1</mn><mn>46206893947914691316295628839036278726983680000000000</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-31" class="spadComm" >
+<form id="formComm9-31" action="javascript:makeRequest('9-31');" >
+<input id="comm9-31" type="text" class="command" style="width: 8em;" value="d :: Float " />
+</form>
+<span id="commSav9-31" class="commSav" >d :: Float </span>
+<div id="mathAns9-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>21641</mn><mspace width="0.5 em" /><mn>79226</mn><mspace width="0.5 em" /><mn>43149</mn><mspace width="0.5 em" /><mn>18691</mn><mspace width="0.5 em" /><mrow><mtext>E&nbsp;</mtext></mrow><mo>-</mo><mn>52</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Now use hardware floats. Note that a semicolon (;) is used to prevent
+the display of the matrix.
+</p>
+
+
+
+
+<div id="spadComm9-32" class="spadComm" >
+<form id="formComm9-32" action="javascript:makeRequest('9-32');" >
+<input id="comm9-32" type="text" class="command" style="width: 59em;" value="b: Matrix DoubleFloat := matrix [ [1/(i+j+1$DoubleFloat) for j in 0..9] for i in 0..9]; " />
+</form>
+<span id="commSav9-32" class="commSav" >b: Matrix DoubleFloat := matrix [ [1/(i+j+1$DoubleFloat) for j in 0..9] for i in 0..9]; </span>
+<div id="mathAns9-32" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix DoubleFloat
+</div>
+
+
+
+<p>The result given by hardware floats is correct only to four
+significant digits of precision.  In the jargon of numerical analysis,
+the Hilbert matrix is said to be ``ill-conditioned.''
+</p>
+
+
+
+
+<div id="spadComm9-33" class="spadComm" >
+<form id="formComm9-33" action="javascript:makeRequest('9-33');" >
+<input id="comm9-33" type="text" class="command" style="width: 10em;" value="determinant b " />
+</form>
+<span id="commSav9-33" class="commSav" >determinant b </span>
+<div id="mathAns9-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>.</mo><mn>1643677945721411</mn><mi>e</mi><mo>-</mo><mn>53</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DoubleFloat
+</div>
+
+
+
+<p>Now repeat the computation at a higher precision using <span class="teletype">Float</span>.
+</p>
+
+
+
+
+<div id="spadComm9-34" class="spadComm" >
+<form id="formComm9-34" action="javascript:makeRequest('9-34');" >
+<input id="comm9-34" type="text" class="command" style="width: 7em;" value="digits 40 " />
+</form>
+<span id="commSav9-34" class="commSav" >digits 40 </span>
+<div id="mathAns9-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>20</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-35" class="spadComm" >
+<form id="formComm9-35" action="javascript:makeRequest('9-35');" >
+<input id="comm9-35" type="text" class="command" style="width: 52em;" value="c: Matrix Float := matrix [ [1/(i+j+1$Float) for j in 0..9] for i in 0..9];  " />
+</form>
+<span id="commSav9-35" class="commSav" >c: Matrix Float := matrix [ [1/(i+j+1$Float) for j in 0..9] for i in 0..9];  </span>
+<div id="mathAns9-35" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Float
+</div>
+
+
+
+
+
+<div id="spadComm9-36" class="spadComm" >
+<form id="formComm9-36" action="javascript:makeRequest('9-36');" >
+<input id="comm9-36" type="text" class="command" style="width: 10em;" value="determinant c " />
+</form>
+<span id="commSav9-36" class="commSav" >determinant c </span>
+<div id="mathAns9-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>21641</mn><mspace width="0.5 em" /><mn>79226</mn><mspace width="0.5 em" /><mn>43149</mn><mspace width="0.5 em" /><mn>18690</mn><mspace width="0.5 em" /><mn>60594</mn><mspace width="0.5 em" /><mn>98362</mn><mspace width="0.5 em" /><mn>26174</mn><mspace width="0.5 em" /><mn>36159</mn><mspace width="0.5 em" /><mrow><mtext>E&nbsp;</mtext></mrow><mo>-</mo><mn>52</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>Reset <span class="spadfunFrom" >digits</span><span class="index">digits</span><a name="chapter-9-22"/><span class="index">Float</span><a name="chapter-9-23"/> to its default value.
+</p>
+
+
+
+
+<div id="spadComm9-37" class="spadComm" >
+<form id="formComm9-37" action="javascript:makeRequest('9-37');" >
+<input id="comm9-37" type="text" class="command" style="width: 6em;" value="digits 20" />
+</form>
+<span id="commSav9-37" class="commSav" >digits 20</span>
+<div id="mathAns9-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>40</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.26.xhtml" style="margin-right: 10px;">Previous Section 9.26  FlexibleArray</a><a href="section-9.28.xhtml" style="margin-right: 10px;">Next Section 9.28 Fraction</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.28.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.28.xhtml
new file mode 100644
index 0000000..9785c12
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.28.xhtml
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.28</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.27.xhtml" style="margin-right: 10px;">Previous Section 9.27 Float</a><a href="section-9.29.xhtml" style="margin-right: 10px;">Next Section 9.29 FullPartialFractionExpansion</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.28">
+<h2 class="sectiontitle">9.28  Fraction</h2>
+
+
+<a name="FractionXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">Fraction</span> domain implements quotients.  The elements must
+belong to a domain of category <span class="teletype">IntegralDomain</span>: multiplication
+must be commutative and the product of two non-zero elements must not
+be zero.  This allows you to make fractions of most things you would
+think of, but don't expect to create a fraction of two matrices!  The
+abbreviation for <span class="teletype">Fraction</span> is <span class="teletype">FRAC</span>.
+</p>
+
+
+<p>Use <span class="spadopFrom" title="Fraction">/</span> to create a fraction.
+</p>
+
+
+
+
+<div id="spadComm9-38" class="spadComm" >
+<form id="formComm9-38" action="javascript:makeRequest('9-38');" >
+<input id="comm9-38" type="text" class="command" style="width: 8em;" value="a := 11/12 " />
+</form>
+<span id="commSav9-38" class="commSav" >a := 11/12 </span>
+<div id="mathAns9-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>11</mn><mn>12</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-39" class="spadComm" >
+<form id="formComm9-39" action="javascript:makeRequest('9-39');" >
+<input id="comm9-39" type="text" class="command" style="width: 8em;" value="b := 23/24 " />
+</form>
+<span id="commSav9-39" class="commSav" >b := 23/24 </span>
+<div id="mathAns9-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>23</mn><mn>24</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The standard arithmetic operations are available.
+</p>
+
+
+
+
+<div id="spadComm9-40" class="spadComm" >
+<form id="formComm9-40" action="javascript:makeRequest('9-40');" >
+<input id="comm9-40" type="text" class="command" style="width: 14em;" value="3 - a*b**2 + a + b/a " />
+</form>
+<span id="commSav9-40" class="commSav" >3 - a*b**2 + a + b/a </span>
+<div id="mathAns9-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>313271</mn><mn>76032</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Extract the numerator and denominator by using
+<span class="spadfunFrom" >numer</span><span class="index">numer</span><a name="chapter-9-24"/><span class="index">Fraction</span><a name="chapter-9-25"/> and <span class="spadfunFrom" >denom</span><span class="index">denom</span><a name="chapter-9-26"/><span class="index">Fraction</span><a name="chapter-9-27"/>,
+respectively.
+</p>
+
+
+
+
+<div id="spadComm9-41" class="spadComm" >
+<form id="formComm9-41" action="javascript:makeRequest('9-41');" >
+<input id="comm9-41" type="text" class="command" style="width: 6em;" value="numer(a) " />
+</form>
+<span id="commSav9-41" class="commSav" >numer(a) </span>
+<div id="mathAns9-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>11</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-42" class="spadComm" >
+<form id="formComm9-42" action="javascript:makeRequest('9-42');" >
+<input id="comm9-42" type="text" class="command" style="width: 6em;" value="denom(b) " />
+</form>
+<span id="commSav9-42" class="commSav" >denom(b) </span>
+<div id="mathAns9-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>24</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Operations like <span class="spadfunFrom" >max</span><span class="index">max</span><a name="chapter-9-28"/><span class="index">Fraction</span><a name="chapter-9-29"/>,
+<span class="spadfunFrom" >min</span><span class="index">min</span><a name="chapter-9-30"/><span class="index">Fraction</span><a name="chapter-9-31"/>, <span class="spadfunFrom" >negative?</span><span class="index">negative?</span><a name="chapter-9-32"/><span class="index">Fraction</span><a name="chapter-9-33"/>,
+<span class="spadfunFrom" >positive?</span><span class="index">positive?</span><a name="chapter-9-34"/><span class="index">Fraction</span><a name="chapter-9-35"/> and <span class="spadfunFrom" >zero?</span><span class="index">zero?</span><a name="chapter-9-36"/><span class="index">Fraction</span><a name="chapter-9-37"/>
+are all available if they are provided for the numerators and
+denominators.  
+See <a href="section-9.34.xhtml#IntegerXmpPage" class="ref" >IntegerXmpPage</a>  for examples.
+</p>
+
+
+<p>Don't expect a useful answer from <span class="spadfunFrom" >factor</span><span class="index">factor</span><a name="chapter-9-38"/><span class="index">Fraction</span><a name="chapter-9-39"/>,
+<span class="spadfunFrom" >gcd</span><span class="index">gcd</span><a name="chapter-9-40"/><span class="index">Fraction</span><a name="chapter-9-41"/> or <span class="spadfunFrom" >lcm</span><span class="index">lcm</span><a name="chapter-9-42"/><span class="index">Fraction</span><a name="chapter-9-43"/> if you apply
+them to fractions.
+</p>
+
+
+
+
+<div id="spadComm9-43" class="spadComm" >
+<form id="formComm9-43" action="javascript:makeRequest('9-43');" >
+<input id="comm9-43" type="text" class="command" style="width: 26em;" value="r := (x**2 + 2*x + 1)/(x**2 - 2*x + 1) " />
+</form>
+<span id="commSav9-43" class="commSav" >r := (x**2 + 2*x + 1)/(x**2 - 2*x + 1) </span>
+<div id="mathAns9-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+<p>Since all non-zero fractions are invertible, these operations have trivial
+definitions.
+</p>
+
+
+
+
+<div id="spadComm9-44" class="spadComm" >
+<form id="formComm9-44" action="javascript:makeRequest('9-44');" >
+<input id="comm9-44" type="text" class="command" style="width: 7em;" value="factor(r) " />
+</form>
+<span id="commSav9-44" class="commSav" >factor(r) </span>
+<div id="mathAns9-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Fraction Polynomial Integer
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-44"/><span class="index">Fraction</span><a name="chapter-9-45"/> to apply <span class="spadfunFrom" >factor</span><span class="index">factor</span><a name="chapter-9-46"/><span class="index">Fraction</span><a name="chapter-9-47"/> to
+the numerator and denominator, which is probably what you mean.
+</p>
+
+
+
+
+<div id="spadComm9-45" class="spadComm" >
+<form id="formComm9-45" action="javascript:makeRequest('9-45');" >
+<input id="comm9-45" type="text" class="command" style="width: 10em;" value="map(factor,r) " />
+</form>
+<span id="commSav9-45" class="commSav" >map(factor,r) </span>
+<div id="mathAns9-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Factored Polynomial Integer
+</div>
+
+
+
+<p>Other forms of fractions are available.  Use <span class="teletype">continuedFraction</span>
+to create a continued fraction.
+</p>
+
+
+
+
+<div id="spadComm9-46" class="spadComm" >
+<form id="formComm9-46" action="javascript:makeRequest('9-46');" >
+<input id="comm9-46" type="text" class="command" style="width: 16em;" value="continuedFraction(7/12)" />
+</form>
+<span id="commSav9-46" class="commSav" >continuedFraction(7/12)</span>
+<div id="mathAns9-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ContinuedFraction Integer
+</div>
+
+
+
+<p>Use <span class="teletype">partialFraction</span> to create a partial fraction.
+See 
+<a href="section-9.12.xhtml#ContinuedFractionXmpPage" class="ref" >ContinuedFractionXmpPage</a>  
+and <a href="section-9.61.xhtml#PartialFractionXmpPage" class="ref" >PartialFractionXmpPage</a>  for
+additional information and examples.
+</p>
+
+
+
+
+<div id="spadComm9-47" class="spadComm" >
+<form id="formComm9-47" action="javascript:makeRequest('9-47');" >
+<input id="comm9-47" type="text" class="command" style="width: 14em;" value="partialFraction(7,12)" />
+</form>
+<span id="commSav9-47" class="commSav" >partialFraction(7,12)</span>
+<div id="mathAns9-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>-</mo><mfrac><mn>3</mn><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+<p>Use conversion to create alternative views of fractions with objects
+moved in and out of the numerator and denominator.
+</p>
+
+
+
+
+<div id="spadComm9-48" class="spadComm" >
+<form id="formComm9-48" action="javascript:makeRequest('9-48');" >
+<input id="comm9-48" type="text" class="command" style="width: 13em;" value="g := 2/3 + 4/5*%i " />
+</form>
+<span id="commSav9-48" class="commSav" >g := 2/3 + 4/5*%i </span>
+<div id="mathAns9-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mo>+</mo><mrow><mfrac><mn>4</mn><mn>5</mn></mfrac><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Complex Fraction Integer
+</div>
+
+
+
+<p>Conversion is discussed in detail in 
+Section <a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a> 
+.
+</p>
+
+
+
+
+<div id="spadComm9-49" class="spadComm" >
+<form id="formComm9-49" action="javascript:makeRequest('9-49');" >
+<input id="comm9-49" type="text" class="command" style="width: 15em;" value="g :: FRAC COMPLEX INT " />
+</form>
+<span id="commSav9-49" class="commSav" >g :: FRAC COMPLEX INT </span>
+<div id="mathAns9-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mn>10</mn><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow><mn>15</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Complex Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.27.xhtml" style="margin-right: 10px;">Previous Section 9.27 Float</a><a href="section-9.29.xhtml" style="margin-right: 10px;">Next Section 9.29 FullPartialFractionExpansion</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.29.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.29.xhtml
new file mode 100644
index 0000000..f75c6b9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.29.xhtml
@@ -0,0 +1,528 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.29</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.28.xhtml" style="margin-right: 10px;">Previous Section 9.28 Fraction</a><a href="section-9.30.xhtml" style="margin-right: 10px;">Next Section 9.30 GeneralSparseTable</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.29">
+<h2 class="sectiontitle">9.29  FullPartialFractionExpansion</h2>
+
+
+<a name="FullPartialFractionExpansionXmpPage" class="label"/>
+
+
+<p>The domain <span class="teletype">FullPartialFractionExpansion</span> implements
+factor-free conversion of quotients to full partial fractions.
+</p>
+
+
+<p>Our examples will all involve quotients of univariate polynomials
+with rational number coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-50" class="spadComm" >
+<form id="formComm9-50" action="javascript:makeRequest('9-50');" >
+<input id="comm9-50" type="text" class="command" style="width: 18em;" value="Fx := FRAC UP(x, FRAC INT) " />
+</form>
+<span id="commSav9-50" class="commSav" >Fx := FRAC UP(x, FRAC INT) </span>
+<div id="mathAns9-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FractionUnivariatePolynomial(x,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Here is a simple-looking rational function.
+</p>
+
+
+
+
+<div id="spadComm9-51" class="spadComm" >
+<form id="formComm9-51" action="javascript:makeRequest('9-51');" >
+<input id="comm9-51" type="text" class="command" style="width: 32em;" value="f : Fx := 36 / (x**5-2*x**4-2*x**3+4*x**2+x-2) " />
+</form>
+<span id="commSav9-51" class="commSav" >f : Fx := 36 / (x**5-2*x**4-2*x**3+4*x**2+x-2) </span>
+<div id="mathAns9-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>36</mn><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mi>x</mi><mo>-</mo><mn>2</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>We use <span class="spadfunFrom" >fullPartialFraction</span><span class="index">fullPartialFraction</span><a name="chapter-9-48"/><span class="index">FullPartialFractionExpansion</span><a name="chapter-9-49"/>
+to convert it to an object of type <span class="teletype">FullPartialFractionExpansion</span>.
+</p>
+
+
+
+
+<div id="spadComm9-52" class="spadComm" >
+<form id="formComm9-52" action="javascript:makeRequest('9-52');" >
+<input id="comm9-52" type="text" class="command" style="width: 18em;" value="g := fullPartialFraction f " />
+</form>
+<span id="commSav9-52" class="commSav" >g := fullPartialFraction f </span>
+<div id="mathAns9-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>4</mn><mrow><mi>x</mi><mo>-</mo><mn>2</mn></mrow></mfrac><mo>-</mo><mfrac><mn>4</mn><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow></mfrac><mo>+</mo><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+</div>
+
+
+
+<p>Use a coercion to change it back into a quotient.
+</p>
+
+
+
+
+<div id="spadComm9-53" class="spadComm" >
+<form id="formComm9-53" action="javascript:makeRequest('9-53');" >
+<input id="comm9-53" type="text" class="command" style="width: 6em;" value="g :: Fx " />
+</form>
+<span id="commSav9-53" class="commSav" >g :: Fx </span>
+<div id="mathAns9-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>36</mn><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mi>x</mi><mo>-</mo><mn>2</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>Full partial fractions differentiate faster than rational functions.
+</p>
+
+
+
+
+<div id="spadComm9-54" class="spadComm" >
+<form id="formComm9-54" action="javascript:makeRequest('9-54');" >
+<input id="comm9-54" type="text" class="command" style="width: 10em;" value="g5 := D(g, 5) " />
+</form>
+<span id="commSav9-54" class="commSav" >g5 := D(g, 5) </span>
+<div id="mathAns9-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>480</mn><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mn>6</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>480</mn><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mn>6</mn></msup></mrow></mfrac><mo>+</mo><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mrow><mrow><mn>2160</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>4320</mn></mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>)</mo></mrow><mn>7</mn></msup></mrow></mfrac></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+</div>
+
+
+
+
+
+<div id="spadComm9-55" class="spadComm" >
+<form id="formComm9-55" action="javascript:makeRequest('9-55');" >
+<input id="comm9-55" type="text" class="command" style="width: 10em;" value="f5 := D(f, 5) " />
+</form>
+<span id="commSav9-55" class="commSav" >f5 := D(f, 5) </span>
+<div id="mathAns9-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mrow><mn>544320</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4354560</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14696640</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>28615680</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>40085280</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>46656000</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>39411360</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18247680</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>5870880</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3317760</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>246240</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>20</mn></msup></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>53</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>76</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>159</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>16</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>676</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>391</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>1596</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2527</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1148</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4977</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1372</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>4907</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3444</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2381</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2924</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>276</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>1184</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>208</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>192</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>64</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>We can check that the two forms represent the same function.
+</p>
+
+
+
+
+<div id="spadComm9-56" class="spadComm" >
+<form id="formComm9-56" action="javascript:makeRequest('9-56');" >
+<input id="comm9-56" type="text" class="command" style="width: 8em;" value="g5::Fx - f5 " />
+</form>
+<span id="commSav9-56" class="commSav" >g5::Fx - f5 </span>
+<div id="mathAns9-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>Here are some examples that are more complicated.
+</p>
+
+
+
+
+<div id="spadComm9-57" class="spadComm" >
+<form id="formComm9-57" action="javascript:makeRequest('9-57');" >
+<input id="comm9-57" type="text" class="command" style="width: 39em;" value="f : Fx := (x**5 * (x-1)) / ((x**2 + x + 1)**2 * (x-2)**3) " />
+</form>
+<span id="commSav9-57" class="commSav" >f : Fx := (x**5 * (x-1)) / ((x**2 + x + 1)**2 * (x-2)**3) </span>
+<div id="mathAns9-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mrow><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>8</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-58" class="spadComm" >
+<form id="formComm9-58" action="javascript:makeRequest('9-58');" >
+<input id="comm9-58" type="text" class="command" style="width: 18em;" value="g := fullPartialFraction f " />
+</form>
+<span id="commSav9-58" class="commSav" >g := fullPartialFraction f </span>
+<div id="mathAns9-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mfrac><mn>1952</mn><mn>2401</mn></mfrac><mrow><mi>x</mi><mo>-</mo><mn>2</mn></mrow></mfrac><mo>+</mo><mfrac><mfrac><mn>464</mn><mn>343</mn></mfrac><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mfrac><mn>32</mn><mn>49</mn></mfrac><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mn>3</mn></msup></mrow></mfrac><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mrow><mo>-</mo><mrow><mfrac><mn>179</mn><mn>2401</mn></mfrac><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mfrac><mn>135</mn><mn>2401</mn></mfrac></mrow><mrow><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow></mfrac></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mrow><mrow><mfrac><mn>37</mn><mn>1029</mn></mfrac><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mfrac><mn>20</mn><mn>1029</mn></mfrac></mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+</div>
+
+
+
+
+
+<div id="spadComm9-59" class="spadComm" >
+<form id="formComm9-59" action="javascript:makeRequest('9-59');" >
+<input id="comm9-59" type="text" class="command" style="width: 8em;" value="g :: Fx - f " />
+</form>
+<span id="commSav9-59" class="commSav" >g :: Fx - f </span>
+<div id="mathAns9-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-60" class="spadComm" >
+<form id="formComm9-60" action="javascript:makeRequest('9-60');" >
+<input id="comm9-60" type="text" class="command" style="width: 47em;" value="f : Fx := (2*x**7-7*x**5+26*x**3+8*x) / (x**8-5*x**6+6*x**4+4*x**2-8) " />
+</form>
+<span id="commSav9-60" class="commSav" >f : Fx := (2*x**7-7*x**5+26*x**3+8*x) / (x**8-5*x**6+6*x**4+4*x**2-8) </span>
+<div id="mathAns9-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>26</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mrow><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>8</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-61" class="spadComm" >
+<form id="formComm9-61" action="javascript:makeRequest('9-61');" >
+<input id="comm9-61" type="text" class="command" style="width: 18em;" value="g := fullPartialFraction f " />
+</form>
+<span id="commSav9-61" class="commSav" >g := fullPartialFraction f </span>
+<div id="mathAns9-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>2</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mfrac><mn>1</mn><mn>2</mn></mfrac><mrow><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow></mfrac></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>2</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mn>1</mn><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>)</mo></mrow><mn>3</mn></msup></mrow></mfrac></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mfrac><mn>1</mn><mn>2</mn></mfrac><mrow><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow></mfrac></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+</div>
+
+
+
+
+
+<div id="spadComm9-62" class="spadComm" >
+<form id="formComm9-62" action="javascript:makeRequest('9-62');" >
+<input id="comm9-62" type="text" class="command" style="width: 8em;" value="g :: Fx - f " />
+</form>
+<span id="commSav9-62" class="commSav" >g :: Fx - f </span>
+<div id="mathAns9-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-63" class="spadComm" >
+<form id="formComm9-63" action="javascript:makeRequest('9-63');" >
+<input id="comm9-63" type="text" class="command" style="width: 153em;" value="f:Fx := x**3 / (x**21 + 2*x**20 + 4*x**19 + 7*x**18 + 10*x**17 + 17*x**16 + 22*x**15 + 30*x**14 + 36*x**13 + 40*x**12 + 47*x**11 + 46*x**10 + 49*x**9 + 43*x**8 + 38*x**7 + 32*x**6 + 23*x**5 + 19*x**4 + 10*x**3 + 7*x**2 + 2*x + 1)" />
+</form>
+<span id="commSav9-63" class="commSav" >f:Fx := x**3 / (x**21 + 2*x**20 + 4*x**19 + 7*x**18 + 10*x**17 + 17*x**16 + 22*x**15 + 30*x**14 + 36*x**13 + 40*x**12 + 47*x**11 + 46*x**10 + 49*x**9 + 43*x**8 + 38*x**7 + 32*x**6 + 23*x**5 + 19*x**4 + 10*x**3 + 7*x**2 + 2*x + 1)</span>
+<div id="mathAns9-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>21</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>22</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>40</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>47</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>46</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>49</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>43</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>38</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>32</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>23</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-64" class="spadComm" >
+<form id="formComm9-64" action="javascript:makeRequest('9-64');" >
+<input id="comm9-64" type="text" class="command" style="width: 18em;" value="g := fullPartialFraction f " />
+</form>
+<span id="commSav9-64" class="commSav" >g := fullPartialFraction f </span>
+<div id="mathAns9-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mrow><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow></mfrac></mrow><mo>+</mo><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mrow><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mfrac><mn>19</mn><mn>27</mn></mfrac></mrow><mrow><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow></mfrac></mrow><mo>+</mo><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mrow><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mfrac><mn>1</mn><mn>27</mn></mfrac></mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac></mrow><mo>+</mo><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mrow><mo>-</mo><mrow><mfrac><mn>96556567040</mn><mn>912390759099</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>420961732891</mn><mn>912390759099</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>59101056149</mn><mn>912390759099</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>373545875923</mn><mn>912390759099</mn></mfrac><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mfrac><mn>529673492498</mn><mn>912390759099</mn></mfrac></mrow><mrow><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow></mfrac></mrow><mo>+</mo><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mrow><mo>-</mo><mrow><mfrac><mn>5580868</mn><mn>94070601</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2024443</mn><mn>94070601</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>4321919</mn><mn>94070601</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>84614</mn><mn>1542141</mn></mfrac><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mfrac><mn>5070620</mn><mn>94070601</mn></mfrac></mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac></mrow><mo>+</mo><mrow><msub><mo>&#x2211;</mo><mrow><mrow><mrow><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>=</mo><mn>0</mn></mrow></mrow></msub><mfrac><mrow><mrow><mfrac><mn>1610957</mn><mn>94070601</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2763014</mn><mn>94070601</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2016775</mn><mn>94070601</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>266953</mn><mn>94070601</mn></mfrac><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mfrac><mn>4529359</mn><mn>94070601</mn></mfrac></mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>)</mo></mrow><mn>3</mn></msup></mrow></mfrac></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+</div>
+
+
+
+<p>This verification takes much longer than the conversion to
+partial fractions.
+</p>
+
+
+
+
+<div id="spadComm9-65" class="spadComm" >
+<form id="formComm9-65" action="javascript:makeRequest('9-65');" >
+<input id="comm9-65" type="text" class="command" style="width: 8em;" value="g :: Fx - f " />
+</form>
+<span id="commSav9-65" class="commSav" >g :: Fx - f </span>
+<div id="mathAns9-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>For more information, see the paper: Bronstein, M and Salvy, B.
+``Full Partial Fraction Decomposition of Rational Functions,'' 
+<span class="italic">Proceedings of ISSAC'93, Kiev</span>, ACM Press.  All see
+<a href="section-9.61.xhtml#PartialFractionXmpPage" class="ref" >PartialFractionXmpPage</a>  
+for standard partial fraction decompositions.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.28.xhtml" style="margin-right: 10px;">Previous Section 9.28 Fraction</a><a href="section-9.30.xhtml" style="margin-right: 10px;">Next Section 9.30 GeneralSparseTable</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.3.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.3.xhtml
new file mode 100644
index 0000000..de3ed2b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.3.xhtml
@@ -0,0 +1,645 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.3</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.2.xhtml" style="margin-right: 10px;">Previous Section 9.2 BalancedBinaryTree</a><a href="section-9.4.xhtml" style="margin-right: 10px;">Next Section 9.4 BinaryExpansion</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.3">
+<h2 class="sectiontitle">9.3  BasicOperator</h2>
+
+
+<a name="BasicOperatorXmpPage" class="label"/>
+
+
+<p>A basic operator is an object that can be symbolically applied to a
+list of arguments from a set, the result being a kernel over that set
+or an expression.  In addition to this section, please see
+<a href="section-9.21.xhtml#ExpressionXmpPage" class="ref" >ExpressionXmpPage</a>  and 
+<a href="section-9.37.xhtml#KernelXmpPage" class="ref" >KernelXmpPage</a>  for additional
+information and examples.
+</p>
+
+
+<p>You create an object of type <span class="teletype">BasicOperator</span> by using the
+<span class="spadfunFrom" >operator</span><span class="index">operator</span><a name="chapter-9-6"/><span class="index">BasicOperator</span><a name="chapter-9-7"/> operation.  This first form of
+this operation has one argument and it must be a symbol.  The symbol
+should be quoted in case the name has been used as an identifier to
+which a value has been assigned.
+</p>
+
+
+<p>A frequent application of <span class="teletype">BasicOperator</span> is the creation of an
+operator to represent the unknown function when solving a differential
+equation.
+</p>
+
+
+<p>Let <span class="teletype">y</span> be the unknown function in terms of <span class="teletype">x</span>.
+</p>
+
+
+
+
+<div id="spadComm9-21" class="spadComm" >
+<form id="formComm9-21" action="javascript:makeRequest('9-21');" >
+<input id="comm9-21" type="text" class="command" style="width: 11em;" value="y := operator 'y" />
+</form>
+<span id="commSav9-21" class="commSav" >y := operator 'y</span>
+<div id="mathAns9-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>This is how you enter the equation <span class="teletype">y'' + y' + y = 0</span>.
+</p>
+
+
+
+
+<div id="spadComm9-22" class="spadComm" >
+<form id="formComm9-22" action="javascript:makeRequest('9-22');" >
+<input id="comm9-22" type="text" class="command" style="width: 28em;" value="deq := D(y x, x, 2) + D(y x, x) + y x = 0" />
+</form>
+<span id="commSav9-22" class="commSav" >deq := D(y x, x, 2) + D(y x, x) + y x = 0</span>
+<div id="mathAns9-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mrow><msubsup><mi>y</mi><mrow><mspace width="0.5 em" /></mrow><mrow><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mrow><mrow><msubsup><mi>y</mi><mrow><mspace width="0.5 em" /></mrow><mrow><mo>&prime;</mo></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mrow><mi>y</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mo>=</mo><mn>0</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation Expression Integer
+</div>
+
+
+
+<p>To solve the above equation, enter this.
+</p>
+
+
+
+
+<div id="spadComm9-23" class="spadComm" >
+<form id="formComm9-23" action="javascript:makeRequest('9-23');" >
+<input id="comm9-23" type="text" class="command" style="width: 11em;" value="solve(deq, y, x)" />
+</form>
+<span id="commSav9-23" class="commSav" >solve(deq, y, x)</span>
+<div id="mathAns9-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>particular</mi><mo>=</mo><mn>0</mn></mrow><mo>,</mo><mrow><mi>basis</mi><mo>=</mo><mrow><mo>[</mo><mrow><mrow><mo>cos</mo><mo>(</mo><mfrac><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mi>x</mi><mn>2</mn></mfrac><mo>)</mo></mrow></msup></mrow></mrow><mo>,</mo><mrow><mrow><msup><mi>e</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mi>x</mi><mn>2</mn></mfrac><mo>)</mo></mrow></msup></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mfrac><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow><mn>2</mn></mfrac><mo>)</mo></mrow></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Record(particular: Expression Integer,
+basis: List Expression Integer),...)
+</div>
+
+
+
+<p><!--(This reference doesn't exist!!)See <a href="ugProblemDEQPage" class="ref" >ugProblemDEQPage</a>  
+in Section <a href="ugProblemDEQNumber" class="ref" >ugProblemDEQNumber</a> 
+for this kind of use of <span class="teletype">BasicOperator</span>.-->
+</p>
+
+
+<p>Use the single argument form of <span class="spadfunFrom" >operator</span><span class="index">operator</span><a name="chapter-9-8"/><span class="index">BasicOperator</span><a name="chapter-9-9"/>
+(as above) when you intend to use the operator to create functional
+expressions with an arbitrary number of arguments
+</p>
+
+
+<p><span class="italic">Nary</span> means an arbitrary number of arguments can be used
+in the functional expressions.
+</p>
+
+
+
+
+<div id="spadComm9-24" class="spadComm" >
+<form id="formComm9-24" action="javascript:makeRequest('9-24');" >
+<input id="comm9-24" type="text" class="command" style="width: 5em;" value="nary? y" />
+</form>
+<span id="commSav9-24" class="commSav" >nary? y</span>
+<div id="mathAns9-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-25" class="spadComm" >
+<form id="formComm9-25" action="javascript:makeRequest('9-25');" >
+<input id="comm9-25" type="text" class="command" style="width: 6em;" value="unary? y" />
+</form>
+<span id="commSav9-25" class="commSav" >unary? y</span>
+<div id="mathAns9-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Use the two-argument form when you want to restrict the number of
+arguments in the functional expressions created with the operator.
+</p>
+
+
+<p>This operator can only be used to create functional expressions
+with one argument.
+</p>
+
+
+
+
+<div id="spadComm9-26" class="spadComm" >
+<form id="formComm9-26" action="javascript:makeRequest('9-26');" >
+<input id="comm9-26" type="text" class="command" style="width: 19em;" value="opOne := operator('opOne, 1)" />
+</form>
+<span id="commSav9-26" class="commSav" >opOne := operator('opOne, 1)</span>
+<div id="mathAns9-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>opOne</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+
+
+<div id="spadComm9-27" class="spadComm" >
+<form id="formComm9-27" action="javascript:makeRequest('9-27');" >
+<input id="comm9-27" type="text" class="command" style="width: 8em;" value="nary? opOne" />
+</form>
+<span id="commSav9-27" class="commSav" >nary? opOne</span>
+<div id="mathAns9-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-28" class="spadComm" >
+<form id="formComm9-28" action="javascript:makeRequest('9-28');" >
+<input id="comm9-28" type="text" class="command" style="width: 8em;" value="unary? opOne" />
+</form>
+<span id="commSav9-28" class="commSav" >unary? opOne</span>
+<div id="mathAns9-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >arity</span><span class="index">arity</span><a name="chapter-9-10"/><span class="index">BasicOperator</span><a name="chapter-9-11"/> to learn the number of arguments 
+that can be used.  It returns <span class="teletype">"false"</span> if the operator is nary.
+</p>
+
+
+
+
+<div id="spadComm9-29" class="spadComm" >
+<form id="formComm9-29" action="javascript:makeRequest('9-29');" >
+<input id="comm9-29" type="text" class="command" style="width: 8em;" value="arity opOne" />
+</form>
+<span id="commSav9-29" class="commSav" >arity opOne</span>
+<div id="mathAns9-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(NonNegativeInteger,...)
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >name</span><span class="index">name</span><a name="chapter-9-12"/><span class="index">BasicOperator</span><a name="chapter-9-13"/> to learn the name of an operator.
+</p>
+
+
+
+
+<div id="spadComm9-30" class="spadComm" >
+<form id="formComm9-30" action="javascript:makeRequest('9-30');" >
+<input id="comm9-30" type="text" class="command" style="width: 7em;" value="name opOne" />
+</form>
+<span id="commSav9-30" class="commSav" >name opOne</span>
+<div id="mathAns9-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>opOne</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >is?</span><span class="index">is?</span><a name="chapter-9-14"/><span class="index">BasicOperator</span><a name="chapter-9-15"/> to learn if an operator has a
+particular name.
+</p>
+
+
+
+
+<div id="spadComm9-31" class="spadComm" >
+<form id="formComm9-31" action="javascript:makeRequest('9-31');" >
+<input id="comm9-31" type="text" class="command" style="width: 10em;" value="is?(opOne, 'z2)" />
+</form>
+<span id="commSav9-31" class="commSav" >is?(opOne, 'z2)</span>
+<div id="mathAns9-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>You can also use a string as the name to be tested against.
+</p>
+
+
+
+
+<div id="spadComm9-32" class="spadComm" >
+<form id="formComm9-32" action="javascript:makeRequest('9-32');" >
+<input id="comm9-32" type="text" class="command" style="width: 13em;" value='is?(opOne, "opOne")' />
+</form>
+<span id="commSav9-32" class="commSav" >is?(opOne, "opOne")</span>
+<div id="mathAns9-32" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>You can attached named properties to an operator.  These are rarely
+used at the top-level of the Axiom interactive environment but are
+used with Axiom library source code.
+</p>
+
+
+<p>By default, an operator has no properties.
+</p>
+
+
+
+
+<div id="spadComm9-33" class="spadComm" >
+<form id="formComm9-33" action="javascript:makeRequest('9-33');" >
+<input id="comm9-33" type="text" class="command" style="width: 8em;" value="properties y" />
+</form>
+<span id="commSav9-33" class="commSav" >properties y</span>
+<div id="mathAns9-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>table</mi><mo>(</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AssociationList(String,None)
+</div>
+
+
+
+<p>The interface for setting and getting properties is somewhat awkward
+because the property values are stored as values of type <span class="teletype">None</span>.
+</p>
+
+
+<p>Attach a property by using <span class="spadfunFrom" >setProperty</span><span class="index">setProperty</span><a name="chapter-9-16"/><span class="index">BasicOperator</span><a name="chapter-9-17"/>.
+</p>
+
+
+
+
+<div id="spadComm9-34" class="spadComm" >
+<form id="formComm9-34" action="javascript:makeRequest('9-34');" >
+<input id="comm9-34" type="text" class="command" style="width: 34em;" value='setProperty(y, "use", "unknown function" :: None )' />
+</form>
+<span id="commSav9-34" class="commSav" >setProperty(y, "use", "unknown function" :: None )</span>
+<div id="mathAns9-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+
+
+<div id="spadComm9-35" class="spadComm" >
+<form id="formComm9-35" action="javascript:makeRequest('9-35');" >
+<input id="comm9-35" type="text" class="command" style="width: 8em;" value="properties y" />
+</form>
+<span id="commSav9-35" class="commSav" >properties y</span>
+<div id="mathAns9-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>table</mi><mo>(</mo><mrow><mtext><mrow><mtext mathvariant='monospace'>"use"</mtext></mrow></mtext><mo>=</mo><mi>NONE</mi></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AssociationList(String,None)
+</div>
+
+
+
+<p>We <span class="italic">know</span> the property value has type <span class="teletype">String</span>.
+</p>
+
+
+
+
+<div id="spadComm9-36" class="spadComm" >
+<form id="formComm9-36" action="javascript:makeRequest('9-36');" >
+<input id="comm9-36" type="text" class="command" style="width: 28em;" value='property(y, "use") :: None pretend String' />
+</form>
+<span id="commSav9-36" class="commSav" >property(y, "use") :: None pretend String</span>
+<div id="mathAns9-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"unknownfunction"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >deleteProperty!</span><span class="index">deleteProperty!</span><a name="chapter-9-18"/><span class="index">BasicOperator</span><a name="chapter-9-19"/> to destructively
+remove a property.
+</p>
+
+
+
+
+<div id="spadComm9-37" class="spadComm" >
+<form id="formComm9-37" action="javascript:makeRequest('9-37');" >
+<input id="comm9-37" type="text" class="command" style="width: 17em;" value='deleteProperty!(y, "use")' />
+</form>
+<span id="commSav9-37" class="commSav" >deleteProperty!(y, "use")</span>
+<div id="mathAns9-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+
+
+<div id="spadComm9-38" class="spadComm" >
+<form id="formComm9-38" action="javascript:makeRequest('9-38');" >
+<input id="comm9-38" type="text" class="command" style="width: 8em;" value="properties y" />
+</form>
+<span id="commSav9-38" class="commSav" >properties y</span>
+<div id="mathAns9-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>table</mi><mo>(</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: AssociationList(String,None)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.2.xhtml" style="margin-right: 10px;">Previous Section 9.2 BalancedBinaryTree</a><a href="section-9.4.xhtml" style="margin-right: 10px;">Next Section 9.4 BinaryExpansion</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.30.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.30.xhtml
new file mode 100644
index 0000000..79915b4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.30.xhtml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.30</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.29.xhtml" style="margin-right: 10px;">Previous Section 9.29 FullPartialFractionExpansion</a><a href="section-9.31.xhtml" style="margin-right: 10px;">Next Section 9.31 GroebnerFactorizationPackage</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.30">
+<h2 class="sectiontitle">9.30  GeneralSparseTable</h2>
+
+
+<a name="GeneralSparseTableXmpPage" class="label"/>
+
+
+<p>Sometimes when working with tables there is a natural value to use as
+the entry in all but a few cases.  The <span class="teletype">GeneralSparseTable</span>
+constructor can be used to provide any table type with a default value
+for entries.  See <a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a>  
+for general information about tables.  
+</p>
+
+
+<p>Suppose we launched a fund-raising campaign to raise fifty thousand dollars.
+To record the contributions, we want a table with strings as keys
+(for the names) and integer entries (for the amount).
+In a data base of cash contributions, unless someone
+has been explicitly entered, it is reasonable to assume they have made
+a zero dollar contribution.
+</p>
+
+
+<p>This creates a keyed access file with default entry <span class="teletype">0</span>.
+</p>
+
+
+
+
+<div id="spadComm9-66" class="spadComm" >
+<form id="formComm9-66" action="javascript:makeRequest('9-66');" >
+<input id="comm9-66" type="text" class="command" style="width: 58em;" value="patrons: GeneralSparseTable(String, Integer, KeyedAccessFile(Integer), 0) := table() ; " />
+</form>
+<span id="commSav9-66" class="commSav" >patrons: GeneralSparseTable(String, Integer, KeyedAccessFile(Integer), 0) := table() ; </span>
+<div id="mathAns9-66" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: GeneralSparseTable(String,Integer,KeyedAccessFile Integer,0)
+</div>
+
+
+
+
+<p>Now <span class="teletype">patrons</span> can be used just as any other table.
+Here we record two gifts.
+</p>
+
+
+
+
+<div id="spadComm9-67" class="spadComm" >
+<form id="formComm9-67" action="javascript:makeRequest('9-67');" >
+<input id="comm9-67" type="text" class="command" style="width: 17em;" value='patrons."Smith" := 10500 ' />
+</form>
+<span id="commSav9-67" class="commSav" >patrons."Smith" := 10500 </span>
+<div id="mathAns9-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10500</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-68" class="spadComm" >
+<form id="formComm9-68" action="javascript:makeRequest('9-68');" >
+<input id="comm9-68" type="text" class="command" style="width: 17em;" value='patrons."Jones" := 22000 ' />
+</form>
+<span id="commSav9-68" class="commSav" >patrons."Jones" := 22000 </span>
+<div id="mathAns9-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>22000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Now let us look up the size of the contributions from Jones and Stingy.
+</p>
+
+
+
+
+<div id="spadComm9-69" class="spadComm" >
+<form id="formComm9-69" action="javascript:makeRequest('9-69');" >
+<input id="comm9-69" type="text" class="command" style="width: 12em;" value='patrons."Jones"  ' />
+</form>
+<span id="commSav9-69" class="commSav" >patrons."Jones"  </span>
+<div id="mathAns9-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>22000</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-70" class="spadComm" >
+<form id="formComm9-70" action="javascript:makeRequest('9-70');" >
+<input id="comm9-70" type="text" class="command" style="width: 12em;" value='patrons."Stingy" ' />
+</form>
+<span id="commSav9-70" class="commSav" >patrons."Stingy" </span>
+<div id="mathAns9-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>Have we met our seventy thousand dollar goal?
+</p>
+
+
+
+
+<div id="spadComm9-71" class="spadComm" >
+<form id="formComm9-71" action="javascript:makeRequest('9-71');" >
+<input id="comm9-71" type="text" class="command" style="width: 18em;" value="reduce(+, entries patrons) " />
+</form>
+<span id="commSav9-71" class="commSav" >reduce(+, entries patrons) </span>
+<div id="mathAns9-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>32500</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>So the project is cancelled and we can delete the data base:
+</p>
+
+
+
+
+<div id="spadComm9-72" class="spadComm" >
+<form id="formComm9-72" action="javascript:makeRequest('9-72');" >
+<input id="comm9-72" type="text" class="command" style="width: 17em;" value=")system rm -r kaf*.sdata " />
+</form>
+<span id="commSav9-72" class="commSav" >)system rm -r kaf*.sdata </span>
+<div id="mathAns9-72" ></div>
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.29.xhtml" style="margin-right: 10px;">Previous Section 9.29 FullPartialFractionExpansion</a><a href="section-9.31.xhtml" style="margin-right: 10px;">Next Section 9.31 GroebnerFactorizationPackage</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.31.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.31.xhtml
new file mode 100644
index 0000000..e89bdff
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.31.xhtml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.31</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.30.xhtml" style="margin-right: 10px;">Previous Section 9.30 GeneralSparseTable</a><a href="section-9.32.xhtml" style="margin-right: 10px;">Next Section 9.32 Heap</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.31">
+<h2 class="sectiontitle">9.31  GroebnerFactorizationPackage</h2>
+
+
+<a name="GroebnerFactorizationPackageXmpPage" class="label"/>
+
+
+<p>Solving systems of polynomial equations with the Gr&#x00f6;bner basis
+algorithm can often be very time consuming because, in general, the
+algorithm has exponential run-time.  These systems, which often come
+from concrete applications, frequently have symmetries which are not
+taken advantage of by the algorithm.  However, it often happens in
+this case that the polynomials which occur during the Gr&#x00f6;bner
+calculations are reducible.  Since Axiom has an excellent polynomial
+factorization algorithm, it is very natural to combine the Gr&#x00f6;bner
+and factorization algorithms.
+</p>
+
+
+<p><span class="teletype">GroebnerFactorizationPackage</span> exports the
+<span class="spadfunFrom" >groebnerFactorize</span><span class="index">groebnerFactorize</span><a name="chapter-9-50"/><span class="index">GroebnerFactorizationPackage</span><a name="chapter-9-51"/>
+operation which implements a modified Gr&#x00f6;bner basis algorithm.  In
+this algorithm, each polynomial that is to be put into the partial
+list of the basis is first factored.  The remaining calculation is
+split into as many parts as there are irreducible factors.  Call these
+factors  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>p</mi><mn>1</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>p</mi><mi>n</mi></msub><mo>.</mo></mrow></mstyle></math> In the branches corresponding to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>p</mi><mn>2</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>p</mi><mi>n</mi></msub><mo>,</mo></mrow></mstyle></math> the factor  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>p</mi><mn>1</mn></msub></mrow></mstyle></math> can be divided out, and so on.  This
+package also contains operations that allow you to specify the
+polynomials that are not zero on the common roots of the final
+Gr&#x00f6;bner basis.
+</p>
+
+
+<p>Here is an example from chemistry.  In a theoretical model of 
+cyclohexane,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext>C</mtext></mrow><mn>6</mn></msub><msub><mrow><mtext>H</mtext></mrow><mn>12</mn></msub></mrow></mstyle></math>, the six carbon atoms each sit in
+the center of gravity of a tetrahedron that has two hydrogen atoms and
+two carbon atoms at its corners.  We first normalize and set the
+length of each edge to 1.  Hence, the distances of one fixed carbon
+atom to each of its immediate neighbours is 1.  We will denote the
+distances to the other three carbon atoms by  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>.
+</p>
+
+
+<p>A. Dress developed a theory to decide whether a set of points
+and distances between them can be realized in an  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-dimensional space.
+Here, of course, we have  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>3</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm9-73" class="spadComm" >
+<form id="formComm9-73" action="javascript:makeRequest('9-73');" >
+<input id="comm9-73" type="text" class="command" style="width: 105em;" value="mfzn : SQMATRIX(6,DMP([x,y,z],Fraction INT)) := [ [0,1,1,1,1,1], [1,0,1,8/3,x,8/3], [1,1,0,1,8/3,y], [1,8/3,1,0,1,8/3], [1,x,8/3,1,0,1], [1,8/3,y,8/3,1,0] ] " />
+</form>
+<span id="commSav9-73" class="commSav" >mfzn : SQMATRIX(6,DMP([x,y,z],Fraction INT)) := [ [0,1,1,1,1,1], [1,0,1,8/3,x,8/3], [1,1,0,1,8/3,y], [1,8/3,1,0,1,8/3], [1,x,8/3,1,0,1], [1,8/3,y,8/3,1,0] ] </span>
+<div id="mathAns9-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mi>x</mi></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mi>y</mi></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mi>x</mi></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mi>y</mi></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(6,DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
+</div>
+
+
+
+<p>For cyclohexane the distances have to satisfy this equation.
+</p>
+
+
+
+
+<div id="spadComm9-74" class="spadComm" >
+<form id="formComm9-74" action="javascript:makeRequest('9-74');" >
+<input id="comm9-74" type="text" class="command" style="width: 16em;" value="eq := determinant mfzn " />
+</form>
+<span id="commSav9-74" class="commSav" >eq := determinant mfzn </span>
+<div id="mathAns9-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>-</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>388</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>250</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>250</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mfrac><mn>14575</mn><mn>81</mn></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
+</div>
+
+
+
+<p>They also must satisfy the equations
+given by cyclic shifts of the indeterminates.
+</p>
+
+
+
+
+<div id="spadComm9-75" class="spadComm" >
+<form id="formComm9-75" action="javascript:makeRequest('9-75');" >
+<input id="comm9-75" type="text" class="command" style="width: 53em;" value="groebnerFactorize [eq, eval(eq, [x,y,z], [y,z,x]), eval(eq, [x,y,z], [z,x,y])] " />
+</form>
+<span id="commSav9-75" class="commSav" >groebnerFactorize [eq, eval(eq, [x,y,z], [y,z,x]), eval(eq, [x,y,z], [z,x,y])] </span>
+<div id="mathAns9-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mfrac><mn>121</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>388</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mfrac><mn>250</mn><mn>27</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>388</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mfrac><mn>250</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>250</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mfrac><mn>14575</mn><mn>81</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>-</mo><mfrac><mn>21994</mn><mn>5625</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>21994</mn><mn>5625</mn></mfrac><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mfrac><mn>4427</mn><mn>675</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>z</mi><mo>-</mo><mfrac><mn>463</mn><mn>87</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mfrac><mn>5</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mfrac><mn>265</mn><mn>18</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>y</mi><mo>-</mo><mi>z</mi></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>38</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mfrac><mn>265</mn><mn>9</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mfrac><mn>25</mn><mn>9</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>y</mi><mo>-</mo><mfrac><mn>11</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>z</mi><mo>-</mo><mfrac><mn>11</mn><mn>3</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mfrac><mn>11</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>y</mi><mo>-</mo><mfrac><mn>11</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>z</mi><mo>-</mo><mfrac><mn>11</mn><mn>3</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mi>x</mi><mo>+</mo><mfrac><mn>5</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>y</mi><mo>+</mo><mfrac><mn>5</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>z</mi><mo>+</mo><mfrac><mn>5</mn><mn>3</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mfrac><mn>19</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>y</mi><mo>+</mo><mfrac><mn>5</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>z</mi><mo>+</mo><mfrac><mn>5</mn><mn>3</mn></mfrac></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List 
+DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
+</div>
+
+
+
+<p>The union of the solutions of this list is the solution of our
+original problem.  If we impose positivity conditions, we get two
+relevant ideals.  One ideal is zero-dimensional, namely  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>y</mi><mo>=</mo><mi>z</mi><mo>=</mo><mn>11</mn><mo>/</mo><mn>3</mn></mrow></mstyle></math>, 
+and this determines the ``boat'' form of cyclohexane.  The
+other ideal is one-dimensional, which means that we have a solution
+space given by one parameter.  This gives the ``chair'' form of 
+cyclohexane.  The parameter describes the angle of the ``back of the
+chair.''
+</p>
+
+
+<p><span class="spadfunFrom" >groebnerFactorize</span><span class="index">groebnerFactorize</span><a name="chapter-9-52"/><span class="index">GroebnerFactorizationPackage</span><a name="chapter-9-53"/> has an
+optional <span class="teletype">Boolean</span>-valued second argument.  When it is <span class="teletype">true</span>
+partial results are displayed, since it may happen that the
+calculation does not terminate in a reasonable time.  See the source
+code for <span class="teletype">GroebnerFactorizationPackage</span> in <span style="font-weight: bold;"> groebf.input</span> 
+for more details about the algorithms used.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.30.xhtml" style="margin-right: 10px;">Previous Section 9.30 GeneralSparseTable</a><a href="section-9.32.xhtml" style="margin-right: 10px;">Next Section 9.32 Heap</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.32.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.32.xhtml
new file mode 100644
index 0000000..b6459a8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.32.xhtml
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.32</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.31.xhtml" style="margin-right: 10px;">Previous Section 9.31 GroebnerFactorizationPackage</a><a href="section-9.33.xhtml" style="margin-right: 10px;">Next Section 9.33 HexadecimalExpansion</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.32">
+<h2 class="sectiontitle">9.32  Heap</h2>
+
+
+<a name="HeapXmpPage" class="label"/>
+
+
+<p>The domain <span class="teletype">Heap(S)</span> implements a priority queue of objects of
+type <span class="teletype">S</span> such that the operation <span class="teletype">extract!</span> removes and
+returns the maximum element.  The implementation represents heaps as
+flexible arrays (see 
+<a href="section-9.26.xhtml#FlexibleArrayXmpPage" class="ref" >FlexibleArrayXmpPage</a> ).  
+The representation and algorithms give complexity of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>O</mi><mo>(</mo><mo>log</mo><mo>(</mo><mi>n</mi><mo>)</mo><mo>)</mo></mrow></mstyle></math> 
+for insertion and extractions, and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>O</mi><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mstyle></math> for construction.
+</p>
+
+
+<p>Create a heap of six elements.
+</p>
+
+
+
+
+<div id="spadComm9-76" class="spadComm" >
+<form id="formComm9-76" action="javascript:makeRequest('9-76');" >
+<input id="comm9-76" type="text" class="command" style="width: 18em;" value="h := heap [-4,9,11,2,7,-7]" />
+</form>
+<span id="commSav9-76" class="commSav" >h := heap [-4,9,11,2,7,-7]</span>
+<div id="mathAns9-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>9</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Heap Integer
+</div>
+
+
+
+<p>Use <span class="teletype">insert!</span> to add an element.
+</p>
+
+
+
+
+<div id="spadComm9-77" class="spadComm" >
+<form id="formComm9-77" action="javascript:makeRequest('9-77');" >
+<input id="comm9-77" type="text" class="command" style="width: 8em;" value="insert!(3,h)" />
+</form>
+<span id="commSav9-77" class="commSav" >insert!(3,h)</span>
+<div id="mathAns9-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>9</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Heap Integer
+</div>
+
+
+
+<p>The operation <span class="teletype">extract!</span> removes and returns the maximum element.
+</p>
+
+
+
+
+<div id="spadComm9-78" class="spadComm" >
+<form id="formComm9-78" action="javascript:makeRequest('9-78');" >
+<input id="comm9-78" type="text" class="command" style="width: 7em;" value="extract! h" />
+</form>
+<span id="commSav9-78" class="commSav" >extract! h</span>
+<div id="mathAns9-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>11</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The internal structure of <span class="teletype">h</span> has been appropriately adjusted.
+</p>
+
+
+
+
+<div id="spadComm9-79" class="spadComm" >
+<form id="formComm9-79" action="javascript:makeRequest('9-79');" >
+<input id="comm9-79" type="text" class="command" style="width: 1em;" value="h" />
+</form>
+<span id="commSav9-79" class="commSav" >h</span>
+<div id="mathAns9-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>3</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Heap Integer
+</div>
+
+
+
+<p>Now <span class="teletype">extract!</span> elements repeatedly until none are left, collecting
+the elements in a list.
+</p>
+
+
+
+
+<div id="spadComm9-80" class="spadComm" >
+<form id="formComm9-80" action="javascript:makeRequest('9-80');" >
+<input id="comm9-80" type="text" class="command" style="width: 22em;" value="[extract!(h) while not empty?(h)]" />
+</form>
+<span id="commSav9-80" class="commSav" >[extract!(h) while not empty?(h)]</span>
+<div id="mathAns9-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>9</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>Another way to produce the same result is by defining a <span class="teletype">heapsort</span>
+function.
+</p>
+
+
+
+
+<div id="spadComm9-81" class="spadComm" >
+<form id="formComm9-81" action="javascript:makeRequest('9-81');" >
+<input id="comm9-81" type="text" class="command" style="width: 41em;" value="heapsort(x) == (empty? x => []; cons(extract!(x),heapsort x))" />
+</form>
+<span id="commSav9-81" class="commSav" >heapsort(x) == (empty? x => []; cons(extract!(x),heapsort x))</span>
+<div id="mathAns9-81" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>Create another sample heap.
+</p>
+
+
+
+
+<div id="spadComm9-82" class="spadComm" >
+<form id="formComm9-82" action="javascript:makeRequest('9-82');" >
+<input id="comm9-82" type="text" class="command" style="width: 21em;" value="h1 := heap [17,-4,9,-11,2,7,-7]" />
+</form>
+<span id="commSav9-82" class="commSav" >h1 := heap [17,-4,9,-11,2,7,-7]</span>
+<div id="mathAns9-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>17</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>9</mn><mo>,</mo><mo>-</mo><mn>11</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>,</mo><mn>7</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Heap Integer
+</div>
+
+
+
+<p>Apply <span class="teletype">heapsort</span> to present elements in order.
+</p>
+
+
+
+
+<div id="spadComm9-83" class="spadComm" >
+<form id="formComm9-83" action="javascript:makeRequest('9-83');" >
+<input id="comm9-83" type="text" class="command" style="width: 8em;" value="heapsort h1" />
+</form>
+<span id="commSav9-83" class="commSav" >heapsort h1</span>
+<div id="mathAns9-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>17</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>,</mo><mo>-</mo><mn>7</mn><mo>,</mo><mo>-</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.31.xhtml" style="margin-right: 10px;">Previous Section 9.31 GroebnerFactorizationPackage</a><a href="section-9.33.xhtml" style="margin-right: 10px;">Next Section 9.33 HexadecimalExpansion</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.33.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.33.xhtml
new file mode 100644
index 0000000..ba7474d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.33.xhtml
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.33</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.32.xhtml" style="margin-right: 10px;">Previous Section 9.32 Heap</a><a href="section-9.34.xhtml" style="margin-right: 10px;">Next Section 9.34 Integer</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.33">
+<h2 class="sectiontitle">9.33  HexadecimalExpansion</h2>
+
+
+<a name="HexadecimalExpansionXmpPage" class="label"/>
+
+
+<p>All rationals have repeating hexadecimal expansions.  The operation
+<span class="spadfunFrom" >hex</span><span class="index">hex</span><a name="chapter-9-54"/><span class="index">HexadecimalExpansion</span><a name="chapter-9-55"/> returns these expansions of
+type <span class="teletype">HexadecimalExpansion</span>.  Operations to access the individual
+numerals of a hexadecimal expansion can be obtained by converting the
+value to <span class="teletype">RadixExpansion(16)</span>.  More examples of expansions are
+available in the 
+<a href="section-9.15.xhtml#DecimalExpansionXmpPage" class="ref" >DecimalExpansionXmpPage</a> ,
+<a href="section-9.4.xhtml#BinaryExpansionXmpPage" class="ref" >BinaryExpansionXmpPage</a> , and 
+<a href="section-9.65.xhtml#RadixExpansionXmpPage" class="ref" >RadixExpansionXmpPage</a> .
+</p>
+
+
+<p>This is a hexadecimal expansion of a rational number.
+</p>
+
+
+
+
+<div id="spadComm9-84" class="spadComm" >
+<form id="formComm9-84" action="javascript:makeRequest('9-84');" >
+<input id="comm9-84" type="text" class="command" style="width: 10em;" value="r := hex(22/7) " />
+</form>
+<span id="commSav9-84" class="commSav" >r := hex(22/7) </span>
+<div id="mathAns9-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>249</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: HexadecimalExpansion
+</div>
+
+
+
+<p>Arithmetic is exact.
+</p>
+
+
+
+
+<div id="spadComm9-85" class="spadComm" >
+<form id="formComm9-85" action="javascript:makeRequest('9-85');" >
+<input id="comm9-85" type="text" class="command" style="width: 9em;" value="r + hex(6/7) " />
+</form>
+<span id="commSav9-85" class="commSav" >r + hex(6/7) </span>
+<div id="mathAns9-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: HexadecimalExpansion
+</div>
+
+
+
+<p>The period of the expansion can be short or long ...
+</p>
+
+
+
+
+<div id="spadComm9-86" class="spadComm" >
+<form id="formComm9-86" action="javascript:makeRequest('9-86');" >
+<input id="comm9-86" type="text" class="command" style="width: 20em;" value="[hex(1/i) for i in 350..354] " />
+</form>
+<span id="commSav9-86" class="commSav" >[hex(1/i) for i in 350..354] </span>
+<div id="mathAns9-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn><mrow><mover accent="true"><mrow><mrow><mtext>0BB3EE721A54D88</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mrow><mtext>00BAB6561</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>00</mn><mrow><mover accent="true"><mrow><mrow><mtext>BA2E8</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mrow><mtext>00B9A7862A0FF465879D5F</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn><mrow><mover accent="true"><mrow><mrow><mtext>0B92143FA36F5E02E4850FE8DBD78</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List HexadecimalExpansion
+</div>
+
+
+
+<p>or very long!
+</p>
+
+
+
+
+<div id="spadComm9-87" class="spadComm" >
+<form id="formComm9-87" action="javascript:makeRequest('9-87');" >
+<input id="comm9-87" type="text" class="command" style="width: 8em;" value="hex(1/1007) " />
+</form>
+<span id="commSav9-87" class="commSav" >hex(1/1007) </span>
+<div id="mathAns9-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mrow><mtext>0041149783F0BF2C7D13933192AF6980619EE345E91EC2BB9D5CC</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mover accent="true"><mrow><mrow><mtext>A5C071E40926E54E8DDAE24196C0B2F8A0AAD60DBA57F5D4C8</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mover accent="true"><mrow><mrow><mtext>536262210C74F1</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: HexadecimalExpansion
+</div>
+
+
+
+<p>These numbers are bona fide algebraic objects.
+</p>
+
+
+
+
+<div id="spadComm9-88" class="spadComm" >
+<form id="formComm9-88" action="javascript:makeRequest('9-88');" >
+<input id="comm9-88" type="text" class="command" style="width: 30em;" value="p := hex(1/4)*x**2 + hex(2/3)*x + hex(4/9)  " />
+</form>
+<span id="commSav9-88" class="commSav" >p := hex(1/4)*x**2 + hex(2/3)*x + hex(4/9)  </span>
+<div id="mathAns9-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>0</mn><mo>.</mo><mn>4</mn></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mrow><mtext>A</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mrow><mtext>71C</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial HexadecimalExpansion
+</div>
+
+
+
+
+
+<div id="spadComm9-89" class="spadComm" >
+<form id="formComm9-89" action="javascript:makeRequest('9-89');" >
+<input id="comm9-89" type="text" class="command" style="width: 9em;" value="q := D(p, x) " />
+</form>
+<span id="commSav9-89" class="commSav" >q := D(p, x) </span>
+<div id="mathAns9-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>0</mn><mo>.</mo><mn>8</mn></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mrow><mtext>A</mtext></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial HexadecimalExpansion
+</div>
+
+
+
+
+
+<div id="spadComm9-90" class="spadComm" >
+<form id="formComm9-90" action="javascript:makeRequest('9-90');" >
+<input id="comm9-90" type="text" class="command" style="width: 10em;" value="g := gcd(p, q)" />
+</form>
+<span id="commSav9-90" class="commSav" >g := gcd(p, q)</span>
+<div id="mathAns9-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>+</mo><mrow><mn>1</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>5</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial HexadecimalExpansion
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.32.xhtml" style="margin-right: 10px;">Previous Section 9.32 Heap</a><a href="section-9.34.xhtml" style="margin-right: 10px;">Next Section 9.34 Integer</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.34.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.34.xhtml
new file mode 100644
index 0000000..156efdd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.34.xhtml
@@ -0,0 +1,1605 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.34</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.33.xhtml" style="margin-right: 10px;">Previous Section 9.33 HexadecimalExpansion</a><a href="section-9.35.xhtml" style="margin-right: 10px;">Next Section 9.35 IntegerLinearDependence</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.34">
+<h2 class="sectiontitle">9.34  Integer</h2>
+
+
+<a name="IntegerXmpPage" class="label"/>
+
+
+<p>Axiom provides many operations for manipulating arbitrary precision
+integers.  In this section we will show some of those that come from
+<span class="teletype">Integer</span> itself plus some that are implemented in other packages.
+More examples of using integers are in the following sections:
+<a href="ugIntroNumbersPage" class="ref" >ugIntroNumbersPage</a>  in section 
+<a href="ugIntroNumbersNumber" class="ref" >ugIntroNumbersNumber</a> 
+<a href="section-9.36.xhtml#IntegerNumberTheoryFunctionsXmpPage" class="ref" >IntegerNumberTheoryFunctionsXmpPage</a> ,
+<a href="section-9.15.xhtml#DecimalExpansionXmpPage" class="ref" >DecimalExpansionXmpPage</a> , 
+<a href="section-9.4.xhtml#BinaryExpansionXmpPage" class="ref" >BinaryExpansionXmpPage</a> ,
+<a href="section-9.33.xhtml#HexadecimalExpansionXmpPage" class="ref" >HexadecimalExpansionXmpPage</a> , and 
+<a href="section-9.65.xhtml#RadixExpansionXmpPage" class="ref" >RadixExpansionXmpPage</a> .
+</p>
+
+
+
+<a name="subsec-9.34.1"/>
+<div class="subsection"  id="subsec-9.34.1">
+<h3 class="subsectitle">9.34.1  Basic Functions</h3>
+
+
+
+<p>The size of an integer in Axiom is only limited by the amount of
+computer storage you have available.  The usual arithmetic operations
+are available.
+</p>
+
+
+
+
+<div id="spadComm9-91" class="spadComm" >
+<form id="formComm9-91" action="javascript:makeRequest('9-91');" >
+<input id="comm9-91" type="text" class="command" style="width: 17em;" value="2**(5678 - 4856 + 2 * 17)" />
+</form>
+<span id="commSav9-91" class="commSav" >2**(5678 - 4856 + 2 * 17)</span>
+<div id="mathAns9-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>48048107704350081471815409251259243912395261398716822634738556100</mn></mtd></mtr><mtr><mtd><mn>88084200076308293086342527091412083743074572278211496076276922026</mn></mtd></mtr><mtr><mtd><mn>43343568752733498024953930242542523045817764949544214392905306388</mn></mtd></mtr><mtr><mtd><mn>478705146745768073877141698859815495632935288783334250628775936</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>There are a number of ways of working with the sign of an integer.
+Let's use this <span class="teletype">x</span> as an example.
+</p>
+
+
+
+
+<div id="spadComm9-92" class="spadComm" >
+<form id="formComm9-92" action="javascript:makeRequest('9-92');" >
+<input id="comm9-92" type="text" class="command" style="width: 7em;" value="x := -101 " />
+</form>
+<span id="commSav9-92" class="commSav" >x := -101 </span>
+<div id="mathAns9-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>101</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>First of all, there is the absolute value function.
+</p>
+
+
+
+
+<div id="spadComm9-93" class="spadComm" >
+<form id="formComm9-93" action="javascript:makeRequest('9-93');" >
+<input id="comm9-93" type="text" class="command" style="width: 5em;" value="abs(x) " />
+</form>
+<span id="commSav9-93" class="commSav" >abs(x) </span>
+<div id="mathAns9-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>101</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >sign</span><span class="index">sign</span><a name="chapter-9-56"/><span class="index">Integer</span><a name="chapter-9-57"/> operation returns <span class="teletype">-1</span> if its argument
+is negative, <span class="teletype">0</span> if zero and <span class="teletype">1</span> if positive.
+</p>
+
+
+
+
+<div id="spadComm9-94" class="spadComm" >
+<form id="formComm9-94" action="javascript:makeRequest('9-94');" >
+<input id="comm9-94" type="text" class="command" style="width: 6em;" value="sign(x) " />
+</form>
+<span id="commSav9-94" class="commSav" >sign(x) </span>
+<div id="mathAns9-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>You can determine if an integer is negative in several other ways.
+</p>
+
+
+
+
+<div id="spadComm9-95" class="spadComm" >
+<form id="formComm9-95" action="javascript:makeRequest('9-95');" >
+<input id="comm9-95" type="text" class="command" style="width: 4em;" value="x &lt; 0 " />
+</form>
+<span id="commSav9-95" class="commSav" >x &lt; 0 </span>
+<div id="mathAns9-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-96" class="spadComm" >
+<form id="formComm9-96" action="javascript:makeRequest('9-96');" >
+<input id="comm9-96" type="text" class="command" style="width: 6em;" value="x &lt;= -1 " />
+</form>
+<span id="commSav9-96" class="commSav" >x &lt;= -1 </span>
+<div id="mathAns9-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-97" class="spadComm" >
+<form id="formComm9-97" action="javascript:makeRequest('9-97');" >
+<input id="comm9-97" type="text" class="command" style="width: 9em;" value="negative?(x) " />
+</form>
+<span id="commSav9-97" class="commSav" >negative?(x) </span>
+<div id="mathAns9-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Similarly, you can find out if it is positive.
+</p>
+
+
+
+
+<div id="spadComm9-98" class="spadComm" >
+<form id="formComm9-98" action="javascript:makeRequest('9-98');" >
+<input id="comm9-98" type="text" class="command" style="width: 4em;" value="x > 0 " />
+</form>
+<span id="commSav9-98" class="commSav" >x > 0 </span>
+<div id="mathAns9-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-99" class="spadComm" >
+<form id="formComm9-99" action="javascript:makeRequest('9-99');" >
+<input id="comm9-99" type="text" class="command" style="width: 5em;" value="x >= 1 " />
+</form>
+<span id="commSav9-99" class="commSav" >x >= 1 </span>
+<div id="mathAns9-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-100" class="spadComm" >
+<form id="formComm9-100" action="javascript:makeRequest('9-100');" >
+<input id="comm9-100" type="text" class="command" style="width: 9em;" value="positive?(x) " />
+</form>
+<span id="commSav9-100" class="commSav" >positive?(x) </span>
+<div id="mathAns9-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>This is the recommended way of determining whether an integer is zero.
+</p>
+
+
+
+
+<div id="spadComm9-101" class="spadComm" >
+<form id="formComm9-101" action="javascript:makeRequest('9-101');" >
+<input id="comm9-101" type="text" class="command" style="width: 6em;" value="zero?(x) " />
+</form>
+<span id="commSav9-101" class="commSav" >zero?(x) </span>
+<div id="mathAns9-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p>Use the <span class="spadfunFrom" >zero?</span><span class="index">zero?</span><a name="chapter-9-58"/><span class="index">Integer</span><a name="chapter-9-59"/> operation whenever you are
+testing any mathematical object for equality with zero.  This is
+usually more efficient that using <span class="teletype">=</span> (think of matrices: it is
+easier to tell if a matrix is zero by just checking term by term than
+constructing another ``zero'' matrix and comparing the two matrices
+term by term) and also avoids the problem that <span class="teletype">=</span> is usually used
+for creating equations.<br/>
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>This is the recommended way of determining whether an integer is equal
+to one.
+</p>
+
+
+
+
+<div id="spadComm9-102" class="spadComm" >
+<form id="formComm9-102" action="javascript:makeRequest('9-102');" >
+<input id="comm9-102" type="text" class="command" style="width: 6em;" value="one?(x) " />
+</form>
+<span id="commSav9-102" class="commSav" >one?(x) </span>
+<div id="mathAns9-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>This syntax is used to test equality using <span class="spadopFrom" title="Integer">=</span>.
+It says that you want a <span class="teletype">Boolean</span> (<span class="teletype">true</span> or <span class="teletype">false</span>)
+answer rather than an equation.
+</p>
+
+
+
+
+<div id="spadComm9-103" class="spadComm" >
+<form id="formComm9-103" action="javascript:makeRequest('9-103');" >
+<input id="comm9-103" type="text" class="command" style="width: 13em;" value="(x = -101)@Boolean " />
+</form>
+<span id="commSav9-103" class="commSav" >(x = -101)@Boolean </span>
+<div id="mathAns9-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The operations <span class="spadfunFrom" >odd?</span><span class="index">odd?</span><a name="chapter-9-60"/><span class="index">Integer</span><a name="chapter-9-61"/> and
+<span class="spadfunFrom" >even?</span><span class="index">even?</span><a name="chapter-9-62"/><span class="index">Integer</span><a name="chapter-9-63"/> determine whether an integer is odd or
+even, respectively.  They each return a <span class="teletype">Boolean</span> object.
+</p>
+
+
+
+
+<div id="spadComm9-104" class="spadComm" >
+<form id="formComm9-104" action="javascript:makeRequest('9-104');" >
+<input id="comm9-104" type="text" class="command" style="width: 6em;" value="odd?(x) " />
+</form>
+<span id="commSav9-104" class="commSav" >odd?(x) </span>
+<div id="mathAns9-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-105" class="spadComm" >
+<form id="formComm9-105" action="javascript:makeRequest('9-105');" >
+<input id="comm9-105" type="text" class="command" style="width: 6em;" value="even?(x) " />
+</form>
+<span id="commSav9-105" class="commSav" >even?(x) </span>
+<div id="mathAns9-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >gcd</span><span class="index">gcd</span><a name="chapter-9-64"/><span class="index">Integer</span><a name="chapter-9-65"/> computes the greatest common
+divisor of two integers.
+</p>
+
+
+
+
+<div id="spadComm9-106" class="spadComm" >
+<form id="formComm9-106" action="javascript:makeRequest('9-106');" >
+<input id="comm9-106" type="text" class="command" style="width: 11em;" value="gcd(56788,43688)" />
+</form>
+<span id="commSav9-106" class="commSav" >gcd(56788,43688)</span>
+<div id="mathAns9-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >lcm</span><span class="index">lcm</span><a name="chapter-9-66"/><span class="index">Integer</span><a name="chapter-9-67"/> computes their least common multiple.
+</p>
+
+
+
+
+<div id="spadComm9-107" class="spadComm" >
+<form id="formComm9-107" action="javascript:makeRequest('9-107');" >
+<input id="comm9-107" type="text" class="command" style="width: 11em;" value="lcm(56788,43688)" />
+</form>
+<span id="commSav9-107" class="commSav" >lcm(56788,43688)</span>
+<div id="mathAns9-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>620238536</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>To determine the maximum of two integers, use <span class="spadfunFrom" >max</span><span class="index">max</span><a name="chapter-9-68"/><span class="index">Integer</span><a name="chapter-9-69"/>.
+</p>
+
+
+
+
+<div id="spadComm9-108" class="spadComm" >
+<form id="formComm9-108" action="javascript:makeRequest('9-108');" >
+<input id="comm9-108" type="text" class="command" style="width: 8em;" value="max(678,567)" />
+</form>
+<span id="commSav9-108" class="commSav" >max(678,567)</span>
+<div id="mathAns9-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>678</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>To determine the minimum, use <span class="spadfunFrom" >min</span><span class="index">min</span><a name="chapter-9-70"/><span class="index">Integer</span><a name="chapter-9-71"/>.
+</p>
+
+
+
+
+<div id="spadComm9-109" class="spadComm" >
+<form id="formComm9-109" action="javascript:makeRequest('9-109');" >
+<input id="comm9-109" type="text" class="command" style="width: 8em;" value="min(678,567)" />
+</form>
+<span id="commSav9-109" class="commSav" >min(678,567)</span>
+<div id="mathAns9-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>567</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The <span class="teletype">reduce</span> operation is used to extend binary operations to more
+than two arguments.  For example, you can use <span class="teletype">reduce</span> to find the
+maximum integer in a list or compute the least common multiple of all
+integers in the list.
+</p>
+
+
+
+
+<div id="spadComm9-110" class="spadComm" >
+<form id="formComm9-110" action="javascript:makeRequest('9-110');" >
+<input id="comm9-110" type="text" class="command" style="width: 22em;" value="reduce(max,[2,45,-89,78,100,-45])" />
+</form>
+<span id="commSav9-110" class="commSav" >reduce(max,[2,45,-89,78,100,-45])</span>
+<div id="mathAns9-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>100</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-111" class="spadComm" >
+<form id="formComm9-111" action="javascript:makeRequest('9-111');" >
+<input id="comm9-111" type="text" class="command" style="width: 22em;" value="reduce(min,[2,45,-89,78,100,-45])" />
+</form>
+<span id="commSav9-111" class="commSav" >reduce(min,[2,45,-89,78,100,-45])</span>
+<div id="mathAns9-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>89</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-112" class="spadComm" >
+<form id="formComm9-112" action="javascript:makeRequest('9-112');" >
+<input id="comm9-112" type="text" class="command" style="width: 22em;" value="reduce(gcd,[2,45,-89,78,100,-45])" />
+</form>
+<span id="commSav9-112" class="commSav" >reduce(gcd,[2,45,-89,78,100,-45])</span>
+<div id="mathAns9-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-113" class="spadComm" >
+<form id="formComm9-113" action="javascript:makeRequest('9-113');" >
+<input id="comm9-113" type="text" class="command" style="width: 22em;" value="reduce(lcm,[2,45,-89,78,100,-45])" />
+</form>
+<span id="commSav9-113" class="commSav" >reduce(lcm,[2,45,-89,78,100,-45])</span>
+<div id="mathAns9-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1041300</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The infix operator ``/'' is <span class="italic">not</span> used to compute the quotient of
+integers.  Rather, it is used to create rational numbers as described
+in <a href="section-9.12.xhtml#ContinuedFractionXmpPage" class="ref" >FractionXmpPage</a> .
+</p>
+
+
+
+
+<div id="spadComm9-114" class="spadComm" >
+<form id="formComm9-114" action="javascript:makeRequest('9-114');" >
+<input id="comm9-114" type="text" class="command" style="width: 4em;" value="13 / 4" />
+</form>
+<span id="commSav9-114" class="commSav" >13 / 4</span>
+<div id="mathAns9-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>13</mn><mn>4</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The infix operation <span class="spadfunFrom" >quo</span><span class="index">quo</span><a name="chapter-9-72"/><span class="index">Integer</span><a name="chapter-9-73"/> computes the integer
+quotient.
+</p>
+
+
+
+
+<div id="spadComm9-115" class="spadComm" >
+<form id="formComm9-115" action="javascript:makeRequest('9-115');" >
+<input id="comm9-115" type="text" class="command" style="width: 6em;" value="13 quo 4" />
+</form>
+<span id="commSav9-115" class="commSav" >13 quo 4</span>
+<div id="mathAns9-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The infix operation <span class="spadfunFrom" >rem</span><span class="index">rem</span><a name="chapter-9-74"/><span class="index">Integer</span><a name="chapter-9-75"/> computes the integer
+remainder.
+</p>
+
+
+
+
+<div id="spadComm9-116" class="spadComm" >
+<form id="formComm9-116" action="javascript:makeRequest('9-116');" >
+<input id="comm9-116" type="text" class="command" style="width: 6em;" value="13 rem 4" />
+</form>
+<span id="commSav9-116" class="commSav" >13 rem 4</span>
+<div id="mathAns9-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>One integer is evenly divisible by another if the remainder is zero.
+The operation <span class="spadfunFrom" >exquo</span><span class="index">exquo</span><a name="chapter-9-76"/><span class="index">Integer</span><a name="chapter-9-77"/> can also be used.  See
+<a href="ugTypesUnionsPage" class="ref" >ugTypesUnionsPage</a>  in Section 
+<a href="ugTypesUnionsNumber" class="ref" >ugTypesUnionsNumber</a>  for an
+example.
+</p>
+
+
+
+
+<div id="spadComm9-117" class="spadComm" >
+<form id="formComm9-117" action="javascript:makeRequest('9-117');" >
+<input id="comm9-117" type="text" class="command" style="width: 23em;" value="zero?(167604736446952 rem 2003644)" />
+</form>
+<span id="commSav9-117" class="commSav" >zero?(167604736446952 rem 2003644)</span>
+<div id="mathAns9-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >divide</span><span class="index">divide</span><a name="chapter-9-78"/><span class="index">Integer</span><a name="chapter-9-79"/> returns a record of the
+quotient and remainder and thus is more efficient when both are needed.
+</p>
+
+
+
+
+<div id="spadComm9-118" class="spadComm" >
+<form id="formComm9-118" action="javascript:makeRequest('9-118');" >
+<input id="comm9-118" type="text" class="command" style="width: 12em;" value="d := divide(13,4) " />
+</form>
+<span id="commSav9-118" class="commSav" >d := divide(13,4) </span>
+<div id="mathAns9-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>quotient</mi><mo>=</mo><mn>3</mn></mrow><mo>,</mo><mrow><mi>remainder</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(quotient: Integer,remainder: Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-119" class="spadComm" >
+<form id="formComm9-119" action="javascript:makeRequest('9-119');" >
+<input id="comm9-119" type="text" class="command" style="width: 8em;" value="d.quotient " />
+</form>
+<span id="commSav9-119" class="commSav" >d.quotient </span>
+<div id="mathAns9-119" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Records are discussed in detail in Section 
+<a href="section-2.4.xhtml#ugTypesRecords" class="ref" >ugTypesRecords</a> .
+</p>
+
+
+
+
+<div id="spadComm9-120" class="spadComm" >
+<form id="formComm9-120" action="javascript:makeRequest('9-120');" >
+<input id="comm9-120" type="text" class="command" style="width: 8em;" value="d.remainder " />
+</form>
+<span id="commSav9-120" class="commSav" >d.remainder </span>
+<div id="mathAns9-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.34.2"/>
+<div class="subsection"  id="subsec-9.34.2">
+<h3 class="subsectitle">9.34.2  Primes and Factorization</h3>
+
+
+
+<p>Use the operation <span class="spadfunFrom" >factor</span><span class="index">factor</span><a name="chapter-9-80"/><span class="index">Integer</span><a name="chapter-9-81"/> to factor integers.
+It returns an object of type <span class="teletype">Factored Integer</span>.
+See <a href="section-9.22.xhtml#FactoredXmpPage" class="ref" >FactoredXmpPage</a>  
+for a discussion of the manipulation of factored objects.
+</p>
+
+
+
+
+<div id="spadComm9-121" class="spadComm" >
+<form id="formComm9-121" action="javascript:makeRequest('9-121');" >
+<input id="comm9-121" type="text" class="command" style="width: 9em;" value="factor 102400" />
+</form>
+<span id="commSav9-121" class="commSav" >factor 102400</span>
+<div id="mathAns9-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mn>2</mn><mn>12</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mn>5</mn><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >prime?</span><span class="index">prime?</span><a name="chapter-9-82"/><span class="index">Integer</span><a name="chapter-9-83"/> returns <span class="teletype">true</span> or 
+<span class="teletype">false</span> depending on whether its argument is a prime.
+</p>
+
+
+
+
+<div id="spadComm9-122" class="spadComm" >
+<form id="formComm9-122" action="javascript:makeRequest('9-122');" >
+<input id="comm9-122" type="text" class="command" style="width: 6em;" value="prime? 7" />
+</form>
+<span id="commSav9-122" class="commSav" >prime? 7</span>
+<div id="mathAns9-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-123" class="spadComm" >
+<form id="formComm9-123" action="javascript:makeRequest('9-123');" >
+<input id="comm9-123" type="text" class="command" style="width: 6em;" value="prime? 8" />
+</form>
+<span id="commSav9-123" class="commSav" >prime? 8</span>
+<div id="mathAns9-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >nextPrime</span><span class="index">nextPrime</span><a name="chapter-9-84"/><span class="index">IntegerPrimesPackage</span><a name="chapter-9-85"/> returns the
+least prime number greater than its argument.
+</p>
+
+
+
+
+<div id="spadComm9-124" class="spadComm" >
+<form id="formComm9-124" action="javascript:makeRequest('9-124');" >
+<input id="comm9-124" type="text" class="command" style="width: 9em;" value="nextPrime 100" />
+</form>
+<span id="commSav9-124" class="commSav" >nextPrime 100</span>
+<div id="mathAns9-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>101</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >prevPrime</span><span class="index">prevPrime</span><a name="chapter-9-86"/><span class="index">IntegerPrimesPackage</span><a name="chapter-9-87"/> returns
+the greatest prime number less than its argument.
+</p>
+
+
+
+
+<div id="spadComm9-125" class="spadComm" >
+<form id="formComm9-125" action="javascript:makeRequest('9-125');" >
+<input id="comm9-125" type="text" class="command" style="width: 9em;" value="prevPrime 100" />
+</form>
+<span id="commSav9-125" class="commSav" >prevPrime 100</span>
+<div id="mathAns9-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>97</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>To compute all primes between two integers (inclusively), use the
+operation <span class="spadfunFrom" >primes</span><span class="index">primes</span><a name="chapter-9-88"/><span class="index">IntegerPrimesPackage</span><a name="chapter-9-89"/>.
+</p>
+
+
+
+
+<div id="spadComm9-126" class="spadComm" >
+<form id="formComm9-126" action="javascript:makeRequest('9-126');" >
+<input id="comm9-126" type="text" class="command" style="width: 10em;" value="primes(100,175)" />
+</form>
+<span id="commSav9-126" class="commSav" >primes(100,175)</span>
+<div id="mathAns9-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>173</mn><mo>,</mo><mn>167</mn><mo>,</mo><mn>163</mn><mo>,</mo><mn>157</mn><mo>,</mo><mn>151</mn><mo>,</mo><mn>149</mn><mo>,</mo><mn>139</mn><mo>,</mo><mn>137</mn><mo>,</mo><mn>131</mn><mo>,</mo><mn>127</mn><mo>,</mo><mn>113</mn><mo>,</mo><mn>109</mn><mo>,</mo><mn>107</mn><mo>,</mo><mn>103</mn><mo>,</mo><mn>101</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>You might sometimes want to see the factorization of an integer
+when it is considered a <span class="italic">Gaussian integer</span>.
+See <a href="section-9.11.xhtml#ComplexXmpPage" class="ref" >ComplexXmpPage</a>  for more details.
+</p>
+
+
+
+
+<div id="spadComm9-127" class="spadComm" >
+<form id="formComm9-127" action="javascript:makeRequest('9-127');" >
+<input id="comm9-127" type="text" class="command" style="width: 19em;" value="factor(2 :: Complex Integer)" />
+</form>
+<span id="commSav9-127" class="commSav" >factor(2 :: Complex Integer)</span>
+<div id="mathAns9-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mi>i</mi><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Complex Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.34.3"/>
+<div class="subsection"  id="subsec-9.34.3">
+<h3 class="subsectitle">9.34.3  Some Number Theoretic Functions</h3>
+
+
+
+<p>Axiom provides several number theoretic operations for integers.
+More examples are in <a href="section-9.36.xhtml#IntegerNumberTheoryFunctionsXmpPage" class="ref" >IntegerNumberTheoryFunctionsXmpPage</a> .
+</p>
+
+
+<p>The operation <span class="spadfunFrom" >fibonacci</span><span class="index">fibonacci</span><a name="chapter-9-90"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-91"/>
+computes the Fibonacci numbers.  The algorithm has running time
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> for argument <span class="teletype">n</span>.
+</p>
+
+
+
+
+<div id="spadComm9-128" class="spadComm" >
+<form id="formComm9-128" action="javascript:makeRequest('9-128');" >
+<input id="comm9-128" type="text" class="command" style="width: 18em;" value="[fibonacci(k) for k in 0..]" />
+</form>
+<span id="commSav9-128" class="commSav" >[fibonacci(k) for k in 0..]</span>
+<div id="mathAns9-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >legendre</span><span class="index">legendre</span><a name="chapter-9-92"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-93"/>
+computes the Legendre symbol for its two integer arguments where the
+second one is prime.  If you know the second argument to be prime, use
+<span class="spadfunFrom" >jacobi</span><span class="index">jacobi</span><a name="chapter-9-94"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-95"/> instead where no
+check is made.
+</p>
+
+
+
+
+<div id="spadComm9-129" class="spadComm" >
+<form id="formComm9-129" action="javascript:makeRequest('9-129');" >
+<input id="comm9-129" type="text" class="command" style="width: 21em;" value="[legendre(i,11) for i in 0..10]" />
+</form>
+<span id="commSav9-129" class="commSav" >[legendre(i,11) for i in 0..10]</span>
+<div id="mathAns9-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >jacobi</span><span class="index">jacobi</span><a name="chapter-9-96"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-97"/>
+computes the Jacobi symbol for its two integer arguments.  By
+convention, <span class="teletype">0</span> is returned if the greatest common divisor of the
+numerator and denominator is not <span class="teletype">1</span>.
+</p>
+
+
+
+
+<div id="spadComm9-130" class="spadComm" >
+<form id="formComm9-130" action="javascript:makeRequest('9-130');" >
+<input id="comm9-130" type="text" class="command" style="width: 19em;" value="[jacobi(i,15) for i in 0..9]" />
+</form>
+<span id="commSav9-130" class="commSav" >[jacobi(i,15) for i in 0..9]</span>
+<div id="mathAns9-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >eulerPhi</span><span class="index">eulerPhi</span><a name="chapter-9-98"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-99"/>
+computes the values of Euler's  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>-function where  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> equals
+the number of positive integers less than or equal to <span class="teletype">n</span> that are
+relatively prime to the positive integer <span class="teletype">n</span>.
+</p>
+
+
+
+
+<div id="spadComm9-131" class="spadComm" >
+<form id="formComm9-131" action="javascript:makeRequest('9-131');" >
+<input id="comm9-131" type="text" class="command" style="width: 17em;" value="[eulerPhi i for i in 1..]" />
+</form>
+<span id="commSav9-131" class="commSav" >[eulerPhi i for i in 1..]</span>
+<div id="mathAns9-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>4</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >moebiusMu</span><span class="index">moebiusMu</span><a name="chapter-9-100"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-101"/>
+computes the M&#x00f6;bius  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03bb;</mi></mstyle></math> function.
+</p>
+
+
+
+
+<div id="spadComm9-132" class="spadComm" >
+<form id="formComm9-132" action="javascript:makeRequest('9-132');" >
+<input id="comm9-132" type="text" class="command" style="width: 18em;" value="[moebiusMu i for i in 1..]" />
+</form>
+<span id="commSav9-132" class="commSav" >[moebiusMu i for i in 1..]</span>
+<div id="mathAns9-132" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Although they have somewhat limited utility, Axiom provides Roman numerals.
+</p>
+
+
+
+
+<div id="spadComm9-133" class="spadComm" >
+<form id="formComm9-133" action="javascript:makeRequest('9-133');" >
+<input id="comm9-133" type="text" class="command" style="width: 10em;" value="a := roman(78) " />
+</form>
+<span id="commSav9-133" class="commSav" >a := roman(78) </span>
+<div id="mathAns9-133" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext>LXXVIII</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RomanNumeral
+</div>
+
+
+
+
+
+<div id="spadComm9-134" class="spadComm" >
+<form id="formComm9-134" action="javascript:makeRequest('9-134');" >
+<input id="comm9-134" type="text" class="command" style="width: 10em;" value="b := roman(87) " />
+</form>
+<span id="commSav9-134" class="commSav" >b := roman(87) </span>
+<div id="mathAns9-134" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext>LXXXVII</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RomanNumeral
+</div>
+
+
+
+
+
+<div id="spadComm9-135" class="spadComm" >
+<form id="formComm9-135" action="javascript:makeRequest('9-135');" >
+<input id="comm9-135" type="text" class="command" style="width: 4em;" value="a + b " />
+</form>
+<span id="commSav9-135" class="commSav" >a + b </span>
+<div id="mathAns9-135" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext>CLXV</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RomanNumeral
+</div>
+
+
+
+
+
+<div id="spadComm9-136" class="spadComm" >
+<form id="formComm9-136" action="javascript:makeRequest('9-136');" >
+<input id="comm9-136" type="text" class="command" style="width: 4em;" value="a * b " />
+</form>
+<span id="commSav9-136" class="commSav" >a * b </span>
+<div id="mathAns9-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext>MMMMMMDCCLXXXVI</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RomanNumeral
+</div>
+
+
+
+
+
+<div id="spadComm9-137" class="spadComm" >
+<form id="formComm9-137" action="javascript:makeRequest('9-137');" >
+<input id="comm9-137" type="text" class="command" style="width: 6em;" value="b rem a " />
+</form>
+<span id="commSav9-137" class="commSav" >b rem a </span>
+<div id="mathAns9-137" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext>IX</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RomanNumeral
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.33.xhtml" style="margin-right: 10px;">Previous Section 9.33 HexadecimalExpansion</a><a href="section-9.35.xhtml" style="margin-right: 10px;">Next Section 9.35 IntegerLinearDependence</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.35.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.35.xhtml
new file mode 100644
index 0000000..dfdf342
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.35.xhtml
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.35</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.34.xhtml" style="margin-right: 10px;">Previous Section 9.34 Integer</a><a href="section-9.36.xhtml" style="margin-right: 10px;">Next Section 9.36 IntegerNumberTheoryFunctions</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.35">
+<h2 class="sectiontitle">9.35  IntegerLinearDependence</h2>
+
+
+<a name="IntegerLinearDependenceXmpPage" class="label"/>
+
+
+<p>The elements  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>v</mi><mn>1</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>v</mi><mi>n</mi></msub></mrow></mstyle></math> of a module <span class="teletype">M</span> over a ring <span class="teletype">R</span>
+are said to be <span class="italic">linearly dependent over <span class="teletype">R</span></span> if there exist
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>c</mi><mn>1</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>c</mi><mi>n</mi></msub></mrow></mstyle></math> in <span class="teletype">R</span>, not all  <math xmlns="&mathml;" mathsize="big"><mstyle><mn>0</mn></mstyle></math>, such that  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>c</mi><mn>1</mn></msub><msub><mi>v</mi><mn>1</mn></msub><mo>+</mo><mo>&#x2026;</mo><msub><mi>c</mi><mi>n</mi></msub><msub><mi>v</mi><mi>n</mi></msub><mo>=</mo><mn>0</mn></mrow></mstyle></math>.  If such  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>c</mi><mi>i</mi></msub></mrow></mstyle></math>'s exist, they form what is called a
+<span class="italic">linear dependence relation over <span class="teletype">R</span></span> for the  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>v</mi><mi>i</mi></msub></mrow></mstyle></math>'s.
+</p>
+
+
+<p>The package <span class="teletype">IntegerLinearDependence</span> provides functions
+for testing whether some elements of a module over the integers are
+linearly dependent over the integers, and to find the linear
+dependence relations, if any.
+</p>
+
+
+<p>Consider the domain of two by two square matrices with integer entries.
+</p>
+
+
+
+
+<div id="spadComm9-138" class="spadComm" >
+<form id="formComm9-138" action="javascript:makeRequest('9-138');" >
+<input id="comm9-138" type="text" class="command" style="width: 14em;" value="M := SQMATRIX(2,INT) " />
+</form>
+<span id="commSav9-138" class="commSav" >M := SQMATRIX(2,INT) </span>
+<div id="mathAns9-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>SquareMatrix</mi><mo>(</mo><mn>2</mn><mo>,</mo><mi>Integer</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Now create three such matrices.
+</p>
+
+
+
+
+<div id="spadComm9-139" class="spadComm" >
+<form id="formComm9-139" action="javascript:makeRequest('9-139');" >
+<input id="comm9-139" type="text" class="command" style="width: 33em;" value="m1: M := squareMatrix matrix [ [1, 2], [0, -1] ] " />
+</form>
+<span id="commSav9-139" class="commSav" >m1: M := squareMatrix matrix [ [1, 2], [0, -1] ] </span>
+<div id="mathAns9-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-140" class="spadComm" >
+<form id="formComm9-140" action="javascript:makeRequest('9-140');" >
+<input id="comm9-140" type="text" class="command" style="width: 33em;" value="m2: M := squareMatrix matrix [ [2, 3], [1, -2] ] " />
+</form>
+<span id="commSav9-140" class="commSav" >m2: M := squareMatrix matrix [ [2, 3], [1, -2] ] </span>
+<div id="mathAns9-140" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>2</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-141" class="spadComm" >
+<form id="formComm9-141" action="javascript:makeRequest('9-141');" >
+<input id="comm9-141" type="text" class="command" style="width: 33em;" value="m3: M := squareMatrix matrix [ [3, 4], [2, -3] ] " />
+</form>
+<span id="commSav9-141" class="commSav" >m3: M := squareMatrix matrix [ [3, 4], [2, -3] ] </span>
+<div id="mathAns9-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mo>-</mo><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>This tells you whether <span class="teletype">m1</span>, <span class="teletype">m2</span> and <span class="teletype">m3</span> are linearly
+dependent over the integers.
+</p>
+
+
+
+
+<div id="spadComm9-142" class="spadComm" >
+<form id="formComm9-142" action="javascript:makeRequest('9-142');" >
+<input id="comm9-142" type="text" class="command" style="width: 30em;" value="linearlyDependentOverZ? vector [m1, m2, m3] " />
+</form>
+<span id="commSav9-142" class="commSav" >linearlyDependentOverZ? vector [m1, m2, m3] </span>
+<div id="mathAns9-142" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Since they are linearly dependent, you can ask for the dependence relation.
+</p>
+
+
+
+
+<div id="spadComm9-143" class="spadComm" >
+<form id="formComm9-143" action="javascript:makeRequest('9-143');" >
+<input id="comm9-143" type="text" class="command" style="width: 32em;" value="c := linearDependenceOverZ vector [m1, m2, m3] " />
+</form>
+<span id="commSav9-143" class="commSav" >c := linearDependenceOverZ vector [m1, m2, m3] </span>
+<div id="mathAns9-143" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Vector Integer,...)
+</div>
+
+
+
+<p>This means that the following linear combination should be <span class="teletype">0</span>.
+</p>
+
+
+
+
+<div id="spadComm9-144" class="spadComm" >
+<form id="formComm9-144" action="javascript:makeRequest('9-144');" >
+<input id="comm9-144" type="text" class="command" style="width: 21em;" value="c.1 * m1 + c.2 * m2 + c.3 * m3 " />
+</form>
+<span id="commSav9-144" class="commSav" >c.1 * m1 + c.2 * m2 + c.3 * m3 </span>
+<div id="mathAns9-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>When a given set of elements are linearly dependent over <span class="teletype">R</span>, this
+also means that at least one of them can be rewritten as a linear
+combination of the others with coefficients in the quotient field of
+<span class="teletype">R</span>.
+</p>
+
+
+<p>To express a given element in terms of other elements, use the operation
+<span class="spadfunFrom" >solveLinearlyOverQ</span><span class="index">solveLinearlyOverQ</span><a name="chapter-9-102"/><span class="index">IntegerLinearDependence</span><a name="chapter-9-103"/>.
+</p>
+
+
+
+
+<div id="spadComm9-145" class="spadComm" >
+<form id="formComm9-145" action="javascript:makeRequest('9-145');" >
+<input id="comm9-145" type="text" class="command" style="width: 27em;" value="solveLinearlyOverQ(vector [m1, m3], m2) " />
+</form>
+<span id="commSav9-145" class="commSav" >solveLinearlyOverQ(vector [m1, m3], m2) </span>
+<div id="mathAns9-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>,</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Vector Fraction Integer,...)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.34.xhtml" style="margin-right: 10px;">Previous Section 9.34 Integer</a><a href="section-9.36.xhtml" style="margin-right: 10px;">Next Section 9.36 IntegerNumberTheoryFunctions</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.36.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.36.xhtml
new file mode 100644
index 0000000..2ca2f04
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.36.xhtml
@@ -0,0 +1,725 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.36</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.35.xhtml" style="margin-right: 10px;">Previous Section 9.35 IntegerLinearDependence</a><a href="section-9.37.xhtml" style="margin-right: 10px;">Next Section 9.37 Kernel</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.36">
+<h2 class="sectiontitle">9.36  IntegerNumberTheoryFunctions</h2>
+
+
+<a name="IntegerNumberTheoryFunctionsXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">IntegerNumberTheoryFunctions</span> package contains a variety of
+operations of interest to number theorists.  Many of these operations
+deal with divisibility properties of integers.  (Recall that an
+integer <span class="teletype">a</span> divides an integer <span class="teletype">b</span> if there is an integer 
+<span class="teletype">c</span> such that <span class="teletype">b = a * c</span>.)
+</p>
+
+
+<p>The operation <span class="spadfunFrom" >divisors</span><span class="index">divisors</span><a name="chapter-9-104"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-105"/>
+returns a list of the divisors of an integer.
+</p>
+
+
+
+
+<div id="spadComm9-146" class="spadComm" >
+<form id="formComm9-146" action="javascript:makeRequest('9-146');" >
+<input id="comm9-146" type="text" class="command" style="width: 16em;" value="div144 := divisors(144) " />
+</form>
+<span id="commSav9-146" class="commSav" >div144 := divisors(144) </span>
+<div id="mathAns9-146" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>12</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>18</mn><mo>,</mo><mn>24</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>48</mn><mo>,</mo><mn>72</mn><mo>,</mo><mn>144</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>You can now compute the number of divisors of <span class="teletype">144</span> and the sum of
+the divisors of <span class="teletype">144</span> by counting and summing the elements of the
+list we just created.
+</p>
+
+
+
+
+<div id="spadComm9-147" class="spadComm" >
+<form id="formComm9-147" action="javascript:makeRequest('9-147');" >
+<input id="comm9-147" type="text" class="command" style="width: 8em;" value=" #(div144) " />
+</form>
+<span id="commSav9-147" class="commSav" > #(div144) </span>
+<div id="mathAns9-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>15</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-148" class="spadComm" >
+<form id="formComm9-148" action="javascript:makeRequest('9-148');" >
+<input id="comm9-148" type="text" class="command" style="width: 12em;" value="reduce(+,div144) " />
+</form>
+<span id="commSav9-148" class="commSav" >reduce(+,div144) </span>
+<div id="mathAns9-148" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>403</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Of course, you can compute the number of divisors of an integer 
+<span class="teletype">n</span>, usually denoted <span class="teletype">d(n)</span>, and the sum of the divisors of an
+integer <span class="teletype">n</span>, usually denoted <span class="teletype"> <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>(n)</span>, without ever
+listing the divisors of <span class="teletype">n</span>.
+</p>
+
+
+<p>In Axiom, you can simply call the operations
+<span class="spadfunFrom" >numberOfDivisors</span><span class="index">numberOfDivisors</span><a name="chapter-9-106"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-107"/> and
+<span class="spadfunFrom" >sumOfDivisors</span><span class="index">sumOfDivisors</span><a name="chapter-9-108"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-109"/>.
+</p>
+
+
+
+
+<div id="spadComm9-149" class="spadComm" >
+<form id="formComm9-149" action="javascript:makeRequest('9-149');" >
+<input id="comm9-149" type="text" class="command" style="width: 14em;" value="numberOfDivisors(144)" />
+</form>
+<span id="commSav9-149" class="commSav" >numberOfDivisors(144)</span>
+<div id="mathAns9-149" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>15</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-150" class="spadComm" >
+<form id="formComm9-150" action="javascript:makeRequest('9-150');" >
+<input id="comm9-150" type="text" class="command" style="width: 12em;" value="sumOfDivisors(144)" />
+</form>
+<span id="commSav9-150" class="commSav" >sumOfDivisors(144)</span>
+<div id="mathAns9-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>403</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The key is that <span class="teletype">d(n)</span> and <span class="teletype"> <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>(n)</span> are ``multiplicative
+functions.''  This means that when <span class="teletype">n</span> and <span class="teletype">m</span> are relatively
+prime, that is, when <span class="teletype">n</span> and <span class="teletype">m</span> have no prime factor in
+common, then <span class="teletype">d(nm) = d(n) d(m)</span> and <span class="teletype"> <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>(nm) =
+ <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>(n)  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>(m)</span>.  Note that these functions are trivial to
+compute when <span class="teletype">n</span> is a prime power and are computed for general
+<span class="teletype">n</span> from the prime factorization of <span class="teletype">n</span>.  Other examples of
+multiplicative functions are <span class="teletype"> <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>(n)</span>, the sum of the
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>k</mi></mstyle></math>-th powers of the divisors of <span class="teletype">n</span> and  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>, the
+number of integers between 1 and <span class="teletype">n</span> which are prime to <span class="teletype">n</span>.
+The corresponding Axiom operations are called
+<span class="spadfunFrom" >sumOfKthPowerDivisors</span><span class="index">sumOfKthPowerDivisors</span><a name="chapter-9-110"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-111"/> and
+<span class="spadfunFrom" >eulerPhi</span><span class="index">eulerPhi</span><a name="chapter-9-112"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-113"/>.
+</p>
+
+
+<p>An interesting function is <span class="teletype"> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03bb;</mi></mstyle></math>(n)</span>, the M&#x00f6;bius  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03bb;</mi></mstyle></math>
+function, defined as follows: <span class="teletype"> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03bb;</mi></mstyle></math>(1) = 1</span>, <span class="teletype"> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03bb;</mi></mstyle></math>(n) = 0</span>,
+when <span class="teletype">n</span> is divisible by a square, and <span class="teletype"> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>&#x03bb;</mi><mo>=</mo><msup><mrow><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mi>k</mi></msup></mrow></mstyle></math></span>, when
+<span class="teletype">n</span> is the product of <span class="teletype">k</span> distinct primes.  The corresponding
+Axiom operation is <span class="spadfunFrom" >moebiusMu</span><span class="index">moebiusMu</span><a name="chapter-9-114"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-115"/>.  
+This function occurs in the following theorem:
+</p>
+
+
+
+
+<p><span style="font-weight: bold;"> Theorem</span> (M&#x00f6;bius Inversion Formula): <br /> Let <span class="teletype">f(n)</span>
+be a function on the positive integers and let <span class="teletype">F(n)</span> be defined
+by <math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>F</mi><mo>(</mo><mi>n</mi><mo>)</mo><mo>=</mo><msub><mo>&#x2211;</mo><mrow><mi>d</mi><mo>&#x007c;</mo><mi>n</mi></mrow></msub><mi>f</mi><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mstyle></math> sum of <span class="teletype">f(n)</span> over
+<span class="teletype">d | n</span> where the sum is taken over the positive divisors of 
+<span class="teletype">n</span>.  Then the values of <span class="teletype">f(n)</span> can be recovered from the values of
+<span class="teletype">F(n)</span>: 
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>f</mi><mo>(</mo><mi>n</mi><mo>)</mo><mo>=</mo><msub><mo>&#x2211;</mo><mrow><mi>d</mi><mo>&#x007c;</mo><mi>n</mi></mrow></msub><mi>&#x03bb;</mi><mo>(</mo><mi>n</mi><mo>)</mo><mi>F</mi><mo>(</mo><mfrac><mi>n</mi><mi>d</mi></mfrac><mo>)</mo></mrow></mstyle></math>
+where again the sum is taken over the positive divisors of <span class="teletype">n</span>.
+</p>
+
+
+<p>When <span class="teletype">f(n) = 1</span>, then <span class="teletype">F(n) = d(n)</span>.  Thus, if you sum  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math> over the positive divisors <span class="teletype">d</span> of <span class="teletype">n</span>, you
+should always get <span class="teletype">1</span>.
+</p>
+
+
+
+
+<div id="spadComm9-151" class="spadComm" >
+<form id="formComm9-151" action="javascript:makeRequest('9-151');" >
+<input id="comm9-151" type="text" class="command" style="width: 56em;" value="f1(n) == reduce(+,[moebiusMu(d) * numberOfDivisors(quo(n,d)) for d in divisors(n)]) " />
+</form>
+<span id="commSav9-151" class="commSav" >f1(n) == reduce(+,[moebiusMu(d) * numberOfDivisors(quo(n,d)) for d in divisors(n)]) </span>
+<div id="mathAns9-151" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-152" class="spadComm" >
+<form id="formComm9-152" action="javascript:makeRequest('9-152');" >
+<input id="comm9-152" type="text" class="command" style="width: 6em;" value="f1(200) " />
+</form>
+<span id="commSav9-152" class="commSav" >f1(200) </span>
+<div id="mathAns9-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-153" class="spadComm" >
+<form id="formComm9-153" action="javascript:makeRequest('9-153');" >
+<input id="comm9-153" type="text" class="command" style="width: 6em;" value="f1(846) " />
+</form>
+<span id="commSav9-153" class="commSav" >f1(846) </span>
+<div id="mathAns9-153" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Similarly, when <span class="teletype">f(n) = n</span>, then <span class="teletype">F(n) =  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>(n)</span>.  Thus,
+if you sum <span class="teletype"> <math xmlns="&mathml;" mathsize="big"><mstyle><mi>&#x03bb;</mi></mstyle></math>(d)  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>(n/d)</span> over the positive
+divisors <span class="teletype">d</span> of <span class="teletype">n</span>, you should always get <span class="teletype">n</span>.
+</p>
+
+
+
+
+<div id="spadComm9-154" class="spadComm" >
+<form id="formComm9-154" action="javascript:makeRequest('9-154');" >
+<input id="comm9-154" type="text" class="command" style="width: 54em;" value="f2(n) == reduce(+,[moebiusMu(d) * sumOfDivisors(quo(n,d)) for d in divisors(n)]) " />
+</form>
+<span id="commSav9-154" class="commSav" >f2(n) == reduce(+,[moebiusMu(d) * sumOfDivisors(quo(n,d)) for d in divisors(n)]) </span>
+<div id="mathAns9-154" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-155" class="spadComm" >
+<form id="formComm9-155" action="javascript:makeRequest('9-155');" >
+<input id="comm9-155" type="text" class="command" style="width: 6em;" value="f2(200) " />
+</form>
+<span id="commSav9-155" class="commSav" >f2(200) </span>
+<div id="mathAns9-155" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>200</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-156" class="spadComm" >
+<form id="formComm9-156" action="javascript:makeRequest('9-156');" >
+<input id="comm9-156" type="text" class="command" style="width: 6em;" value="f2(846) " />
+</form>
+<span id="commSav9-156" class="commSav" >f2(846) </span>
+<div id="mathAns9-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>846</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The Fibonacci numbers are defined by  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>F</mi><mo>(</mo><mn>1</mn><mo>)</mo><mo>=</mo><mi>F</mi><mo>(</mo><mn>2</mn><mo>)</mo><mo>=</mo><mn>1</mn></mrow></mstyle></math> and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>F</mi><mo>(</mo><mi>n</mi><mo>)</mo><mo>=</mo><mi>F</mi><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>)</mo><mo>+</mo><mi>F</mi><mo>(</mo><mi>n</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow></mstyle></math> for  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mo>&#x2026;</mo></mrow></mstyle></math>.
+</p>
+
+
+<p>The operation <span class="spadfunFrom" >fibonacci</span><span class="index">fibonacci</span><a name="chapter-9-116"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-117"/>
+computes the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th Fibonacci number.
+</p>
+
+
+
+
+<div id="spadComm9-157" class="spadComm" >
+<form id="formComm9-157" action="javascript:makeRequest('9-157');" >
+<input id="comm9-157" type="text" class="command" style="width: 9em;" value="fibonacci(25)" />
+</form>
+<span id="commSav9-157" class="commSav" >fibonacci(25)</span>
+<div id="mathAns9-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>75025</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-158" class="spadComm" >
+<form id="formComm9-158" action="javascript:makeRequest('9-158');" >
+<input id="comm9-158" type="text" class="command" style="width: 20em;" value="[fibonacci(n) for n in 1..15]" />
+</form>
+<span id="commSav9-158" class="commSav" >[fibonacci(n) for n in 1..15]</span>
+<div id="mathAns9-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mn>55</mn><mo>,</mo><mn>89</mn><mo>,</mo><mn>144</mn><mo>,</mo><mn>233</mn><mo>,</mo><mn>377</mn><mo>,</mo><mn>610</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>Fibonacci numbers can also be expressed as sums of binomial coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-159" class="spadComm" >
+<form id="formComm9-159" action="javascript:makeRequest('9-159');" >
+<input id="comm9-159" type="text" class="command" style="width: 42em;" value="fib(n) == reduce(+,[binomial(n-1-k,k) for k in 0..quo(n-1,2)]) " />
+</form>
+<span id="commSav9-159" class="commSav" >fib(n) == reduce(+,[binomial(n-1-k,k) for k in 0..quo(n-1,2)]) </span>
+<div id="mathAns9-159" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-160" class="spadComm" >
+<form id="formComm9-160" action="javascript:makeRequest('9-160');" >
+<input id="comm9-160" type="text" class="command" style="width: 6em;" value="fib(25) " />
+</form>
+<span id="commSav9-160" class="commSav" >fib(25) </span>
+<div id="mathAns9-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>75025</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-161" class="spadComm" >
+<form id="formComm9-161" action="javascript:makeRequest('9-161');" >
+<input id="comm9-161" type="text" class="command" style="width: 16em;" value="[fib(n) for n in 1..15] " />
+</form>
+<span id="commSav9-161" class="commSav" >[fib(n) for n in 1..15] </span>
+<div id="mathAns9-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mn>55</mn><mo>,</mo><mn>89</mn><mo>,</mo><mn>144</mn><mo>,</mo><mn>233</mn><mo>,</mo><mn>377</mn><mo>,</mo><mn>610</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>Quadratic symbols can be computed with the operations
+<span class="spadfunFrom" >legendre</span><span class="index">legendre</span><a name="chapter-9-118"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-119"/> and
+<span class="spadfunFrom" >jacobi</span><span class="index">jacobi</span><a name="chapter-9-120"/><span class="index">IntegerNumberTheoryFunctions</span><a name="chapter-9-121"/>.  The Legendre
+symbol  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mfrac><mi>a</mi><mi>p</mi></mfrac><mo>)</mo></mrow></mstyle></math> is defined for integers  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> and
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> with  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math> an odd prime number.  By definition, 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mfrac><mi>a</mi><mi>p</mi></mfrac><mo>)</mo></mrow></mstyle></math> = +1, when  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> is a square  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mrow><mtext>mod&nbsp;</mtext></mrow><mi>p</mi><mo>)</mo></mrow></mstyle></math>,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mfrac><mi>a</mi><mi>p</mi></mfrac><mo>)</mo></mrow></mstyle></math> = -1, when  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> is not a square  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mrow><mtext>mod&nbsp;</mtext></mrow><mi>p</mi><mo>)</mo></mrow></mstyle></math>,
+and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mfrac><mi>a</mi><mi>p</mi></mfrac><mo>)</mo></mrow></mstyle></math> = 0, when  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>a</mi></mstyle></math> is divisible by  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>p</mi></mstyle></math>.
+</p>
+
+
+<p>You compute  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mfrac><mi>a</mi><mi>p</mi></mfrac><mo>)</mo></mrow></mstyle></math> via the command <span class="teletype">legendre(a,p)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-162" class="spadComm" >
+<form id="formComm9-162" action="javascript:makeRequest('9-162');" >
+<input id="comm9-162" type="text" class="command" style="width: 9em;" value="legendre(3,5)" />
+</form>
+<span id="commSav9-162" class="commSav" >legendre(3,5)</span>
+<div id="mathAns9-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-163" class="spadComm" >
+<form id="formComm9-163" action="javascript:makeRequest('9-163');" >
+<input id="comm9-163" type="text" class="command" style="width: 11em;" value="legendre(23,691)" />
+</form>
+<span id="commSav9-163" class="commSav" >legendre(23,691)</span>
+<div id="mathAns9-163" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>The Jacobi symbol  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>(</mo><mfrac><mi>a</mi><mi>n</mi></mfrac><mo>)</mo></mrow></mstyle></math> is the usual extension of
+the Legendre symbol, where <span class="teletype">n</span> is an arbitrary integer.  The most
+important property of the Jacobi symbol is the following: if <span class="teletype">K</span>
+is a quadratic field with discriminant <span class="teletype">d</span> and quadratic character
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mo>&#x03c7;</mo></mstyle></math>, then  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mo>&#x03c7;</mo><mo>(</mo><mi>n</mi><mo>)</mo><mo>=</mo><mo>(</mo><mi>d</mi><mo>/</mo><mi>n</mi><mo>)</mo></mrow></mstyle></math>.  Thus, you can use the Jacobi symbol
+to compute, say, the class numbers of imaginary quadratic fields from
+a standard class number formula.
+</p>
+
+
+<p>This function computes the class number of the imaginary quadratic
+field with discriminant <span class="teletype">d</span>.
+</p>
+
+
+
+
+<div id="spadComm9-164" class="spadComm" >
+<form id="formComm9-164" action="javascript:makeRequest('9-164');" >
+<input id="comm9-164" type="text" class="command" style="width: 52em;" value="h(d) == quo(reduce(+, [jacobi(d,k) for k in 1..quo(-d, 2)]), 2 - jacobi(d,2)) " />
+</form>
+<span id="commSav9-164" class="commSav" >h(d) == quo(reduce(+, [jacobi(d,k) for k in 1..quo(-d, 2)]), 2 - jacobi(d,2)) </span>
+<div id="mathAns9-164" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-165" class="spadComm" >
+<form id="formComm9-165" action="javascript:makeRequest('9-165');" >
+<input id="comm9-165" type="text" class="command" style="width: 6em;" value="h(-163) " />
+</form>
+<span id="commSav9-165" class="commSav" >h(-163) </span>
+<div id="mathAns9-165" ></div>
+</div>
+
+<p>   
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-166" class="spadComm" >
+<form id="formComm9-166" action="javascript:makeRequest('9-166');" >
+<input id="comm9-166" type="text" class="command" style="width: 6em;" value="h(-499) " />
+</form>
+<span id="commSav9-166" class="commSav" >h(-499) </span>
+<div id="mathAns9-166" ></div>
+</div>
+
+<p>   
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-167" class="spadComm" >
+<form id="formComm9-167" action="javascript:makeRequest('9-167');" >
+<input id="comm9-167" type="text" class="command" style="width: 6em;" value="h(-1832) " />
+</form>
+<span id="commSav9-167" class="commSav" >h(-1832) </span>
+<div id="mathAns9-167" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>26</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.35.xhtml" style="margin-right: 10px;">Previous Section 9.35 IntegerLinearDependence</a><a href="section-9.37.xhtml" style="margin-right: 10px;">Next Section 9.37 Kernel</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.37.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.37.xhtml
new file mode 100644
index 0000000..0d3d4e1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.37.xhtml
@@ -0,0 +1,664 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.37</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.36.xhtml" style="margin-right: 10px;">Previous Section 9.36 IntegerNumberTheoryFunctions</a><a href="section-9.38.xhtml" style="margin-right: 10px;">Next Section 9.38  KeyedAccessFile</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.37">
+<h2 class="sectiontitle">9.37  Kernel</h2>
+
+
+<a name="KernelXmpPage" class="label"/>
+
+
+<p>A <span class="italic">kernel</span> is a symbolic function application (such as <span class="teletype">sin(x+ y)</span>) 
+or a symbol (such as <span class="teletype">x</span>).  More precisely, a non-symbol
+kernel over a set <span class="italic">S</span> is an operator applied to a given list of
+arguments from <span class="italic">S</span>.  The operator has type <span class="teletype">BasicOperator</span>
+(see <a href="section-9.3.xhtml#BasicOperatorXmpPage" class="ref" >BasicOperatorXmpPage</a> ) 
+and the kernel object is usually part of an expression object (see 
+<a href="section-9.21.xhtml#ExpressionXmpPage" class="ref" >ExpressionXmpPage</a> ).
+</p>
+
+
+<p>Kernels are created implicitly for you when you create expressions.
+</p>
+
+
+
+
+<div id="spadComm9-168" class="spadComm" >
+<form id="formComm9-168" action="javascript:makeRequest('9-168');" >
+<input id="comm9-168" type="text" class="command" style="width: 16em;" value="x :: Expression Integer" />
+</form>
+<span id="commSav9-168" class="commSav" >x :: Expression Integer</span>
+<div id="mathAns9-168" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>You can directly create a ``symbol'' kernel by using the
+<span class="spadfunFrom" >kernel</span><span class="index">kernel</span><a name="chapter-9-122"/><span class="index">Kernel</span><a name="chapter-9-123"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-169" class="spadComm" >
+<form id="formComm9-169" action="javascript:makeRequest('9-169');" >
+<input id="comm9-169" type="text" class="command" style="width: 6em;" value="kernel x" />
+</form>
+<span id="commSav9-169" class="commSav" >kernel x</span>
+<div id="mathAns9-169" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Kernel Expression Integer
+</div>
+
+
+
+<p>This expression has two different kernels.
+</p>
+
+
+
+
+<div id="spadComm9-170" class="spadComm" >
+<form id="formComm9-170" action="javascript:makeRequest('9-170');" >
+<input id="comm9-170" type="text" class="command" style="width: 11em;" value="sin(x) + cos(x) " />
+</form>
+<span id="commSav9-170" class="commSav" >sin(x) + cos(x) </span>
+<div id="mathAns9-170" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>The operator <span class="spadfunFrom" >kernels</span><span class="index">kernels</span><a name="chapter-9-124"/><span class="index">Expression</span><a name="chapter-9-125"/> returns a list of the
+kernels in an object of type <span class="teletype">Expression</span>.
+</p>
+
+
+
+
+<div id="spadComm9-171" class="spadComm" >
+<form id="formComm9-171" action="javascript:makeRequest('9-171');" >
+<input id="comm9-171" type="text" class="command" style="width: 8em;" value="kernels % " />
+</form>
+<span id="commSav9-171" class="commSav" >kernels % </span>
+<div id="mathAns9-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>,</mo><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Kernel Expression Integer
+</div>
+
+
+
+<p>This expression also has two different kernels.
+</p>
+
+
+
+
+<div id="spadComm9-172" class="spadComm" >
+<form id="formComm9-172" action="javascript:makeRequest('9-172');" >
+<input id="comm9-172" type="text" class="command" style="width: 19em;" value="sin(x)**2 + sin(x) + cos(x) " />
+</form>
+<span id="commSav9-172" class="commSav" >sin(x)**2 + sin(x) + cos(x) </span>
+<div id="mathAns9-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mo>+</mo><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>The <span class="teletype">sin(x)</span> kernel is used twice.
+</p>
+
+
+
+
+<div id="spadComm9-173" class="spadComm" >
+<form id="formComm9-173" action="javascript:makeRequest('9-173');" >
+<input id="comm9-173" type="text" class="command" style="width: 8em;" value="kernels % " />
+</form>
+<span id="commSav9-173" class="commSav" >kernels % </span>
+<div id="mathAns9-173" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>sin</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>,</mo><mrow><mo>cos</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Kernel Expression Integer
+</div>
+
+
+
+<p>An expression need not contain any kernels.
+</p>
+
+
+
+
+<div id="spadComm9-174" class="spadComm" >
+<form id="formComm9-174" action="javascript:makeRequest('9-174');" >
+<input id="comm9-174" type="text" class="command" style="width: 22em;" value="kernels(1 :: Expression Integer)" />
+</form>
+<span id="commSav9-174" class="commSav" >kernels(1 :: Expression Integer)</span>
+<div id="mathAns9-174" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mspace width="0.5 em" /><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Kernel Expression Integer
+</div>
+
+
+
+<p>If one or more kernels are present, one of them is
+designated the <span class="italic">main</span> kernel.
+</p>
+
+
+
+
+<div id="spadComm9-175" class="spadComm" >
+<form id="formComm9-175" action="javascript:makeRequest('9-175');" >
+<input id="comm9-175" type="text" class="command" style="width: 18em;" value="mainKernel(cos(x) + tan(x))" />
+</form>
+<span id="commSav9-175" class="commSav" >mainKernel(cos(x) + tan(x))</span>
+<div id="mathAns9-175" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>tan</mo><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Kernel Expression Integer,...)
+</div>
+
+
+
+<p>Kernels can be nested. Use <span class="spadfunFrom" >height</span><span class="index">height</span><a name="chapter-9-126"/><span class="index">Kernel</span><a name="chapter-9-127"/> to determine
+the nesting depth.
+</p>
+
+
+
+
+<div id="spadComm9-176" class="spadComm" >
+<form id="formComm9-176" action="javascript:makeRequest('9-176');" >
+<input id="comm9-176" type="text" class="command" style="width: 10em;" value="height kernel x" />
+</form>
+<span id="commSav9-176" class="commSav" >height kernel x</span>
+<div id="mathAns9-176" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This has height 2 because the <span class="teletype">x</span> has height 1 and then we apply
+an operator to that.
+</p>
+
+
+
+
+<div id="spadComm9-177" class="spadComm" >
+<form id="formComm9-177" action="javascript:makeRequest('9-177');" >
+<input id="comm9-177" type="text" class="command" style="width: 16em;" value="height mainKernel(sin x)" />
+</form>
+<span id="commSav9-177" class="commSav" >height mainKernel(sin x)</span>
+<div id="mathAns9-177" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-178" class="spadComm" >
+<form id="formComm9-178" action="javascript:makeRequest('9-178');" >
+<input id="comm9-178" type="text" class="command" style="width: 19em;" value="height mainKernel(sin cos x)" />
+</form>
+<span id="commSav9-178" class="commSav" >height mainKernel(sin cos x)</span>
+<div id="mathAns9-178" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-179" class="spadComm" >
+<form id="formComm9-179" action="javascript:makeRequest('9-179');" >
+<input id="comm9-179" type="text" class="command" style="width: 28em;" value="height mainKernel(sin cos (tan x + sin x))" />
+</form>
+<span id="commSav9-179" class="commSav" >height mainKernel(sin cos (tan x + sin x))</span>
+<div id="mathAns9-179" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Use the <span class="spadfunFrom" >operator</span><span class="index">operator</span><a name="chapter-9-128"/><span class="index">Kernel</span><a name="chapter-9-129"/> operation to extract the
+operator component of the kernel.  The operator has type <span class="teletype">BasicOperator</span>.
+</p>
+
+
+
+
+<div id="spadComm9-180" class="spadComm" >
+<form id="formComm9-180" action="javascript:makeRequest('9-180');" >
+<input id="comm9-180" type="text" class="command" style="width: 30em;" value="operator mainKernel(sin cos (tan x + sin x))" />
+</form>
+<span id="commSav9-180" class="commSav" >operator mainKernel(sin cos (tan x + sin x))</span>
+<div id="mathAns9-180" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mo>sin</mo></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>Use the <span class="spadfunFrom" >name</span><span class="index">name</span><a name="chapter-9-130"/><span class="index">Kernel</span><a name="chapter-9-131"/> operation to extract the name of
+the operator component of the kernel.  The name has type <span class="teletype">Symbol</span>.
+This is really just a shortcut for a two-step process of extracting
+the operator and then calling <span class="spadfunFrom" >name</span><span class="index">name</span><a name="chapter-9-132"/><span class="index">BasicOperator</span><a name="chapter-9-133"/> on
+the operator.
+</p>
+
+
+
+
+<div id="spadComm9-181" class="spadComm" >
+<form id="formComm9-181" action="javascript:makeRequest('9-181');" >
+<input id="comm9-181" type="text" class="command" style="width: 27em;" value="name mainKernel(sin cos (tan x + sin x))" />
+</form>
+<span id="commSav9-181" class="commSav" >name mainKernel(sin cos (tan x + sin x))</span>
+<div id="mathAns9-181" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mo>sin</mo></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>Axiom knows about functions such as <span class="teletype">sin</span>, <span class="teletype">cos</span> and so on and
+can make kernels and then expressions using them.  To create a kernel
+and expression using an arbitrary operator, use
+<span class="spadfunFrom" >operator</span><span class="index">operator</span><a name="chapter-9-134"/><span class="index">BasicOperator</span><a name="chapter-9-135"/>.
+</p>
+
+
+<p>Now <span class="teletype">f</span> can be used to create symbolic function applications.
+</p>
+
+
+
+
+<div id="spadComm9-182" class="spadComm" >
+<form id="formComm9-182" action="javascript:makeRequest('9-182');" >
+<input id="comm9-182" type="text" class="command" style="width: 12em;" value="f := operator 'f " />
+</form>
+<span id="commSav9-182" class="commSav" >f := operator 'f </span>
+<div id="mathAns9-182" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>f</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+
+
+<div id="spadComm9-183" class="spadComm" >
+<form id="formComm9-183" action="javascript:makeRequest('9-183');" >
+<input id="comm9-183" type="text" class="command" style="width: 12em;" value="e := f(x, y, 10) " />
+</form>
+<span id="commSav9-183" class="commSav" >e := f(x, y, 10) </span>
+<div id="mathAns9-183" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>f</mi><mo>(</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mn>10</mn></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>Use the <span class="spadfunFrom" >is?</span><span class="index">is?</span><a name="chapter-9-136"/><span class="index">Kernel</span><a name="chapter-9-137"/> operation to learn if the
+operator component of a kernel is equal to a given operator.
+</p>
+
+
+
+
+<div id="spadComm9-184" class="spadComm" >
+<form id="formComm9-184" action="javascript:makeRequest('9-184');" >
+<input id="comm9-184" type="text" class="command" style="width: 7em;" value="is?(e, f) " />
+</form>
+<span id="commSav9-184" class="commSav" >is?(e, f) </span>
+<div id="mathAns9-184" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>You can also use a symbol or a string as the second argument to
+<span class="spadfunFrom" >is?</span><span class="index">is?</span><a name="chapter-9-138"/><span class="index">Kernel</span><a name="chapter-9-139"/>.
+</p>
+
+
+
+
+<div id="spadComm9-185" class="spadComm" >
+<form id="formComm9-185" action="javascript:makeRequest('9-185');" >
+<input id="comm9-185" type="text" class="command" style="width: 8em;" value="is?(e, 'f) " />
+</form>
+<span id="commSav9-185" class="commSav" >is?(e, 'f) </span>
+<div id="mathAns9-185" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Use the <span class="spadfunFrom" >argument</span><span class="index">argument</span><a name="chapter-9-140"/><span class="index">Kernel</span><a name="chapter-9-141"/> operation to get a list containing
+the argument component of a kernel.
+</p>
+
+
+
+
+<div id="spadComm9-186" class="spadComm" >
+<form id="formComm9-186" action="javascript:makeRequest('9-186');" >
+<input id="comm9-186" type="text" class="command" style="width: 15em;" value="argument mainKernel e " />
+</form>
+<span id="commSav9-186" class="commSav" >argument mainKernel e </span>
+<div id="mathAns9-186" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mn>10</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Expression Integer
+</div>
+
+
+
+<p>Conceptually, an object of type <span class="teletype">Expression</span> can be thought of a
+quotient of multivariate polynomials, where the ``variables'' are
+kernels.  The arguments of the kernels are again expressions and so
+the structure recurses.  See <a href="section-9.21.xhtml#ExpressionXmpPage" class="ref" >ExpressionXmpPage</a>  for examples of
+using kernels to take apart expression objects.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.36.xhtml" style="margin-right: 10px;">Previous Section 9.36 IntegerNumberTheoryFunctions</a><a href="section-9.38.xhtml" style="margin-right: 10px;">Next Section 9.38  KeyedAccessFile</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.38.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.38.xhtml
new file mode 100644
index 0000000..6a76f0a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.38.xhtml
@@ -0,0 +1,679 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.38</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.37.xhtml" style="margin-right: 10px;">Previous Section 9.37  Kernel</a><a href="section-9.39.xhtml" style="margin-right: 10px;">Next Section 9.39 LexTriangularPackage</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.38">
+<h2 class="sectiontitle">9.38  KeyedAccessFile</h2>
+
+
+<a name="KeyedAccessFileXmpPage" class="label"/>
+
+
+<p>The domain <span class="teletype">KeyedAccessFile(S)</span> provides files which can be used
+as associative tables.  Data values are stored in these files and can
+be retrieved according to their keys.  The keys must be strings so
+this type behaves very much like the <span class="teletype">StringTable(S)</span> domain.  The
+difference is that keyed access files reside in secondary storage
+while string tables are kept in memory.  For more information on
+table-oriented operations, see the description of <span class="teletype">Table</span>.
+</p>
+
+
+<p>Before a keyed access file can be used, it must first be opened.
+A new file can be created by opening it for output.
+</p>
+
+
+
+
+<div id="spadComm9-1" class="spadComm" >
+<form id="formComm9-1" action="javascript:makeRequest('9-1');" >
+<input id="comm9-1" type="text" class="command" style="width: 46em;" value='ey: KeyedAccessFile(Integer) := open("/tmp/editor.year", "output")  ' />
+</form>
+<span id="commSav9-1" class="commSav" >ey: KeyedAccessFile(Integer) := open("/tmp/editor.year", "output")  </span>
+<div id="mathAns9-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/editor.year"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: KeyedAccessFile Integer
+</div>
+
+
+
+<p>Just as for vectors, tables or lists, values are saved in a keyed access file
+by setting elements.
+</p>
+
+
+
+
+<div id="spadComm9-2" class="spadComm" >
+<form id="formComm9-2" action="javascript:makeRequest('9-2');" >
+<input id="comm9-2" type="text" class="command" style="width: 15em;" value='ey."Char"     := 1986 ' />
+</form>
+<span id="commSav9-2" class="commSav" >ey."Char"     := 1986 </span>
+<div id="mathAns9-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1986</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-3" class="spadComm" >
+<form id="formComm9-3" action="javascript:makeRequest('9-3');" >
+<input id="comm9-3" type="text" class="command" style="width: 15em;" value='ey."Caviness" := 1985 ' />
+</form>
+<span id="commSav9-3" class="commSav" >ey."Caviness" := 1985 </span>
+<div id="mathAns9-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1985</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-4" class="spadComm" >
+<form id="formComm9-4" action="javascript:makeRequest('9-4');" >
+<input id="comm9-4" type="text" class="command" style="width: 15em;" value='ey."Fitch"    := 1984 ' />
+</form>
+<span id="commSav9-4" class="commSav" >ey."Fitch"    := 1984 </span>
+<div id="mathAns9-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1984</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Values are retrieved using application, in any of its syntactic forms.
+</p>
+
+
+
+
+<div id="spadComm9-5" class="spadComm" >
+<form id="formComm9-5" action="javascript:makeRequest('9-5');" >
+<input id="comm9-5" type="text" class="command" style="width: 6em;" value='ey."Char"' />
+</form>
+<span id="commSav9-5" class="commSav" >ey."Char"</span>
+<div id="mathAns9-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1986</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-6" class="spadComm" >
+<form id="formComm9-6" action="javascript:makeRequest('9-6');" >
+<input id="comm9-6" type="text" class="command" style="width: 7em;" value='ey("Char")' />
+</form>
+<span id="commSav9-6" class="commSav" >ey("Char")</span>
+<div id="mathAns9-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1986</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-7" class="spadComm" >
+<form id="formComm9-7" action="javascript:makeRequest('9-7');" >
+<input id="comm9-7" type="text" class="command" style="width: 6em;" value='ey "Char"' />
+</form>
+<span id="commSav9-7" class="commSav" >ey "Char"</span>
+<div id="mathAns9-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1986</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Attempting to retrieve a non-existent element in this way causes an error.
+If it is not known whether a key exists, you should use the
+<span class="spadfunFrom" >search</span><span class="index">search</span><a name="chapter-9-0"/><span class="index">KeyedAccessFile</span><a name="chapter-9-1"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-8" class="spadComm" >
+<form id="formComm9-8" action="javascript:makeRequest('9-8');" >
+<input id="comm9-8" type="text" class="command" style="width: 14em;" value='search("Char", ey)   ' />
+</form>
+<span id="commSav9-8" class="commSav" >search("Char", ey)   </span>
+<div id="mathAns9-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1986</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-9" class="spadComm" >
+<form id="formComm9-9" action="javascript:makeRequest('9-9');" >
+<input id="comm9-9" type="text" class="command" style="width: 13em;" value='search("Smith", ey)' />
+</form>
+<span id="commSav9-9" class="commSav" >search("Smith", ey)</span>
+<div id="mathAns9-9" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>When an entry is no longer needed, it can be removed from the file.
+</p>
+
+
+
+
+<div id="spadComm9-10" class="spadComm" >
+<form id="formComm9-10" action="javascript:makeRequest('9-10');" >
+<input id="comm9-10" type="text" class="command" style="width: 14em;" value='remove!("Char", ey)  ' />
+</form>
+<span id="commSav9-10" class="commSav" >remove!("Char", ey)  </span>
+<div id="mathAns9-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1986</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Integer,...)
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >keys</span><span class="index">keys</span><a name="chapter-9-2"/><span class="index">KeyedAccessFile</span><a name="chapter-9-3"/> operation returns a list of all the
+keys for a given file.
+</p>
+
+
+
+
+<div id="spadComm9-11" class="spadComm" >
+<form id="formComm9-11" action="javascript:makeRequest('9-11');" >
+<input id="comm9-11" type="text" class="command" style="width: 6em;" value="keys ey  " />
+</form>
+<span id="commSav9-11" class="commSav" >keys ey  </span>
+<div id="mathAns9-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mtext><mrow><mtext mathvariant='monospace'>"Fitch"</mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"Caviness"</mtext></mrow></mtext><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List String
+</div>
+
+
+
+<p>The <span class="spadfunFrom" > #</span><span class="index"> #</span><a name="chapter-9-4"/><span class="index">KeyedAccessFile</span><a name="chapter-9-5"/> operation gives the
+number of entries.
+</p>
+
+
+
+
+<div id="spadComm9-12" class="spadComm" >
+<form id="formComm9-12" action="javascript:makeRequest('9-12');" >
+<input id="comm9-12" type="text" class="command" style="width: 3em;" value=" #ey" />
+</form>
+<span id="commSav9-12" class="commSav" > #ey</span>
+<div id="mathAns9-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The table view of keyed access files provides safe operations.  That
+is, if the Axiom program is terminated between file operations, the
+file is left in a consistent, current state.  This means, however,
+that the operations are somewhat costly.  For example, after each
+update the file is closed.
+</p>
+
+
+<p>Here we add several more items to the file, then check its contents.
+</p>
+
+
+
+
+<div id="spadComm9-13" class="spadComm" >
+<form id="formComm9-13" action="javascript:makeRequest('9-13');" >
+<input id="comm9-13" type="text" class="command" style="width: 29em;" value="KE := Record(key: String, entry: Integer)  " />
+</form>
+<span id="commSav9-13" class="commSav" >KE := Record(key: String, entry: Integer)  </span>
+<div id="mathAns9-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>Record(key:String,entry:Integer)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-14" class="spadComm" >
+<form id="formComm9-14" action="javascript:makeRequest('9-14');" >
+<input id="comm9-14" type="text" class="command" style="width: 16em;" value='reopen!(ey, "output")  ' />
+</form>
+<span id="commSav9-14" class="commSav" >reopen!(ey, "output")  </span>
+<div id="mathAns9-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/editor.year"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: KeyedAccessFile Integer
+</div>
+
+
+
+<p>If many items are to be added to a file at the same time, then
+it is more efficient to use the <span class="spadfunFrom" >write</span><span class="index">write</span><a name="chapter-9-6"/><span class="index">KeyedAccessFile</span><a name="chapter-9-7"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-15" class="spadComm" >
+<form id="formComm9-15" action="javascript:makeRequest('9-15');" >
+<input id="comm9-15" type="text" class="command" style="width: 25em;" value='write!(ey, ["van Hulzen", 1983]$KE)  ' />
+</form>
+<span id="commSav9-15" class="commSav" >write!(ey, ["van Hulzen", 1983]$KE)  </span>
+<div id="mathAns9-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mrow><mi>key</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"vanHulzen"</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mi>entry</mi><mo>=</mo><mn>1983</mn></mrow><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(key: String,entry: Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-16" class="spadComm" >
+<form id="formComm9-16" action="javascript:makeRequest('9-16');" >
+<input id="comm9-16" type="text" class="command" style="width: 21em;" value='write!(ey, ["Calmet", 1982]$KE)' />
+</form>
+<span id="commSav9-16" class="commSav" >write!(ey, ["Calmet", 1982]$KE)</span>
+<div id="mathAns9-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mrow><mi>key</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"Calmet"</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mi>entry</mi><mo>=</mo><mn>1982</mn></mrow><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(key: String,entry: Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-17" class="spadComm" >
+<form id="formComm9-17" action="javascript:makeRequest('9-17');" >
+<input id="comm9-17" type="text" class="command" style="width: 20em;" value='write!(ey, ["Wang", 1981]$KE)' />
+</form>
+<span id="commSav9-17" class="commSav" >write!(ey, ["Wang", 1981]$KE)</span>
+<div id="mathAns9-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mrow><mi>key</mi><mo>=</mo><mtext><mrow><mtext mathvariant='monospace'>"Wang"</mtext></mrow></mtext></mrow><mo>,</mo><mrow><mi>entry</mi><mo>=</mo><mn>1981</mn></mrow><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(key: String,entry: Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-18" class="spadComm" >
+<form id="formComm9-18" action="javascript:makeRequest('9-18');" >
+<input id="comm9-18" type="text" class="command" style="width: 6em;" value="close! ey" />
+</form>
+<span id="commSav9-18" class="commSav" >close! ey</span>
+<div id="mathAns9-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/editor.year"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: KeyedAccessFile Integer
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >read</span><span class="index">read</span><a name="chapter-9-8"/><span class="index">KeyedAccessFile</span><a name="chapter-9-9"/> operation is also available
+from the file view, but it returns elements in a random order.  It is
+generally clearer and more efficient to use the
+<span class="spadfunFrom" >keys</span><span class="index">keys</span><a name="chapter-9-10"/><span class="index">KeyedAccessFile</span><a name="chapter-9-11"/> operation and to extract elements
+by key.
+</p>
+
+
+
+
+<div id="spadComm9-19" class="spadComm" >
+<form id="formComm9-19" action="javascript:makeRequest('9-19');" >
+<input id="comm9-19" type="text" class="command" style="width: 5em;" value="keys ey" />
+</form>
+<span id="commSav9-19" class="commSav" >keys ey</span>
+<div id="mathAns9-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mtext><mrow><mtext mathvariant='monospace'>"Wang"</mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"Calmet"</mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"vanHulzen"</mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"Fitch"</mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"Caviness"</mtext></mrow></mtext><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List String
+</div>
+
+
+
+
+
+<div id="spadComm9-20" class="spadComm" >
+<form id="formComm9-20" action="javascript:makeRequest('9-20');" >
+<input id="comm9-20" type="text" class="command" style="width: 7em;" value="members ey" />
+</form>
+<span id="commSav9-20" class="commSav" >members ey</span>
+<div id="mathAns9-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mn>1981</mn><mo>,</mo><mn>1982</mn><mo>,</mo><mn>1983</mn><mo>,</mo><mn>1984</mn><mo>,</mo><mn>1985</mn><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-21" class="spadComm" >
+<form id="formComm9-21" action="javascript:makeRequest('9-21');" >
+<input id="comm9-21" type="text" class="command" style="width: 20em;" value=")system rm -r /tmp/editor.year" />
+</form>
+<span id="commSav9-21" class="commSav" >)system rm -r /tmp/editor.year</span>
+<div id="mathAns9-21" ></div>
+</div>
+
+
+
+<p>For more information on related topics, see 
+<a href="section-9.24.xhtml#FileXmpPage" class="ref" >FileXmpPage</a> ,
+<a href="section-9.81.xhtml#TextFileXmpPage" class="ref" >TextFileXmpPage</a> , and 
+<a href="section-9.41.xhtml#LibraryXmpPage" class="ref" >LibraryXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.37.xhtml" style="margin-right: 10px;">Previous Section 9.37  Kernel</a><a href="section-9.39.xhtml" style="margin-right: 10px;">Next Section 9.39 LexTriangularPackage</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.39.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.39.xhtml
new file mode 100644
index 0000000..fd7c048
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.39.xhtml
@@ -0,0 +1,936 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.39</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.38.xhtml" style="margin-right: 10px;">Previous Section 9.38 KeyedAccessFile</a><a href="section-9.40.xhtml" style="margin-right: 10px;">Next Section 9.40 LazardSetSolvingPackage</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.39">
+<h2 class="sectiontitle">9.39  LexTriangularPackage</h2>
+
+
+<a name="LexTriangularPackageXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">LexTriangularPackage</span> package constructor provides an
+implementation of the <span class="em">lexTriangular</span> algorithm (D. Lazard
+``Solving Zero-dimensional Algebraic Systems'', J. of Symbol. Comput.,
+1992).  This algorithm decomposes a zero-dimensional variety into
+zero-sets of regular triangular sets.  Thus the input system must have
+a finite number of complex solutions.  Moreover, this system needs to
+be a lexicographical Groebner basis.
+</p>
+
+
+<p>This package takes two arguments: the coefficient-ring <span style="font-weight: bold;"> R</span> of the
+polynomials, which must be a <span class="teletype">GcdDomain</span> and their set of
+variables given by <span style="font-weight: bold;"> ls</span> a <span class="teletype">List Symbol</span>.  The type of the
+input polynomials must be <span class="teletype">NewSparseMultivariatePolynomial(R,V)</span>
+where <span style="font-weight: bold;"> V</span> is <span class="teletype">OrderedVariableList(ls)</span>.  The abbreviation for
+<span class="teletype">LexTriangularPackage</span> is <span class="teletype">LEXTRIPK</span>.  The main operations are
+<span class="spadfunFrom" >lexTriangular</span><span class="index">lexTriangular</span><a name="chapter-9-12"/><span class="index">LexTriangularPackage</span><a name="chapter-9-13"/> and
+<span class="spadfunFrom" >squareFreeLexTriangular</span><span class="index">squareFreeLexTriangular</span><a name="chapter-9-14"/><span class="index">LexTriangularPackage</span><a name="chapter-9-15"/>.  The
+later provide decompositions by means of square-free regular
+triangular sets, built with the <span class="teletype">SREGSET</span> constructor, whereas the
+former uses the <span class="teletype">REGSET</span> constructor.  Note that these
+constructors also implement another algorithm for solving algebraic
+systems by means of regular triangular sets; in that case no
+computations of Groebner bases are needed and the input system may
+have any dimension (i.e. it may have an infinite number of solutions).
+</p>
+
+
+<p>The implementation of the <span class="em">lexTriangular</span> algorithm provided in
+the <span class="teletype">LexTriangularPackage</span> constructor differs from that reported
+in ``Computations of gcd over algebraic towers of simple extensions'' by
+M. Moreno Maza and R. Rioboo (in proceedings of AAECC11, Paris, 1995).
+Indeed, the <span class="spadfunFrom" >squareFreeLexTriangular</span><span class="index">squareFreeLexTriangular</span><a name="chapter-9-16"/><span class="index">LexTriangularPackage</span><a name="chapter-9-17"/> 
+operation removes all multiplicities of the solutions (i.e. the computed
+solutions are pairwise different) and the
+<span class="spadfunFrom" >lexTriangular</span><span class="index">lexTriangular</span><a name="chapter-9-18"/><span class="index">LexTriangularPackage</span><a name="chapter-9-19"/> operation may keep
+some multiplicities; this later operation runs generally faster than
+the former.
+</p>
+
+
+<p>The interest of the <span class="em">lexTriangular</span> algorithm is due to the
+following experimental remark.  For some examples, a triangular
+decomposition of a zero-dimensional variety can be computed faster via
+a lexicographical Groebner basis computation than by using a direct
+method (like that of <span class="teletype">SREGSET</span> and <span class="teletype">REGSET</span>).  This happens
+typically when the total degree of the system relies essentially on
+its smallest variable (like in the <span class="em">Katsura</span> systems).  When this
+is not the case, the direct method may give better timings (like in
+the <span class="em">Rose</span> system).
+</p>
+
+
+<p>Of course, the direct method can also be applied to a lexicographical
+Groebner basis.  However, the <span class="em">lexTriangular</span> algorithm takes
+advantage of the structure of this basis and avoids many unnecessary
+computations which are performed by the direct method.
+</p>
+
+
+<p>For this purpose of solving algebraic systems with a finite number of
+solutions, see also the <span class="teletype">ZeroDimensionalSolvePackage</span>.  It allows
+to use both strategies (the lexTriangular algorithm and the direct
+method) for computing either the complex or real roots of a system.
+</p>
+
+
+<p>Note that the way of understanding triangular decompositions is
+detailed in the example of the <span class="teletype">RegularTriangularSet</span> constructor.
+</p>
+
+
+<p>Since the <span class="teletype">LEXTRIPK</span> package constructor is limited to
+zero-dimensional systems, it provides a
+<span class="spadfunFrom" >zeroDimensional?</span><span class="index">zeroDimensional?</span><a name="chapter-9-20"/><span class="index">LexTriangularPackage</span><a name="chapter-9-21"/> operation to
+check whether this requirement holds.  There is also a
+<span class="spadfunFrom" >groebner</span><span class="index">groebner</span><a name="chapter-9-22"/><span class="index">LexTriangularPackage</span><a name="chapter-9-23"/> operation to compute the
+lexicographical Groebner basis of a set of polynomials with type <span class="teletype">NewSparseMultivariatePolynomial(R,V)</span>.  The elimination ordering is
+that given by <span style="font-weight: bold;"> ls</span> (the greatest variable being the first element
+of <span style="font-weight: bold;"> ls</span>).  This basis is computed by the <span class="em">FLGM</span> algorithm
+(Faugere et al. ``Efficient Computation of Zero-Dimensional Groebner
+Bases by Change of Ordering'' , J. of Symbol. Comput., 1993)
+implemented in the <span class="teletype">LinGroebnerPackage</span> package constructor.
+Once a lexicographical Groebner basis is computed,
+then one can call the operations 
+<span class="spadfunFrom" >lexTriangular</span><span class="index">lexTriangular</span><a name="chapter-9-24"/><span class="index">LexTriangularPackage</span><a name="chapter-9-25"/>
+and <span class="spadfunFrom" >squareFreeLexTriangular</span><span class="index">squareFreeLexTriangular</span><a name="chapter-9-26"/><span class="index">LexTriangularPackage</span><a name="chapter-9-27"/>.
+Note that these operations admit an optional argument
+to produce normalized triangular sets.
+There is also a <span class="spadfunFrom" >zeroSetSplit</span><span class="index">zeroSetSplit</span><a name="chapter-9-28"/><span class="index">LexTriangularPackage</span><a name="chapter-9-29"/> operation
+which does all the job from the input system;
+an error is produced if this system is not zero-dimensional.
+</p>
+
+
+<p>Let us illustrate the facilities of the <span class="teletype">LEXTRIPK</span> constructor
+by a famous example, the <span class="em">cyclic-6 root</span> system.
+</p>
+
+
+<p>Define the coefficient ring.
+</p>
+
+
+
+
+<div id="spadComm9-22" class="spadComm" >
+<form id="formComm9-22" action="javascript:makeRequest('9-22');" >
+<input id="comm9-22" type="text" class="command" style="width: 9em;" value="R := Integer " />
+</form>
+<span id="commSav9-22" class="commSav" >R := Integer </span>
+<div id="mathAns9-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>Integer</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the list of variables,
+</p>
+
+
+
+
+<div id="spadComm9-23" class="spadComm" >
+<form id="formComm9-23" action="javascript:makeRequest('9-23');" >
+<input id="comm9-23" type="text" class="command" style="width: 23em;" value="ls : List Symbol := [a,b,c,d,e,f] " />
+</form>
+<span id="commSav9-23" class="commSav" >ls : List Symbol := [a,b,c,d,e,f] </span>
+<div id="mathAns9-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>,</mo><mi>d</mi><mo>,</mo><mi>e</mi><mo>,</mo><mi>f</mi><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>and make it an ordered set.
+</p>
+
+
+
+
+<div id="spadComm9-24" class="spadComm" >
+<form id="formComm9-24" action="javascript:makeRequest('9-24');" >
+<input id="comm9-24" type="text" class="command" style="width: 10em;" value="V := OVAR(ls)  " />
+</form>
+<span id="commSav9-24" class="commSav" >V := OVAR(ls)  </span>
+<div id="mathAns9-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedVariableList[a,b,c,d,e,f]</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the polynomial ring.
+</p>
+
+
+
+
+<div id="spadComm9-25" class="spadComm" >
+<form id="formComm9-25" action="javascript:makeRequest('9-25');" >
+<input id="comm9-25" type="text" class="command" style="width: 10em;" value="P := NSMP(R, V)" />
+</form>
+<span id="commSav9-25" class="commSav" >P := NSMP(R, V)</span>
+<div id="mathAns9-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>NewSparseMultivariatePolynomial(Integer,OrderedVariableList[a,b,c,d,e,f])</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the polynomials.
+</p>
+
+
+
+
+<div id="spadComm9-26" class="spadComm" >
+<form id="formComm9-26" action="javascript:makeRequest('9-26');" >
+<input id="comm9-26" type="text" class="command" style="width: 18em;" value="p1: P :=  a*b*c*d*e*f - 1  " />
+</form>
+<span id="commSav9-26" class="commSav" >p1: P :=  a*b*c*d*e*f - 1  </span>
+<div id="mathAns9-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+</div>
+
+
+
+
+
+<div id="spadComm9-27" class="spadComm" >
+<form id="formComm9-27" action="javascript:makeRequest('9-27');" >
+<input id="comm9-27" type="text" class="command" style="width: 51em;" value="p2: P := a*b*c*d*e +a*b*c*d*f +a*b*c*e*f +a*b*d*e*f +a*c*d*e*f +b*c*d*e*f   " />
+</form>
+<span id="commSav9-27" class="commSav" >p2: P := a*b*c*d*e +a*b*c*d*f +a*b*c*e*f +a*b*d*e*f +a*c*d*e*f +b*c*d*e*f   </span>
+<div id="mathAns9-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mi>e</mi><mo>+</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+</div>
+
+
+
+
+
+<div id="spadComm9-28" class="spadComm" >
+<form id="formComm9-28" action="javascript:makeRequest('9-28');" >
+<input id="comm9-28" type="text" class="command" style="width: 46em;" value="p3: P :=  a*b*c*d + a*b*c*f + a*b*e*f + a*d*e*f + b*c*d*e + c*d*e*f  " />
+</form>
+<span id="commSav9-28" class="commSav" >p3: P :=  a*b*c*d + a*b*c*f + a*b*e*f + a*d*e*f + b*c*d*e + c*d*e*f  </span>
+<div id="mathAns9-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mi>d</mi><mo>+</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+</div>
+
+
+
+
+
+<div id="spadComm9-29" class="spadComm" >
+<form id="formComm9-29" action="javascript:makeRequest('9-29');" >
+<input id="comm9-29" type="text" class="command" style="width: 38em;" value="p4: P := a*b*c + a*b*f + a*e*f + b*c*d + c*d*e + d*e*f   " />
+</form>
+<span id="commSav9-29" class="commSav" >p4: P := a*b*c + a*b*f + a*e*f + b*c*d + c*d*e + d*e*f   </span>
+<div id="mathAns9-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mi>c</mi><mo>+</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+</div>
+
+
+
+
+
+<div id="spadComm9-30" class="spadComm" >
+<form id="formComm9-30" action="javascript:makeRequest('9-30');" >
+<input id="comm9-30" type="text" class="command" style="width: 30em;" value="p5: P := a*b + a*f + b*c + c*d + d*e + e*f  " />
+</form>
+<span id="commSav9-30" class="commSav" >p5: P := a*b + a*f + b*c + c*d + d*e + e*f  </span>
+<div id="mathAns9-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo><mo>(</mo></mo><mi>b</mi><mo>+</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mi>e</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+</div>
+
+
+
+
+
+<div id="spadComm9-31" class="spadComm" >
+<form id="formComm9-31" action="javascript:makeRequest('9-31');" >
+<input id="comm9-31" type="text" class="command" style="width: 22em;" value="p6: P := a + b + c + d + e + f   " />
+</form>
+<span id="commSav9-31" class="commSav" >p6: P := a + b + c + d + e + f   </span>
+<div id="mathAns9-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>a</mi><mo>+</mo><mi>b</mi><mo>+</mo><mi>c</mi><mo>+</mo><mi>d</mi><mo>+</mo><mi>e</mi><mo>+</mo><mi>f</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+</div>
+
+
+
+
+
+<div id="spadComm9-32" class="spadComm" >
+<form id="formComm9-32" action="javascript:makeRequest('9-32');" >
+<input id="comm9-32" type="text" class="command" style="width: 20em;" value="lp := [p1, p2, p3, p4, p5, p6]" />
+</form>
+<span id="commSav9-32" class="commSav" >lp := [p1, p2, p3, p4, p5, p6]</span>
+<div id="mathAns9-32" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mi>e</mi><mo>+</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mi>d</mi><mo>+</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mrow><mo><mo>(</mo></mo><mi>c</mi><mo>+</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>e</mi><mspace width="0.5 em" /><mi>d</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi><mspace width="0.5 em" /><mi>d</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mi>b</mi><mo>+</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mi>c</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mi>d</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mi>e</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>a</mi><mo>+</mo><mi>b</mi><mo>+</mo><mi>c</mi><mo>+</mo><mi>d</mi><mo>+</mo><mi>e</mi><mo>+</mo><mi>f</mi></mrow><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+</div>
+
+
+
+<p>Now call <span class="teletype">LEXTRIPK</span> .
+</p>
+
+
+
+
+<div id="spadComm9-33" class="spadComm" >
+<form id="formComm9-33" action="javascript:makeRequest('9-33');" >
+<input id="comm9-33" type="text" class="command" style="width: 20em;" value="lextripack :=  LEXTRIPK(R,ls)" />
+</form>
+<span id="commSav9-33" class="commSav" >lextripack :=  LEXTRIPK(R,ls)</span>
+<div id="mathAns9-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>LexTriangularPackage</mi><mo>(</mo><mi>Integer</mi><mo>,</mo><mo>[</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>,</mo><mi>d</mi><mo>,</mo><mi>e</mi><mo>,</mo><mi>f</mi><mo>]</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Compute the lexicographical Groebner basis of the system.
+This may take between 5 minutes and one hour, depending on your machine.
+</p>
+
+
+
+
+<div id="spadComm9-34" class="spadComm" >
+<form id="formComm9-34" action="javascript:makeRequest('9-34');" >
+<input id="comm9-34" type="text" class="command" style="width: 20em;" value="lg := groebner(lp)$lextripack" />
+</form>
+<span id="commSav9-34" class="commSav" >lg := groebner(lp)$lextripack</span>
+<div id="mathAns9-34" ></div>
+</div>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>+</mo><mi>b</mi><mo>+</mo><mi>c</mi><mo>+</mo><mi>d</mi><mo>+</mo><mi>e</mi><mo>+</mo><mi>f</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mrow><mn>3968379498283200</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15873517993132800</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3968379498283200</mn><mspace width="0.5 em" /><mrow><msup><mi>d</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15873517993132800</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3968379498283200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>15873517993132800</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>23810276989699200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>206355733910726400</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mn>230166010900425600</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>729705987316687</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1863667496867205421</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>291674853771731104461</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>365285994691106921745</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>549961185828911895</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>365048404038768439269</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>292382820431504027669</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2271898467631865497</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo><mrow><mn>3988812642545399</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>44</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>10187423878429609997</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>38</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1594377523424314053637</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1994739308439916238065</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1596840088052642815</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1993494118301162145413</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1596049742289689815053</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>11488171330159667449</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>23810276989699200</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mn>23810276989699200</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>b</mi><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>23810276989699200</mn><mspace width="0.5 em" /><mrow><msup><mi>c</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>71430830969097600</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>23810276989699200</mn><mspace width="0.5 em" /><mrow><msup><mi>d</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>95241107958796800</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>55557312975964800</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>174608697924460800</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>174608697924460800</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>2428648252949318400</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mn>2611193709870345600</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>8305444561289527</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>21212087151945459641</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3319815883093451385381</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>4157691646261657136445</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6072721607510764095</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4154986709036460221649</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3327761311138587096749</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>25885340608290841637</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>+</mo><mrow><mn>45815897629010329</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>44</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>117013765582151891207</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>38</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18313166848970865074187</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>22909971239649297438915</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16133250761305157265</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>22897305857636178256623</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18329944781867242497923</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>130258531002020420699</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>7936758996566400</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mn>7936758996566400</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>b</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>7936758996566400</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mn>7936758996566400</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>23810276989699200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>23810276989699200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>337312257354072000</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mn>369059293340337600</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>1176345388640471</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3004383582891473073</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>470203502707246105653</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>588858183402644348085</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>856939308623513535</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>588472674242340526377</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>471313241958371103517</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3659742549078552381</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>6423170513956901</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>44</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16404772137036480803</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>38</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2567419165227528774463</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3211938090825682172335</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2330490332697587485</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3210100109444754864587</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2569858315395162617847</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18326089487427735751</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>11905138494849600</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>11905138494849600</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>b</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>3968379498283200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15873517993132800</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>27778656487982400</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>208339923659868000</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mn>240086959646133600</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>786029984751110</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2007519008182245250</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>314188062908073807090</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>393423667537929575250</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>550329120654394950</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>393196408728889612770</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>314892372799176495730</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2409386515146668530</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>+</mo><mrow><mn>4177638546747827</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>44</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>10669685294602576381</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>38</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1669852980419949524601</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2089077057287904170745</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1569899763580278795</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2087864026859015573349</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1671496085945199577969</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>11940257226216280177</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>11905138494849600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mn>11905138494849600</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>b</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>15873517993132800</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>39683794982832000</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>39683794982832000</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>686529653202993600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>607162063237329600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>65144531306704</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>42</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>166381280901088652</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>36</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>26033434502470283472</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>31696259583860650140</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>971492093167581360</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>32220085033691389548</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>25526177666070529808</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mn>138603268355749244</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>167620036074811</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>428102417974791473</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>66997243801231679313</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>83426716722148750485</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>203673895369980765</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>83523056326010432457</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>66995789640238066937</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>478592855549587901</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mrow><mn>801692827936</mn><mspace width="0.5 em" /><mrow><msup><mi>c</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2405078483808</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mrow><msup><mi>c</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2405078483808</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mn>13752945467</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>45</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>35125117815561</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>39</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5496946957826433</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>33</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>6834659447749117</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>27</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>44484880462461</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>21</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>6873406230093057</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5450844938762633</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1216586044571</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>23810276989699200</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mn>23810276989699200</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>c</mi><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>23810276989699200</mn><mspace width="0.5 em" /><mrow><msup><mi>d</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>71430830969097600</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>7936758996566400</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>31747035986265600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>31747035986265600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>404774708824886400</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mn>396837949828320000</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>1247372229446701</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3185785654596621203</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>498594866849974751463</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>624542545845791047935</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>931085755769682885</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>624150663582417063387</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>499881859388360475647</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>3926885313819527351</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo><mrow><mn>7026011547118141</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>44</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>17944427051950691243</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>38</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2808383522593986603543</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3513624142354807530135</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2860757006705537685</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>3511356735642190737267</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2811332494697103819887</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>20315011631522847311</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>7936758996566400</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>7936758996566400</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>c</mi><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>4418748183673</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>11285568707456559</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1765998617294451019</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2173749283622606155</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>55788292195402895</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2215291421788292951</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1718142665347430851</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>30256569458230237</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>+</mo><mrow><mn>4418748183673</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>44</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>11285568707456559</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>38</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1765998617294451019</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2173749283622606155</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>55788292195402895</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2215291421788292951</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1718142665347430851</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>30256569458230237</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>72152354514240</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mn>72152354514240</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>c</mi><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>40950859449</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>104588980990367</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>16367227395575307</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>20268523416527355</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>442205002259535</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>20576059935789063</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>15997133796970563</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>275099892785581</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mrow><mn>1984189749141600</mn><mspace width="0.5 em" /><mrow><msup><mi>d</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5952569247424800</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mrow><msup><mi>d</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>5952569247424800</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mn>3968379498283200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>15873517993132800</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>17857707742274400</mn><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>148814231185620000</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>162703559429611200</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>390000914678878</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>44</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>996062704593756434</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>38</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>155886323972034823914</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>194745956143985421330</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>6205077595574430</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>194596512653299068786</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>155796897940756922666</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1036375759077320978</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>374998630035991</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>45</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>957747106595453993</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>39</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>149889155566764891693</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>33</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>187154171443494641685</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>27</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>127129015426348065</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>21</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>187241533243115040417</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>15</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>149719983567976534037</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>836654081239648061</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>5952569247424800</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>5952569247424800</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>d</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>3968379498283200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9920948745708000</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>3968379498283200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>148814231185620000</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mn>150798420934761600</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>492558110242553</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1257992359608074599</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>196883094539368513959</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>246562115745735428055</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>325698701993885505</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>246417769883651808111</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>197327352068200652911</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1523373796389332143</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>+</mo><mrow><mn>2679481081803026</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>44</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>6843392695421906608</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>38</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1071020459642646913578</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1339789169692041240060</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>852746750910750210</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1339105101971878401312</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1071900289758712984762</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>7555239072072727756</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>11905138494849600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mn>11905138494849600</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>d</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>7936758996566400</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>31747035986265600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>31747035986265600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>420648226818019200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>404774708824886400</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>15336187600889</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>42</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>39169739565161107</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>36</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>6127176127489690827</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7217708742310509615</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>538628483890722735</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7506804353843507643</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>5886160769782607203</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mn>63576108396535879</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>71737781777066</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>183218856207557938</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>28672874271132276078</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>35625223686939812010</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>164831339634084390</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>35724160423073052642</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>28627022578664910622</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>187459987029680506</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mrow><mn>1322793166094400</mn><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3968379498283200</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3968379498283200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5291172664377600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>230166010900425600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>226197631402142400</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>152375364610443885</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>47</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>389166626064854890415</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>41</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>60906097841360558987335</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>35</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>76167367934608798697275</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>29</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>27855066785995181125</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>23</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>76144952817052723145495</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>17</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>60933629892463517546975</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>411415071682002547795</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>209493533143822</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>42</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>535045979490560586</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>36</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>83737947964973553146</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>104889507084213371570</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>167117997269207870</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>104793725781390615514</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>83842685189903180394</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mn>569978796672974242</mn><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>25438330117200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mn>25438330117200</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>76314990351600</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>76314990351600</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>1594966552735</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>44</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4073543370415745</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>38</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>637527159231148925</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>797521176113606525</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>530440941097175</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>797160527306433145</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>638132320196044965</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4510507167940725</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>6036376800443</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>45</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15416903421476909</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>39</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2412807646192304449</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>33</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3017679923028013705</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>27</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1422320037411955</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>21</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3016560402417843941</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>15</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2414249368183033161</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16561862361763873</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mn>1387545279120</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>4321823003</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>43</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>11037922310209</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>37</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1727510711947989</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2165150991154425</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>5114342560755</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2162682824948601</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1732620732685741</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>13506088516033</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>24177661775</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>44</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>61749727185325</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>38</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>9664106795754225</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12090487758628245</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>8787672733575</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12083693383005045</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>9672870290826025</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>68544102808525</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mrow><msup><mi>f</mi><mn>48</mn></msup></mrow><mo>-</mo><mrow><mn>2554</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>42</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>399710</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>36</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>499722</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>499722</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>399710</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2554</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mtd></mtr></mtable><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+</div>
+
+
+
+<p>Apply lexTriangular to compute a decomposition into regular triangular sets.
+This should not take more than 5 seconds.
+</p>
+
+
+
+
+<div id="spadComm9-35" class="spadComm" >
+<form id="formComm9-35" action="javascript:makeRequest('9-35');" >
+<input id="comm9-35" type="text" class="command" style="width: 23em;" value="lexTriangular(lg,false)$lextripack" />
+</form>
+<span id="commSav9-35" class="commSav" >lexTriangular(lg,false)$lextripack</span>
+<div id="mathAns9-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mtable><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>e</mi><mn>6</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mi>f</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>a</mi><mo>-</mo><mrow><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>c</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><mo><mo>(</mo></mo><mi>c</mi><mo>-</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow></mrow><mo>,</mo><mrow><mi>a</mi><mo>+</mo><mi>b</mi><mo>+</mo><mi>c</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>a</mi><mo>+</mo><mi>b</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>d</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><mo><mo>(</mo></mo><mi>d</mi><mo>-</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>a</mi><mo>+</mo><mi>c</mi><mo>+</mo><mi>d</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>36</mn></msup></mrow><mo>-</mo><mrow><mn>2554</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>399709</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>502276</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>399709</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2554</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>161718564</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mn>161718564</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>504205</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1287737951</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>201539391380</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>253982817368</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>201940704665</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1574134601</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2818405</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7198203911</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1126548149060</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1416530563364</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1127377589345</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7988820725</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>693772639560</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mn>693772639560</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>d</mi><mo>-</mo><mrow><mn>462515093040</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1850060372160</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1850060372160</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>24513299931120</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>23588269745040</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>890810428</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2275181044754</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>355937263869776</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>413736880104344</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>342849304487996</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mn>3704966481878</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo><mrow><mn>4163798003</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10634395752169</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1664161760192806</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2079424391370694</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1668153650635921</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>10924274392693</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo><mo><mo>(</mo></mo><mrow><mn>12614047992</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mn>12614047992</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>c</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>7246825</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18508536599</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2896249516034</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3581539649666</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2796477571739</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>48094301893</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>693772639560</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mn>693772639560</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>b</mi><mo>-</mo><mrow><mn>925030186080</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2312575465200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2312575465200</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>40007555547960</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>35382404617560</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>3781280823</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9657492291789</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1511158913397906</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1837290892286154</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1487216006594361</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mn>8077238712093</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo><mrow><mn>9736390478</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24866827916734</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3891495681905296</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4872556418871424</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3904047887269606</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>27890075838538</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo><mrow><mi>a</mi><mo>+</mo><mi>b</mi><mo>+</mo><mi>c</mi><mo>+</mo><mi>d</mi><mo>+</mo><mi>e</mi><mo>+</mo><mi>f</mi></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><mo><mo>(</mo></mo><mi>e</mi><mo>-</mo><mi>f</mi><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>a</mi><mo>+</mo><mi>d</mi><mo>+</mo><mi>e</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo><mo>}</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List RegularChain(Integer,[a,b,c,d,e,f])
+</div>
+
+
+
+<p>Note that the first set of the decomposition is normalized (all
+initials are integer numbers) but not the second one (normalized
+triangular sets are defined in the description of the 
+<span class="teletype">NormalizedTriangularSetCategory</span> constructor).
+</p>
+
+
+<p>So apply now lexTriangular to produce normalized triangular sets.
+</p>
+
+
+
+
+<div id="spadComm9-36" class="spadComm" >
+<form id="formComm9-36" action="javascript:makeRequest('9-36');" >
+<input id="comm9-36" type="text" class="command" style="width: 29em;" value="lts := lexTriangular(lg,true)$lextripack   " />
+</form>
+<span id="commSav9-36" class="commSav" >lts := lexTriangular(lg,true)$lextripack   </span>
+<div id="mathAns9-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mtable><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>e</mi><mn>6</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mi>f</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>a</mi><mo>-</mo><mrow><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>c</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>b</mi><mo>+</mo><mi>c</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo><mrow><mi>a</mi><mo>-</mo><mi>f</mi></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>a</mi><mo>+</mo><mi>b</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>d</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mi>d</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>a</mi><mo>-</mo><mi>f</mi></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>36</mn></msup></mrow><mo>-</mo><mrow><mn>2554</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>399709</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>502276</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>399709</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2554</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>4321823003</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>11037922310209</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1727506390124986</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2176188913464634</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1732620732685741</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>13506088516033</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>+</mo><mrow><mn>24177661775</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>61749727185325</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>9664082618092450</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12152237485813570</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9672870290826025</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>68544102808525</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>1128983050</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2883434331830</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>451234998755840</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>562426491685760</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>447129055314890</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mn>165557857270</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo><mrow><mn>1816935351</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4640452214013</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>726247129626942</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>912871801716798</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>726583262666877</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4909358645961</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mn>778171189</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1987468196267</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>310993556954378</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>383262822316802</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>300335488637543</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>5289595037041</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>1128983050</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2883434331830</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>451234998755840</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>562426491685760</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>447129055314890</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mn>165557857270</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo><mrow><mn>3283058841</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8384938292463</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1312252817452422</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1646579934064638</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1306372958656407</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4694680112151</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mn>4321823003</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>11037922310209</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1727506390124986</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2176188913464634</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1732620732685741</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>13506088516033</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>d</mi><mo>+</mo><mi>e</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>a</mi><mo>-</mo><mi>f</mi></mrow><mo><mo>}</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List RegularChain(Integer,[a,b,c,d,e,f])
+</div>
+
+
+
+<p>We check that all initials are constant.
+</p>
+
+
+
+
+<div id="spadComm9-37" class="spadComm" >
+<form id="formComm9-37" action="javascript:makeRequest('9-37');" >
+<input id="comm9-37" type="text" class="command" style="width: 36em;" value="[ [init(p) for p in (ts :: List(P))] for ts in lts]  " />
+</form>
+<span id="commSav9-37" class="commSav" >[ [init(p) for p in (ts :: List(P))] for ts in lts]  </span>
+<div id="mathAns9-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mo><mo>[</mo></mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo><mo>]</mo></mo></mrow><mo>,</mo><mrow><mo><mo>[</mo></mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo><mo>]</mo></mo></mrow><mo>,</mo><mrow><mo><mo>[</mo></mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo><mo>]</mo></mo></mrow><mo>,</mo><mrow><mo><mo>[</mo></mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo><mo>]</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mn>1387545279120</mn><mo>,</mo><mn>1387545279120</mn><mo>,</mo><mn>1387545279120</mn><mo>,</mo></mtd></mtr><mtr><mtd><mn>1387545279120</mn><mo>,</mo><mn>1387545279120</mn><mo>,</mo><mn>1</mn><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo><mo>[</mo></mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo><mo>]</mo></mo></mrow><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+</div>
+
+
+
+<p>Note that each triangular set in <span style="font-weight: bold;"> lts</span> is a lexicographical
+Groebner basis.  Recall that a point belongs to the variety associated
+with <span style="font-weight: bold;"> lp</span> if and only if it belongs to that associated with one
+triangular set <span style="font-weight: bold;"> ts</span> in <span style="font-weight: bold;"> lts</span>.
+</p>
+
+
+<p>By running the <span class="spadfunFrom" >squareFreeLexTriangular</span><span class="index">squareFreeLexTriangular</span><a name="chapter-9-30"/><span class="index">LexTriangularPackage</span><a name="chapter-9-31"/> 
+operation, we retrieve the above decomposition.
+</p>
+
+
+
+
+<div id="spadComm9-38" class="spadComm" >
+<form id="formComm9-38" action="javascript:makeRequest('9-38');" >
+<input id="comm9-38" type="text" class="command" style="width: 30em;" value="squareFreeLexTriangular(lg,true)$lextripack  " />
+</form>
+<span id="commSav9-38" class="commSav" >squareFreeLexTriangular(lg,true)$lextripack  </span>
+<div id="mathAns9-38" ></div>
+</div>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mtable><mtr><mtd><mo><mo>[</mo></mo><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>e</mi><mn>6</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>c</mi><mo>+</mo><mi>f</mi></mrow><mo>,</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>a</mi><mo>-</mo><mrow><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>c</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>b</mi><mo>+</mo><mi>c</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo><mrow><mi>a</mi><mo>-</mo><mi>f</mi></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>a</mi><mo>+</mo><mi>b</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>d</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mi>d</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>a</mi><mo>-</mo><mi>f</mi></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>36</mn></msup></mrow><mo>-</mo><mrow><mn>2554</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>399709</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>502276</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>399709</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2554</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>4321823003</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>11037922310209</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1727506390124986</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2176188913464634</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1732620732685741</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>13506088516033</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>+</mo><mrow><mn>24177661775</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>32</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>61749727185325</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>26</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>9664082618092450</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>20</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12152237485813570</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9672870290826025</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>68544102808525</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>1128983050</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2883434331830</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>451234998755840</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>562426491685760</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>447129055314890</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mn>165557857270</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo><mrow><mn>1816935351</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4640452214013</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>726247129626942</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>912871801716798</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>726583262666877</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4909358645961</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mn>778171189</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1987468196267</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>310993556954378</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>383262822316802</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>300335488637543</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>5289595037041</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>1128983050</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>30</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2883434331830</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>24</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>451234998755840</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>562426491685760</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>447129055314890</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mn>165557857270</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>e</mi><mo>-</mo><mrow><mn>3283058841</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8384938292463</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1312252817452422</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1646579934064638</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1306372958656407</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4694680112151</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>,</mo><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>1387545279120</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4321823003</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>11037922310209</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1727506390124986</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2176188913464634</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1732620732685741</mn><mspace width="0.5 em" /><mrow><msup><mi>f</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>13506088516033</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><msup><mi>f</mi><mn>6</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>e</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><msup><mi>f</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>d</mi><mo>+</mo><mi>e</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mi>f</mi></mrow><mo>,</mo><mrow><mi>a</mi><mo>-</mo><mi>f</mi></mrow><mo><mo>}</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+<div class="returnType">
+Type: List SquareFreeRegularTriangularSet(Integer,IndexedExponents OrderedVariableList [a,b,c,d,e,f],OrderedVariableList [a,b,c,d,e,f],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f]))
+</div>
+
+
+
+<p>Thus the solutions given by <span style="font-weight: bold;"> lts</span> are pairwise different.
+</p>
+
+
+<p>We count them as follows.
+</p>
+
+
+
+
+<div id="spadComm9-39" class="spadComm" >
+<form id="formComm9-39" action="javascript:makeRequest('9-39');" >
+<input id="comm9-39" type="text" class="command" style="width: 25em;" value="reduce(+,[degree(ts) for ts in lts]) " />
+</form>
+<span id="commSav9-39" class="commSav" >reduce(+,[degree(ts) for ts in lts]) </span>
+<div id="mathAns9-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>156</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>We can investigate the triangular decomposition <span style="font-weight: bold;"> lts</span> by using the
+<span class="teletype">ZeroDimensionalSolvePackage</span>.
+</p>
+
+
+<p>This requires to add an extra variable (smaller than the others) as follows.
+</p>
+
+
+
+
+<div id="spadComm9-40" class="spadComm" >
+<form id="formComm9-40" action="javascript:makeRequest('9-40');" >
+<input id="comm9-40" type="text" class="command" style="width: 31em;" value="ls2 : List Symbol := concat(ls,new()$Symbol)  " />
+</form>
+<span id="commSav9-40" class="commSav" >ls2 : List Symbol := concat(ls,new()$Symbol)  </span>
+<div id="mathAns9-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>,</mo><mi>d</mi><mo>,</mo><mi>e</mi><mo>,</mo><mi>f</mi><mo>,</mo><mo>%</mo><mi>A</mi><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>Then we call the package.
+</p>
+
+
+
+
+<div id="spadComm9-41" class="spadComm" >
+<form id="formComm9-41" action="javascript:makeRequest('9-41');" >
+<input id="comm9-41" type="text" class="command" style="width: 21em;" value="zdpack := ZDSOLVE(R,ls,ls2)    " />
+</form>
+<span id="commSav9-41" class="commSav" >zdpack := ZDSOLVE(R,ls,ls2)    </span>
+<div id="mathAns9-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>ZeroDimensionalSolvePackage</mi><mo>(</mo><mi>Integer</mi><mo>,</mo><mo>[</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>,</mo><mi>d</mi><mo>,</mo><mi>e</mi><mo>,</mo><mi>f</mi><mo>]</mo><mo>,</mo><mo>[</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>,</mo><mi>d</mi><mo>,</mo><mi>e</mi><mo>,</mo><mi>f</mi><mo>,</mo><mo>%</mo><mi>A</mi><mo>]</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>We compute a univariate representation of the variety associated with
+the input system as follows.
+</p>
+
+
+
+
+<div id="spadComm9-42" class="spadComm" >
+<form id="formComm9-42" action="javascript:makeRequest('9-42');" >
+<input id="comm9-42" type="text" class="command" style="width: 34em;" value="concat [univariateSolve(ts)$zdpack for ts in lts]  " />
+</form>
+<span id="commSav9-42" class="commSav" >concat [univariateSolve(ts)$zdpack for ts in lts]  </span>
+<div id="mathAns9-42" ></div>
+</div>
+
+
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mo><mo>[</mo></mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>13</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>49</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>7</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>21</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>21</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>7</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>21</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>21</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+<p><math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>11</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>49</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>35</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>35</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>35</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>35</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>35</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>35</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>58</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>120</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>207</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>360</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>802</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1332</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>1369</mn><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mn>43054532</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>33782</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>546673</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3127348</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6927123</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4365212</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>25086957</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>39582814</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>107313172</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>43054532</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>33782</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>546673</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3127348</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>6927123</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4365212</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>25086957</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>39582814</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>107313172</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>21527266</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mn>22306</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>263139</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1166076</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1821805</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>2892788</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10322663</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9026596</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>12950740</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>43054532</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mn>22306</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>263139</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1166076</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1821805</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2892788</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>10322663</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30553862</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>12950740</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>43054532</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>22306</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>263139</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1166076</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1821805</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2892788</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>10322663</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30553862</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>12950740</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>21527266</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mn>22306</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>263139</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1166076</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1821805</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2892788</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>10322663</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9026596</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>12950740</mn><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>58</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>120</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>207</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>360</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>802</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1332</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>1369</mn><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mn>43054532</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>33782</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>546673</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3127348</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>6927123</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4365212</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>25086957</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>39582814</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>107313172</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>43054532</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>33782</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>546673</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3127348</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>6927123</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4365212</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>25086957</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>39582814</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>107313172</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>21527266</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mn>22306</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>263139</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1166076</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1821805</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2892788</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10322663</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9026596</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>12950740</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>43054532</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mn>22306</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>263139</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1166076</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1821805</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2892788</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10322663</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30553862</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>12950740</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>43054532</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>22306</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>263139</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1166076</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1821805</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2892788</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10322663</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30553862</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>12950740</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>21527266</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mn>22306</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>263139</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1166076</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1821805</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2892788</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10322663</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9026596</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>12950740</mn><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>b</mi><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>d</mi><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>f</mi><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>20</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>22</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>20</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>22</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>36</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>36</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>f</mi><mo>+</mo><mn>1</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>f</mi><mo>-</mo><mn>1</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>36</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>36</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>f</mi><mo>+</mo><mn>1</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>+</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>f</mi><mo>-</mo><mn>1</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>36</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>36</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>f</mi><mo>+</mo><mn>1</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>+</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>f</mi><mo>-</mo><mn>1</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>4</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>4</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>4</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>4</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>4</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>4</mn><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo></mtd></mtr><mtr><mtd><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>64</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>192</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>432</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>768</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1024</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>768</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>256</mn><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mn>1408</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>200</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>912</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2216</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>4544</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6784</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6976</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>1792</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1408</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>37</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>408</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1952</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5024</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>10368</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16768</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>17920</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>5120</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1408</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mn>37</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>408</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1952</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5024</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>10368</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16768</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>17920</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>5120</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1408</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>200</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>912</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2216</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4544</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6784</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6976</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>1792</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>20</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>22</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>20</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>22</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>96</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>256</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>256</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>512</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>176</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>448</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>128</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>-</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>96</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>256</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>128</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>96</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>256</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>512</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>176</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>448</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo></mtd></mtr><mtr><mtd><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>64</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>192</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>432</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>768</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1024</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>768</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>256</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mn>1408</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>200</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>912</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2216</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>4544</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6784</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6976</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>1792</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1408</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>37</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>408</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1952</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5024</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>10368</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16768</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>17920</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>5120</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1408</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mn>37</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>408</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1952</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5024</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>10368</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16768</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>17920</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>5120</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>1408</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>200</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>912</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2216</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4544</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6784</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6976</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>1792</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>4</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>4</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>4</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>4</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>4</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>4</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>144</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>12</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>12</mn></mrow><mo>,</mo><mrow><mrow><mn>12</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>12</mn></mrow><mo>,</mo><mrow><mrow><mn>12</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>12</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>12</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>12</mn></mrow><mo>,</mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>12</mn></mrow><mo>,</mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>12</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>36</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>6</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>36</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>6</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>144</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>12</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>12</mn></mrow><mo>,</mo><mrow><mrow><mn>12</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>12</mn></mrow><mo>,</mo><mrow><mrow><mn>12</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>12</mn></mrow><mo>,</mo><mrow><mrow><mn>12</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>12</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>12</mn></mrow><mo>,</mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>12</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>-</mo><mn>12</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>4</mn></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>4</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>f</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>+</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>f</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>1</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>-</mo><mn>12</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>+</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>4</mn></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>4</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>36</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>36</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>c</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>d</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>e</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><mn>30</mn><mspace width="0.5 em" /><mi>f</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>+</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>f</mi><mo>+</mo><mn>1</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>6</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>a</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>c</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>d</mi><mo>-</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>5</mn></mrow><mo>,</mo><mrow><mi>e</mi><mo>+</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>f</mi><mo>-</mo><mn>1</mn></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable><mo><mo>]</mo></mo></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,coordinates: List Polynomial Integer)
+</div>
+
+
+
+<p>Since the <span class="spadfunFrom" >univariateSolve</span><span class="index">univariateSolve</span><a name="chapter-9-32"/><span class="index">ZeroDimensionalSolvePackage</span><a name="chapter-9-33"/>
+operation may split a regular set, it returns a list. This explains
+the use of <span class="spadfunFrom" >concat</span><span class="index">concat</span><a name="chapter-9-34"/><span class="index">List</span><a name="chapter-9-35"/>.
+</p>
+
+
+<p>Look at the last item of the result. It consists of two parts.  For
+any complex root <span style="font-weight: bold;"> ?</span> of the univariate polynomial in the first
+part, we get a tuple of univariate polynomials (in <span style="font-weight: bold;"> a</span>, ..., 
+<span style="font-weight: bold;"> f</span> respectively) by replacing <span style="font-weight: bold;"> %A</span> by <span style="font-weight: bold;"> ?</span> in the second part.
+Each of these tuples <span style="font-weight: bold;"> t</span> describes a point of the variety
+associated with <span style="font-weight: bold;"> lp</span> by equaling to zero the polynomials in <span style="font-weight: bold;"> t</span>.
+</p>
+
+
+<p>Note that the way of reading these univariate representations is explained also
+in the example illustrating the <span class="teletype">ZeroDimensionalSolvePackage</span> constructor.
+</p>
+
+
+<p>Now, we compute the points of the variety with real coordinates.
+</p>
+
+
+
+
+<div id="spadComm9-43" class="spadComm" >
+<form id="formComm9-43" action="javascript:makeRequest('9-43');" >
+<input id="comm9-43" type="text" class="command" style="width: 30em;" value="concat [realSolve(ts)$zdpack for ts in lts]  " />
+</form>
+<span id="commSav9-43" class="commSav" >concat [realSolve(ts)$zdpack for ts in lts]  </span>
+<div id="mathAns9-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>27</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>27</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+<p><math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>28</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>28</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>26</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>26</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow></mrow></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow></mrow></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>30</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>30</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>30</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>30</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>31</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>31</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>30</mn></mrow></mrow></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>30</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>30</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>30</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>30</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>30</mn></mrow></mrow></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>35</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>35</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>39</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>39</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>35</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>35</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>35</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>35</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>35</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>40</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>40</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>35</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>35</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>35</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>36</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>36</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>37</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>37</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>36</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>36</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>36</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>36</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>36</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>38</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>38</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>36</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>36</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>36</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>52</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>7865521</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6696179241</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>25769893181</mn><mn>49235160</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1975912990729</mn><mn>3003344760</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1048460696489</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>21252634831</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>778171189</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1987468196267</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>155496778477189</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>191631411158401</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>300335488637543</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>755656433863</mn><mn>198220754160</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1094352947</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2794979430821</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>218708802908737</mn><mn>231257546520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>91476663003591</mn><mn>77085848840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>145152550961823</mn><mn>154171697680</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1564893370717</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>52</mn></mrow><mo>-</mo><mrow><mfrac><mn>4321823003</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>180949546069</mn><mn>22746643920</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>863753195062493</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1088094456732317</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1732620732685741</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13506088516033</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>41</mn></mrow></mrow><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>49</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>7865521</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6696179241</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>25769893181</mn><mn>49235160</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1975912990729</mn><mn>3003344760</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1048460696489</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>21252634831</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>778171189</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1987468196267</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>155496778477189</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>191631411158401</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>300335488637543</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>755656433863</mn><mn>198220754160</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1094352947</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2794979430821</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>218708802908737</mn><mn>231257546520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>91476663003591</mn><mn>77085848840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>145152550961823</mn><mn>154171697680</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1564893370717</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>49</mn></mrow><mo>-</mo><mrow><mfrac><mn>4321823003</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>180949546069</mn><mn>22746643920</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>863753195062493</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1088094456732317</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1732620732685741</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13506088516033</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow></mrow><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>50</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>7865521</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6696179241</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>25769893181</mn><mn>49235160</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1975912990729</mn><mn>3003344760</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1048460696489</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>21252634831</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>778171189</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1987468196267</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>155496778477189</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>191631411158401</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>300335488637543</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>755656433863</mn><mn>198220754160</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1094352947</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2794979430821</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>218708802908737</mn><mn>231257546520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>91476663003591</mn><mn>77085848840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>145152550961823</mn><mn>154171697680</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1564893370717</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>50</mn></mrow><mo>-</mo><mrow><mfrac><mn>4321823003</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>180949546069</mn><mn>22746643920</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>863753195062493</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1088094456732317</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1732620732685741</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13506088516033</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>42</mn></mrow></mrow><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>47</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>7865521</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6696179241</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>25769893181</mn><mn>49235160</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1975912990729</mn><mn>3003344760</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1048460696489</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>21252634831</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>778171189</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1987468196267</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>155496778477189</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>191631411158401</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>300335488637543</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>755656433863</mn><mn>198220754160</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1094352947</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2794979430821</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>218708802908737</mn><mn>231257546520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>91476663003591</mn><mn>77085848840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>145152550961823</mn><mn>154171697680</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1564893370717</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>47</mn></mrow><mo>-</mo><mrow><mfrac><mn>4321823003</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>180949546069</mn><mn>22746643920</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>863753195062493</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1088094456732317</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1732620732685741</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13506088516033</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow></mrow><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>48</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>7865521</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6696179241</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>25769893181</mn><mn>49235160</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1975912990729</mn><mn>3003344760</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1048460696489</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>21252634831</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>778171189</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1987468196267</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>155496778477189</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>191631411158401</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>300335488637543</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>755656433863</mn><mn>198220754160</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1094352947</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2794979430821</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>218708802908737</mn><mn>231257546520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>91476663003591</mn><mn>77085848840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>145152550961823</mn><mn>154171697680</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1564893370717</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>48</mn></mrow><mo>-</mo><mrow><mfrac><mn>4321823003</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>180949546069</mn><mn>22746643920</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>863753195062493</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1088094456732317</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1732620732685741</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13506088516033</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>43</mn></mrow></mrow><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>45</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>7865521</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6696179241</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>25769893181</mn><mn>49235160</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1975912990729</mn><mn>3003344760</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1048460696489</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>21252634831</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>778171189</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1987468196267</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>155496778477189</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>191631411158401</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>300335488637543</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>755656433863</mn><mn>198220754160</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1094352947</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2794979430821</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>218708802908737</mn><mn>231257546520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>91476663003591</mn><mn>77085848840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>145152550961823</mn><mn>154171697680</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1564893370717</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>45</mn></mrow><mo>-</mo><mrow><mfrac><mn>4321823003</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>180949546069</mn><mn>22746643920</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>863753195062493</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1088094456732317</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1732620732685741</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13506088516033</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow></mrow><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>46</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>7865521</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6696179241</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>25769893181</mn><mn>49235160</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1975912990729</mn><mn>3003344760</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1048460696489</mn><mn>2002229840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>21252634831</mn><mn>6006689520</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>778171189</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1987468196267</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>155496778477189</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>191631411158401</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>300335488637543</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>755656433863</mn><mn>198220754160</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1094352947</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2794979430821</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>218708802908737</mn><mn>231257546520</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>91476663003591</mn><mn>77085848840</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>145152550961823</mn><mn>154171697680</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1564893370717</mn><mn>462515093040</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>46</mn></mrow><mo>-</mo><mrow><mfrac><mn>4321823003</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>31</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>180949546069</mn><mn>22746643920</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>863753195062493</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1088094456732317</mn><mn>693772639560</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1732620732685741</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13506088516033</mn><mn>1387545279120</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>44</mn></mrow></mrow><mo><mo>]</mo></mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>53</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>57</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>57</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>53</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>53</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>53</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>53</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>53</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>58</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>58</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>53</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>53</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>53</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>53</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>54</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>55</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>55</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>54</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>54</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>54</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>54</mn></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mrow><mo>%</mo><mi>B</mi><mn>54</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>56</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>56</mn></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>54</mn></mrow></mrow></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>54</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>54</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>54</mn></mrow><mo><mo>]</mo></mo></mrow><mo><mo>]</mo></mo></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: List List RealClosure Fraction Integer
+</div>
+
+
+
+<p>We obtain 24 points given by lists of elements in the <span class="teletype">RealClosure</span> 
+of <span class="teletype">Fraction</span> of <span style="font-weight: bold;"> R</span>.  In each list, the first value corresponds 
+to the indeterminate <span style="font-weight: bold;"> f</span>, the second to <span style="font-weight: bold;"> e</span> and so on.  See 
+<span class="teletype">ZeroDimensionalSolvePackage</span> to learn more about the 
+<span class="spadfunFrom" >realSolve</span><span class="index">realSolve</span><a name="chapter-9-36"/><span class="index">ZeroDimensionalSolvePackage</span><a name="chapter-9-37"/> operation.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.38.xhtml" style="margin-right: 10px;">Previous Section 9.38 KeyedAccessFile</a><a href="section-9.40.xhtml" style="margin-right: 10px;">Next Section 9.40 LazardSetSolvingPackage</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.4.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.4.xhtml
new file mode 100644
index 0000000..07f948e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.4.xhtml
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.4</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.3.xhtml" style="margin-right: 10px;">Previous Section 9.3 BasicOperator</a><a href="section-9.5.xhtml" style="margin-right: 10px;">Next Section 9.5 BinarySearchTree</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.4">
+<h2 class="sectiontitle">9.4  BinaryExpansion</h2>
+
+
+<a name="BinaryExpansionXmpPage" class="label"/>
+
+
+<p>All rational numbers have repeating binary expansions.  Operations to
+access the individual bits of a binary expansion can be obtained by
+converting the value to <span class="teletype">RadixExpansion(2)</span>.  More examples of
+expansions are available in 
+<a href="section-9.15.xhtml#DecimalExpansionXmpPage" class="ref" >DecimalExpansionXmpPage</a> ,
+<a href="section-9.33.xhtml#HexadecimalExpansionXmpPage" class="ref" >HexadecimalExpansionXmpPage</a> , and 
+<a href="section-9.65.xhtml#RadixExpansionXmpPage" class="ref" >RadixExpansionXmpPage</a> .
+</p>
+
+
+<p>The expansion (of type <span class="teletype">BinaryExpansion</span>) of a rational number
+is returned by the <span class="spadfunFrom" >binary</span><span class="index">binary</span><a name="chapter-9-20"/><span class="index">BinaryExpansion</span><a name="chapter-9-21"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-39" class="spadComm" >
+<form id="formComm9-39" action="javascript:makeRequest('9-39');" >
+<input id="comm9-39" type="text" class="command" style="width: 12em;" value="r := binary(22/7)" />
+</form>
+<span id="commSav9-39" class="commSav" >r := binary(22/7)</span>
+<div id="mathAns9-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>11</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>001</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BinaryExpansion
+</div>
+
+
+
+<p>Arithmetic is exact.
+</p>
+
+
+
+
+<div id="spadComm9-40" class="spadComm" >
+<form id="formComm9-40" action="javascript:makeRequest('9-40');" >
+<input id="comm9-40" type="text" class="command" style="width: 10em;" value="r + binary(6/7)" />
+</form>
+<span id="commSav9-40" class="commSav" >r + binary(6/7)</span>
+<div id="mathAns9-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>100</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BinaryExpansion
+</div>
+
+
+
+<p>The period of the expansion can be short or long ...
+</p>
+
+
+
+
+<div id="spadComm9-41" class="spadComm" >
+<form id="formComm9-41" action="javascript:makeRequest('9-41');" >
+<input id="comm9-41" type="text" class="command" style="width: 22em;" value="[binary(1/i) for i in 102..106] " />
+</form>
+<span id="commSav9-41" class="commSav" >[binary(1/i) for i in 102..106] </span>
+<div id="mathAns9-41" ></div>
+</div>
+
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0</mn><mrow><mover accent="true"><mrow><mn>00000101</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>000000100111110001000101100101111001110010010101001</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>000</mn><mrow><mover accent="true"><mrow><mn>000100111011</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>000000100111</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn><mrow><mover accent="true"><mrow><mn>0000010011010100100001110011111011001010110111100011</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List BinaryExpansion
+</div>
+
+
+
+<p>or very long.
+</p>
+
+
+
+
+<div id="spadComm9-42" class="spadComm" >
+<form id="formComm9-42" action="javascript:makeRequest('9-42');" >
+<input id="comm9-42" type="text" class="command" style="width: 10em;" value="binary(1/1007) " />
+</form>
+<span id="commSav9-42" class="commSav" >binary(1/1007) </span>
+<div id="mathAns9-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>0</mn><mo>.</mo><mover accent="true"><mrow><mn>000000000100000100010100100101111000001111110000101111110010110001111101</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mover accent="true"><mrow><mn>000100111001001100110001100100101010111101101001100000000110000110011110</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mover accent="true"><mrow><mn>111000110100010111101001000111101100001010111011100111010101110011001010</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mover accent="true"><mrow><mn>010111000000011100011110010000001001001001101110010101001110100011011101</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mover accent="true"><mrow><mn>101011100010010000011001011011000000101100101111100010100000101010101101</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mover accent="true"><mrow><mn>011000001101101110100101011111110101110101001100100001010011011000100110</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mover accent="true"><mrow><mn>001000100001000011000111010011110001</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BinaryExpansion
+</div>
+
+
+
+<p>These numbers are bona fide algebraic objects.
+</p>
+
+
+
+
+<div id="spadComm9-43" class="spadComm" >
+<form id="formComm9-43" action="javascript:makeRequest('9-43');" >
+<input id="comm9-43" type="text" class="command" style="width: 34em;" value="p := binary(1/4)*x**2 + binary(2/3)*x + binary(4/9)" />
+</form>
+<span id="commSav9-43" class="commSav" >p := binary(1/4)*x**2 + binary(2/3)*x + binary(4/9)</span>
+<div id="mathAns9-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>0</mn><mo>.</mo><mn>01</mn></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>10</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>011100</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial BinaryExpansion
+</div>
+
+
+
+
+
+<div id="spadComm9-44" class="spadComm" >
+<form id="formComm9-44" action="javascript:makeRequest('9-44');" >
+<input id="comm9-44" type="text" class="command" style="width: 8em;" value="q := D(p, x)" />
+</form>
+<span id="commSav9-44" class="commSav" >q := D(p, x)</span>
+<div id="mathAns9-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>0</mn><mo>.</mo><mn>1</mn></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>0</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>10</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial BinaryExpansion
+</div>
+
+
+
+
+
+<div id="spadComm9-45" class="spadComm" >
+<form id="formComm9-45" action="javascript:makeRequest('9-45');" >
+<input id="comm9-45" type="text" class="command" style="width: 10em;" value="g := gcd(p, q)" />
+</form>
+<span id="commSav9-45" class="commSav" >g := gcd(p, q)</span>
+<div id="mathAns9-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>+</mo><mrow><mn>1</mn><mo>.</mo><mrow><mover accent="true"><mrow><mn>01</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial BinaryExpansion
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.3.xhtml" style="margin-right: 10px;">Previous Section 9.3 BasicOperator</a><a href="section-9.5.xhtml" style="margin-right: 10px;">Next Section 9.5 BinarySearchTree</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.40.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.40.xhtml
new file mode 100644
index 0000000..3ee4262
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.40.xhtml
@@ -0,0 +1,1235 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.40</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.39.xhtml" style="margin-right: 10px;">Previous Section 9.39 LexTriangularPackage</a><a href="section-9.41.xhtml" style="margin-right: 10px;">Next Section 9.41 Library</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.40">
+<h2 class="sectiontitle">9.40  LazardSetSolvingPackage</h2>
+
+
+<a name="LazardSetSolvingPackageXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">LazardSetSolvingPackage</span> package constructor solves
+polynomial systems by means of Lazard triangular sets.  However one
+condition is relaxed: Regular triangular sets whose saturated ideals
+have positive dimension are not necessarily normalized.
+</p>
+
+
+<p>The decompositions are computed in two steps.  First the algorithm of
+Moreno Maza (implemented in the <span class="teletype">RegularTriangularSet</span> domain
+constructor) is called.  Then the resulting decompositions are
+converted into lists of square-free regular triangular sets and the
+redundant components are removed.  Moreover, zero-dimensional regular
+triangular sets are normalized.
+</p>
+
+
+<p>Note that the way of understanding triangular decompositions 
+is detailed in the example of the <span class="teletype">RegularTriangularSet</span>
+constructor.
+</p>
+
+
+<p>The <span class="teletype">LazardSetSolvingPackage</span> constructor takes six arguments.
+The first one, <span style="font-weight: bold;"> R</span>, is the coefficient ring of the polynomials; it
+must belong to the category <span class="teletype">GcdDomain</span>.  The second one, <span style="font-weight: bold;"> E</span>,
+is the exponent monoid of the polynomials; it must belong to the
+category <span class="teletype">OrderedAbelianMonoidSup</span>.  the third one, <span style="font-weight: bold;"> V</span>, is
+the ordered set of variables; it must belong to the category <span class="teletype">OrderedSet</span>.  The fourth one is the polynomial ring; it must belong to
+the category <span class="teletype">RecursivePolynomialCategory(R,E,V)</span>.  The fifth one
+is a domain of the category <span class="teletype">RegularTriangularSetCategory(R,E,V,P)</span> 
+and the last one is a domain of
+the category <span class="teletype">SquareFreeRegularTriangularSetCategory(R,E,V,P)</span>.
+The abbreviation for <span class="teletype">LazardSetSolvingPackage</span> is <span class="teletype">LAZM3PK</span>.
+</p>
+
+
+<p><span style="font-weight: bold;"> N.B.</span> For the purpose of solving zero-dimensional algebraic systems,
+see also <span class="teletype">LexTriangularPackage</span> and <span class="teletype">ZeroDimensionalSolvePackage</span>.
+These packages are easier to call than <span class="teletype">LAZM3PK</span>.
+Moreover, the <span class="teletype">ZeroDimensionalSolvePackage</span> 
+package  provides operations
+to compute either the complex roots or the real roots.
+</p>
+
+
+<p>We illustrate now the use of the <span class="teletype">LazardSetSolvingPackage</span> package 
+constructor with two examples (Butcher and Vermeer).
+</p>
+
+
+<p>Define the coefficient ring.
+</p>
+
+
+
+
+<div id="spadComm9-44" class="spadComm" >
+<form id="formComm9-44" action="javascript:makeRequest('9-44');" >
+<input id="comm9-44" type="text" class="command" style="width: 8em;" value="R := Integer" />
+</form>
+<span id="commSav9-44" class="commSav" >R := Integer</span>
+<div id="mathAns9-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>Integer</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the list of variables,
+</p>
+
+
+
+
+<div id="spadComm9-45" class="spadComm" >
+<form id="formComm9-45" action="javascript:makeRequest('9-45');" >
+<input id="comm9-45" type="text" class="command" style="width: 26em;" value="ls : List Symbol := [b1,x,y,z,t,v,u,w] " />
+</form>
+<span id="commSav9-45" class="commSav" >ls : List Symbol := [b1,x,y,z,t,v,u,w] </span>
+<div id="mathAns9-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mi>b1</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>t</mi><mo>,</mo><mi>v</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>w</mi><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>and make it an ordered set:
+</p>
+
+
+
+
+<div id="spadComm9-46" class="spadComm" >
+<form id="formComm9-46" action="javascript:makeRequest('9-46');" >
+<input id="comm9-46" type="text" class="command" style="width: 9em;" value="V := OVAR(ls)" />
+</form>
+<span id="commSav9-46" class="commSav" >V := OVAR(ls)</span>
+<div id="mathAns9-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedVariableList[b1,x,y,z,t,v,u,w]</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>then define the exponent monoid.
+</p>
+
+
+
+
+<div id="spadComm9-47" class="spadComm" >
+<form id="formComm9-47" action="javascript:makeRequest('9-47');" >
+<input id="comm9-47" type="text" class="command" style="width: 17em;" value="E := IndexedExponents V  " />
+</form>
+<span id="commSav9-47" class="commSav" >E := IndexedExponents V  </span>
+<div id="mathAns9-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>IndexedExponentsOrderedVariableList[b1,x,y,z,t,v,u,w]</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the polynomial ring.
+</p>
+
+
+
+
+<div id="spadComm9-48" class="spadComm" >
+<form id="formComm9-48" action="javascript:makeRequest('9-48');" >
+<input id="comm9-48" type="text" class="command" style="width: 10em;" value="P := NSMP(R, V)" />
+</form>
+<span id="commSav9-48" class="commSav" >P := NSMP(R, V)</span>
+<div id="mathAns9-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w])</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Let the variables be polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-49" class="spadComm" >
+<form id="formComm9-49" action="javascript:makeRequest('9-49');" >
+<input id="comm9-49" type="text" class="command" style="width: 8em;" value="b1: P := 'b1" />
+</form>
+<span id="commSav9-49" class="commSav" >b1: P := 'b1</span>
+<div id="mathAns9-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b1</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-50" class="spadComm" >
+<form id="formComm9-50" action="javascript:makeRequest('9-50');" >
+<input id="comm9-50" type="text" class="command" style="width: 8em;" value="x: P := 'x  " />
+</form>
+<span id="commSav9-50" class="commSav" >x: P := 'x  </span>
+<div id="mathAns9-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-51" class="spadComm" >
+<form id="formComm9-51" action="javascript:makeRequest('9-51');" >
+<input id="comm9-51" type="text" class="command" style="width: 8em;" value="y: P := 'y  " />
+</form>
+<span id="commSav9-51" class="commSav" >y: P := 'y  </span>
+<div id="mathAns9-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-52" class="spadComm" >
+<form id="formComm9-52" action="javascript:makeRequest('9-52');" >
+<input id="comm9-52" type="text" class="command" style="width: 7em;" value="z: P := 'z" />
+</form>
+<span id="commSav9-52" class="commSav" >z: P := 'z</span>
+<div id="mathAns9-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>z</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-53" class="spadComm" >
+<form id="formComm9-53" action="javascript:makeRequest('9-53');" >
+<input id="comm9-53" type="text" class="command" style="width: 7em;" value="t: P := 't" />
+</form>
+<span id="commSav9-53" class="commSav" >t: P := 't</span>
+<div id="mathAns9-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>t</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-54" class="spadComm" >
+<form id="formComm9-54" action="javascript:makeRequest('9-54');" >
+<input id="comm9-54" type="text" class="command" style="width: 7em;" value="u: P := 'u" />
+</form>
+<span id="commSav9-54" class="commSav" >u: P := 'u</span>
+<div id="mathAns9-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>u</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-55" class="spadComm" >
+<form id="formComm9-55" action="javascript:makeRequest('9-55');" >
+<input id="comm9-55" type="text" class="command" style="width: 7em;" value="v: P := 'v" />
+</form>
+<span id="commSav9-55" class="commSav" >v: P := 'v</span>
+<div id="mathAns9-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>v</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-56" class="spadComm" >
+<form id="formComm9-56" action="javascript:makeRequest('9-56');" >
+<input id="comm9-56" type="text" class="command" style="width: 7em;" value="w: P := 'w" />
+</form>
+<span id="commSav9-56" class="commSav" >w: P := 'w</span>
+<div id="mathAns9-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>w</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+<p>Now call the <span class="teletype">RegularTriangularSet</span> domain constructor.
+</p>
+
+
+
+
+<div id="spadComm9-57" class="spadComm" >
+<form id="formComm9-57" action="javascript:makeRequest('9-57');" >
+<input id="comm9-57" type="text" class="command" style="width: 14em;" value="T := REGSET(R,E,V,P)" />
+</form>
+<span id="commSav9-57" class="commSav" >T := REGSET(R,E,V,P)</span>
+<div id="mathAns9-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>RegularTriangularSet(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;IndexedExponentsOrderedVariableList[b1,x,y,z,t,v,u,w],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w]))</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define a polynomial system (the Butcher example).
+</p>
+
+
+
+
+<div id="spadComm9-58" class="spadComm" >
+<form id="formComm9-58" action="javascript:makeRequest('9-58');" >
+<input id="comm9-58" type="text" class="command" style="width: 16em;" value="p0 := b1 + y + z - t - w" />
+</form>
+<span id="commSav9-58" class="commSav" >p0 := b1 + y + z - t - w</span>
+<div id="mathAns9-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>b1</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>z</mi><mo>-</mo><mi>t</mi><mo>-</mo><mi>w</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-59" class="spadComm" >
+<form id="formComm9-59" action="javascript:makeRequest('9-59');" >
+<input id="comm9-59" type="text" class="command" style="width: 30em;" value="p1 := 2*z*u + 2*y*v + 2*t*w - 2*w**2 - w - 1" />
+</form>
+<span id="commSav9-59" class="commSav" >p1 := 2*z*u + 2*y*v + 2*t*w - 2*w**2 - w - 1</span>
+<div id="mathAns9-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>w</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-60" class="spadComm" >
+<form id="formComm9-60" action="javascript:makeRequest('9-60');" >
+<input id="comm9-60" type="text" class="command" style="width: 43em;" value="p2 := 3*z*u**2 + 3*y*v**2 - 3*t*w**2 + 3*w**3 + 3*w**2 - t + 4*w" />
+</form>
+<span id="commSav9-60" class="commSav" >p2 := 3*z*u**2 + 3*y*v**2 - 3*t*w**2 + 3*w**3 + 3*w**2 - t + 4*w</span>
+<div id="mathAns9-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-61" class="spadComm" >
+<form id="formComm9-61" action="javascript:makeRequest('9-61');" >
+<input id="comm9-61" type="text" class="command" style="width: 40em;" value="p3 := 6*x*z*v - 6*t*w**2 + 6*w**3 - 3*t*w + 6*w**2 - t + 4*w" />
+</form>
+<span id="commSav9-61" class="commSav" >p3 := 6*x*z*v - 6*t*w**2 + 6*w**3 - 3*t*w + 6*w**2 - t + 4*w</span>
+<div id="mathAns9-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>v</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-62" class="spadComm" >
+<form id="formComm9-62" action="javascript:makeRequest('9-62');" >
+<input id="comm9-62" type="text" class="command" style="width: 49em;" value="p4 := 4*z*u**3+ 4*y*v**3+ 4*t*w**3- 4*w**4 - 6*w**3+ 4*t*w- 10*w**2- w- 1" />
+</form>
+<span id="commSav9-62" class="commSav" >p4 := 4*z*u**3+ 4*y*v**3+ 4*t*w**3- 4*w**4 - 6*w**3+ 4*t*w- 10*w**2- w- 1</span>
+<div id="mathAns9-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>w</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-63" class="spadComm" >
+<form id="formComm9-63" action="javascript:makeRequest('9-63');" >
+<input id="comm9-63" type="text" class="command" style="width: 51em;" value="p5 := 8*x*z*u*v +8*t*w**3 -8*w**4 +4*t*w**2 -12*w**3 +4*t*w -14*w**2 -3*w -1" />
+</form>
+<span id="commSav9-63" class="commSav" >p5 := 8*x*z*u*v +8*t*w**3 -8*w**4 +4*t*w**2 -12*w**3 +4*t*w -14*w**2 -3*w -1</span>
+<div id="mathAns9-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>8</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mi>v</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-64" class="spadComm" >
+<form id="formComm9-64" action="javascript:makeRequest('9-64');" >
+<input id="comm9-64" type="text" class="command" style="width: 52em;" value="p6 := 12*x*z*v**2+12*t*w**3 -12*w**4 +12*t*w**2 -18*w**3 +8*t*w -14*w**2 -w -1" />
+</form>
+<span id="commSav9-64" class="commSav" >p6 := 12*x*z*v**2+12*t*w**3 -12*w**4 +12*t*w**2 -18*w**3 +8*t*w -14*w**2 -w -1</span>
+<div id="mathAns9-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>w</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-65" class="spadComm" >
+<form id="formComm9-65" action="javascript:makeRequest('9-65');" >
+<input id="comm9-65" type="text" class="command" style="width: 51em;" value="p7 := -24*t*w**3 + 24*w**4 - 24*t*w**2 + 36*w**3 - 8*t*w + 26*w**2 + 7*w + 1" />
+</form>
+<span id="commSav9-65" class="commSav" >p7 := -24*t*w**3 + 24*w**4 - 24*t*w**2 + 36*w**3 - 8*t*w + 26*w**2 + 7*w + 1</span>
+<div id="mathAns9-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>26</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-66" class="spadComm" >
+<form id="formComm9-66" action="javascript:makeRequest('9-66');" >
+<input id="comm9-66" type="text" class="command" style="width: 26em;" value="lp := [p0, p1, p2, p3, p4, p5, p6, p7]" />
+</form>
+<span id="commSav9-66" class="commSav" >lp := [p0, p1, p2, p3, p4, p5, p6, p7]</span>
+<div id="mathAns9-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mi>b1</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>z</mi><mo>-</mo><mi>t</mi><mo>-</mo><mi>w</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>w</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>v</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>w</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>8</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mi>v</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>w</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>26</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+<p>First of all, let us solve this system in the sense of Lazard by means
+of the <span class="teletype">REGSET</span> constructor:
+</p>
+
+
+
+
+<div id="spadComm9-67" class="spadComm" >
+<form id="formComm9-67" action="javascript:makeRequest('9-67');" >
+<input id="comm9-67" type="text" class="command" style="width: 21em;" value="lts := zeroSetSplit(lp,false)$T" />
+</form>
+<span id="commSav9-67" class="commSav" >lts := zeroSetSplit(lp,false)$T</span>
+<div id="mathAns9-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mo><mo>{</mo></mo><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>z</mi><mo>+</mo><mn>2</mn></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo><mrow><mo><mo>{</mo></mo><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>v</mi><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mi>y</mi><mo>+</mo><mn>2</mn></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo><mo>{</mo></mo><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mn>2</mn></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo><mrow><mo><mo>{</mo></mo><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>v</mi><mo>-</mo><mi>u</mi></mrow><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mi>z</mi></mrow><mo>,</mo><mi>x</mi><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mn>2</mn></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo><mo>{</mo></mo><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>u</mi><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mi>z</mi><mo>+</mo><mn>2</mn></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><mn>144</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>216</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>96</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>11</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>1</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>u</mi></mrow><mo>-</mo><mrow><mn>72</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>108</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>42</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>w</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>1</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>v</mi></mrow><mo>+</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>26</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>w</mi><mspace width="0.5 em" /><mi>v</mi></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>5</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>v</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>42</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>w</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>v</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow></mrow><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>z</mi><mo>-</mo><mi>t</mi><mo>-</mo><mi>w</mi></mrow><mo><mo>}</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List 
+RegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [b1,x,y,z,t,v,u,w],
+OrderedVariableList [b1,x,y,z,t,v,u,w],
+NewSparseMultivariatePolynomial(
+Integer,OrderedVariableList [b1,x,y,z,t,v,u,w]))
+</div>
+
+
+
+<p>We can get the dimensions of each component
+of a decomposition as follows.
+</p>
+
+
+
+
+<div id="spadComm9-68" class="spadComm" >
+<form id="formComm9-68" action="javascript:makeRequest('9-68');" >
+<input id="comm9-68" type="text" class="command" style="width: 20em;" value="[coHeight(ts) for ts in lts] " />
+</form>
+<span id="commSav9-68" class="commSav" >[coHeight(ts) for ts in lts] </span>
+<div id="mathAns9-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>0</mn><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+<p>The first five sets have a simple shape.  However, the last one, which
+has dimension zero, can be simplified by using Lazard triangular sets.
+</p>
+
+
+<p>Thus we call the <span class="teletype">SquareFreeRegularTriangularSet</span> domain constructor,
+</p>
+
+
+
+
+<div id="spadComm9-69" class="spadComm" >
+<form id="formComm9-69" action="javascript:makeRequest('9-69');" >
+<input id="comm9-69" type="text" class="command" style="width: 15em;" value="ST := SREGSET(R,E,V,P)" />
+</form>
+<span id="commSav9-69" class="commSav" >ST := SREGSET(R,E,V,P)</span>
+<div id="mathAns9-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>SquareFreeRegularTriangularSet(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;IndexedExponentsOrderedVariableList[b1,x,y,z,t,v,u,w],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w]))</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>and set the <span class="teletype">LAZM3PK</span> package constructor to our situation.
+</p>
+
+
+
+
+<div id="spadComm9-70" class="spadComm" >
+<form id="formComm9-70" action="javascript:makeRequest('9-70');" >
+<input id="comm9-70" type="text" class="command" style="width: 20em;" value="pack := LAZM3PK(R,E,V,P,T,ST)" />
+</form>
+<span id="commSav9-70" class="commSav" >pack := LAZM3PK(R,E,V,P,T,ST)</span>
+<div id="mathAns9-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>LazardSetSolvingPackage(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;IndexedExponentsOrderedVariableList[b1,x,y,z,t,v,u,w],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w]),</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;RegularTriangularSet(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;IndexedExponentsOrderedVariableList[b1,x,y,z,t,v,u,w],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w])),</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;SquareFreeRegularTriangularSet(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;IndexedExponentsOrderedVariableList[b1,x,y,z,t,v,u,w],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[b1,x,y,z,t,v,u,w])))</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>We are ready to solve the system by means of Lazard triangular sets:
+</p>
+
+
+
+
+<div id="spadComm9-71" class="spadComm" >
+<form id="formComm9-71" action="javascript:makeRequest('9-71');" >
+<input id="comm9-71" type="text" class="command" style="width: 18em;" value="zeroSetSplit(lp,false)$pack" />
+</form>
+<span id="commSav9-71" class="commSav" >zeroSetSplit(lp,false)$pack</span>
+<div id="mathAns9-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mo><mo>{</mo></mo><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mn>2</mn></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo><mo>{</mo></mo><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>v</mi><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mi>y</mi><mo>+</mo><mn>2</mn></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo><mo>{</mo></mo><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>z</mi><mo>+</mo><mn>2</mn></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo><mo>{</mo></mo><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>v</mi><mo>-</mo><mi>u</mi></mrow><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mi>z</mi></mrow><mo>,</mo><mi>x</mi><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mn>2</mn></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo><mo>{</mo></mo><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>u</mi><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>,</mo><mrow><mi>b1</mi><mo>+</mo><mi>z</mi><mo>+</mo><mn>2</mn></mrow><mo><mo>}</mo></mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><mn>144</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>216</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>96</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>11</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>u</mi><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>48</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>60</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>2</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>t</mi><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>14</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mn>486</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mn>2772</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>4662</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2055</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>127</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2916</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>22752</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>30312</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8220</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2064</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>1561</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>356</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>3696</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4536</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>968</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>822</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>371</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2916</mn><mspace width="0.5 em" /><mi>b1</mi></mrow><mo>-</mo><mrow><mn>30600</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>46692</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>20274</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8076</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>593</mn></mrow><mo><mo>}</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List 
+SquareFreeRegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [b1,x,y,z,t,v,u,w],
+OrderedVariableList [b1,x,y,z,t,v,u,w],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [b1,x,y,z,t,v,u,w]))
+</div>
+
+
+
+<p>We see the sixth triangular set is <span class="em">nicer</span> now: each one of its
+polynomials has a constant initial.
+</p>
+
+
+<p>We follow with the Vermeer example. The ordering is the usual one
+for this system.
+</p>
+
+
+<p>Define the polynomial system.
+</p>
+
+
+
+
+<div id="spadComm9-72" class="spadComm" >
+<form id="formComm9-72" action="javascript:makeRequest('9-72');" >
+<input id="comm9-72" type="text" class="command" style="width: 25em;" value="f0 := (w - v) ** 2 + (u - t) ** 2 - 1" />
+</form>
+<span id="commSav9-72" class="commSav" >f0 := (w - v) ** 2 + (u - t) ** 2 - 1</span>
+<div id="mathAns9-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi><mspace width="0.5 em" /><mi>v</mi></mrow><mo>+</mo><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-73" class="spadComm" >
+<form id="formComm9-73" action="javascript:makeRequest('9-73');" >
+<input id="comm9-73" type="text" class="command" style="width: 14em;" value="f1 := t ** 2 - v ** 3" />
+</form>
+<span id="commSav9-73" class="commSav" >f1 := t ** 2 - v ** 3</span>
+<div id="mathAns9-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><msup><mi>v</mi><mn>3</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-74" class="spadComm" >
+<form id="formComm9-74" action="javascript:makeRequest('9-74');" >
+<input id="comm9-74" type="text" class="command" style="width: 30em;" value="f2 := 2 * t * (w - v) + 3 * v ** 2 * (u - t)" />
+</form>
+<span id="commSav9-74" class="commSav" >f2 := 2 * t * (w - v) + 3 * v ** 2 * (u - t)</span>
+<div id="mathAns9-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-75" class="spadComm" >
+<form id="formComm9-75" action="javascript:makeRequest('9-75');" >
+<input id="comm9-75" type="text" class="command" style="width: 30em;" value="f3 := (3 * z * v ** 2 - 1) * (2 * z * t - 1)" />
+</form>
+<span id="commSav9-75" class="commSav" >f3 := (3 * z * v ** 2 - 1) * (2 * z * t - 1)</span>
+<div id="mathAns9-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+
+
+<div id="spadComm9-76" class="spadComm" >
+<form id="formComm9-76" action="javascript:makeRequest('9-76');" >
+<input id="comm9-76" type="text" class="command" style="width: 15em;" value="lf := [f0, f1, f2, f3]" />
+</form>
+<span id="commSav9-76" class="commSav" >lf := [f0, f1, f2, f3]</span>
+<div id="mathAns9-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mrow><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi><mspace width="0.5 em" /><mi>v</mi></mrow><mo>+</mo><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><msup><mi>v</mi><mn>3</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+</div>
+
+
+
+<p>First of all, let us solve this system in the sense of Kalkbrener by
+means of the <span class="teletype">REGSET</span> constructor:
+</p>
+
+
+
+
+<div id="spadComm9-77" class="spadComm" >
+<form id="formComm9-77" action="javascript:makeRequest('9-77');" >
+<input id="comm9-77" type="text" class="command" style="width: 16em;" value="zeroSetSplit(lf,true)$T" />
+</form>
+<span id="commSav9-77" class="commSav" >zeroSetSplit(lf,true)$T</span>
+<div id="mathAns9-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mo><mo>{</mo></mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>1458</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4158</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1685</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1458</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2619</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4892</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>297</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5814</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>427</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>216</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2900</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2376</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3870</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>4072</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1188</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1656</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>529</mn><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>2187</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>4374</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>972</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12474</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>2868</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2187</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1944</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10125</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4800</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2501</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4968</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1587</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>v</mi><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>1944</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>108</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>972</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3024</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1080</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>496</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1116</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo><mo>(</mo></mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>t</mi><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>z</mi><mo>-</mo><mn>1</mn><mo><mo>}</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List 
+RegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [b1,x,y,z,t,v,u,w],
+OrderedVariableList [b1,x,y,z,t,v,u,w],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [b1,x,y,z,t,v,u,w]))
+</div>
+
+
+
+<p>We have obtained one regular chain (i.e. regular triangular set) with
+dimension 1.  This set is in fact a characterist set of the (radical
+of) of the ideal generated by the input system <span style="font-weight: bold;"> lf</span>.  Thus we have
+only the <span class="em">generic points</span> of the variety associated with <span style="font-weight: bold;"> lf</span>
+(for the elimination ordering given by <span style="font-weight: bold;"> ls</span>).
+</p>
+
+
+<p>So let us get now a full description of this variety.
+</p>
+
+
+<p>Hence, we solve this system in the sense of Lazard by means of the <span class="teletype">REGSET</span>
+constructor:
+</p>
+
+
+
+
+<div id="spadComm9-78" class="spadComm" >
+<form id="formComm9-78" action="javascript:makeRequest('9-78');" >
+<input id="comm9-78" type="text" class="command" style="width: 16em;" value="zeroSetSplit(lf,false)$T" />
+</form>
+<span id="commSav9-78" class="commSav" >zeroSetSplit(lf,false)$T</span>
+<div id="mathAns9-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mo><mo>{</mo></mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>1458</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4158</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1685</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>4</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1458</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2619</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4892</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>297</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5814</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>427</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>216</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2900</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2376</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3870</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4072</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1188</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1656</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>529</mn><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>2187</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>4374</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>972</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12474</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>2868</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2187</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1944</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10125</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4800</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2501</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4968</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1587</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>v</mi><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>1944</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>108</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>972</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3024</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1080</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>496</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1116</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>t</mi><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo><mo>(</mo></mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>t</mi><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>z</mi><mo>-</mo><mn>1</mn><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>23</mn><mo>,</mo></mtd></mtr><mtr><mtd><mi>u</mi><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>2</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>v</mi><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>9</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>3</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><mn>59049</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>91854</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>45198</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>145152</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>63549</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>60922</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>21420</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>31484448266904</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18316865522574</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>23676995746098</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6657857188965</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>8904703998546</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>3890631403260</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>94262810316408</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>82887296576616</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>89801831438784</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>28141734167208</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>38070359425432</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>16003865949120</mn><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>243</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>85</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>81</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>162</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>154</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>72</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>v</mi><mo>-</mo><mrow><mn>72</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>t</mi><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo><mo>(</mo></mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>t</mi><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>z</mi><mo>-</mo><mn>1</mn><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>23</mn></mrow><mo>,</mo><mi>u</mi><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>2</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>9</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>3</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo><mo>}</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List 
+RegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [b1,x,y,z,t,v,u,w],
+OrderedVariableList [b1,x,y,z,t,v,u,w],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [b1,x,y,z,t,v,u,w]))
+</div>
+
+
+
+<p>We retrieve our regular chain of dimension 1 and we get three regular
+chains of dimension 0 corresponding to the <span class="em">degenerated cases</span>.
+We want now to simplify these zero-dimensional regular chains by using
+Lazard triangular sets.  Moreover, this will allow us to prove that
+the above decomposition has no redundant component.  <span style="font-weight: bold;"> N.B.</span>
+Generally, decompositions computed by the <span class="teletype">REGSET</span> constructor do
+not have redundant components.  However, to be sure that no redundant
+component occurs one needs to use the <span class="teletype">SREGSET</span> or <span class="teletype">LAZM3PK</span>
+constructors.
+</p>
+
+
+<p>So let us solve the input system in the sense of Lazard by means of
+the <span class="teletype">LAZM3PK</span> constructor:
+</p>
+
+
+
+
+<div id="spadComm9-79" class="spadComm" >
+<form id="formComm9-79" action="javascript:makeRequest('9-79');" >
+<input id="comm9-79" type="text" class="command" style="width: 20em;" value="zeroSetSplit(lf,false)$pack  " />
+</form>
+<span id="commSav9-79" class="commSav" >zeroSetSplit(lf,false)$pack  </span>
+<div id="mathAns9-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mo><mo>{</mo></mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>1458</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4158</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1685</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>4</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mo><mo>(</mo></mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1458</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2619</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4892</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>297</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5814</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>427</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>216</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2900</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2376</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3870</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4072</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>1188</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1656</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>529</mn><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>2187</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>4374</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>972</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12474</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>2868</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>2187</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1944</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10125</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4800</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2501</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4968</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1587</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>v</mi><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>1944</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>108</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>972</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3024</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1080</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>496</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1116</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>t</mi><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mo><mo>(</mo></mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>t</mi><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>z</mi><mo>-</mo><mn>1</mn><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mn>81</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>28</mn><mo>,</mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1890</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>533</mn><mo>,</mo><mrow><mn>81</mn><mspace width="0.5 em" /><mrow><msup><mi>v</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>162</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>27</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>v</mi><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>72</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>112</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>11881</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>972</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>2997</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mi>v</mi><mo>+</mo><mrow><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>11448</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>11536</mn><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>u</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>641237934604288</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo><mo>(</mo></mo><mo><mo>(</mo></mo><mrow><mn>78614584763904</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>26785578742272</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>u</mi><mo>+</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>236143618655616</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>70221988585728</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>v</mi><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>358520253138432</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mn>101922133759488</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>u</mi><mo>+</mo><mrow><mn>142598803536000</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>54166419595008</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mo><mo>(</mo></mo><mrow><mn>32655103844499</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>44224572465882</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>u</mi><mspace width="0.5 em" /><mi>v</mi><mo>+</mo></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>43213900115457</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>32432039102070</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>u</mi><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>23</mn><mo>,</mo><mi>u</mi><mo>,</mo><mrow><mn>218</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>162</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>160</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>153</mn><mo>,</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>109</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>63</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>80</mn><mo>,</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>1744</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>1458</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1440</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>505</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>t</mi><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>23</mn><mo>,</mo><mi>u</mi><mo>,</mo><mrow><mn>218</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>162</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>160</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>153</mn><mo>,</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>109</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>63</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>80</mn><mo>,</mo><mrow><mn>1308</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>162</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>814</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>153</mn><mo><mo>}</mo></mo><mo>,</mo></mtd></mtr><mtr><mtd><mo><mo>{</mo></mo><mrow><mn>729</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>972</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1026</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1684</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo><mn>765</mn><mo>,</mo><mrow><mn>81</mn><mspace width="0.5 em" /><mrow><msup><mi>u</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>72</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>72</mn><mo>,</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>702</mn><mspace width="0.5 em" /><mi>v</mi></mrow><mo>-</mo><mrow><mn>162</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>225</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>40</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>99</mn><mo>,</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>11336</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>324</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>603</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1718</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo><mn>1557</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>u</mi><mo>,</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mrow><mn>595003968</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo><mo>(</mo></mo><mo><mo>(</mo></mo><mo>-</mo><mrow><mn>963325386</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>898607682</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1516286466</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mspace width="0.5 em" /><mspace width="0.5 em" /><mn>3239166186</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>u</mi><mo>-</mo><mrow><mn>1579048992</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1796454288</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2428328160</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mn>4368495024</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo><mo><mo>(</mo></mo><mrow><mn>9713133306</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9678670317</mn><mspace width="0.5 em" /><mrow><msup><mi>w</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16726834476</mn><mspace width="0.5 em" /><mi>w</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mn>28144233593</mn><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>u</mi><mo><mo>}</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List 
+SquareFreeRegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [b1,x,y,z,t,v,u,w],
+OrderedVariableList [b1,x,y,z,t,v,u,w],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [b1,x,y,z,t,v,u,w]))
+</div>
+
+
+
+<p>Due to square-free factorization, we obtained now four
+zero-dimensional regular chains.  Moreover, each of them is normalized
+(the initials are constant).  Note that these zero-dimensional
+components may be investigated further with the 
+<span class="teletype">ZeroDimensionalSolvePackage</span> package constructor.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.39.xhtml" style="margin-right: 10px;">Previous Section 9.39 LexTriangularPackage</a><a href="section-9.41.xhtml" style="margin-right: 10px;">Next Section 9.41 Library</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.41.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.41.xhtml
new file mode 100644
index 0000000..f97c952
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.41.xhtml
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.41</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.40.xhtml" style="margin-right: 10px;">Previous Section 9.40 LazardSetSolvingPackage</a><a href="section-9.42.xhtml" style="margin-right: 10px;">Next Section 9.42 LieExponentials</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.41">
+<h2 class="sectiontitle">9.41  Library</h2>
+
+
+<a name="LibraryXmpPage" class="label"/>
+
+<p> 
+The <span class="teletype">Library</span> domain provides a simple way to store Axiom values
+in a file.  This domain is similar to <span class="teletype">KeyedAccessFile</span> but fewer
+declarations are needed and items of different types can be saved
+together in the same file.
+</p>
+
+
+<p>To create a library, you supply a file name.
+</p>
+
+
+
+
+<div id="spadComm9-80" class="spadComm" >
+<form id="formComm9-80" action="javascript:makeRequest('9-80');" >
+<input id="comm9-80" type="text" class="command" style="width: 24em;" value='stuff := library "/tmp/Neat.stuff" ' />
+</form>
+<span id="commSav9-80" class="commSav" >stuff := library "/tmp/Neat.stuff" </span>
+<div id="mathAns9-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"/tmp/Neat.stuff"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Library
+</div>
+
+
+
+<p>Now values can be saved by key in the file.
+The keys should be mnemonic, just as the field names are for records.
+They can be given either as strings or symbols.
+</p>
+
+
+
+
+<div id="spadComm9-81" class="spadComm" >
+<form id="formComm9-81" action="javascript:makeRequest('9-81');" >
+<input id="comm9-81" type="text" class="command" style="width: 12em;" value="stuff.int := 32**2" />
+</form>
+<span id="commSav9-81" class="commSav" >stuff.int := 32**2</span>
+<div id="mathAns9-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1024</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-82" class="spadComm" >
+<form id="formComm9-82" action="javascript:makeRequest('9-82');" >
+<input id="comm9-82" type="text" class="command" style="width: 16em;" value='stuff."poly" := x**2 + 1' />
+</form>
+<span id="commSav9-82" class="commSav" >stuff."poly" := x**2 + 1</span>
+<div id="mathAns9-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-83" class="spadComm" >
+<form id="formComm9-83" action="javascript:makeRequest('9-83');" >
+<input id="comm9-83" type="text" class="command" style="width: 14em;" value='stuff.str := "Hello"' />
+</form>
+<span id="commSav9-83" class="commSav" >stuff.str := "Hello"</span>
+<div id="mathAns9-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"Hello"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>You obtain the set of available keys using the 
+<span class="spadfunFrom" >keys</span><span class="index">keys</span><a name="chapter-9-38"/><span class="index">Library</span><a name="chapter-9-39"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-84" class="spadComm" >
+<form id="formComm9-84" action="javascript:makeRequest('9-84');" >
+<input id="comm9-84" type="text" class="command" style="width: 7em;" value="keys stuff" />
+</form>
+<span id="commSav9-84" class="commSav" >keys stuff</span>
+<div id="mathAns9-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mtext><mrow><mtext mathvariant='monospace'>"str"</mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"poly"</mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"int"</mtext></mrow></mtext><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List String
+</div>
+
+
+
+<p>You extract values  by giving the desired key in this way.
+</p>
+
+
+
+
+<div id="spadComm9-85" class="spadComm" >
+<form id="formComm9-85" action="javascript:makeRequest('9-85');" >
+<input id="comm9-85" type="text" class="command" style="width: 7em;" value="stuff.poly" />
+</form>
+<span id="commSav9-85" class="commSav" >stuff.poly</span>
+<div id="mathAns9-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-86" class="spadComm" >
+<form id="formComm9-86" action="javascript:makeRequest('9-86');" >
+<input id="comm9-86" type="text" class="command" style="width: 9em;" value='stuff("poly")' />
+</form>
+<span id="commSav9-86" class="commSav" >stuff("poly")</span>
+<div id="mathAns9-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>When the file is no longer needed, you should remove it from the
+file system.
+</p>
+
+
+
+
+<div id="spadComm9-87" class="spadComm" >
+<form id="formComm9-87" action="javascript:makeRequest('9-87');" >
+<input id="comm9-87" type="text" class="command" style="width: 22em;" value=")system rm -rf /tmp/Neat.stuff  " />
+</form>
+<span id="commSav9-87" class="commSav" >)system rm -rf /tmp/Neat.stuff  </span>
+<div id="mathAns9-87" ></div>
+</div>
+
+
+<p> 
+For more information on related topics, see 
+<a href="section-9.24.xhtml#FileXmpPage" class="ref" >FileXmpPage</a> ,
+<a href="section-9.81.xhtml#TextFileXmpPage" class="ref" >TextFileXmpPage</a> , and 
+<a href="section-9.38.xhtml#KeyedAccessFileXmpPage" class="ref" >KeyedAccessFileXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.40.xhtml" style="margin-right: 10px;">Previous Section 9.40 LazardSetSolvingPackage</a><a href="section-9.42.xhtml" style="margin-right: 10px;">Next Section 9.42 LieExponentials</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.42.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.42.xhtml
new file mode 100644
index 0000000..6569c2c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.42.xhtml
@@ -0,0 +1,404 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.42</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.41.xhtml" style="margin-right: 10px;">Previous Section 9.41 Library</a><a href="section-9.43.xhtml" style="margin-right: 10px;">Next Section 9.43 LiePolynomial</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.42">
+<h2 class="sectiontitle">9.42  LieExponentials</h2>
+
+
+<a name="LieExponentialsXmpPage" class="label"/>
+
+
+
+
+<div id="spadComm9-88" class="spadComm" >
+<form id="formComm9-88" action="javascript:makeRequest('9-88');" >
+<input id="comm9-88" type="text" class="command" style="width: 12em;" value=" a: Symbol := 'a " />
+</form>
+<span id="commSav9-88" class="commSav" > a: Symbol := 'a </span>
+<div id="mathAns9-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>a</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-89" class="spadComm" >
+<form id="formComm9-89" action="javascript:makeRequest('9-89');" >
+<input id="comm9-89" type="text" class="command" style="width: 12em;" value=" b: Symbol := 'b " />
+</form>
+<span id="commSav9-89" class="commSav" > b: Symbol := 'b </span>
+<div id="mathAns9-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>Declarations of domains
+</p>
+
+
+
+
+<div id="spadComm9-90" class="spadComm" >
+<form id="formComm9-90" action="javascript:makeRequest('9-90');" >
+<input id="comm9-90" type="text" class="command" style="width: 21em;" value=" coef     := Fraction(Integer) " />
+</form>
+<span id="commSav9-90" class="commSav" > coef     := Fraction(Integer) </span>
+<div id="mathAns9-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FractionInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-91" class="spadComm" >
+<form id="formComm9-91" action="javascript:makeRequest('9-91');" >
+<input id="comm9-91" type="text" class="command" style="width: 32em;" value=" group    := LieExponentials(Symbol, coef, 3)  " />
+</form>
+<span id="commSav9-91" class="commSav" > group    := LieExponentials(Symbol, coef, 3)  </span>
+<div id="mathAns9-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>LieExponentials(Symbol,FractionInteger,3)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-92" class="spadComm" >
+<form id="formComm9-92" action="javascript:makeRequest('9-92');" >
+<input id="comm9-92" type="text" class="command" style="width: 28em;" value=" lpoly    := LiePolynomial(Symbol, coef)  " />
+</form>
+<span id="commSav9-92" class="commSav" > lpoly    := LiePolynomial(Symbol, coef)  </span>
+<div id="mathAns9-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>LiePolynomial(Symbol,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-93" class="spadComm" >
+<form id="formComm9-93" action="javascript:makeRequest('9-93');" >
+<input id="comm9-93" type="text" class="command" style="width: 29em;" value=" poly     := XPBWPolynomial(Symbol, coef)  " />
+</form>
+<span id="commSav9-93" class="commSav" > poly     := XPBWPolynomial(Symbol, coef)  </span>
+<div id="mathAns9-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>XPBWPolynomial(Symbol,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Calculations
+</p>
+
+
+
+
+<div id="spadComm9-94" class="spadComm" >
+<form id="formComm9-94" action="javascript:makeRequest('9-94');" >
+<input id="comm9-94" type="text" class="command" style="width: 18em;" value=" ea := exp(a::lpoly)$group" />
+</form>
+<span id="commSav9-94" class="commSav" > ea := exp(a::lpoly)$group</span>
+<div id="mathAns9-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>e</mi><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LieExponentials(Symbol,Fraction Integer,3)
+</div>
+
+
+
+
+
+<div id="spadComm9-95" class="spadComm" >
+<form id="formComm9-95" action="javascript:makeRequest('9-95');" >
+<input id="comm9-95" type="text" class="command" style="width: 18em;" value=" eb := exp(b::lpoly)$group" />
+</form>
+<span id="commSav9-95" class="commSav" > eb := exp(b::lpoly)$group</span>
+<div id="mathAns9-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>e</mi><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LieExponentials(Symbol,Fraction Integer,3)
+</div>
+
+
+
+
+
+<div id="spadComm9-96" class="spadComm" >
+<form id="formComm9-96" action="javascript:makeRequest('9-96');" >
+<input id="comm9-96" type="text" class="command" style="width: 12em;" value=" g: group := ea*eb" />
+</form>
+<span id="commSav9-96" class="commSav" > g: group := ea*eb</span>
+<div id="mathAns9-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>e</mi><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mrow><mo><mo>(</mo></mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow><mo><mo>)</mo></mo></mrow></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mrow><mo><mo>(</mo></mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow><mo><mo>)</mo></mo></mrow></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LieExponentials(Symbol,Fraction Integer,3)
+</div>
+
+
+
+
+
+<div id="spadComm9-97" class="spadComm" >
+<form id="formComm9-97" action="javascript:makeRequest('9-97');" >
+<input id="comm9-97" type="text" class="command" style="width: 8em;" value=" g :: poly  " />
+</form>
+<span id="commSav9-97" class="commSav" > g :: poly  </span>
+<div id="mathAns9-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>1</mn><mo>+</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow><mo>+</mo><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow><mo>+</mo><mrow><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-98" class="spadComm" >
+<form id="formComm9-98" action="javascript:makeRequest('9-98');" >
+<input id="comm9-98" type="text" class="command" style="width: 10em;" value=" log(g)$group  " />
+</form>
+<span id="commSav9-98" class="commSav" > log(g)$group  </span>
+<div id="mathAns9-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow><mo>+</mo><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-99" class="spadComm" >
+<form id="formComm9-99" action="javascript:makeRequest('9-99');" >
+<input id="comm9-99" type="text" class="command" style="width: 16em;" value=" g1: group := inv(g)   " />
+</form>
+<span id="commSav9-99" class="commSav" > g1: group := inv(g)   </span>
+<div id="mathAns9-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>e</mi><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mo><mo>)</mo></mo></mrow></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mrow><mo><mo>(</mo></mo><mo>-</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow><mo><mo>)</mo></mo></mrow></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LieExponentials(Symbol,Fraction Integer,3)
+</div>
+
+
+
+
+
+<div id="spadComm9-100" class="spadComm" >
+<form id="formComm9-100" action="javascript:makeRequest('9-100');" >
+<input id="comm9-100" type="text" class="command" style="width: 5em;" value=" g*g1  " />
+</form>
+<span id="commSav9-100" class="commSav" > g*g1  </span>
+<div id="mathAns9-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LieExponentials(Symbol,Fraction Integer,3)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.41.xhtml" style="margin-right: 10px;">Previous Section 9.41 Library</a><a href="section-9.43.xhtml" style="margin-right: 10px;">Next Section 9.43 LiePolynomial</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.43.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.43.xhtml
new file mode 100644
index 0000000..b016e61
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.43.xhtml
@@ -0,0 +1,842 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.43</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.42.xhtml" style="margin-right: 10px;">Previous Section 9.42 LieExponentials</a><a href="section-9.44.xhtml" style="margin-right: 10px;">Next Section 9.44 LinearOrdinaryDifferentialOperator</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.43">
+<h2 class="sectiontitle">9.43  LiePolynomial</h2>
+
+
+<a name="LiePolynomialXmpPage" class="label"/>
+
+<p>Declaration of domains
+</p>
+
+
+
+
+<div id="spadComm9-101" class="spadComm" >
+<form id="formComm9-101" action="javascript:makeRequest('9-101');" >
+<input id="comm9-101" type="text" class="command" style="width: 18em;" value="RN    := Fraction Integer " />
+</form>
+<span id="commSav9-101" class="commSav" >RN    := Fraction Integer </span>
+<div id="mathAns9-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FractionInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-102" class="spadComm" >
+<form id="formComm9-102" action="javascript:makeRequest('9-102');" >
+<input id="comm9-102" type="text" class="command" style="width: 24em;" value="Lpoly := LiePolynomial(Symbol,RN)  " />
+</form>
+<span id="commSav9-102" class="commSav" >Lpoly := LiePolynomial(Symbol,RN)  </span>
+<div id="mathAns9-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>LiePolynomial(Symbol,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-103" class="spadComm" >
+<form id="formComm9-103" action="javascript:makeRequest('9-103');" >
+<input id="comm9-103" type="text" class="command" style="width: 19em;" value="Dpoly := XDPOLY(Symbol,RN)  " />
+</form>
+<span id="commSav9-103" class="commSav" >Dpoly := XDPOLY(Symbol,RN)  </span>
+<div id="mathAns9-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>XDistributedPolynomial(Symbol,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-104" class="spadComm" >
+<form id="formComm9-104" action="javascript:makeRequest('9-104');" >
+<input id="comm9-104" type="text" class="command" style="width: 18em;" value="Lword := LyndonWord Symbol " />
+</form>
+<span id="commSav9-104" class="commSav" >Lword := LyndonWord Symbol </span>
+<div id="mathAns9-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>LyndonWordSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Initialisation
+</p>
+
+
+
+
+<div id="spadComm9-105" class="spadComm" >
+<form id="formComm9-105" action="javascript:makeRequest('9-105');" >
+<input id="comm9-105" type="text" class="command" style="width: 10em;" value="a:Symbol := 'a " />
+</form>
+<span id="commSav9-105" class="commSav" >a:Symbol := 'a </span>
+<div id="mathAns9-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>a</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-106" class="spadComm" >
+<form id="formComm9-106" action="javascript:makeRequest('9-106');" >
+<input id="comm9-106" type="text" class="command" style="width: 10em;" value="b:Symbol := 'b " />
+</form>
+<span id="commSav9-106" class="commSav" >b:Symbol := 'b </span>
+<div id="mathAns9-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-107" class="spadComm" >
+<form id="formComm9-107" action="javascript:makeRequest('9-107');" >
+<input id="comm9-107" type="text" class="command" style="width: 10em;" value="c:Symbol := 'c " />
+</form>
+<span id="commSav9-107" class="commSav" >c:Symbol := 'c </span>
+<div id="mathAns9-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>c</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-108" class="spadComm" >
+<form id="formComm9-108" action="javascript:makeRequest('9-108');" >
+<input id="comm9-108" type="text" class="command" style="width: 12em;" value="aa: Lpoly := a   " />
+</form>
+<span id="commSav9-108" class="commSav" >aa: Lpoly := a   </span>
+<div id="mathAns9-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-109" class="spadComm" >
+<form id="formComm9-109" action="javascript:makeRequest('9-109');" >
+<input id="comm9-109" type="text" class="command" style="width: 12em;" value="bb: Lpoly := b   " />
+</form>
+<span id="commSav9-109" class="commSav" >bb: Lpoly := b   </span>
+<div id="mathAns9-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-110" class="spadComm" >
+<form id="formComm9-110" action="javascript:makeRequest('9-110');" >
+<input id="comm9-110" type="text" class="command" style="width: 12em;" value="cc: Lpoly := c   " />
+</form>
+<span id="commSav9-110" class="commSav" >cc: Lpoly := c   </span>
+<div id="mathAns9-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mi>c</mi><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-111" class="spadComm" >
+<form id="formComm9-111" action="javascript:makeRequest('9-111');" >
+<input id="comm9-111" type="text" class="command" style="width: 14em;" value="p : Lpoly := [aa,bb]" />
+</form>
+<span id="commSav9-111" class="commSav" >p : Lpoly := [aa,bb]</span>
+<div id="mathAns9-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-112" class="spadComm" >
+<form id="formComm9-112" action="javascript:makeRequest('9-112');" >
+<input id="comm9-112" type="text" class="command" style="width: 13em;" value="q : Lpoly := [p,bb]" />
+</form>
+<span id="commSav9-112" class="commSav" >q : Lpoly := [p,bb]</span>
+<div id="mathAns9-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+<p>All the Lyndon words of order 4
+</p>
+
+
+
+
+<div id="spadComm9-113" class="spadComm" >
+<form id="formComm9-113" action="javascript:makeRequest('9-113');" >
+<input id="comm9-113" type="text" class="command" style="width: 32em;" value="liste : List Lword := LyndonWordsList([a,b], 4)" />
+</form>
+<span id="commSav9-113" class="commSav" >liste : List Lword := LyndonWordsList([a,b], 4)</span>
+<div id="mathAns9-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mo><mo>]</mo></mo></mrow><mo>,</mo><mrow><mo><mo>[</mo></mo><mi>b</mi><mo><mo>]</mo></mo></mrow><mo>,</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow><mo>,</mo><mrow><mo><mo>[</mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow><mo>,</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo><mrow><mo><mo>[</mo></mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow><mo>,</mo><mrow><mo><mo>[</mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow><mo>,</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mo><mo>]</mo></mo></mrow><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List LyndonWord Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-114" class="spadComm" >
+<form id="formComm9-114" action="javascript:makeRequest('9-114');" >
+<input id="comm9-114" type="text" class="command" style="width: 30em;" value="r: Lpoly := p + q + 3*LiePoly(liste.4)$Lpoly" />
+</form>
+<span id="commSav9-114" class="commSav" >r: Lpoly := p + q + 3*LiePoly(liste.4)$Lpoly</span>
+<div id="mathAns9-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-115" class="spadComm" >
+<form id="formComm9-115" action="javascript:makeRequest('9-115');" >
+<input id="comm9-115" type="text" class="command" style="width: 11em;" value="s:Lpoly := [p,r]" />
+</form>
+<span id="commSav9-115" class="commSav" >s:Lpoly := [p,r]</span>
+<div id="mathAns9-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-116" class="spadComm" >
+<form id="formComm9-116" action="javascript:makeRequest('9-116');" >
+<input id="comm9-116" type="text" class="command" style="width: 38em;" value="t:Lpoly  := s  + 2*LiePoly(liste.3) - 5*LiePoly(liste.5)" />
+</form>
+<span id="commSav9-116" class="commSav" >t:Lpoly  := s  + 2*LiePoly(liste.3) - 5*LiePoly(liste.5)</span>
+<div id="mathAns9-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-117" class="spadComm" >
+<form id="formComm9-117" action="javascript:makeRequest('9-117');" >
+<input id="comm9-117" type="text" class="command" style="width: 6em;" value="degree t " />
+</form>
+<span id="commSav9-117" class="commSav" >degree t </span>
+<div id="mathAns9-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-118" class="spadComm" >
+<form id="formComm9-118" action="javascript:makeRequest('9-118');" >
+<input id="comm9-118" type="text" class="command" style="width: 6em;" value="mirror t " />
+</form>
+<span id="commSav9-118" class="commSav" >mirror t </span>
+<div id="mathAns9-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow><mo>+</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+<p>Jacobi Relation
+</p>
+
+
+
+
+<div id="spadComm9-119" class="spadComm" >
+<form id="formComm9-119" action="javascript:makeRequest('9-119');" >
+<input id="comm9-119" type="text" class="command" style="width: 71em;" value="Jacobi(p: Lpoly, q: Lpoly, r: Lpoly): Lpoly == [ [p,q]$Lpoly, r] + [ [q,r]$Lpoly, p] + [ [r,p]$Lpoly, q]  " />
+</form>
+<span id="commSav9-119" class="commSav" >Jacobi(p: Lpoly, q: Lpoly, r: Lpoly): Lpoly == [ [p,q]$Lpoly, r] + [ [q,r]$Lpoly, p] + [ [r,p]$Lpoly, q]  </span>
+<div id="mathAns9-119" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Function&nbsp;declaration&nbsp;Jacobi&nbsp;:&nbsp;(<br />
+&nbsp;&nbsp;LiePolynomial(Symbol,&nbsp;&nbsp;Fraction&nbsp;Integer),<br />
+&nbsp;&nbsp;LiePolynomial(Symbol,Fraction&nbsp;Integer),<br />
+&nbsp;&nbsp;LiePolynomial(Symbol,Fraction&nbsp;Integer))&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;LiePolynomial(Symbol,Fraction&nbsp;Integer)&nbsp;<br />
+&nbsp;&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>Tests
+</p>
+
+
+
+
+<div id="spadComm9-120" class="spadComm" >
+<form id="formComm9-120" action="javascript:makeRequest('9-120');" >
+<input id="comm9-120" type="text" class="command" style="width: 20em;" value="test: Lpoly := Jacobi(a,b,b)  " />
+</form>
+<span id="commSav9-120" class="commSav" >test: Lpoly := Jacobi(a,b,b)  </span>
+<div id="mathAns9-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-121" class="spadComm" >
+<form id="formComm9-121" action="javascript:makeRequest('9-121');" >
+<input id="comm9-121" type="text" class="command" style="width: 20em;" value="test: Lpoly := Jacobi(p,q,r)  " />
+</form>
+<span id="commSav9-121" class="commSav" >test: Lpoly := Jacobi(p,q,r)  </span>
+<div id="mathAns9-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-122" class="spadComm" >
+<form id="formComm9-122" action="javascript:makeRequest('9-122');" >
+<input id="comm9-122" type="text" class="command" style="width: 20em;" value="test: Lpoly := Jacobi(r,s,t)  " />
+</form>
+<span id="commSav9-122" class="commSav" >test: Lpoly := Jacobi(r,s,t)  </span>
+<div id="mathAns9-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+<p>Evaluation
+</p>
+
+
+
+
+<div id="spadComm9-123" class="spadComm" >
+<form id="formComm9-123" action="javascript:makeRequest('9-123');" >
+<input id="comm9-123" type="text" class="command" style="width: 13em;" value="eval(p, a, p)$Lpoly" />
+</form>
+<span id="commSav9-123" class="commSav" >eval(p, a, p)$Lpoly</span>
+<div id="mathAns9-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo><mo>]</mo></mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-124" class="spadComm" >
+<form id="formComm9-124" action="javascript:makeRequest('9-124');" >
+<input id="comm9-124" type="text" class="command" style="width: 24em;" value="eval(p, [a,b], [2*bb, 3*aa])$Lpoly " />
+</form>
+<span id="commSav9-124" class="commSav" >eval(p, [a,b], [2*bb, 3*aa])$Lpoly </span>
+<div id="mathAns9-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-125" class="spadComm" >
+<form id="formComm9-125" action="javascript:makeRequest('9-125');" >
+<input id="comm9-125" type="text" class="command" style="width: 13em;" value="r: Lpoly := [p,c]  " />
+</form>
+<span id="commSav9-125" class="commSav" >r: Lpoly := [p,c]  </span>
+<div id="mathAns9-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>c</mi><mo><mo>]</mo></mo></mrow><mo>+</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-126" class="spadComm" >
+<form id="formComm9-126" action="javascript:makeRequest('9-126');" >
+<input id="comm9-126" type="text" class="command" style="width: 34em;" value="r1: Lpoly := eval(r, [a,b,c], [bb, cc, aa])$Lpoly  " />
+</form>
+<span id="commSav9-126" class="commSav" >r1: Lpoly := eval(r, [a,b,c], [bb, cc, aa])$Lpoly  </span>
+<div id="mathAns9-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>c</mi><mo><mo>]</mo></mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-127" class="spadComm" >
+<form id="formComm9-127" action="javascript:makeRequest('9-127');" >
+<input id="comm9-127" type="text" class="command" style="width: 34em;" value="r2: Lpoly := eval(r, [a,b,c], [cc, aa, bb])$Lpoly  " />
+</form>
+<span id="commSav9-127" class="commSav" >r2: Lpoly := eval(r, [a,b,c], [cc, aa, bb])$Lpoly  </span>
+<div id="mathAns9-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mo><mo>[</mo></mo><mi>a</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi><mo><mo>]</mo></mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-128" class="spadComm" >
+<form id="formComm9-128" action="javascript:makeRequest('9-128');" >
+<input id="comm9-128" type="text" class="command" style="width: 8em;" value="r + r1 + r2 " />
+</form>
+<span id="commSav9-128" class="commSav" >r + r1 + r2 </span>
+<div id="mathAns9-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.42.xhtml" style="margin-right: 10px;">Previous Section 9.42 LieExponentials</a><a href="section-9.44.xhtml" style="margin-right: 10px;">Next Section 9.44 LinearOrdinaryDifferentialOperator</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.44.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.44.xhtml
new file mode 100644
index 0000000..5bbd6ab
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.44.xhtml
@@ -0,0 +1,505 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.44</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.43.xhtml" style="margin-right: 10px;">Previous Section 9.43 LiePolynomial</a><a href="section-9.45.xhtml" style="margin-right: 10px;">Next Section 9.45  LinearOrdinaryDifferentialOperator1</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.44">
+<h2 class="sectiontitle">9.44  LinearOrdinaryDifferentialOperator</h2>
+
+
+<a name="LinearOrdinaryDifferentialOperatorXmpPage" class="label"/>
+
+
+<p><span class="teletype">LinearOrdinaryDifferentialOperator(A, diff)</span> is the domain of
+linear ordinary differential operators with coefficients in a ring
+<span class="teletype">A</span> with a given derivation.
+</p>
+
+
+
+<a name="subsec-9.44.1"/>
+<div class="subsection"  id="subsec-9.44.1">
+<h3 class="subsectitle">9.44.1  Differential Operators with Series Coefficients</h3>
+
+
+
+
+<p><span style="font-weight: bold;"> Problem:</span>
+Find the first few coefficients of <span class="teletype">exp(x)/x**i</span> of <span class="teletype">Dop phi</span> where
+</p>
+
+
+
+<div class="verbatim"><br />
+Dop&nbsp;:=&nbsp;D**3&nbsp;+&nbsp;G/x**2&nbsp;*&nbsp;D&nbsp;+&nbsp;H/x**3&nbsp;-&nbsp;1<br />
+phi&nbsp;:=&nbsp;sum(s[i]*exp(x)/x**i,&nbsp;i&nbsp;=&nbsp;0..)<br />
+</div>
+
+
+
+
+<p><span style="font-weight: bold;"> Solution:</span>
+</p>
+
+
+<p>Define the differential.
+</p>
+
+
+
+
+<div id="spadComm9-129" class="spadComm" >
+<form id="formComm9-129" action="javascript:makeRequest('9-129');" >
+<input id="comm9-129" type="text" class="command" style="width: 23em;" value="Dx: LODO(EXPR INT, f +-> D(f, x)) " />
+</form>
+<span id="commSav9-129" class="commSav" >Dx: LODO(EXPR INT, f +-> D(f, x)) </span>
+<div id="mathAns9-129" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-130" class="spadComm" >
+<form id="formComm9-130" action="javascript:makeRequest('9-130');" >
+<input id="comm9-130" type="text" class="command" style="width: 7em;" value="Dx := D() " />
+</form>
+<span id="commSav9-130" class="commSav" >Dx := D() </span>
+<div id="mathAns9-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>D</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator(Expression Integer,theMap NIL)
+</div>
+
+
+
+<p>Now define the differential operator <span class="teletype">Dop</span>.
+</p>
+
+
+
+
+<div id="spadComm9-131" class="spadComm" >
+<form id="formComm9-131" action="javascript:makeRequest('9-131');" >
+<input id="comm9-131" type="text" class="command" style="width: 25em;" value="Dop:= Dx**3 + G/x**2*Dx + H/x**3 - 1 " />
+</form>
+<span id="commSav9-131" class="commSav" >Dop:= Dx**3 + G/x**2*Dx + H/x**3 - 1 </span>
+<div id="mathAns9-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>D</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mfrac><mi>G</mi><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mfrac><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mi>H</mi></mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator(Expression Integer,theMap NIL)
+</div>
+
+
+
+
+
+<div id="spadComm9-132" class="spadComm" >
+<form id="formComm9-132" action="javascript:makeRequest('9-132');" >
+<input id="comm9-132" type="text" class="command" style="width: 5em;" value="n == 3 " />
+</form>
+<span id="commSav9-132" class="commSav" >n == 3 </span>
+<div id="mathAns9-132" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-133" class="spadComm" >
+<form id="formComm9-133" action="javascript:makeRequest('9-133');" >
+<input id="comm9-133" type="text" class="command" style="width: 42em;" value="phi == reduce(+,[subscript(s,[i])*exp(x)/x**i for i in 0..n]) " />
+</form>
+<span id="commSav9-133" class="commSav" >phi == reduce(+,[subscript(s,[i])*exp(x)/x**i for i in 0..n]) </span>
+<div id="mathAns9-133" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-134" class="spadComm" >
+<form id="formComm9-134" action="javascript:makeRequest('9-134');" >
+<input id="comm9-134" type="text" class="command" style="width: 18em;" value="phi1 ==  Dop(phi) / exp x " />
+</form>
+<span id="commSav9-134" class="commSav" >phi1 ==  Dop(phi) / exp x </span>
+<div id="mathAns9-134" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-135" class="spadComm" >
+<form id="formComm9-135" action="javascript:makeRequest('9-135');" >
+<input id="comm9-135" type="text" class="command" style="width: 16em;" value="phi2 == phi1 *x**(n+3) " />
+</form>
+<span id="commSav9-135" class="commSav" >phi2 == phi1 *x**(n+3) </span>
+<div id="mathAns9-135" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-136" class="spadComm" >
+<form id="formComm9-136" action="javascript:makeRequest('9-136');" >
+<input id="comm9-136" type="text" class="command" style="width: 22em;" value="phi3 == retract(phi2)@(POLY INT) " />
+</form>
+<span id="commSav9-136" class="commSav" >phi3 == retract(phi2)@(POLY INT) </span>
+<div id="mathAns9-136" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-137" class="spadComm" >
+<form id="formComm9-137" action="javascript:makeRequest('9-137');" >
+<input id="comm9-137" type="text" class="command" style="width: 20em;" value="pans == phi3 ::UP(x,POLY INT) " />
+</form>
+<span id="commSav9-137" class="commSav" >pans == phi3 ::UP(x,POLY INT) </span>
+<div id="mathAns9-137" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-138" class="spadComm" >
+<form id="formComm9-138" action="javascript:makeRequest('9-138');" >
+<input id="comm9-138" type="text" class="command" style="width: 41em;" value="pans1 == [coefficient(pans, (n+3-i) :: NNI) for i in 2..n+1] " />
+</form>
+<span id="commSav9-138" class="commSav" >pans1 == [coefficient(pans, (n+3-i) :: NNI) for i in 2..n+1] </span>
+<div id="mathAns9-138" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-139" class="spadComm" >
+<form id="formComm9-139" action="javascript:makeRequest('9-139');" >
+<input id="comm9-139" type="text" class="command" style="width: 36em;" value="leq == solve(pans1,[subscript(s,[i]) for i in 1..n]) " />
+</form>
+<span id="commSav9-139" class="commSav" >leq == solve(pans1,[subscript(s,[i]) for i in 1..n]) </span>
+<div id="mathAns9-139" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>Evaluate this for several values of <span class="teletype">n</span>.
+</p>
+
+
+
+
+<div id="spadComm9-140" class="spadComm" >
+<form id="formComm9-140" action="javascript:makeRequest('9-140');" >
+<input id="comm9-140" type="text" class="command" style="width: 3em;" value="leq " />
+</form>
+<span id="commSav9-140" class="commSav" >leq </span>
+<div id="mathAns9-140" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;n&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;PositiveInteger&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;phi&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;Expression&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;phi1&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;Expression&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;phi2&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;Expression&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;phi3&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;Polynomial&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;pans&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnivariatePolynomial(x,Polynomial&nbsp;Integer)&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;pans1&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;List&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Polynomial&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;leq&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;List&nbsp;List&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Equation&nbsp;Fraction&nbsp;Polynomial&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;G83347&nbsp;with&nbsp;type&nbsp;Integer&nbsp;-&gt;&nbsp;Boolean&nbsp;<br />
+</div>
+
+
+
+
+
+<div id="spadComm9-141" class="spadComm" >
+<form id="formComm9-141" action="javascript:makeRequest('9-141');" >
+<input id="comm9-141" type="text" class="command" style="width: 4em;" value="n==4 " />
+</form>
+<span id="commSav9-141" class="commSav" >n==4 </span>
+<div id="mathAns9-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mo><mo>[</mo></mo><mrow><mrow><msub><mi>s</mi><mn>1</mn></msub></mrow><mo>=</mo><mfrac><mrow><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow><mn>3</mn></mfrac></mrow><mo>,</mo><mrow><mrow><msub><mi>s</mi><mn>2</mn></msub></mrow><mo>=</mo><mfrac><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>H</mi></mrow><mo>+</mo><mrow><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow></mrow><mn>18</mn></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msub><mi>s</mi><mn>3</mn></msub></mrow><mo>=</mo><mfrac><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow><mo>+</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>H</mi></mrow><mo>+</mo><mrow><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>72</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow></mrow><mn>162</mn></mfrac></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Fraction Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-142" class="spadComm" >
+<form id="formComm9-142" action="javascript:makeRequest('9-142');" >
+<input id="comm9-142" type="text" class="command" style="width: 3em;" value="leq " />
+</form>
+<span id="commSav9-142" class="commSav" >leq </span>
+<div id="mathAns9-142" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo><mo>[</mo></mo><mo><mo>[</mo></mo><mrow><mrow><msub><mi>s</mi><mn>1</mn></msub></mrow><mo>=</mo><mfrac><mrow><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow><mn>3</mn></mfrac></mrow><mo>,</mo><mrow><mrow><msub><mi>s</mi><mn>2</mn></msub></mrow><mo>=</mo><mfrac><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>H</mi></mrow><mo>+</mo><mrow><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow></mrow><mn>18</mn></mfrac></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msub><mi>s</mi><mn>3</mn></msub></mrow><mo>=</mo><mfrac><mrow><mrow><mrow><mo><mo>(</mo></mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow><mo>+</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow></mrow><mo><mo>)</mo></mo></mrow><mspace width="0.5 em" /><mi>H</mi></mrow><mo>+</mo><mrow><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>72</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow></mrow><mn>162</mn></mfrac></mrow><mo><mo>]</mo></mo><mo><mo>]</mo></mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List Equation Fraction Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-143" class="spadComm" >
+<form id="formComm9-143" action="javascript:makeRequest('9-143');" >
+<input id="comm9-143" type="text" class="command" style="width: 4em;" value="n==7 " />
+</form>
+<span id="commSav9-143" class="commSav" >n==7 </span>
+<div id="mathAns9-143" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;n&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;leq&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;pans1&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;phi2&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;phi&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;phi3&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;phi1&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;Compiled&nbsp;code&nbsp;for&nbsp;pans&nbsp;has&nbsp;been&nbsp;cleared.<br />
+&nbsp;&nbsp;&nbsp;1&nbsp;old&nbsp;definition(s)&nbsp;deleted&nbsp;for&nbsp;function&nbsp;or&nbsp;rule&nbsp;n&nbsp;<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-144" class="spadComm" >
+<form id="formComm9-144" action="javascript:makeRequest('9-144');" >
+<input id="comm9-144" type="text" class="command" style="width: 3em;" value="leq " />
+</form>
+<span id="commSav9-144" class="commSav" >leq </span>
+<div id="mathAns9-144" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;n&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;PositiveInteger&nbsp;<br />
+<br />
++++&nbsp;|*0;n;1;G82322|&nbsp;redefined<br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;phi&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;Expression&nbsp;<br />
+&nbsp;&nbsp;Integer&nbsp;<br />
+<br />
++++&nbsp;|*0;phi;1;G82322|&nbsp;redefined<br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;phi1&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;Expression&nbsp;<br />
+&nbsp;&nbsp;Integer&nbsp;<br />
+<br />
++++&nbsp;|*0;phi1;1;G82322|&nbsp;redefined<br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;phi2&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;Expression&nbsp;<br />
+&nbsp;&nbsp;Integer&nbsp;<br />
+<br />
++++&nbsp;|*0;phi2;1;G82322|&nbsp;redefined<br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;phi3&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;Polynomial&nbsp;<br />
+&nbsp;&nbsp;Integer&nbsp;<br />
+<br />
++++&nbsp;|*0;phi3;1;G82322|&nbsp;redefined<br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;pans&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;<br />
+&nbsp;&nbsp;UnivariatePolynomial(x,Polynomial&nbsp;Integer)&nbsp;<br />
+<br />
++++&nbsp;|*0;pans;1;G82322|&nbsp;redefined<br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;pans1&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;List&nbsp;<br />
+&nbsp;&nbsp;Polynomial&nbsp;Integer&nbsp;<br />
+<br />
++++&nbsp;|*0;pans1;1;G82322|&nbsp;redefined<br />
+Compiling&nbsp;body&nbsp;of&nbsp;rule&nbsp;leq&nbsp;to&nbsp;compute&nbsp;value&nbsp;of&nbsp;type&nbsp;List&nbsp;List&nbsp;<br />
+&nbsp;&nbsp;Equation&nbsp;Fraction&nbsp;Polynomial&nbsp;Integer&nbsp;<br />
+<br />
++++&nbsp;|*0;leq;1;G82322|&nbsp;redefined<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+<p><math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msub><mi>s</mi><mn>7</mn></msub></mrow><mo>=</mo><mfrac><mrow><mo><mo>(</mo></mo><mtable><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>2835</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow><mo>+</mo><mrow><mn>91854</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>H</mi><mn>3</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>945</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>81648</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2082996</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow><mo>+</mo><mrow><mn>14171760</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mrow><msup><mi>H</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo><mo>(</mo></mo><mrow><mn>63</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7560</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>317520</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5554008</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>34058880</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow><mo><mo>)</mo></mo><mspace width="0.5 em" /><mi>H</mi><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>126</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4788</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>25272</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1744416</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>26827200</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mrow><msup><mi>G</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>97977600</mn><mspace width="0.5 em" /><mrow><msub><mi>s</mi><mn>0</mn></msub></mrow><mspace width="0.5 em" /><mi>G</mi></mrow></mtd></mtr></mtable><mo><mo>)</mo></mo></mrow><mn>11022480</mn></mfrac><mo><mo>]</mo></mo><mo><mo>]</mo></mo></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: List List Equation Fraction Polynomial Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.43.xhtml" style="margin-right: 10px;">Previous Section 9.43 LiePolynomial</a><a href="section-9.45.xhtml" style="margin-right: 10px;">Next Section 9.45  LinearOrdinaryDifferentialOperator1</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.45.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.45.xhtml
new file mode 100644
index 0000000..60558ef
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.45.xhtml
@@ -0,0 +1,745 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.45</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.44.xhtml" style="margin-right: 10px;">Previous Section 9.44  LinearOrdinaryDifferentialOperator</a><a href="section-9.46.xhtml" style="margin-right: 10px;">Next Section 9.46 LinearOrdinaryDifferentialOperator2</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.45">
+<h2 class="sectiontitle">9.45  LinearOrdinaryDifferentialOperator1</h2>
+
+
+<a name="LinearOrdinaryDifferentialOperator1XmpPage" class="label"/>
+
+
+<p><span class="teletype">LinearOrdinaryDifferentialOperator1(A)</span> is the domain of linear
+ordinary differential operators with coefficients in the differential ring
+<span class="teletype">A</span>.
+</p>
+
+
+
+<a name="subsec-9.45.1"/>
+<div class="subsection"  id="subsec-9.45.1">
+<h3 class="subsectitle">9.45.1  Differential Operators with Rational Function Coefficients</h3>
+
+
+
+<p>This example shows differential operators with rational function
+coefficients.  In this case operator multiplication is non-commutative and,
+since the coefficients form a field, an operator division algorithm exists.
+</p>
+
+
+<p>We begin by defining <span class="teletype">RFZ</span> to be the rational functions in
+<span class="teletype">x</span> with integer coefficients and <span class="teletype">Dx</span> to be the differential
+operator for <span class="teletype">d/dx</span>.
+</p>
+
+
+
+
+<div id="spadComm9-1" class="spadComm" >
+<form id="formComm9-1" action="javascript:makeRequest('9-1');" >
+<input id="comm9-1" type="text" class="command" style="width: 34em;" value="RFZ := Fraction UnivariatePolynomial('x, Integer) " />
+</form>
+<span id="commSav9-1" class="commSav" >RFZ := Fraction UnivariatePolynomial('x, Integer) </span>
+<div id="mathAns9-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FractionUnivariatePolynomial(x,Integer)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-2" class="spadComm" >
+<form id="formComm9-2" action="javascript:makeRequest('9-2');" >
+<input id="comm9-2" type="text" class="command" style="width: 10em;" value="x : RFZ := 'x " />
+</form>
+<span id="commSav9-2" class="commSav" >x : RFZ := 'x </span>
+<div id="mathAns9-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-3" class="spadComm" >
+<form id="formComm9-3" action="javascript:makeRequest('9-3');" >
+<input id="comm9-3" type="text" class="command" style="width: 14em;" value="Dx : LODO1 RFZ := D()" />
+</form>
+<span id="commSav9-3" class="commSav" >Dx : LODO1 RFZ := D()</span>
+<div id="mathAns9-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>D</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>Operators are created using the usual arithmetic operations.
+</p>
+
+
+
+
+<div id="spadComm9-4" class="spadComm" >
+<form id="formComm9-4" action="javascript:makeRequest('9-4');" >
+<input id="comm9-4" type="text" class="command" style="width: 30em;" value="b : LODO1 RFZ := 3*x**2*Dx**2 + 2*Dx + 1/x  " />
+</form>
+<span id="commSav9-4" class="commSav" >b : LODO1 RFZ := 3*x**2*Dx**2 + 2*Dx + 1/x  </span>
+<div id="mathAns9-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>1</mn><mi>x</mi></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-5" class="spadComm" >
+<form id="formComm9-5" action="javascript:makeRequest('9-5');" >
+<input id="comm9-5" type="text" class="command" style="width: 21em;" value="a : LODO1 RFZ := b*(5*x*Dx + 7)" />
+</form>
+<span id="commSav9-5" class="commSav" >a : LODO1 RFZ := b*(5*x*Dx + 7)</span>
+<div id="mathAns9-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>51</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>29</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>7</mn><mi>x</mi></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>Operator multiplication corresponds to functional composition.
+</p>
+
+
+
+
+<div id="spadComm9-6" class="spadComm" >
+<form id="formComm9-6" action="javascript:makeRequest('9-6');" >
+<input id="comm9-6" type="text" class="command" style="width: 13em;" value="p := x**2 + 1/x**2 " />
+</form>
+<span id="commSav9-6" class="commSav" >p := x**2 + 1/x**2 </span>
+<div id="mathAns9-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>Since operator coefficients depend on <span class="teletype">x</span>, the multiplication is
+not commutative.
+</p>
+
+
+
+
+<div id="spadComm9-7" class="spadComm" >
+<form id="formComm9-7" action="javascript:makeRequest('9-7');" >
+<input id="comm9-7" type="text" class="command" style="width: 10em;" value="(a*b - b*a) p " />
+</form>
+<span id="commSav9-7" class="commSav" >(a*b - b*a) p </span>
+<div id="mathAns9-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>-</mo><mrow><mn>75</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>540</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>75</mn></mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>When the coefficients of operator polynomials come from a field, as in
+this case, it is possible to define operator division.  Division on
+the left and division on the right yield different results when the
+multiplication is non-commutative.
+</p>
+
+
+<p>The results of
+<span class="spadfunFrom" >leftDivide</span><span class="index">leftDivide</span><a name="chapter-9-0"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-1"/> and
+<span class="spadfunFrom" >rightDivide</span><span class="index">rightDivide</span><a name="chapter-9-2"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-3"/> are
+quotient-remainder pairs satisfying: <br />
+</p>
+
+
+<p><span class="teletype">leftDivide(a,b) = [q, r]</span> such that  <span class="teletype">a = b*q + r</span> <br />
+<span class="teletype">rightDivide(a,b) = [q, r]</span> such that  <span class="teletype">a = q*b + r</span> <br />
+</p>
+
+
+<p>In both cases, the
+<span class="spadfunFrom" >degree</span><span class="index">degree</span><a name="chapter-9-4"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-5"/> of the
+remainder, <span class="teletype">r</span>, is less than the degree of <span class="teletype">b</span>.
+</p>
+
+
+
+
+<div id="spadComm9-8" class="spadComm" >
+<form id="formComm9-8" action="javascript:makeRequest('9-8');" >
+<input id="comm9-8" type="text" class="command" style="width: 15em;" value="ld := leftDivide(a,b) " />
+</form>
+<span id="commSav9-8" class="commSav" >ld := leftDivide(a,b) </span>
+<div id="mathAns9-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>quotient</mi><mo>=</mo><mrow><mrow><mn>5</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mn>7</mn></mrow></mrow><mo>,</mo><mrow><mi>remainder</mi><mo>=</mo><mn>0</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Record(quotient: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer),
+remainder: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer))
+</div>
+
+
+
+
+
+<div id="spadComm9-9" class="spadComm" >
+<form id="formComm9-9" action="javascript:makeRequest('9-9');" >
+<input id="comm9-9" type="text" class="command" style="width: 24em;" value="a = b * ld.quotient + ld.remainder " />
+</form>
+<span id="commSav9-9" class="commSav" >a = b * ld.quotient + ld.remainder </span>
+<div id="mathAns9-9" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>51</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>29</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>7</mn><mi>x</mi></mfrac></mrow><mo>=</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>51</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>29</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>7</mn><mi>x</mi></mfrac></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Equation LinearOrdinaryDifferentialOperator1 
+Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>The operations of left and right division
+are so-called because the quotient is obtained by dividing
+<span class="teletype">a</span> on that side by <span class="teletype">b</span>.
+</p>
+
+
+
+
+<div id="spadComm9-10" class="spadComm" >
+<form id="formComm9-10" action="javascript:makeRequest('9-10');" >
+<input id="comm9-10" type="text" class="command" style="width: 16em;" value="rd := rightDivide(a,b) " />
+</form>
+<span id="commSav9-10" class="commSav" >rd := rightDivide(a,b) </span>
+<div id="mathAns9-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>quotient</mi><mo>=</mo><mrow><mrow><mn>5</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mn>7</mn></mrow></mrow><mo>,</mo><mrow><mi>remainder</mi><mo>=</mo><mrow><mrow><mn>10</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>5</mn><mi>x</mi></mfrac></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Record(quotient: 
+LinearOrdinaryDifferentialOperator1 Fraction 
+UnivariatePolynomial(x,Integer),
+remainder: 
+LinearOrdinaryDifferentialOperator1 Fraction 
+UnivariatePolynomial(x,Integer))
+</div>
+
+
+
+
+
+<div id="spadComm9-11" class="spadComm" >
+<form id="formComm9-11" action="javascript:makeRequest('9-11');" >
+<input id="comm9-11" type="text" class="command" style="width: 24em;" value="a = rd.quotient * b + rd.remainder " />
+</form>
+<span id="commSav9-11" class="commSav" >a = rd.quotient * b + rd.remainder </span>
+<div id="mathAns9-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>51</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>29</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>7</mn><mi>x</mi></mfrac></mrow><mo>=</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>51</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>29</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>7</mn><mi>x</mi></mfrac></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>Operations
+<span class="spadfunFrom" >rightQuotient</span><span class="index">rightQuotient</span><a name="chapter-9-6"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-7"/> and
+<span class="spadfunFrom" >rightRemainder</span><span class="index">rightRemainder</span><a name="chapter-9-8"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-9"/> are
+available if only one of the quotient or remainder are of interest to
+you.  This is the quotient from right division.
+</p>
+
+
+
+
+<div id="spadComm9-12" class="spadComm" >
+<form id="formComm9-12" action="javascript:makeRequest('9-12');" >
+<input id="comm9-12" type="text" class="command" style="width: 13em;" value="rightQuotient(a,b) " />
+</form>
+<span id="commSav9-12" class="commSav" >rightQuotient(a,b) </span>
+<div id="mathAns9-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>5</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mn>7</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>This is the remainder from right division.
+The corresponding ``left'' functions
+<span class="spadfunFrom" >leftQuotient</span><span class="index">leftQuotient</span><a name="chapter-9-10"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-11"/> and
+<span class="spadfunFrom" >leftRemainder</span><span class="index">leftRemainder</span><a name="chapter-9-12"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-13"/>
+are also available.
+</p>
+
+
+
+
+<div id="spadComm9-13" class="spadComm" >
+<form id="formComm9-13" action="javascript:makeRequest('9-13');" >
+<input id="comm9-13" type="text" class="command" style="width: 14em;" value="rightRemainder(a,b) " />
+</form>
+<span id="commSav9-13" class="commSav" >rightRemainder(a,b) </span>
+<div id="mathAns9-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>10</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>5</mn><mi>x</mi></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>For exact division, the operations
+<span class="spadfunFrom" >leftExactQuotient</span><span class="index">leftExactQuotient</span><a name="chapter-9-14"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-15"/> and
+<span class="spadfunFrom" >rightExactQuotient</span><span class="index">rightExactQuotient</span><a name="chapter-9-16"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-17"/> are supplied.
+These return the quotient but only if the remainder is zero.
+The call <span class="teletype">rightExactQuotient(a,b)</span> would yield an error.
+</p>
+
+
+
+
+<div id="spadComm9-14" class="spadComm" >
+<form id="formComm9-14" action="javascript:makeRequest('9-14');" >
+<input id="comm9-14" type="text" class="command" style="width: 16em;" value="leftExactQuotient(a,b) " />
+</form>
+<span id="commSav9-14" class="commSav" >leftExactQuotient(a,b) </span>
+<div id="mathAns9-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>5</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mn>7</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Union(LinearOrdinaryDifferentialOperator1 
+Fraction UnivariatePolynomial(x,Integer),...)
+</div>
+
+
+
+<p>The division operations allow the computation of left and right greatest
+common divisors (<span class="spadfunFrom" >leftGcd</span><span class="index">leftGcd</span><a name="chapter-9-18"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-19"/> and
+<span class="spadfunFrom" >rightGcd</span><span class="index">rightGcd</span><a name="chapter-9-20"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-21"/>) via remainder
+sequences, and consequently the computation of left and right least common
+multiples (<span class="spadfunFrom" >rightLcm</span><span class="index">rightLcm</span><a name="chapter-9-22"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-23"/> and
+<span class="spadfunFrom" >leftLcm</span><span class="index">leftLcm</span><a name="chapter-9-24"/><span class="index">LinearOrdinaryDifferentialOperator1</span><a name="chapter-9-25"/>).
+</p>
+
+
+
+
+<div id="spadComm9-15" class="spadComm" >
+<form id="formComm9-15" action="javascript:makeRequest('9-15');" >
+<input id="comm9-15" type="text" class="command" style="width: 12em;" value="e := leftGcd(a,b) " />
+</form>
+<span id="commSav9-15" class="commSav" >e := leftGcd(a,b) </span>
+<div id="mathAns9-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>1</mn><mi>x</mi></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>Note that a greatest common divisor doesn't necessarily divide <span class="teletype">a</span>
+and <span class="teletype">b</span> on both sides.  Here the left greatest common divisor does
+not divide <span class="teletype">a</span> on the right.
+</p>
+
+
+
+
+<div id="spadComm9-16" class="spadComm" >
+<form id="formComm9-16" action="javascript:makeRequest('9-16');" >
+<input id="comm9-16" type="text" class="command" style="width: 14em;" value="leftRemainder(a, e) " />
+</form>
+<span id="commSav9-16" class="commSav" >leftRemainder(a, e) </span>
+<div id="mathAns9-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-17" class="spadComm" >
+<form id="formComm9-17" action="javascript:makeRequest('9-17');" >
+<input id="comm9-17" type="text" class="command" style="width: 14em;" value="rightRemainder(a, e) " />
+</form>
+<span id="commSav9-17" class="commSav" >rightRemainder(a, e) </span>
+<div id="mathAns9-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>10</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>5</mn><mi>x</mi></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>Similarly, a least common multiple is not necessarily divisible from
+both sides.
+</p>
+
+
+<p><!-- NOTE: the book has a different answer -->
+</p>
+
+
+
+
+<div id="spadComm9-18" class="spadComm" >
+<form id="formComm9-18" action="javascript:makeRequest('9-18');" >
+<input id="comm9-18" type="text" class="command" style="width: 13em;" value="f := rightLcm(a,b) " />
+</form>
+<span id="commSav9-18" class="commSav" >f := rightLcm(a,b) </span>
+<div id="mathAns9-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>51</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>29</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>7</mn><mi>x</mi></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p><!-- NOTE: the book has a different answer -->
+</p>
+
+
+
+<div id="spadComm9-19" class="spadComm" >
+<form id="formComm9-19" action="javascript:makeRequest('9-19');" >
+<input id="comm9-19" type="text" class="command" style="width: 14em;" value="rightRemainder(f, b) " />
+</form>
+<span id="commSav9-19" class="commSav" >rightRemainder(f, b) </span>
+<div id="mathAns9-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>10</mn><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>5</mn><mi>x</mi></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p><!-- NOTE: the book has a different answer -->
+</p>
+
+
+
+<div id="spadComm9-20" class="spadComm" >
+<form id="formComm9-20" action="javascript:makeRequest('9-20');" >
+<input id="comm9-20" type="text" class="command" style="width: 14em;" value="leftRemainder(f, b) " />
+</form>
+<span id="commSav9-20" class="commSav" >leftRemainder(f, b) </span>
+<div id="mathAns9-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.44.xhtml" style="margin-right: 10px;">Previous Section 9.44  LinearOrdinaryDifferentialOperator</a><a href="section-9.46.xhtml" style="margin-right: 10px;">Next Section 9.46 LinearOrdinaryDifferentialOperator2</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.46.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.46.xhtml
new file mode 100644
index 0000000..86e9cb6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.46.xhtml
@@ -0,0 +1,925 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.46</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.45.xhtml" style="margin-right: 10px;">Previous Section 9.45 LinearOrdinaryDifferentialOperator1</a><a href="section-9.47.xhtml" style="margin-right: 10px;">Next Section 9.47 List</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.46">
+<h2 class="sectiontitle">9.46  LinearOrdinaryDifferentialOperator2</h2>
+
+
+<a name="LinearOrdinaryDifferentialOperator2XmpPage" class="label"/>
+
+
+<p><span class="teletype">LinearOrdinaryDifferentialOperator2(A, M)</span> is the domain of
+linear ordinary differential operators with coefficients in the
+differential ring <span class="teletype">A</span> and operating on <span class="teletype">M</span>, an <span class="teletype">A</span>-module.
+This includes the cases of operators which are polynomials in <span class="teletype">D</span>
+acting upon scalar or vector expressions of a single variable.  The
+coefficients of the operator polynomials can be integers, rational
+functions, matrices or elements of other domains.
+</p>
+
+
+
+<a name="subsec-9.46.1"/>
+<div class="subsection"  id="subsec-9.46.1">
+<h3 class="subsectitle">9.46.1  Differential Operators with Constant Coefficients</h3>
+
+
+
+<p>This example shows differential operators with rational
+number coefficients operating on univariate polynomials.
+</p>
+
+
+<p>We begin by making type assignments so we can conveniently refer
+to univariate polynomials in <span class="teletype">x</span> over the rationals.
+</p>
+
+
+
+
+<div id="spadComm9-21" class="spadComm" >
+<form id="formComm9-21" action="javascript:makeRequest('9-21');" >
+<input id="comm9-21" type="text" class="command" style="width: 16em;" value="Q  := Fraction Integer " />
+</form>
+<span id="commSav9-21" class="commSav" >Q  := Fraction Integer </span>
+<div id="mathAns9-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FractionInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-22" class="spadComm" >
+<form id="formComm9-22" action="javascript:makeRequest('9-22');" >
+<input id="comm9-22" type="text" class="command" style="width: 23em;" value="PQ := UnivariatePolynomial('x, Q) " />
+</form>
+<span id="commSav9-22" class="commSav" >PQ := UnivariatePolynomial('x, Q) </span>
+<div id="mathAns9-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>UnivariatePolynomial(x,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-23" class="spadComm" >
+<form id="formComm9-23" action="javascript:makeRequest('9-23');" >
+<input id="comm9-23" type="text" class="command" style="width: 8em;" value="x: PQ := 'x " />
+</form>
+<span id="commSav9-23" class="commSav" >x: PQ := 'x </span>
+<div id="mathAns9-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>Now we assign <span class="teletype">Dx</span> to be the differential operator
+<span class="spadfunFrom" >D</span><span class="index">D</span><a name="chapter-9-26"/><span class="index">LinearOrdinaryDifferentialOperator2</span><a name="chapter-9-27"/>
+corresponding to <span class="teletype">d/dx</span>.
+</p>
+
+
+
+
+<div id="spadComm9-24" class="spadComm" >
+<form id="formComm9-24" action="javascript:makeRequest('9-24');" >
+<input id="comm9-24" type="text" class="command" style="width: 16em;" value="Dx: LODO2(Q, PQ) := D() " />
+</form>
+<span id="commSav9-24" class="commSav" >Dx: LODO2(Q, PQ) := D() </span>
+<div id="mathAns9-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>D</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator2(
+Fraction Integer,
+UnivariatePolynomial(x,Fraction Integer))
+</div>
+
+
+
+<p>New operators are created as polynomials in <span class="teletype">D()</span>.
+</p>
+
+
+
+
+<div id="spadComm9-25" class="spadComm" >
+<form id="formComm9-25" action="javascript:makeRequest('9-25');" >
+<input id="comm9-25" type="text" class="command" style="width: 9em;" value="a := Dx  + 1 " />
+</form>
+<span id="commSav9-25" class="commSav" >a := Dx  + 1 </span>
+<div id="mathAns9-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>D</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator2(
+Fraction Integer,
+UnivariatePolynomial(x,Fraction Integer))
+</div>
+
+
+
+
+
+<div id="spadComm9-26" class="spadComm" >
+<form id="formComm9-26" action="javascript:makeRequest('9-26');" >
+<input id="comm9-26" type="text" class="command" style="width: 17em;" value="b := a + 1/2*Dx**2 - 1/2 " />
+</form>
+<span id="commSav9-26" class="commSav" >b := a + 1/2*Dx**2 - 1/2 </span>
+<div id="mathAns9-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mi>D</mi><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator2(
+Fraction Integer,
+UnivariatePolynomial(x,Fraction Integer))
+</div>
+
+
+
+<p>To apply the operator <span class="teletype">a</span> to the value <span class="teletype">p</span> the usual function
+call syntax is used.
+</p>
+
+
+
+
+<div id="spadComm9-27" class="spadComm" >
+<form id="formComm9-27" action="javascript:makeRequest('9-27');" >
+<input id="comm9-27" type="text" class="command" style="width: 12em;" value="p := 4*x**2 + 2/3 " />
+</form>
+<span id="commSav9-27" class="commSav" >p := 4*x**2 + 2/3 </span>
+<div id="mathAns9-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>2</mn><mn>3</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-28" class="spadComm" >
+<form id="formComm9-28" action="javascript:makeRequest('9-28');" >
+<input id="comm9-28" type="text" class="command" style="width: 3em;" value="a p " />
+</form>
+<span id="commSav9-28" class="commSav" >a p </span>
+<div id="mathAns9-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mfrac><mn>2</mn><mn>3</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>Operator multiplication is defined by the identity <span class="teletype">(a*b) p = a(b(p))</span>
+</p>
+
+
+
+
+<div id="spadComm9-29" class="spadComm" >
+<form id="formComm9-29" action="javascript:makeRequest('9-29');" >
+<input id="comm9-29" type="text" class="command" style="width: 12em;" value="(a * b) p = a b p " />
+</form>
+<span id="commSav9-29" class="commSav" >(a * b) p = a b p </span>
+<div id="mathAns9-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mfrac><mn>37</mn><mn>3</mn></mfrac></mrow><mo>=</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mfrac><mn>37</mn><mn>3</mn></mfrac></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>Exponentiation follows from multiplication.
+</p>
+
+
+
+
+<div id="spadComm9-30" class="spadComm" >
+<form id="formComm9-30" action="javascript:makeRequest('9-30');" >
+<input id="comm9-30" type="text" class="command" style="width: 16em;" value="c := (1/9)*b*(a + b)**2 " />
+</form>
+<span id="commSav9-30" class="commSav" >c := (1/9)*b*(a + b)**2 </span>
+<div id="mathAns9-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>1</mn><mn>72</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>5</mn><mn>36</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13</mn><mn>24</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>19</mn><mn>18</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>79</mn><mn>72</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>7</mn><mn>12</mn></mfrac><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mfrac><mn>1</mn><mn>8</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator2(
+Fraction Integer,
+UnivariatePolynomial(x,Fraction Integer))
+</div>
+
+
+
+<p>Finally, note that operator expressions may be applied directly.
+</p>
+
+
+
+
+<div id="spadComm9-31" class="spadComm" >
+<form id="formComm9-31" action="javascript:makeRequest('9-31');" >
+<input id="comm9-31" type="text" class="command" style="width: 18em;" value="(a**2 - 3/4*b + c) (p + 1) " />
+</form>
+<span id="commSav9-31" class="commSav" >(a**2 - 3/4*b + c) (p + 1) </span>
+<div id="mathAns9-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>44</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mfrac><mn>541</mn><mn>36</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.46.2"/>
+<div class="subsection"  id="subsec-9.46.2">
+<h3 class="subsectitle">9.46.2  Differential Operators with Matrix Coefficients Operating on Vectors</h3>
+
+
+
+<p>This is another example of linear ordinary differential operators with
+non-commutative multiplication.  Unlike the rational function case,
+the differential ring of square matrices (of a given dimension) with
+univariate polynomial entries does not form a field.  Thus the number
+of operations available is more limited.
+</p>
+
+
+<p>In this section, the operators have three by three
+matrix coefficients with polynomial entries.
+</p>
+
+
+
+
+<div id="spadComm9-32" class="spadComm" >
+<form id="formComm9-32" action="javascript:makeRequest('9-32');" >
+<input id="comm9-32" type="text" class="command" style="width: 26em;" value="PZ   := UnivariatePolynomial(x,Integer)" />
+</form>
+<span id="commSav9-32" class="commSav" >PZ   := UnivariatePolynomial(x,Integer)</span>
+<div id="mathAns9-32" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>UnivariatePolynomial</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>Integer</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-33" class="spadComm" >
+<form id="formComm9-33" action="javascript:makeRequest('9-33');" >
+<input id="comm9-33" type="text" class="command" style="width: 8em;" value="x:PZ := 'x " />
+</form>
+<span id="commSav9-33" class="commSav" >x:PZ := 'x </span>
+<div id="mathAns9-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-34" class="spadComm" >
+<form id="formComm9-34" action="javascript:makeRequest('9-34');" >
+<input id="comm9-34" type="text" class="command" style="width: 18em;" value="Mat  := SquareMatrix(3,PZ)" />
+</form>
+<span id="commSav9-34" class="commSav" >Mat  := SquareMatrix(3,PZ)</span>
+<div id="mathAns9-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>SquareMatrix</mi><mo>(</mo><mn>3</mn><mo>,</mo><mi>UnivariatePolynomial</mi><mo>(</mo><mi>x</mi><mo>,</mo><mi>Integer</mi><mo>)</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>The operators act on the vectors considered as a <span class="teletype">Mat</span>-module.
+</p>
+
+
+
+
+<div id="spadComm9-35" class="spadComm" >
+<form id="formComm9-35" action="javascript:makeRequest('9-35');" >
+<input id="comm9-35" type="text" class="command" style="width: 19em;" value="Vect := DPMM(3, PZ, Mat, PZ)" />
+</form>
+<span id="commSav9-35" class="commSav" >Vect := DPMM(3, PZ, Mat, PZ)</span>
+<div id="mathAns9-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>DirectProductMatrixModule(3,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;UnivariatePolynomial(x,Integer),</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;SquareMatrix(3,UnivariatePolynomial(x,Integer)),</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;UnivariatePolynomial(x,Integer))</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-36" class="spadComm" >
+<form id="formComm9-36" action="javascript:makeRequest('9-36');" >
+<input id="comm9-36" type="text" class="command" style="width: 16em;" value="Modo := LODO2(Mat, Vect)" />
+</form>
+<span id="commSav9-36" class="commSav" >Modo := LODO2(Mat, Vect)</span>
+<div id="mathAns9-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>LinearOrdinaryDifferentialOperator2(</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;SquareMatrix(3,UnivariatePolynomial(x,Integer)),</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;DirectProductMatrixModule(3,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;UnivariatePolynomial(x,Integer),</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;SquareMatrix(3,UnivariatePolynomial(x,Integer)),</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;UnivariatePolynomial(x,Integer)))</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>The matrix <span class="teletype">m</span> is used as a coefficient and the vectors <span class="teletype">p</span>
+and <span class="teletype">q</span> are operated upon.
+</p>
+
+
+
+
+<div id="spadComm9-37" class="spadComm" >
+<form id="formComm9-37" action="javascript:makeRequest('9-37');" >
+<input id="comm9-37" type="text" class="command" style="width: 36em;" value="m:Mat := matrix [ [x**2,1,0],[1,x**4,0],[0,0,4*x**2] ]" />
+</form>
+<span id="commSav9-37" class="commSav" >m:Mat := matrix [ [x**2,1,0],[1,x**4,0],[0,0,4*x**2] ]</span>
+<div id="mathAns9-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(3,UnivariatePolynomial(x,Integer))
+</div>
+
+
+
+
+
+<div id="spadComm9-38" class="spadComm" >
+<form id="formComm9-38" action="javascript:makeRequest('9-38');" >
+<input id="comm9-38" type="text" class="command" style="width: 33em;" value="p:Vect := directProduct [3*x**2+1,2*x,7*x**3+2*x]" />
+</form>
+<span id="commSav9-38" class="commSav" >p:Vect := directProduct [3*x**2+1,2*x,7*x**3+2*x]</span>
+<div id="mathAns9-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>,</mo><mrow><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+DirectProductMatrixModule(3,
+UnivariatePolynomial(x,Integer),
+SquareMatrix(3,UnivariatePolynomial(x,Integer)),
+UnivariatePolynomial(x,Integer))
+</div>
+
+
+
+
+
+<div id="spadComm9-39" class="spadComm" >
+<form id="formComm9-39" action="javascript:makeRequest('9-39');" >
+<input id="comm9-39" type="text" class="command" style="width: 11em;" value="q: Vect := m * p" />
+</form>
+<span id="commSav9-39" class="commSav" >q: Vect := m * p</span>
+<div id="mathAns9-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>28</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+DirectProductMatrixModule(3,
+UnivariatePolynomial(x,Integer),
+SquareMatrix(3,UnivariatePolynomial(x,Integer)),
+UnivariatePolynomial(x,Integer))
+</div>
+
+
+
+<p>Now form a few operators.
+</p>
+
+
+
+
+<div id="spadComm9-40" class="spadComm" >
+<form id="formComm9-40" action="javascript:makeRequest('9-40');" >
+<input id="comm9-40" type="text" class="command" style="width: 11em;" value="Dx : Modo := D()" />
+</form>
+<span id="commSav9-40" class="commSav" >Dx : Modo := D()</span>
+<div id="mathAns9-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>D</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator2(
+SquareMatrix(3,UnivariatePolynomial(x,Integer)),
+DirectProductMatrixModule(3,
+UnivariatePolynomial(x,Integer),
+SquareMatrix(3,UnivariatePolynomial(x,Integer)),
+UnivariatePolynomial(x,Integer)))
+</div>
+
+
+
+
+
+<div id="spadComm9-41" class="spadComm" >
+<form id="formComm9-41" action="javascript:makeRequest('9-41');" >
+<input id="comm9-41" type="text" class="command" style="width: 13em;" value="a : Modo := Dx  + m" />
+</form>
+<span id="commSav9-41" class="commSav" >a : Modo := Dx  + m</span>
+<div id="mathAns9-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>D</mi><mo>+</mo><mrow><mo>[</mo><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator2(
+SquareMatrix(3,UnivariatePolynomial(x,Integer)),
+DirectProductMatrixModule(3,
+UnivariatePolynomial(x,Integer),
+SquareMatrix(3,
+UnivariatePolynomial(x,Integer)),
+UnivariatePolynomial(x,Integer)))
+</div>
+
+
+
+
+
+<div id="spadComm9-42" class="spadComm" >
+<form id="formComm9-42" action="javascript:makeRequest('9-42');" >
+<input id="comm9-42" type="text" class="command" style="width: 14em;" value="b : Modo := m*Dx  + 1" />
+</form>
+<span id="commSav9-42" class="commSav" >b : Modo := m*Dx  + 1</span>
+<div id="mathAns9-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator2(
+SquareMatrix(3,
+UnivariatePolynomial(x,Integer)),
+DirectProductMatrixModule(3,
+UnivariatePolynomial(x,Integer),
+SquareMatrix(3,
+UnivariatePolynomial(x,Integer)),
+UnivariatePolynomial(x,Integer)))
+</div>
+
+
+
+
+
+<div id="spadComm9-43" class="spadComm" >
+<form id="formComm9-43" action="javascript:makeRequest('9-43');" >
+<input id="comm9-43" type="text" class="command" style="width: 6em;" value="c := a*b " />
+</form>
+<span id="commSav9-43" class="commSav" >c := a*b </span>
+<div id="mathAns9-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>2</mn></mrow></mtd><mtd><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd><mtd><mrow><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>D</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+LinearOrdinaryDifferentialOperator2(
+SquareMatrix(3,
+UnivariatePolynomial(x,Integer)),
+DirectProductMatrixModule(3,
+UnivariatePolynomial(x,Integer),
+SquareMatrix(3,
+UnivariatePolynomial(x,Integer)),
+UnivariatePolynomial(x,Integer)))
+</div>
+
+
+
+<p>These operators can be applied to vector values.
+</p>
+
+
+
+
+<div id="spadComm9-44" class="spadComm" >
+<form id="formComm9-44" action="javascript:makeRequest('9-44');" >
+<input id="comm9-44" type="text" class="command" style="width: 3em;" value="a p " />
+</form>
+<span id="commSav9-44" class="commSav" >a p </span>
+<div id="mathAns9-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn></mrow><mo>,</mo><mrow><mrow><mn>28</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>21</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+DirectProductMatrixModule(3,
+UnivariatePolynomial(x,Integer),
+SquareMatrix(3,
+UnivariatePolynomial(x,Integer)),
+UnivariatePolynomial(x,Integer))
+</div>
+
+
+
+
+
+<div id="spadComm9-45" class="spadComm" >
+<form id="formComm9-45" action="javascript:makeRequest('9-45');" >
+<input id="comm9-45" type="text" class="command" style="width: 3em;" value="b p " />
+</form>
+<span id="commSav9-45" class="commSav" >b p </span>
+<div id="mathAns9-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>,</mo><mrow><mrow><mn>84</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+DirectProductMatrixModule(3,
+UnivariatePolynomial(x,Integer),
+SquareMatrix(3,
+UnivariatePolynomial(x,Integer)),
+UnivariatePolynomial(x,Integer))
+</div>
+
+
+
+
+
+<div id="spadComm9-46" class="spadComm" >
+<form id="formComm9-46" action="javascript:makeRequest('9-46');" >
+<input id="comm9-46" type="text" class="command" style="width: 14em;" value="(a + b + c) (p + q) " />
+</form>
+<span id="commSav9-46" class="commSav" >(a + b + c) (p + q) </span>
+<div id="mathAns9-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>85</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>94</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>40</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>40</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>17</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>92</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>32</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>72</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>28</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>49</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>32</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>19</mn><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mn>2240</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>224</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1280</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3508</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>492</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>751</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>98</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>4</mn></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+DirectProductMatrixModule(3,
+UnivariatePolynomial(x,Integer),
+SquareMatrix(3,
+UnivariatePolynomial(x,Integer)),
+UnivariatePolynomial(x,Integer))
+</div>
+
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.45.xhtml" style="margin-right: 10px;">Previous Section 9.45 LinearOrdinaryDifferentialOperator1</a><a href="section-9.47.xhtml" style="margin-right: 10px;">Next Section 9.47 List</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.47.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.47.xhtml
new file mode 100644
index 0000000..65aa988
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.47.xhtml
@@ -0,0 +1,1212 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.47</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.46.xhtml" style="margin-right: 10px;">Previous Section 9.46 LinearOrdinaryDifferentialOperator2</a><a href="section-9.48.xhtml" style="margin-right: 10px;">Next Section 9.48 LyndonWord</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.47">
+<h2 class="sectiontitle">9.47  List</h2>
+
+
+<a name="ListXmpPage" class="label"/>
+
+
+<p>A <span class="index">list</span><a name="chapter-9-28"/> is a finite collection of elements in a specified
+order that can contain duplicates.  A list is a convenient structure
+to work with because it is easy to add or remove elements and the
+length need not be constant.  There are many different kinds of lists
+in Axiom, but the default types (and those used most often) are
+created by the <span class="teletype">List</span> constructor.  For example, there are objects
+of type <span class="teletype">List Integer</span>, <span class="teletype">List Float</span> and <span class="teletype">List Polynomial
+Fraction Integer</span>.  Indeed, you can even have <span class="teletype">List List List
+Boolean</span> (that is, lists of lists of lists of Boolean values).  You
+can have lists of any type of Axiom object.
+</p>
+
+
+
+<a name="subsec-9.47.1"/>
+<div class="subsection"  id="subsec-9.47.1">
+<h3 class="subsectitle">9.47.1  Creating Lists</h3>
+
+
+
+<p>The easiest way to create a list with, for example, the elements
+<span class="teletype">2, 4, 5, 6</span> is to enclose the elements with square
+brackets and separate the elements with commas.
+</p>
+
+
+<p>The spaces after the commas are optional, but they do improve the
+readability.
+</p>
+
+
+
+
+<div id="spadComm9-47" class="spadComm" >
+<form id="formComm9-47" action="javascript:makeRequest('9-47');" >
+<input id="comm9-47" type="text" class="command" style="width: 8em;" value="[2, 4, 5, 6]" />
+</form>
+<span id="commSav9-47" class="commSav" >[2, 4, 5, 6]</span>
+<div id="mathAns9-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>To create a list with the single element <span class="teletype">1</span>, you can use
+either <span class="teletype">[1]</span> or the operation <span class="spadfunFrom" >list</span><span class="index">list</span><a name="chapter-9-29"/><span class="index">List</span><a name="chapter-9-30"/>.
+</p>
+
+
+
+
+<div id="spadComm9-48" class="spadComm" >
+<form id="formComm9-48" action="javascript:makeRequest('9-48');" >
+<input id="comm9-48" type="text" class="command" style="width: 2em;" value="[1]" />
+</form>
+<span id="commSav9-48" class="commSav" >[1]</span>
+<div id="mathAns9-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-49" class="spadComm" >
+<form id="formComm9-49" action="javascript:makeRequest('9-49');" >
+<input id="comm9-49" type="text" class="command" style="width: 5em;" value="list(1)" />
+</form>
+<span id="commSav9-49" class="commSav" >list(1)</span>
+<div id="mathAns9-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Once created, two lists <span class="teletype">k</span> and <span class="teletype">m</span> can be concatenated by
+issuing <span class="teletype">append(k,m)</span>.  <span class="spadfunFrom" >append</span><span class="index">append</span><a name="chapter-9-31"/><span class="index">List</span><a name="chapter-9-32"/> does <span class="italic">not</span>
+physically join the lists, but rather produces a new list with the
+elements coming from the two arguments.
+</p>
+
+
+
+
+<div id="spadComm9-50" class="spadComm" >
+<form id="formComm9-50" action="javascript:makeRequest('9-50');" >
+<input id="comm9-50" type="text" class="command" style="width: 16em;" value="append([1,2,3],[5,6,7])" />
+</form>
+<span id="commSav9-50" class="commSav" >append([1,2,3],[5,6,7])</span>
+<div id="mathAns9-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >cons</span><span class="index">cons</span><a name="chapter-9-33"/><span class="index">List</span><a name="chapter-9-34"/> to append an element onto the front of a
+list.
+</p>
+
+
+
+
+<div id="spadComm9-51" class="spadComm" >
+<form id="formComm9-51" action="javascript:makeRequest('9-51');" >
+<input id="comm9-51" type="text" class="command" style="width: 11em;" value="cons(10,[9,8,7])" />
+</form>
+<span id="commSav9-51" class="commSav" >cons(10,[9,8,7])</span>
+<div id="mathAns9-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>10</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.47.2"/>
+<div class="subsection"  id="subsec-9.47.2">
+<h3 class="subsectitle">9.47.2  Accessing List Elements</h3>
+
+
+
+<p>To determine whether a list has any elements, use the operation
+<span class="spadfunFrom" >empty?</span><span class="index">empty?</span><a name="chapter-9-35"/><span class="index">List</span><a name="chapter-9-36"/>.
+</p>
+
+
+
+
+<div id="spadComm9-52" class="spadComm" >
+<form id="formComm9-52" action="javascript:makeRequest('9-52');" >
+<input id="comm9-52" type="text" class="command" style="width: 8em;" value="empty? [x+1]" />
+</form>
+<span id="commSav9-52" class="commSav" >empty? [x+1]</span>
+<div id="mathAns9-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Alternatively, equality with the list constant <span class="spadfunFrom" >nil</span><span class="index">nil</span><a name="chapter-9-37"/><span class="index">List</span><a name="chapter-9-38"/> can
+be tested.
+</p>
+
+
+
+
+<div id="spadComm9-53" class="spadComm" >
+<form id="formComm9-53" action="javascript:makeRequest('9-53');" >
+<input id="comm9-53" type="text" class="command" style="width: 12em;" value="([] = nil)@Boolean" />
+</form>
+<span id="commSav9-53" class="commSav" >([] = nil)@Boolean</span>
+<div id="mathAns9-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>We'll use this in some of the following examples.
+</p>
+
+
+
+
+<div id="spadComm9-54" class="spadComm" >
+<form id="formComm9-54" action="javascript:makeRequest('9-54');" >
+<input id="comm9-54" type="text" class="command" style="width: 16em;" value="k := [4,3,7,3,8,5,9,2] " />
+</form>
+<span id="commSav9-54" class="commSav" >k := [4,3,7,3,8,5,9,2] </span>
+<div id="mathAns9-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Each of the next four expressions extracts the <span class="spadfunFrom" >first</span><span class="index">first</span><a name="chapter-9-39"/><span class="index">List</span><a name="chapter-9-40"/>
+element of <span class="teletype">k</span>.
+</p>
+
+
+
+
+<div id="spadComm9-55" class="spadComm" >
+<form id="formComm9-55" action="javascript:makeRequest('9-55');" >
+<input id="comm9-55" type="text" class="command" style="width: 6em;" value="first k " />
+</form>
+<span id="commSav9-55" class="commSav" >first k </span>
+<div id="mathAns9-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-56" class="spadComm" >
+<form id="formComm9-56" action="javascript:makeRequest('9-56');" >
+<input id="comm9-56" type="text" class="command" style="width: 6em;" value="k.first " />
+</form>
+<span id="commSav9-56" class="commSav" >k.first </span>
+<div id="mathAns9-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-57" class="spadComm" >
+<form id="formComm9-57" action="javascript:makeRequest('9-57');" >
+<input id="comm9-57" type="text" class="command" style="width: 3em;" value="k.1 " />
+</form>
+<span id="commSav9-57" class="commSav" >k.1 </span>
+<div id="mathAns9-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-58" class="spadComm" >
+<form id="formComm9-58" action="javascript:makeRequest('9-58');" >
+<input id="comm9-58" type="text" class="command" style="width: 4em;" value="k(1) " />
+</form>
+<span id="commSav9-58" class="commSav" >k(1) </span>
+<div id="mathAns9-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The last two forms generalize to <span class="teletype">k.i</span> and <span class="teletype">k(i)</span>,
+respectively, where  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>1</mn><mo>&#x2264;</mo><mi>i</mi><mo>&#x2264;</mo><mi>n</mi></mrow></mstyle></math> and <span class="teletype">n</span> equals the length
+of <span class="teletype">k</span>.
+</p>
+
+
+<p>This length is calculated by <span class="spadopFrom" title="List"> #</span>.
+</p>
+
+
+
+
+<div id="spadComm9-59" class="spadComm" >
+<form id="formComm9-59" action="javascript:makeRequest('9-59');" >
+<input id="comm9-59" type="text" class="command" style="width: 6em;" value="n :=  #k " />
+</form>
+<span id="commSav9-59" class="commSav" >n :=  #k </span>
+<div id="mathAns9-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Performing an operation such as <span class="teletype">k.i</span> is sometimes referred to as
+<span class="italic">indexing into k</span> or <span class="italic">elting into k</span>.  The latter phrase comes
+about because the name of the operation that extracts elements is
+called <span class="spadfunFrom" >elt</span><span class="index">elt</span><a name="chapter-9-41"/><span class="index">List</span><a name="chapter-9-42"/>.  That is, <span class="teletype">k.3</span> is just
+alternative syntax for <span class="teletype">elt(k,3)</span>.  It is important to remember
+that list indices begin with 1.  If we issue <span class="teletype">k := [1,3,2,9,5]</span>
+then <span class="teletype">k.4</span> returns <span class="teletype">9</span>.  It is an error to use an index that
+is not in the range from <span class="teletype">1</span> to the length of the list.
+</p>
+
+
+<p>The last element of a list is extracted by any of the
+following three expressions.
+</p>
+
+
+
+
+<div id="spadComm9-60" class="spadComm" >
+<form id="formComm9-60" action="javascript:makeRequest('9-60');" >
+<input id="comm9-60" type="text" class="command" style="width: 5em;" value="last k " />
+</form>
+<span id="commSav9-60" class="commSav" >last k </span>
+<div id="mathAns9-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-61" class="spadComm" >
+<form id="formComm9-61" action="javascript:makeRequest('9-61');" >
+<input id="comm9-61" type="text" class="command" style="width: 5em;" value="k.last " />
+</form>
+<span id="commSav9-61" class="commSav" >k.last </span>
+<div id="mathAns9-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This form computes the index of the last element and then extracts the
+element from the list.
+</p>
+
+
+
+
+<div id="spadComm9-62" class="spadComm" >
+<form id="formComm9-62" action="javascript:makeRequest('9-62');" >
+<input id="comm9-62" type="text" class="command" style="width: 6em;" value="k.( #k) " />
+</form>
+<span id="commSav9-62" class="commSav" >k.( #k) </span>
+<div id="mathAns9-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.47.3"/>
+<div class="subsection"  id="subsec-9.47.3">
+<h3 class="subsectitle">9.47.3  Changing List Elements</h3>
+
+
+
+<p>We'll use this in some of the following examples.
+</p>
+
+
+
+
+<div id="spadComm9-63" class="spadComm" >
+<form id="formComm9-63" action="javascript:makeRequest('9-63');" >
+<input id="comm9-63" type="text" class="command" style="width: 16em;" value="k := [4,3,7,3,8,5,9,2] " />
+</form>
+<span id="commSav9-63" class="commSav" >k := [4,3,7,3,8,5,9,2] </span>
+<div id="mathAns9-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>List elements are reset by using the <span class="teletype">k.i</span> form on the left-hand
+side of an assignment.  This expression resets the first element of
+<span class="teletype">k</span> to <span class="teletype">999</span>.
+</p>
+
+
+
+
+<div id="spadComm9-64" class="spadComm" >
+<form id="formComm9-64" action="javascript:makeRequest('9-64');" >
+<input id="comm9-64" type="text" class="command" style="width: 8em;" value="k.1 := 999 " />
+</form>
+<span id="commSav9-64" class="commSav" >k.1 := 999 </span>
+<div id="mathAns9-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>999</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>As with indexing into a list, it is an error to use an index that is
+not within the proper bounds.  Here you see that <span class="teletype">k</span> was modified.
+</p>
+
+
+
+
+<div id="spadComm9-65" class="spadComm" >
+<form id="formComm9-65" action="javascript:makeRequest('9-65');" >
+<input id="comm9-65" type="text" class="command" style="width: 2em;" value="k " />
+</form>
+<span id="commSav9-65" class="commSav" >k </span>
+<div id="mathAns9-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>999</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>The operation that performs the assignment of an element to a
+particular position in a list is called <span class="spadfunFrom" >setelt</span><span class="index">setelt</span><a name="chapter-9-43"/><span class="index">List</span><a name="chapter-9-44"/>.
+This operation is <span class="italic">destructive</span> in that it changes the list.  In
+the above example, the assignment returned the value <span class="teletype">999</span> and
+<span class="teletype">k</span> was modified.  For this reason, lists are called
+<span class="index">mutable</span><a name="chapter-9-45"/> objects: it is possible to change part of a list
+(mutate it) rather than always returning a new list reflecting the
+intended modifications.
+</p>
+
+
+<p>Moreover, since lists can share structure, changes to one list can
+sometimes affect others.
+</p>
+
+
+
+
+<div id="spadComm9-66" class="spadComm" >
+<form id="formComm9-66" action="javascript:makeRequest('9-66');" >
+<input id="comm9-66" type="text" class="command" style="width: 8em;" value="k := [1,2] " />
+</form>
+<span id="commSav9-66" class="commSav" >k := [1,2] </span>
+<div id="mathAns9-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-67" class="spadComm" >
+<form id="formComm9-67" action="javascript:makeRequest('9-67');" >
+<input id="comm9-67" type="text" class="command" style="width: 10em;" value="m := cons(0,k) " />
+</form>
+<span id="commSav9-67" class="commSav" >m := cons(0,k) </span>
+<div id="mathAns9-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>Change the second element of <span class="teletype">m</span>.
+</p>
+
+
+
+
+<div id="spadComm9-68" class="spadComm" >
+<form id="formComm9-68" action="javascript:makeRequest('9-68');" >
+<input id="comm9-68" type="text" class="command" style="width: 7em;" value="m.2 := 99 " />
+</form>
+<span id="commSav9-68" class="commSav" >m.2 := 99 </span>
+<div id="mathAns9-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>99</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>See, <span class="teletype">m</span> was altered.
+</p>
+
+
+
+
+<div id="spadComm9-69" class="spadComm" >
+<form id="formComm9-69" action="javascript:makeRequest('9-69');" >
+<input id="comm9-69" type="text" class="command" style="width: 2em;" value="m " />
+</form>
+<span id="commSav9-69" class="commSav" >m </span>
+<div id="mathAns9-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>99</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>But what about <span class="teletype">k</span>?  It changed too!
+</p>
+
+
+
+
+<div id="spadComm9-70" class="spadComm" >
+<form id="formComm9-70" action="javascript:makeRequest('9-70');" >
+<input id="comm9-70" type="text" class="command" style="width: 2em;" value="k  " />
+</form>
+<span id="commSav9-70" class="commSav" >k  </span>
+<div id="mathAns9-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>99</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.47.4"/>
+<div class="subsection"  id="subsec-9.47.4">
+<h3 class="subsectitle">9.47.4  Other Functions</h3>
+
+
+
+<p>An operation that is used frequently in list processing is that
+which returns all elements in a list after the first element.
+</p>
+
+
+
+
+<div id="spadComm9-71" class="spadComm" >
+<form id="formComm9-71" action="javascript:makeRequest('9-71');" >
+<input id="comm9-71" type="text" class="command" style="width: 9em;" value="k := [1,2,3] " />
+</form>
+<span id="commSav9-71" class="commSav" >k := [1,2,3] </span>
+<div id="mathAns9-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>Use the <span class="spadfunFrom" >rest</span><span class="index">rest</span><a name="chapter-9-46"/><span class="index">List</span><a name="chapter-9-47"/> operation to do this.
+</p>
+
+
+
+
+<div id="spadComm9-72" class="spadComm" >
+<form id="formComm9-72" action="javascript:makeRequest('9-72');" >
+<input id="comm9-72" type="text" class="command" style="width: 5em;" value="rest k " />
+</form>
+<span id="commSav9-72" class="commSav" >rest k </span>
+<div id="mathAns9-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>To remove duplicate elements in a list <span class="teletype">k</span>, use
+<span class="spadfunFrom" >removeDuplicates</span><span class="index">removeDuplicates</span><a name="chapter-9-48"/><span class="index">List</span><a name="chapter-9-49"/>.
+</p>
+
+
+
+
+<div id="spadComm9-73" class="spadComm" >
+<form id="formComm9-73" action="javascript:makeRequest('9-73');" >
+<input id="comm9-73" type="text" class="command" style="width: 22em;" value="removeDuplicates [4,3,4,3,5,3,4]" />
+</form>
+<span id="commSav9-73" class="commSav" >removeDuplicates [4,3,4,3,5,3,4]</span>
+<div id="mathAns9-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>To get a list with elements in the order opposite to those in
+a list <span class="teletype">k</span>, use <span class="spadfunFrom" >reverse</span><span class="index">reverse</span><a name="chapter-9-50"/><span class="index">List</span><a name="chapter-9-51"/>.
+</p>
+
+
+
+
+<div id="spadComm9-74" class="spadComm" >
+<form id="formComm9-74" action="javascript:makeRequest('9-74');" >
+<input id="comm9-74" type="text" class="command" style="width: 14em;" value="reverse [1,2,3,4,5,6]" />
+</form>
+<span id="commSav9-74" class="commSav" >reverse [1,2,3,4,5,6]</span>
+<div id="mathAns9-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>6</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>To test whether an element is in a list, use
+<span class="spadfunFrom" >member?</span><span class="index">member?</span><a name="chapter-9-52"/><span class="index">List</span><a name="chapter-9-53"/>: <span class="teletype">member?(a,k)</span> returns <span class="teletype">true</span> or
+<span class="teletype">false</span> depending on whether <span class="teletype">a</span> is in <span class="teletype">k</span> or not.
+</p>
+
+
+
+
+<div id="spadComm9-75" class="spadComm" >
+<form id="formComm9-75" action="javascript:makeRequest('9-75');" >
+<input id="comm9-75" type="text" class="command" style="width: 18em;" value="member?(1/2,[3/4,5/6,1/2])" />
+</form>
+<span id="commSav9-75" class="commSav" >member?(1/2,[3/4,5/6,1/2])</span>
+<div id="mathAns9-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-76" class="spadComm" >
+<form id="formComm9-76" action="javascript:makeRequest('9-76');" >
+<input id="comm9-76" type="text" class="command" style="width: 18em;" value="member?(1/12,[3/4,5/6,1/2])" />
+</form>
+<span id="commSav9-76" class="commSav" >member?(1/12,[3/4,5/6,1/2])</span>
+<div id="mathAns9-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>As an exercise, the reader should determine how to get a list
+containing all but the last of the elements in a given non-empty list
+<span class="teletype">k</span>.<span class="footnote"><span class="teletype">reverse(rest(reverse(k)))</span> works.</span>
+</p>
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.47.5"/>
+<div class="subsection"  id="subsec-9.47.5">
+<h3 class="subsectitle">9.47.5  Dot, Dot</h3>
+
+
+
+<p>Certain lists are used so often that Axiom provides an easy way of
+constructing them.  If <span class="teletype">n</span> and <span class="teletype">m</span> are integers, then 
+<span class="teletype">expand [n..m]</span> creates a list containing <span class="teletype">n, n+1, ... m</span>.  If 
+<span class="teletype">n > m</span> then the list is empty.  It is actually permissible to leave
+off the <span class="teletype">m</span> in the dot-dot construction (see below).
+</p>
+
+
+<p>The dot-dot notation can be used more than once in a list construction
+and with specific elements being given.  Items separated by dots are
+called <span class="italic">segments.</span>
+</p>
+
+
+
+
+<div id="spadComm9-77" class="spadComm" >
+<form id="formComm9-77" action="javascript:makeRequest('9-77');" >
+<input id="comm9-77" type="text" class="command" style="width: 11em;" value="[1..3,10,20..23]" />
+</form>
+<span id="commSav9-77" class="commSav" >[1..3,10,20..23]</span>
+<div id="mathAns9-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mo>.</mo><mn>3</mn></mrow><mo>,</mo><mrow><mn>10</mn><mo>.</mo><mo>.</mo><mn>10</mn></mrow><mo>,</mo><mrow><mn>20</mn><mo>.</mo><mo>.</mo><mn>23</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Segment PositiveInteger
+</div>
+
+
+
+<p>Segments can be expanded into the range of items between the
+endpoints by using <span class="spadfunFrom" >expand</span><span class="index">expand</span><a name="chapter-9-54"/><span class="index">Segment</span><a name="chapter-9-55"/>.
+</p>
+
+
+
+
+<div id="spadComm9-78" class="spadComm" >
+<form id="formComm9-78" action="javascript:makeRequest('9-78');" >
+<input id="comm9-78" type="text" class="command" style="width: 16em;" value="expand [1..3,10,20..23]" />
+</form>
+<span id="commSav9-78" class="commSav" >expand [1..3,10,20..23]</span>
+<div id="mathAns9-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>22</mn><mo>,</mo><mn>23</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>What happens if we leave off a number on the right-hand side of
+<span class="spadopFrom" title="UniversalSegment">..</span>?
+</p>
+
+
+
+
+<div id="spadComm9-79" class="spadComm" >
+<form id="formComm9-79" action="javascript:makeRequest('9-79');" >
+<input id="comm9-79" type="text" class="command" style="width: 8em;" value="expand [1..]" />
+</form>
+<span id="commSav9-79" class="commSav" >expand [1..]</span>
+<div id="mathAns9-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>What is created in this case is a <span class="teletype">Stream</span> which is a
+generalization of a list.  See 
+<a href="section-9.76.xhtml#StreamXmpPage" class="ref" >StreamXmpPage</a>  for more
+information.
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.46.xhtml" style="margin-right: 10px;">Previous Section 9.46 LinearOrdinaryDifferentialOperator2</a><a href="section-9.48.xhtml" style="margin-right: 10px;">Next Section 9.48 LyndonWord</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.48.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.48.xhtml
new file mode 100644
index 0000000..188acdc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.48.xhtml
@@ -0,0 +1,672 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.48</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.47.xhtml" style="margin-right: 10px;">Previous Section 9.47 List</a><a href="section-9.49.xhtml" style="margin-right: 10px;">Next Section 9.49 Magma</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.48">
+<h2 class="sectiontitle">9.48  LyndonWord</h2>
+
+
+<a name="LyndonWordXmpPage" class="label"/>
+
+
+<p>Initialisations
+</p>
+
+
+
+
+<div id="spadComm9-80" class="spadComm" >
+<form id="formComm9-80" action="javascript:makeRequest('9-80');" >
+<input id="comm9-80" type="text" class="command" style="width: 10em;" value="a:Symbol :='a " />
+</form>
+<span id="commSav9-80" class="commSav" >a:Symbol :='a </span>
+<div id="mathAns9-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>a</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-81" class="spadComm" >
+<form id="formComm9-81" action="javascript:makeRequest('9-81');" >
+<input id="comm9-81" type="text" class="command" style="width: 10em;" value="b:Symbol :='b " />
+</form>
+<span id="commSav9-81" class="commSav" >b:Symbol :='b </span>
+<div id="mathAns9-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-82" class="spadComm" >
+<form id="formComm9-82" action="javascript:makeRequest('9-82');" >
+<input id="comm9-82" type="text" class="command" style="width: 10em;" value="c:Symbol :='c " />
+</form>
+<span id="commSav9-82" class="commSav" >c:Symbol :='c </span>
+<div id="mathAns9-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>c</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-83" class="spadComm" >
+<form id="formComm9-83" action="javascript:makeRequest('9-83');" >
+<input id="comm9-83" type="text" class="command" style="width: 18em;" value="lword:= LyndonWord(Symbol) " />
+</form>
+<span id="commSav9-83" class="commSav" >lword:= LyndonWord(Symbol) </span>
+<div id="mathAns9-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>LyndonWordSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-84" class="spadComm" >
+<form id="formComm9-84" action="javascript:makeRequest('9-84');" >
+<input id="comm9-84" type="text" class="command" style="width: 16em;" value="magma := Magma(Symbol) " />
+</form>
+<span id="commSav9-84" class="commSav" >magma := Magma(Symbol) </span>
+<div id="mathAns9-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>MagmaSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-85" class="spadComm" >
+<form id="formComm9-85" action="javascript:makeRequest('9-85');" >
+<input id="comm9-85" type="text" class="command" style="width: 24em;" value="word   := OrderedFreeMonoid(Symbol) " />
+</form>
+<span id="commSav9-85" class="commSav" >word   := OrderedFreeMonoid(Symbol) </span>
+<div id="mathAns9-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedFreeMonoidSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>All Lyndon words  with a, b, c to order 3
+</p>
+
+
+
+
+<div id="spadComm9-86" class="spadComm" >
+<form id="formComm9-86" action="javascript:makeRequest('9-86');" >
+<input id="comm9-86" type="text" class="command" style="width: 26em;" value="LyndonWordsList1([a,b,c],3)$lword     " />
+</form>
+<span id="commSav9-86" class="commSav" >LyndonWordsList1([a,b,c],3)$lword     </span>
+<div id="mathAns9-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>[</mo><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>c</mi><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>c</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>b</mi><mspace width="0.5 em" /><mi>c</mi><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>c</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>c</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>c</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>c</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>c</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray List LyndonWord Symbol
+</div>
+
+
+
+<p>All Lyndon words of with a, b, c to order 3 in flat list
+</p>
+
+
+
+
+<div id="spadComm9-87" class="spadComm" >
+<form id="formComm9-87" action="javascript:makeRequest('9-87');" >
+<input id="comm9-87" type="text" class="command" style="width: 22em;" value="LyndonWordsList([a,b,c],3)$lword" />
+</form>
+<span id="commSav9-87" class="commSav" >LyndonWordsList([a,b,c],3)$lword</span>
+<div id="mathAns9-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>c</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>c</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>b</mi><mspace width="0.5 em" /><mi>c</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>c</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>c</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>c</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>c</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>c</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>c</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List LyndonWord Symbol
+</div>
+
+
+
+<p>All Lyndon words of with a, b to order 5
+</p>
+
+
+
+
+<div id="spadComm9-88" class="spadComm" >
+<form id="formComm9-88" action="javascript:makeRequest('9-88');" >
+<input id="comm9-88" type="text" class="command" style="width: 27em;" value="lw := LyndonWordsList([a,b],5)$lword    " />
+</form>
+<span id="commSav9-88" class="commSav" >lw := LyndonWordsList([a,b],5)$lword    </span>
+<div id="mathAns9-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow><mo>]</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List LyndonWord Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-89" class="spadComm" >
+<form id="formComm9-89" action="javascript:makeRequest('9-89');" >
+<input id="comm9-89" type="text" class="command" style="width: 19em;" value="w1 : word := lw.4 :: word   " />
+</form>
+<span id="commSav9-89" class="commSav" >w1 : word := lw.4 :: word   </span>
+<div id="mathAns9-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderedFreeMonoid Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-90" class="spadComm" >
+<form id="formComm9-90" action="javascript:makeRequest('9-90');" >
+<input id="comm9-90" type="text" class="command" style="width: 19em;" value="w2 : word := lw.5 :: word   " />
+</form>
+<span id="commSav9-90" class="commSav" >w2 : word := lw.5 :: word   </span>
+<div id="mathAns9-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderedFreeMonoid Symbol
+</div>
+
+
+
+<p>Let's try factoring
+</p>
+
+
+
+
+<div id="spadComm9-91" class="spadComm" >
+<form id="formComm9-91" action="javascript:makeRequest('9-91');" >
+<input id="comm9-91" type="text" class="command" style="width: 15em;" value="factor(a::word)$lword " />
+</form>
+<span id="commSav9-91" class="commSav" >factor(a::word)$lword </span>
+<div id="mathAns9-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List LyndonWord Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-92" class="spadComm" >
+<form id="formComm9-92" action="javascript:makeRequest('9-92');" >
+<input id="comm9-92" type="text" class="command" style="width: 14em;" value="factor(w1*w2)$lword " />
+</form>
+<span id="commSav9-92" class="commSav" >factor(w1*w2)$lword </span>
+<div id="mathAns9-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List LyndonWord Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-93" class="spadComm" >
+<form id="formComm9-93" action="javascript:makeRequest('9-93');" >
+<input id="comm9-93" type="text" class="command" style="width: 14em;" value="factor(w2*w2)$lword " />
+</form>
+<span id="commSav9-93" class="commSav" >factor(w2*w2)$lword </span>
+<div id="mathAns9-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List LyndonWord Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-94" class="spadComm" >
+<form id="formComm9-94" action="javascript:makeRequest('9-94');" >
+<input id="comm9-94" type="text" class="command" style="width: 14em;" value="factor(w2*w1)$lword " />
+</form>
+<span id="commSav9-94" class="commSav" >factor(w2*w1)$lword </span>
+<div id="mathAns9-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List LyndonWord Symbol
+</div>
+
+
+
+<p>Checks and coercions
+</p>
+
+
+
+
+<div id="spadComm9-95" class="spadComm" >
+<form id="formComm9-95" action="javascript:makeRequest('9-95');" >
+<input id="comm9-95" type="text" class="command" style="width: 12em;" value="lyndon?(w1)$lword " />
+</form>
+<span id="commSav9-95" class="commSav" >lyndon?(w1)$lword </span>
+<div id="mathAns9-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-96" class="spadComm" >
+<form id="formComm9-96" action="javascript:makeRequest('9-96');" >
+<input id="comm9-96" type="text" class="command" style="width: 14em;" value="lyndon?(w1*w2)$lword " />
+</form>
+<span id="commSav9-96" class="commSav" >lyndon?(w1*w2)$lword </span>
+<div id="mathAns9-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-97" class="spadComm" >
+<form id="formComm9-97" action="javascript:makeRequest('9-97');" >
+<input id="comm9-97" type="text" class="command" style="width: 14em;" value="lyndon?(w2*w1)$lword " />
+</form>
+<span id="commSav9-97" class="commSav" >lyndon?(w2*w1)$lword </span>
+<div id="mathAns9-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-98" class="spadComm" >
+<form id="formComm9-98" action="javascript:makeRequest('9-98');" >
+<input id="comm9-98" type="text" class="command" style="width: 15em;" value="lyndonIfCan(w1)$lword " />
+</form>
+<span id="commSav9-98" class="commSav" >lyndonIfCan(w1)$lword </span>
+<div id="mathAns9-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(LyndonWord Symbol,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-99" class="spadComm" >
+<form id="formComm9-99" action="javascript:makeRequest('9-99');" >
+<input id="comm9-99" type="text" class="command" style="width: 17em;" value="lyndonIfCan(w2*w1)$lword " />
+</form>
+<span id="commSav9-99" class="commSav" >lyndonIfCan(w2*w1)$lword </span>
+<div id="mathAns9-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+
+
+<div id="spadComm9-100" class="spadComm" >
+<form id="formComm9-100" action="javascript:makeRequest('9-100');" >
+<input id="comm9-100" type="text" class="command" style="width: 12em;" value="lyndon(w1)$lword " />
+</form>
+<span id="commSav9-100" class="commSav" >lyndon(w1)$lword </span>
+<div id="mathAns9-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LyndonWord Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-101" class="spadComm" >
+<form id="formComm9-101" action="javascript:makeRequest('9-101');" >
+<input id="comm9-101" type="text" class="command" style="width: 14em;" value="lyndon(w1*w2)$lword " />
+</form>
+<span id="commSav9-101" class="commSav" >lyndon(w1*w2)$lword </span>
+<div id="mathAns9-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LyndonWord Symbol
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.47.xhtml" style="margin-right: 10px;">Previous Section 9.47 List</a><a href="section-9.49.xhtml" style="margin-right: 10px;">Next Section 9.49 Magma</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.49.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.49.xhtml
new file mode 100644
index 0000000..b0dc8b0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.49.xhtml
@@ -0,0 +1,676 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.49</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.48.xhtml" style="margin-right: 10px;">Previous Section 9.48 LyndonWord</a><a href="section-9.50.xhtml" style="margin-right: 10px;">Next Section 9.50 MakeFunction</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.49">
+<h2 class="sectiontitle">9.49  Magma</h2>
+
+
+<a name="MagmaXmpPage" class="label"/>
+
+
+<p>Initialisations
+</p>
+
+
+
+
+<div id="spadComm9-102" class="spadComm" >
+<form id="formComm9-102" action="javascript:makeRequest('9-102');" >
+<input id="comm9-102" type="text" class="command" style="width: 10em;" value="x:Symbol :='x " />
+</form>
+<span id="commSav9-102" class="commSav" >x:Symbol :='x </span>
+<div id="mathAns9-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-103" class="spadComm" >
+<form id="formComm9-103" action="javascript:makeRequest('9-103');" >
+<input id="comm9-103" type="text" class="command" style="width: 10em;" value="y:Symbol :='y " />
+</form>
+<span id="commSav9-103" class="commSav" >y:Symbol :='y </span>
+<div id="mathAns9-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-104" class="spadComm" >
+<form id="formComm9-104" action="javascript:makeRequest('9-104');" >
+<input id="comm9-104" type="text" class="command" style="width: 10em;" value="z:Symbol :='z " />
+</form>
+<span id="commSav9-104" class="commSav" >z:Symbol :='z </span>
+<div id="mathAns9-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>z</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-105" class="spadComm" >
+<form id="formComm9-105" action="javascript:makeRequest('9-105');" >
+<input id="comm9-105" type="text" class="command" style="width: 23em;" value="word := OrderedFreeMonoid(Symbol) " />
+</form>
+<span id="commSav9-105" class="commSav" >word := OrderedFreeMonoid(Symbol) </span>
+<div id="mathAns9-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedFreeMonoidSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-106" class="spadComm" >
+<form id="formComm9-106" action="javascript:makeRequest('9-106');" >
+<input id="comm9-106" type="text" class="command" style="width: 15em;" value="tree := Magma(Symbol) " />
+</form>
+<span id="commSav9-106" class="commSav" >tree := Magma(Symbol) </span>
+<div id="mathAns9-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>MagmaSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Let's make some trees
+</p>
+
+
+
+
+<div id="spadComm9-107" class="spadComm" >
+<form id="formComm9-107" action="javascript:makeRequest('9-107');" >
+<input id="comm9-107" type="text" class="command" style="width: 10em;" value="a:tree := x*x  " />
+</form>
+<span id="commSav9-107" class="commSav" >a:tree := x*x  </span>
+<div id="mathAns9-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>x</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Magma Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-108" class="spadComm" >
+<form id="formComm9-108" action="javascript:makeRequest('9-108');" >
+<input id="comm9-108" type="text" class="command" style="width: 10em;" value="b:tree := y*y  " />
+</form>
+<span id="commSav9-108" class="commSav" >b:tree := y*y  </span>
+<div id="mathAns9-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>y</mi><mo>,</mo><mi>y</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Magma Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-109" class="spadComm" >
+<form id="formComm9-109" action="javascript:makeRequest('9-109');" >
+<input id="comm9-109" type="text" class="command" style="width: 10em;" value="c:tree := a*b  " />
+</form>
+<span id="commSav9-109" class="commSav" >c:tree := a*b  </span>
+<div id="mathAns9-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>x</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>y</mi><mo>,</mo><mi>y</mi><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Magma Symbol
+</div>
+
+
+
+<p>Query the trees
+</p>
+
+
+
+
+<div id="spadComm9-110" class="spadComm" >
+<form id="formComm9-110" action="javascript:makeRequest('9-110');" >
+<input id="comm9-110" type="text" class="command" style="width: 5em;" value="left c " />
+</form>
+<span id="commSav9-110" class="commSav" >left c </span>
+<div id="mathAns9-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>x</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Magma Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-111" class="spadComm" >
+<form id="formComm9-111" action="javascript:makeRequest('9-111');" >
+<input id="comm9-111" type="text" class="command" style="width: 6em;" value="right c " />
+</form>
+<span id="commSav9-111" class="commSav" >right c </span>
+<div id="mathAns9-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>y</mi><mo>,</mo><mi>y</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Magma Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-112" class="spadComm" >
+<form id="formComm9-112" action="javascript:makeRequest('9-112');" >
+<input id="comm9-112" type="text" class="command" style="width: 6em;" value="length c " />
+</form>
+<span id="commSav9-112" class="commSav" >length c </span>
+<div id="mathAns9-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Coerce to the monoid
+</p>
+
+
+
+
+<div id="spadComm9-113" class="spadComm" >
+<form id="formComm9-113" action="javascript:makeRequest('9-113');" >
+<input id="comm9-113" type="text" class="command" style="width: 6em;" value="c::word " />
+</form>
+<span id="commSav9-113" class="commSav" >c::word </span>
+<div id="mathAns9-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderedFreeMonoid Symbol
+</div>
+
+
+
+<p>Check ordering
+</p>
+
+
+
+
+<div id="spadComm9-114" class="spadComm" >
+<form id="formComm9-114" action="javascript:makeRequest('9-114');" >
+<input id="comm9-114" type="text" class="command" style="width: 4em;" value="a &lt; b " />
+</form>
+<span id="commSav9-114" class="commSav" >a &lt; b </span>
+<div id="mathAns9-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-115" class="spadComm" >
+<form id="formComm9-115" action="javascript:makeRequest('9-115');" >
+<input id="comm9-115" type="text" class="command" style="width: 4em;" value="a &lt; c " />
+</form>
+<span id="commSav9-115" class="commSav" >a &lt; c </span>
+<div id="mathAns9-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-116" class="spadComm" >
+<form id="formComm9-116" action="javascript:makeRequest('9-116');" >
+<input id="comm9-116" type="text" class="command" style="width: 4em;" value="b &lt; c " />
+</form>
+<span id="commSav9-116" class="commSav" >b &lt; c </span>
+<div id="mathAns9-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Navigate the tree
+</p>
+
+
+
+
+<div id="spadComm9-117" class="spadComm" >
+<form id="formComm9-117" action="javascript:makeRequest('9-117');" >
+<input id="comm9-117" type="text" class="command" style="width: 6em;" value="first c " />
+</form>
+<span id="commSav9-117" class="commSav" >first c </span>
+<div id="mathAns9-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-118" class="spadComm" >
+<form id="formComm9-118" action="javascript:makeRequest('9-118');" >
+<input id="comm9-118" type="text" class="command" style="width: 5em;" value="rest c " />
+</form>
+<span id="commSav9-118" class="commSav" >rest c </span>
+<div id="mathAns9-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mrow><mo>[</mo><mi>y</mi><mo>,</mo><mi>y</mi><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Magma Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-119" class="spadComm" >
+<form id="formComm9-119" action="javascript:makeRequest('9-119');" >
+<input id="comm9-119" type="text" class="command" style="width: 9em;" value="rest rest c  " />
+</form>
+<span id="commSav9-119" class="commSav" >rest rest c  </span>
+<div id="mathAns9-119" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>y</mi><mo>,</mo><mi>y</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Magma Symbol
+</div>
+
+
+
+<p>Check ordering
+</p>
+
+
+
+
+<div id="spadComm9-120" class="spadComm" >
+<form id="formComm9-120" action="javascript:makeRequest('9-120');" >
+<input id="comm9-120" type="text" class="command" style="width: 11em;" value="ax:tree := a*x  " />
+</form>
+<span id="commSav9-120" class="commSav" >ax:tree := a*x  </span>
+<div id="mathAns9-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>x</mi><mo>]</mo></mrow><mo>,</mo><mi>x</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Magma Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-121" class="spadComm" >
+<form id="formComm9-121" action="javascript:makeRequest('9-121');" >
+<input id="comm9-121" type="text" class="command" style="width: 11em;" value="xa:tree := x*a  " />
+</form>
+<span id="commSav9-121" class="commSav" >xa:tree := x*a  </span>
+<div id="mathAns9-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>x</mi><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Magma Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-122" class="spadComm" >
+<form id="formComm9-122" action="javascript:makeRequest('9-122');" >
+<input id="comm9-122" type="text" class="command" style="width: 6em;" value="xa &lt; ax " />
+</form>
+<span id="commSav9-122" class="commSav" >xa &lt; ax </span>
+<div id="mathAns9-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-123" class="spadComm" >
+<form id="formComm9-123" action="javascript:makeRequest('9-123');" >
+<input id="comm9-123" type="text" class="command" style="width: 10em;" value="lexico(xa,ax) " />
+</form>
+<span id="commSav9-123" class="commSav" >lexico(xa,ax) </span>
+<div id="mathAns9-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.48.xhtml" style="margin-right: 10px;">Previous Section 9.48 LyndonWord</a><a href="section-9.50.xhtml" style="margin-right: 10px;">Next Section 9.50 MakeFunction</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.5.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.5.xhtml
new file mode 100644
index 0000000..f604972
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.5.xhtml
@@ -0,0 +1,401 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.5</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.4.xhtml" style="margin-right: 10px;">Previous Section 9.4 BinaryExpansion</a><a href="section-9.6.xhtml" style="margin-right: 10px;">Next Section 9.6 CardinalNumber</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.5">
+<h2 class="sectiontitle">9.5  BinarySearchTree</h2>
+
+
+<a name="BinarySearchTreeXmpPage" class="label"/>
+
+
+<p><span class="teletype">BinarySearchTree(R)</span> is the domain of binary trees with elements
+of type <span class="teletype">R</span>, ordered across the nodes of the tree.  A non-empty
+binary search tree has a value of type <span class="teletype">R</span>, and <span class="teletype">right</span> and
+<span class="teletype">left</span> binary search subtrees.  If a subtree is empty, it is
+displayed as a period (``.'').
+</p>
+
+
+<p>Define a list of values to be placed across the tree.  The resulting
+tree has <span class="teletype">8</span> at the root; all other elements are in the left
+subtree.
+</p>
+
+
+
+
+<div id="spadComm9-46" class="spadComm" >
+<form id="formComm9-46" action="javascript:makeRequest('9-46');" >
+<input id="comm9-46" type="text" class="command" style="width: 17em;" value="lv := [8,3,5,4,6,2,1,5,7]" />
+</form>
+<span id="commSav9-46" class="commSav" >lv := [8,3,5,4,6,2,1,5,7]</span>
+<div id="mathAns9-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>8</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>A convenient way to create a binary search tree is to apply the
+operation <span class="teletype">binarySearchTree</span> to a list of elements.
+</p>
+
+
+
+
+<div id="spadComm9-47" class="spadComm" >
+<form id="formComm9-47" action="javascript:makeRequest('9-47');" >
+<input id="comm9-47" type="text" class="command" style="width: 16em;" value="t := binarySearchTree lv" />
+</form>
+<span id="commSav9-47" class="commSav" >t := binarySearchTree lv</span>
+<div id="mathAns9-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>.</mo><mo>]</mo></mrow><mo>,</mo><mn>3</mn><mo>,</mo><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mrow><mo>[</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mn>8</mn><mo>,</mo><mo>.</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BinarySearchTree PositiveInteger
+</div>
+
+
+
+<p>Another approach is to first create an empty binary search tree of integers.
+</p>
+
+
+
+
+<div id="spadComm9-48" class="spadComm" >
+<form id="formComm9-48" action="javascript:makeRequest('9-48');" >
+<input id="comm9-48" type="text" class="command" style="width: 21em;" value="emptybst := empty()$BSTREE(INT)" />
+</form>
+<span id="commSav9-48" class="commSav" >emptybst := empty()$BSTREE(INT)</span>
+<div id="mathAns9-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mspace width="0.5 em" /><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BinarySearchTree Integer
+</div>
+
+
+
+<p>Insert the value <span class="teletype">8</span>.  This establishes <span class="teletype">8</span> as the root of the
+binary search tree.  Values inserted later that are less than <span class="teletype">8</span>
+get stored in the <span class="teletype">left</span> subtree, others in the <span class="teletype">right</span> subtree.
+</p>
+
+
+
+
+<div id="spadComm9-49" class="spadComm" >
+<form id="formComm9-49" action="javascript:makeRequest('9-49');" >
+<input id="comm9-49" type="text" class="command" style="width: 17em;" value="t1 := insert!(8,emptybst)" />
+</form>
+<span id="commSav9-49" class="commSav" >t1 := insert!(8,emptybst)</span>
+<div id="mathAns9-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BinarySearchTree Integer
+</div>
+
+
+
+<p>Insert the value <span class="teletype">3</span>. This number becomes the root of the <span class="teletype">left</span> subtree of <span class="teletype">t1</span>.  For optimal retrieval, it is thus
+important to insert the middle elements first.
+</p>
+
+
+
+
+<div id="spadComm9-50" class="spadComm" >
+<form id="formComm9-50" action="javascript:makeRequest('9-50');" >
+<input id="comm9-50" type="text" class="command" style="width: 9em;" value="insert!(3,t1)" />
+</form>
+<span id="commSav9-50" class="commSav" >insert!(3,t1)</span>
+<div id="mathAns9-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>8</mn><mo>,</mo><mo>.</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BinarySearchTree Integer
+</div>
+
+
+
+<p>We go back to the original tree <span class="teletype">t</span>.  The leaves of the binary
+search tree are those which have empty <span class="teletype">left</span> and <span class="teletype">right</span> subtrees.
+</p>
+
+
+
+
+<div id="spadComm9-51" class="spadComm" >
+<form id="formComm9-51" action="javascript:makeRequest('9-51');" >
+<input id="comm9-51" type="text" class="command" style="width: 6em;" value="leaves t" />
+</form>
+<span id="commSav9-51" class="commSav" >leaves t</span>
+<div id="mathAns9-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="teletype">split</span><span class="teletype">(k,t)</span> returns a <span class="index">record</span><a name="chapter-9-22"/>
+containing the two subtrees: one with all elements ``less'' than 
+<span class="teletype">k</span>, another with elements ``greater'' than <span class="teletype">k</span>.
+</p>
+
+
+
+
+<div id="spadComm9-52" class="spadComm" >
+<form id="formComm9-52" action="javascript:makeRequest('9-52');" >
+<input id="comm9-52" type="text" class="command" style="width: 7em;" value="split(3,t)" />
+</form>
+<span id="commSav9-52" class="commSav" >split(3,t)</span>
+<div id="mathAns9-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>less</mi><mo>=</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>.</mo><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>greater</mi><mo>=</mo><mrow><mo>[</mo><mrow><mo>[</mo><mo>.</mo><mo>,</mo><mn>3</mn><mo>,</mo><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mrow><mo>[</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mn>8</mn><mo>,</mo><mo>.</mo><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Record(less: BinarySearchTree PositiveInteger,greater: 
+BinarySearchTree PositiveInteger)
+</div>
+
+
+
+<p>Define <span class="teletype">insertRoot</span> to insert new elements by creating a new node.
+</p>
+
+
+
+
+<div id="spadComm9-53" class="spadComm" >
+<form id="formComm9-53" action="javascript:makeRequest('9-53');" >
+<input id="comm9-53" type="text" class="command" style="width: 28em;" value="insertRoot: (INT,BSTREE INT) -> BSTREE INT" />
+</form>
+<span id="commSav9-53" class="commSav" >insertRoot: (INT,BSTREE INT) -> BSTREE INT</span>
+<div id="mathAns9-53" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>The new node puts the inserted value between its ``less'' tree and
+``greater'' tree.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+insertRoot(x,&nbsp;t)&nbsp;==<br />
+&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;:=&nbsp;split(x,&nbsp;t)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;node(a.less,&nbsp;x,&nbsp;a.greater)<br />
+</div>
+
+
+
+<p>Function <span class="teletype">buildFromRoot</span> builds a binary search tree from a list
+of elements <span class="teletype">ls</span> and the empty tree <span class="teletype">emptybst</span>.
+</p>
+
+
+
+
+<div id="spadComm9-54" class="spadComm" >
+<form id="formComm9-54" action="javascript:makeRequest('9-54');" >
+<input id="comm9-54" type="text" class="command" style="width: 34em;" value="buildFromRoot ls == reduce(insertRoot,ls,emptybst)" />
+</form>
+<span id="commSav9-54" class="commSav" >buildFromRoot ls == reduce(insertRoot,ls,emptybst)</span>
+<div id="mathAns9-54" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+<p>Apply this to the reverse of the list <span class="teletype">lv</span>.
+</p>
+
+
+
+
+<div id="spadComm9-55" class="spadComm" >
+<form id="formComm9-55" action="javascript:makeRequest('9-55');" >
+<input id="comm9-55" type="text" class="command" style="width: 20em;" value="rt := buildFromRoot reverse lv" />
+</form>
+<span id="commSav9-55" class="commSav" >rt := buildFromRoot reverse lv</span>
+<div id="mathAns9-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>.</mo><mo>]</mo></mrow><mo>,</mo><mn>3</mn><mo>,</mo><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mrow><mo>[</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo><mn>8</mn><mo>,</mo><mo>.</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BinarySearchTree Integer
+</div>
+
+
+
+<p>Have Axiom check that these are equal.
+</p>
+
+
+
+
+<div id="spadComm9-56" class="spadComm" >
+<form id="formComm9-56" action="javascript:makeRequest('9-56');" >
+<input id="comm9-56" type="text" class="command" style="width: 11em;" value="(t = rt)@Boolean" />
+</form>
+<span id="commSav9-56" class="commSav" >(t = rt)@Boolean</span>
+<div id="mathAns9-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.4.xhtml" style="margin-right: 10px;">Previous Section 9.4 BinaryExpansion</a><a href="section-9.6.xhtml" style="margin-right: 10px;">Next Section 9.6 CardinalNumber</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.50.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.50.xhtml
new file mode 100644
index 0000000..3967097
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.50.xhtml
@@ -0,0 +1,337 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.50</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.49.xhtml" style="margin-right: 10px;">Previous Section 9.49 Magma</a><a href="section-9.51.xhtml" style="margin-right: 10px;">Next Section 9.51 MappingPackage1</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.50">
+<h2 class="sectiontitle">9.50  MakeFunction</h2>
+
+
+<a name="MakeFunctionXmpPage" class="label"/>
+
+
+<p>It is sometimes useful to be able to define a function given by
+the result of a calculation.
+</p>
+
+
+<p>Suppose that you have obtained the following expression after several
+computations and that you now want to tabulate the numerical values of
+<span class="teletype">f</span> for <span class="teletype">x</span> between <span class="teletype">-1</span> and <span class="teletype">+1</span> with increment 
+<span class="teletype">0.1</span>.
+</p>
+
+
+
+
+<div id="spadComm9-124" class="spadComm" >
+<form id="formComm9-124" action="javascript:makeRequest('9-124');" >
+<input id="comm9-124" type="text" class="command" style="width: 35em;" value="expr := (x - exp x + 1)**2 * (sin(x**2) * x + 1)**3 " />
+</form>
+<span id="commSav9-124" class="commSav" >expr := (x - exp x + 1)**2 * (sin(x**2) * x + 1)**3 </span>
+<div id="mathAns9-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>)</mo></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mo>sin</mo><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>sin</mo><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><msup><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>You could, of course, use the function <span class="spadfunFrom" >eval</span><span class="index">eval</span><a name="chapter-9-56"/><span class="index">Expression</span><a name="chapter-9-57"/>
+within a loop and evaluate <span class="teletype">expr</span> twenty-one times, but this would
+be quite slow.  A better way is to create a numerical function <span class="teletype">f</span>
+such that <span class="teletype">f(x)</span> is defined by the expression <span class="teletype">expr</span> above,
+but without retyping <span class="teletype">expr</span>!  The package <span class="teletype">MakeFunction</span>
+provides the operation <span class="spadfunFrom" >function</span><span class="index">function</span><a name="chapter-9-58"/><span class="index">MakeFunction</span><a name="chapter-9-59"/> which does
+exactly this.
+</p>
+
+
+<p>Issue this to create the function <span class="teletype">f(x)</span> given by <span class="teletype">expr</span>.
+</p>
+
+
+
+
+<div id="spadComm9-125" class="spadComm" >
+<form id="formComm9-125" action="javascript:makeRequest('9-125');" >
+<input id="comm9-125" type="text" class="command" style="width: 14em;" value="function(expr, f, x) " />
+</form>
+<span id="commSav9-125" class="commSav" >function(expr, f, x) </span>
+<div id="mathAns9-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>f</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>To tabulate <span class="teletype">expr</span>, we can now quickly evaluate <span class="teletype">f</span> 21 times.
+</p>
+
+
+
+
+<div id="spadComm9-126" class="spadComm" >
+<form id="formComm9-126" action="javascript:makeRequest('9-126');" >
+<input id="comm9-126" type="text" class="command" style="width: 27em;" value="tbl := [f(0.1 * i - 1) for i in 0..20]; " />
+</form>
+<span id="commSav9-126" class="commSav" >tbl := [f(0.1 * i - 1) for i in 0..20]; </span>
+<div id="mathAns9-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>0005391844</mn><mspace width="0.5 em" /><mn>0362701574</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0039657551</mn><mspace width="0.5 em" /><mn>1844206653</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0088545187</mn><mspace width="0.5 em" /><mn>4833983689</mn><mspace width="0.5 em" /><mn>2</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0116524883</mn><mspace width="0.5 em" /><mn>0907069695</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0108618220</mn><mspace width="0.5 em" /><mn>9245751364</mn><mspace width="0.5 em" /><mn>5</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0076366823</mn><mspace width="0.5 em" /><mn>2120869965</mn><mspace width="0.5 em" /><mn>06</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0040584985</mn><mspace width="0.5 em" /><mn>7597822062</mn><mspace width="0.5 em" /><mn>55</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0015349542</mn><mspace width="0.5 em" /><mn>8910500836</mn><mspace width="0.5 em" /><mn>48</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0003424903</mn><mspace width="0.5 em" /><mn>1549879905</mn><mspace width="0.5 em" /><mn>716</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0000233304</mn><mspace width="0.5 em" /><mn>8276098819</mn><mspace width="0.5 em" /><mn>6001</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0000268186</mn><mspace width="0.5 em" /><mn>8782862599</mn><mspace width="0.5 em" /><mn>4229</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0004691571</mn><mspace width="0.5 em" /><mn>3720051642</mn><mspace width="0.5 em" /><mn>621</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0026924576</mn><mspace width="0.5 em" /><mn>5968519586</mn><mspace width="0.5 em" /><mn>08</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0101486881</mn><mspace width="0.5 em" /><mn>7369135148</mn><mspace width="0.5 em" /><mn>8</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>0313833725</mn><mspace width="0.5 em" /><mn>8543810564</mn><mspace width="0.5 em" /><mn>3</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0876991144</mn><mspace width="0.5 em" /><mn>5154615297</mn><mspace width="0.5 em" /><mn>9</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>2313019789</mn><mspace width="0.5 em" /><mn>3439968362</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>5843743955</mn><mspace width="0.5 em" /><mn>958098772</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>.</mo><mn>4114930171</mn><mspace width="0.5 em" /><mn>992819197</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>3</mn><mo>.</mo><mn>2216948276</mn><mspace width="0.5 em" /><mn>75164252</mn></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Float
+</div>
+
+
+
+<p>Use the list <span class="teletype">[x1,...,xn]</span> as the
+third argument to <span class="spadfunFrom" >function</span><span class="index">function</span><a name="chapter-9-60"/><span class="index">MakeFunction</span><a name="chapter-9-61"/>
+to create a multivariate function <span class="teletype">f(x1,...,xn)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-127" class="spadComm" >
+<form id="formComm9-127" action="javascript:makeRequest('9-127');" >
+<input id="comm9-127" type="text" class="command" style="width: 27em;" value="e := (x - y + 1)**2 * (x**2 * y + 1)**2 " />
+</form>
+<span id="commSav9-127" class="commSav" >e := (x - y + 1)**2 * (x**2 * y + 1)**2 </span>
+<div id="mathAns9-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-128" class="spadComm" >
+<form id="formComm9-128" action="javascript:makeRequest('9-128');" >
+<input id="comm9-128" type="text" class="command" style="width: 16em;" value="function(e, g, [x, y]) " />
+</form>
+<span id="commSav9-128" class="commSav" >function(e, g, [x, y]) </span>
+<div id="mathAns9-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>g</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>In the case of just two variables, they can be given as arguments
+without making them into a list.
+</p>
+
+
+
+
+<div id="spadComm9-129" class="spadComm" >
+<form id="formComm9-129" action="javascript:makeRequest('9-129');" >
+<input id="comm9-129" type="text" class="command" style="width: 14em;" value="function(e, h, x, y) " />
+</form>
+<span id="commSav9-129" class="commSav" >function(e, h, x, y) </span>
+<div id="mathAns9-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>h</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>Note that the functions created by <span class="spadfunFrom" >function</span><span class="index">function</span><a name="chapter-9-62"/><span class="index">MakeFunction</span><a name="chapter-9-63"/>
+are not limited to floating point numbers, but can be applied to any type
+for which they are defined.
+</p>
+
+
+
+
+<div id="spadComm9-130" class="spadComm" >
+<form id="formComm9-130" action="javascript:makeRequest('9-130');" >
+<input id="comm9-130" type="text" class="command" style="width: 26em;" value="m1 := squareMatrix [ [1, 2], [3, 4] ] " />
+</form>
+<span id="commSav9-130" class="commSav" >m1 := squareMatrix [ [1, 2], [3, 4] ] </span>
+<div id="mathAns9-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-131" class="spadComm" >
+<form id="formComm9-131" action="javascript:makeRequest('9-131');" >
+<input id="comm9-131" type="text" class="command" style="width: 26em;" value="m2 := squareMatrix [ [1, 0], [-1, 1] ] " />
+</form>
+<span id="commSav9-131" class="commSav" >m2 := squareMatrix [ [1, 0], [-1, 1] ] </span>
+<div id="mathAns9-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-132" class="spadComm" >
+<form id="formComm9-132" action="javascript:makeRequest('9-132');" >
+<input id="comm9-132" type="text" class="command" style="width: 7em;" value="h(m1, m2) " />
+</form>
+<span id="commSav9-132" class="commSav" >h(m1, m2) </span>
+<div id="mathAns9-132" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mn>7836</mn></mtd><mtd><mn>8960</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>17132</mn></mtd><mtd><mn>19588</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>For more information, see 
+<a href="ugUserMakePage" class="ref" >ugUserMakePage</a>  in Section 
+<a href="ugUserMakeNumber" class="ref" >ugUserMakeNumber</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.49.xhtml" style="margin-right: 10px;">Previous Section 9.49 Magma</a><a href="section-9.51.xhtml" style="margin-right: 10px;">Next Section 9.51 MappingPackage1</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.51.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.51.xhtml
new file mode 100644
index 0000000..cd68c67
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.51.xhtml
@@ -0,0 +1,850 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.51</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.50.xhtml" style="margin-right: 10px;">Previous Section 9.50 MakeFunction</a><a href="section-9.52.xhtml" style="margin-right: 10px;">Next Section 9.52 Matrix</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.51">
+<h2 class="sectiontitle">9.51  MappingPackage1</h2>
+
+
+<a name="MappingPackage1XmpPage" class="label"/>
+
+
+<p>Function are objects of type <span class="teletype">Mapping</span>.  In this section we
+demonstrate some library operations from the packages 
+<span class="teletype">MappingPackage1</span>, <span class="teletype">MappingPackage2</span>, and <span class="teletype">MappingPackage3</span>
+that manipulate and create functions.  Some terminology: a 
+<span class="italic">nullary</span> function takes no arguments, a <span class="italic">unary</span> function takes 
+one argument, and a <span class="italic">binary</span> function takes two arguments.
+</p>
+
+
+<p>We begin by creating an example function that raises a
+rational number to an integer exponent.
+</p>
+
+
+
+
+<div id="spadComm9-133" class="spadComm" >
+<form id="formComm9-133" action="javascript:makeRequest('9-133');" >
+<input id="comm9-133" type="text" class="command" style="width: 30em;" value="power(q: FRAC INT, n: INT): FRAC INT == q**n " />
+</form>
+<span id="commSav9-133" class="commSav" >power(q: FRAC INT, n: INT): FRAC INT == q**n </span>
+<div id="mathAns9-133" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Function&nbsp;declaration&nbsp;power&nbsp;:&nbsp;(Fraction&nbsp;Integer,Integer)&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Fraction&nbsp;Integer&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-134" class="spadComm" >
+<form id="formComm9-134" action="javascript:makeRequest('9-134');" >
+<input id="comm9-134" type="text" class="command" style="width: 8em;" value="power(2,3) " />
+</form>
+<span id="commSav9-134" class="commSav" >power(2,3) </span>
+<div id="mathAns9-134" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;function&nbsp;power&nbsp;with&nbsp;type&nbsp;(Fraction&nbsp;Integer,Integer)&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Fraction&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >twist</span><span class="index">twist</span><a name="chapter-9-64"/><span class="index">MappingPackage3</span><a name="chapter-9-65"/> operation transposes the
+arguments of a binary function.  Here <span class="teletype">rewop(a, b)</span> is 
+<span class="teletype">power(b, a)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-135" class="spadComm" >
+<form id="formComm9-135" action="javascript:makeRequest('9-135');" >
+<input id="comm9-135" type="text" class="command" style="width: 14em;" value="rewop := twist power " />
+</form>
+<span id="commSav9-135" class="commSav" >rewop := twist power </span>
+<div id="mathAns9-135" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ((Integer,Fraction Integer) -> Fraction Integer)
+</div>
+
+
+
+<p>This is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>2</mn><mn>3</mn></msup><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm9-136" class="spadComm" >
+<form id="formComm9-136" action="javascript:makeRequest('9-136');" >
+<input id="comm9-136" type="text" class="command" style="width: 8em;" value="rewop(3, 2) " />
+</form>
+<span id="commSav9-136" class="commSav" >rewop(3, 2) </span>
+<div id="mathAns9-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Now we define <span class="teletype">square</span> in terms of <span class="teletype">power</span>.
+</p>
+
+
+
+
+<div id="spadComm9-137" class="spadComm" >
+<form id="formComm9-137" action="javascript:makeRequest('9-137');" >
+<input id="comm9-137" type="text" class="command" style="width: 20em;" value="square: FRAC INT -> FRAC INT " />
+</form>
+<span id="commSav9-137" class="commSav" >square: FRAC INT -> FRAC INT </span>
+<div id="mathAns9-137" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >curryRight</span><span class="index">curryRight</span><a name="chapter-9-66"/><span class="index">MappingPackage3</span><a name="chapter-9-67"/> operation creates a
+unary function from a binary one by providing a constant argument on
+the right.
+</p>
+
+
+
+
+<div id="spadComm9-138" class="spadComm" >
+<form id="formComm9-138" action="javascript:makeRequest('9-138');" >
+<input id="comm9-138" type="text" class="command" style="width: 20em;" value="square:= curryRight(power, 2) " />
+</form>
+<span id="commSav9-138" class="commSav" >square:= curryRight(power, 2) </span>
+<div id="mathAns9-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: (Fraction Integer -> Fraction Integer)
+</div>
+
+
+
+<p>Likewise, the <span class="spadfunFrom" >curryLeft</span><span class="index">curryLeft</span><a name="chapter-9-68"/><span class="index">MappingPackage3</span><a name="chapter-9-69"/> operation
+provides a constant argument on the left.
+</p>
+
+
+
+
+<div id="spadComm9-139" class="spadComm" >
+<form id="formComm9-139" action="javascript:makeRequest('9-139');" >
+<input id="comm9-139" type="text" class="command" style="width: 6em;" value="square 4 " />
+</form>
+<span id="commSav9-139" class="commSav" >square 4 </span>
+<div id="mathAns9-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>16</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >constantRight</span><span class="index">constantRight</span><a name="chapter-9-70"/><span class="index">MappingPackage3</span><a name="chapter-9-71"/> operation creates
+(in a trivial way) a binary function from a unary one:
+<span class="teletype">constantRight(f)</span> is the function <span class="teletype">g</span> such that
+<span class="teletype">g(a,b)= f(a).</span>
+</p>
+
+
+
+
+<div id="spadComm9-140" class="spadComm" >
+<form id="formComm9-140" action="javascript:makeRequest('9-140');" >
+<input id="comm9-140" type="text" class="command" style="width: 46em;" value="squirrel:= constantRight(square)$MAPPKG3(FRAC INT,FRAC INT,FRAC INT) " />
+</form>
+<span id="commSav9-140" class="commSav" >squirrel:= constantRight(square)$MAPPKG3(FRAC INT,FRAC INT,FRAC INT) </span>
+<div id="mathAns9-140" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ((Fraction Integer,Fraction Integer) -> Fraction Integer)
+</div>
+
+
+
+<p>Likewise, <span class="teletype">constantLeft(f)</span> is the function <span class="teletype">g</span> such that 
+<span class="teletype">g(a,b)= f(b).</span>
+</p>
+
+
+
+
+<div id="spadComm9-141" class="spadComm" >
+<form id="formComm9-141" action="javascript:makeRequest('9-141');" >
+<input id="comm9-141" type="text" class="command" style="width: 13em;" value="squirrel(1/2, 1/3) " />
+</form>
+<span id="commSav9-141" class="commSav" >squirrel(1/2, 1/3) </span>
+<div id="mathAns9-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>1</mn><mn>4</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >curry</span><span class="index">curry</span><a name="chapter-9-72"/><span class="index">MappingPackage2</span><a name="chapter-9-73"/> operation makes a unary
+function nullary.
+</p>
+
+
+
+
+<div id="spadComm9-142" class="spadComm" >
+<form id="formComm9-142" action="javascript:makeRequest('9-142');" >
+<input id="comm9-142" type="text" class="command" style="width: 20em;" value="sixteen := curry(square, 4/1) " />
+</form>
+<span id="commSav9-142" class="commSav" >sixteen := curry(square, 4/1) </span>
+<div id="mathAns9-142" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: (() -> Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-143" class="spadComm" >
+<form id="formComm9-143" action="javascript:makeRequest('9-143');" >
+<input id="comm9-143" type="text" class="command" style="width: 7em;" value="sixteen() " />
+</form>
+<span id="commSav9-143" class="commSav" >sixteen() </span>
+<div id="mathAns9-143" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>16</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>The <span class="spadopFrom" title="MappingPackage3">*</span> operation constructs composed
+functions.
+</p>
+
+
+
+
+<div id="spadComm9-144" class="spadComm" >
+<form id="formComm9-144" action="javascript:makeRequest('9-144');" >
+<input id="comm9-144" type="text" class="command" style="width: 16em;" value="square2:=square*square " />
+</form>
+<span id="commSav9-144" class="commSav" >square2:=square*square </span>
+<div id="mathAns9-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: (Fraction Integer -> Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-145" class="spadComm" >
+<form id="formComm9-145" action="javascript:makeRequest('9-145');" >
+<input id="comm9-145" type="text" class="command" style="width: 8em;" value="square2  3 " />
+</form>
+<span id="commSav9-145" class="commSav" >square2  3 </span>
+<div id="mathAns9-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>81</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Use the <span class="spadopFrom" title="MappingPackage1">**</span> operation to create functions
+that are <span class="teletype">n</span>-fold iterations of other functions.
+</p>
+
+
+
+
+<div id="spadComm9-146" class="spadComm" >
+<form id="formComm9-146" action="javascript:makeRequest('9-146');" >
+<input id="comm9-146" type="text" class="command" style="width: 24em;" value="sc(x: FRAC INT): FRAC INT == x + 1 " />
+</form>
+<span id="commSav9-146" class="commSav" >sc(x: FRAC INT): FRAC INT == x + 1 </span>
+<div id="mathAns9-146" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Function&nbsp;declaration&nbsp;sc&nbsp;:&nbsp;Fraction&nbsp;Integer&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Fraction&nbsp;Integer&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>This is a list of <span class="teletype">Mapping</span> objects.
+</p>
+
+
+
+
+<div id="spadComm9-147" class="spadComm" >
+<form id="formComm9-147" action="javascript:makeRequest('9-147');" >
+<input id="comm9-147" type="text" class="command" style="width: 22em;" value="incfns := [sc**i for i in 0..10] " />
+</form>
+<span id="commSav9-147" class="commSav" >incfns := [sc**i for i in 0..10] </span>
+<div id="mathAns9-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>,</mo><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>,</mo><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>,</mo><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>,</mo><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>,</mo><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>,</mo></mtd></mtr><mtr><mtd><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>,</mo><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>,</mo><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>,</mo><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>,</mo><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List (Fraction Integer -> Fraction Integer)
+</div>
+
+
+
+<p>This is a list of applications of those functions.
+</p>
+
+
+
+
+<div id="spadComm9-148" class="spadComm" >
+<form id="formComm9-148" action="javascript:makeRequest('9-148');" >
+<input id="comm9-148" type="text" class="command" style="width: 15em;" value="[f 4 for f in incfns] " />
+</form>
+<span id="commSav9-148" class="commSav" >[f 4 for f in incfns] </span>
+<div id="mathAns9-148" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>12</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>14</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Fraction Integer
+</div>
+
+
+
+<p>Use the <span class="spadfunFrom" >recur</span><span class="index">recur</span><a name="chapter-9-74"/><span class="index">MappingPackage1</span><a name="chapter-9-75"/>
+operation for recursion:
+</p>
+
+
+<p><span class="teletype">g := recur f</span> means <span class="teletype">g(n,x) == f(n,f(n-1,...f(1,x))).</span>
+</p>
+
+
+
+
+<div id="spadComm9-149" class="spadComm" >
+<form id="formComm9-149" action="javascript:makeRequest('9-149');" >
+<input id="comm9-149" type="text" class="command" style="width: 21em;" value="times(n:NNI, i:INT):INT == n*i " />
+</form>
+<span id="commSav9-149" class="commSav" >times(n:NNI, i:INT):INT == n*i </span>
+<div id="mathAns9-149" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Function&nbsp;declaration&nbsp;times&nbsp;:&nbsp;(NonNegativeInteger,Integer)&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;Integer&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-150" class="spadComm" >
+<form id="formComm9-150" action="javascript:makeRequest('9-150');" >
+<input id="comm9-150" type="text" class="command" style="width: 12em;" value="r := recur(times) " />
+</form>
+<span id="commSav9-150" class="commSav" >r := recur(times) </span>
+<div id="mathAns9-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: ((NonNegativeInteger,Integer) -> Integer)
+</div>
+
+
+
+<p>This is a factorial function.
+</p>
+
+
+
+
+<div id="spadComm9-151" class="spadComm" >
+<form id="formComm9-151" action="javascript:makeRequest('9-151');" >
+<input id="comm9-151" type="text" class="command" style="width: 17em;" value="fact := curryRight(r, 1) " />
+</form>
+<span id="commSav9-151" class="commSav" >fact := curryRight(r, 1) </span>
+<div id="mathAns9-151" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: (NonNegativeInteger -> Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-152" class="spadComm" >
+<form id="formComm9-152" action="javascript:makeRequest('9-152');" >
+<input id="comm9-152" type="text" class="command" style="width: 5em;" value="fact 4 " />
+</form>
+<span id="commSav9-152" class="commSav" >fact 4 </span>
+<div id="mathAns9-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>24</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Constructed functions can be used within other functions.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+mto2ton(m,&nbsp;n)&nbsp;==<br />
+&nbsp;&nbsp;raiser&nbsp;:=&nbsp;square**n<br />
+&nbsp;&nbsp;raiser&nbsp;m<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>This is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mn>3</mn><mrow><msup><mn>2</mn><mn>3</mn></msup></mrow></msup><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm9-153" class="spadComm" >
+<form id="formComm9-153" action="javascript:makeRequest('9-153');" >
+<input id="comm9-153" type="text" class="command" style="width: 10em;" value="mto2ton(3, 3) " />
+</form>
+<span id="commSav9-153" class="commSav" >mto2ton(3, 3) </span>
+<div id="mathAns9-153" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;mto2ton&nbsp;with&nbsp;type&nbsp;(PositiveInteger,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PositiveInteger)&nbsp;-&gt;&nbsp;Fraction&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>6561</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>Here <span class="teletype">shiftfib</span> is a unary function that modifies its argument.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+shiftfib(r:&nbsp;List&nbsp;INT)&nbsp;:&nbsp;INT&nbsp;==<br />
+&nbsp;&nbsp;t&nbsp;:=&nbsp;r.1<br />
+&nbsp;&nbsp;r.1&nbsp;:=&nbsp;r.2<br />
+&nbsp;&nbsp;r.2&nbsp;:=&nbsp;r.2&nbsp;+&nbsp;t<br />
+&nbsp;&nbsp;t<br />
+<br />
+Function&nbsp;declaration&nbsp;shiftfib&nbsp;:&nbsp;List&nbsp;Integer&nbsp;-&gt;&nbsp;Integer&nbsp;<br />
+&nbsp;&nbsp;&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>By currying over the argument we get a function with private state.
+</p>
+
+
+
+
+<div id="spadComm9-154" class="spadComm" >
+<form id="formComm9-154" action="javascript:makeRequest('9-154');" >
+<input id="comm9-154" type="text" class="command" style="width: 19em;" value="fibinit: List INT := [0, 1] " />
+</form>
+<span id="commSav9-154" class="commSav" >fibinit: List INT := [0, 1] </span>
+<div id="mathAns9-154" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-155" class="spadComm" >
+<form id="formComm9-155" action="javascript:makeRequest('9-155');" >
+<input id="comm9-155" type="text" class="command" style="width: 22em;" value="fibs := curry(shiftfib, fibinit) " />
+</form>
+<span id="commSav9-155" class="commSav" >fibs := curry(shiftfib, fibinit) </span>
+<div id="mathAns9-155" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: (() -> Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-156" class="spadComm" >
+<form id="formComm9-156" action="javascript:makeRequest('9-156');" >
+<input id="comm9-156" type="text" class="command" style="width: 16em;" value="[fibs() for i in 0..30] " />
+</form>
+<span id="commSav9-156" class="commSav" >[fibs() for i in 0..30] </span>
+<div id="mathAns9-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mn>55</mn><mo>,</mo><mn>89</mn><mo>,</mo><mn>144</mn><mo>,</mo><mn>233</mn><mo>,</mo><mn>377</mn><mo>,</mo><mn>610</mn><mo>,</mo><mn>987</mn><mo>,</mo><mn>1597</mn><mo>,</mo></mtd></mtr><mtr><mtd><mn>2584</mn><mo>,</mo><mn>4181</mn><mo>,</mo><mn>6765</mn><mo>,</mo><mn>10946</mn><mo>,</mo><mn>17711</mn><mo>,</mo><mn>28657</mn><mo>,</mo><mn>46368</mn><mo>,</mo><mn>75025</mn><mo>,</mo><mn>121393</mn><mo>,</mo><mn>196418</mn><mo>,</mo></mtd></mtr><mtr><mtd><mn>317811</mn><mo>,</mo><mn>514229</mn><mo>,</mo><mn>832040</mn><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.50.xhtml" style="margin-right: 10px;">Previous Section 9.50 MakeFunction</a><a href="section-9.52.xhtml" style="margin-right: 10px;">Next Section 9.52 Matrix</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.52.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.52.xhtml
new file mode 100644
index 0000000..ec29f5d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.52.xhtml
@@ -0,0 +1,1317 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.52</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.51.xhtml" style="margin-right: 10px;">Previous Section 9.51 MappingPackage1</a><a href="section-9.53.xhtml" style="margin-right: 10px;">Next Section 9.53 MultiSet</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.52">
+<h2 class="sectiontitle">9.52  Matrix</h2>
+
+
+<a name="MatrixXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">Matrix</span> domain provides arithmetic operations on matrices
+and standard functions from linear algebra.
+This domain is similar to the <span class="teletype">TwoDimensionalArray</span> domain, except
+that the entries for <span class="teletype">Matrix</span> must belong to a <span class="teletype">Ring</span>.
+</p>
+
+
+
+<a name="subsec-9.52.1"/>
+<div class="subsection"  id="subsec-9.52.1">
+<h3 class="subsectitle">9.52.1  Creating Matrices</h3>
+
+
+
+<p>There are many ways to create a matrix from a collection of values or
+from existing matrices.
+</p>
+
+
+<p>If the matrix has almost all items equal to the same value, use
+<span class="spadfunFrom" >new</span><span class="index">new</span><a name="chapter-9-76"/><span class="index">Matrix</span><a name="chapter-9-77"/> to create a matrix filled with that value
+and then reset the entries that are different.
+</p>
+
+
+
+
+<div id="spadComm9-157" class="spadComm" >
+<form id="formComm9-157" action="javascript:makeRequest('9-157');" >
+<input id="comm9-157" type="text" class="command" style="width: 23em;" value="m : Matrix(Integer) := new(3,3,0) " />
+</form>
+<span id="commSav9-157" class="commSav" >m : Matrix(Integer) := new(3,3,0) </span>
+<div id="mathAns9-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>To change the entry in the second row, third column to <span class="teletype">5</span>, use
+<span class="spadfunFrom" >setelt</span><span class="index">setelt</span><a name="chapter-9-78"/><span class="index">Matrix</span><a name="chapter-9-79"/>.
+</p>
+
+
+
+
+<div id="spadComm9-158" class="spadComm" >
+<form id="formComm9-158" action="javascript:makeRequest('9-158');" >
+<input id="comm9-158" type="text" class="command" style="width: 11em;" value="setelt(m,2,3,5) " />
+</form>
+<span id="commSav9-158" class="commSav" >setelt(m,2,3,5) </span>
+<div id="mathAns9-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>An alternative syntax is to use assignment.
+</p>
+
+
+
+
+<div id="spadComm9-159" class="spadComm" >
+<form id="formComm9-159" action="javascript:makeRequest('9-159');" >
+<input id="comm9-159" type="text" class="command" style="width: 9em;" value="m(1,2) := 10 " />
+</form>
+<span id="commSav9-159" class="commSav" >m(1,2) := 10 </span>
+<div id="mathAns9-159" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The matrix was <span class="italic">destructively modified</span>.
+</p>
+
+
+
+
+<div id="spadComm9-160" class="spadComm" >
+<form id="formComm9-160" action="javascript:makeRequest('9-160');" >
+<input id="comm9-160" type="text" class="command" style="width: 2em;" value="m " />
+</form>
+<span id="commSav9-160" class="commSav" >m </span>
+<div id="mathAns9-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>10</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>5</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>If you already have the matrix entries as a list of lists, use
+<span class="spadfunFrom" >matrix</span><span class="index">matrix</span><a name="chapter-9-80"/><span class="index">Matrix</span><a name="chapter-9-81"/>.
+</p>
+
+
+
+
+<div id="spadComm9-161" class="spadComm" >
+<form id="formComm9-161" action="javascript:makeRequest('9-161');" >
+<input id="comm9-161" type="text" class="command" style="width: 20em;" value="matrix [ [1,2,3,4],[0,9,8,7] ]" />
+</form>
+<span id="commSav9-161" class="commSav" >matrix [ [1,2,3,4],[0,9,8,7] ]</span>
+<div id="mathAns9-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>9</mn></mtd><mtd><mn>8</mn></mtd><mtd><mn>7</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>If the matrix is diagonal, use <span class="spadfunFrom" >diagonalMatrix</span><span class="index">diagonalMatrix</span><a name="chapter-9-82"/><span class="index">Matrix</span><a name="chapter-9-83"/>.
+</p>
+
+
+
+
+<div id="spadComm9-162" class="spadComm" >
+<form id="formComm9-162" action="javascript:makeRequest('9-162');" >
+<input id="comm9-162" type="text" class="command" style="width: 30em;" value="dm := diagonalMatrix [1,x**2,x**3,x**4,x**5] " />
+</form>
+<span id="commSav9-162" class="commSav" >dm := diagonalMatrix [1,x**2,x**3,x**4,x**5] </span>
+<div id="mathAns9-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Integer
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >setRow</span><span class="index">setRow</span><a name="chapter-9-84"/><span class="index">Matrix</span><a name="chapter-9-85"/> and <span class="spadfunFrom" >setColumn</span><span class="index">setColumn</span><a name="chapter-9-86"/><span class="index">Matrix</span><a name="chapter-9-87"/>
+to change a row or column of a matrix.
+</p>
+
+
+
+
+<div id="spadComm9-163" class="spadComm" >
+<form id="formComm9-163" action="javascript:makeRequest('9-163');" >
+<input id="comm9-163" type="text" class="command" style="width: 22em;" value="setRow!(dm,5,vector [1,1,1,1,1]) " />
+</form>
+<span id="commSav9-163" class="commSav" >setRow!(dm,5,vector [1,1,1,1,1]) </span>
+<div id="mathAns9-163" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-164" class="spadComm" >
+<form id="formComm9-164" action="javascript:makeRequest('9-164');" >
+<input id="comm9-164" type="text" class="command" style="width: 24em;" value="setColumn!(dm,2,vector [y,y,y,y,y]) " />
+</form>
+<span id="commSav9-164" class="commSav" >setColumn!(dm,2,vector [y,y,y,y,y]) </span>
+<div id="mathAns9-164" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Integer
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >copy</span><span class="index">copy</span><a name="chapter-9-88"/><span class="index">Matrix</span><a name="chapter-9-89"/> to make a copy of a matrix.
+</p>
+
+
+
+
+<div id="spadComm9-165" class="spadComm" >
+<form id="formComm9-165" action="javascript:makeRequest('9-165');" >
+<input id="comm9-165" type="text" class="command" style="width: 11em;" value="cdm := copy(dm) " />
+</form>
+<span id="commSav9-165" class="commSav" >cdm := copy(dm) </span>
+<div id="mathAns9-165" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Integer
+</div>
+
+
+
+<p>This is useful if you intend to modify a matrix destructively but
+want a copy of the original.
+</p>
+
+
+
+
+<div id="spadComm9-166" class="spadComm" >
+<form id="formComm9-166" action="javascript:makeRequest('9-166');" >
+<input id="comm9-166" type="text" class="command" style="width: 15em;" value="setelt(dm,4,1,1-x**7) " />
+</form>
+<span id="commSav9-166" class="commSav" >setelt(dm,4,1,1-x**7) </span>
+<div id="mathAns9-166" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-167" class="spadComm" >
+<form id="formComm9-167" action="javascript:makeRequest('9-167');" >
+<input id="comm9-167" type="text" class="command" style="width: 6em;" value="[dm,cdm] " />
+</form>
+<span id="commSav9-167" class="commSav" >[dm,cdm] </span>
+<div id="mathAns9-167" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mi>y</mi></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Matrix Polynomial Integer
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >subMatrix</span><span class="index">subMatrix</span><a name="chapter-9-90"/><span class="index">Matrix</span><a name="chapter-9-91"/> to extract part of an existing
+matrix.  The syntax is <span class="teletype">subMatrix(<span class="italic">m, firstrow, lastrow,
+firstcol, lastcol</span>)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-168" class="spadComm" >
+<form id="formComm9-168" action="javascript:makeRequest('9-168');" >
+<input id="comm9-168" type="text" class="command" style="width: 15em;" value="subMatrix(dm,2,3,2,4) " />
+</form>
+<span id="commSav9-168" class="commSav" >subMatrix(dm,2,3,2,4) </span>
+<div id="mathAns9-168" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mi>y</mi></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mi>y</mi></mtd><mtd><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Polynomial Integer
+</div>
+
+
+
+<p>To change a submatrix, use <span class="spadfunFrom" >setsubMatrix</span><span class="index">setsubMatrix</span><a name="chapter-9-92"/><span class="index">Matrix</span><a name="chapter-9-93"/>.
+</p>
+
+
+
+
+<div id="spadComm9-169" class="spadComm" >
+<form id="formComm9-169" action="javascript:makeRequest('9-169');" >
+<input id="comm9-169" type="text" class="command" style="width: 27em;" value="d := diagonalMatrix [1.2,-1.3,1.4,-1.5] " />
+</form>
+<span id="commSav9-169" class="commSav" >d := diagonalMatrix [1.2,-1.3,1.4,-1.5] </span>
+<div id="mathAns9-169" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mn>1</mn><mo>.</mo><mn>2</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>3</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>1</mn><mo>.</mo><mn>4</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>5</mn></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Float
+</div>
+
+
+
+<p>If <span class="teletype">e</span> is too big to fit where you specify, an error message is
+displayed.  Use <span class="spadfunFrom" >subMatrix</span><span class="index">subMatrix</span><a name="chapter-9-94"/><span class="index">Matrix</span><a name="chapter-9-95"/> to extract part of
+<span class="teletype">e</span>, if necessary.
+</p>
+
+
+
+
+<div id="spadComm9-170" class="spadComm" >
+<form id="formComm9-170" action="javascript:makeRequest('9-170');" >
+<input id="comm9-170" type="text" class="command" style="width: 28em;" value="e := matrix [ [6.7,9.11],[-31.33,67.19] ] " />
+</form>
+<span id="commSav9-170" class="commSav" >e := matrix [ [6.7,9.11],[-31.33,67.19] ] </span>
+<div id="mathAns9-170" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mn>6</mn><mo>.</mo><mn>7</mn></mrow></mtd><mtd><mrow><mn>9</mn><mo>.</mo><mn>11</mn></mrow></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mn>31</mn><mo>.</mo><mn>33</mn></mrow></mtd><mtd><mrow><mn>67</mn><mo>.</mo><mn>19</mn></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Float
+</div>
+
+
+
+<p>This changes the submatrix of <span class="teletype">d</span> whose upper left corner is
+at the first row and second column and whose size is that of <span class="teletype">e</span>.
+</p>
+
+
+
+
+<div id="spadComm9-171" class="spadComm" >
+<form id="formComm9-171" action="javascript:makeRequest('9-171');" >
+<input id="comm9-171" type="text" class="command" style="width: 16em;" value="setsubMatrix!(d,1,2,e) " />
+</form>
+<span id="commSav9-171" class="commSav" >setsubMatrix!(d,1,2,e) </span>
+<div id="mathAns9-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mn>1</mn><mo>.</mo><mn>2</mn></mrow></mtd><mtd><mrow><mn>6</mn><mo>.</mo><mn>7</mn></mrow></mtd><mtd><mrow><mn>9</mn><mo>.</mo><mn>11</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mo>-</mo><mrow><mn>31</mn><mo>.</mo><mn>33</mn></mrow></mtd><mtd><mrow><mn>67</mn><mo>.</mo><mn>19</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>1</mn><mo>.</mo><mn>4</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>5</mn></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Float
+</div>
+
+
+
+
+
+<div id="spadComm9-172" class="spadComm" >
+<form id="formComm9-172" action="javascript:makeRequest('9-172');" >
+<input id="comm9-172" type="text" class="command" style="width: 2em;" value="d " />
+</form>
+<span id="commSav9-172" class="commSav" >d </span>
+<div id="mathAns9-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mn>1</mn><mo>.</mo><mn>2</mn></mrow></mtd><mtd><mrow><mn>6</mn><mo>.</mo><mn>7</mn></mrow></mtd><mtd><mrow><mn>9</mn><mo>.</mo><mn>11</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mo>-</mo><mrow><mn>31</mn><mo>.</mo><mn>33</mn></mrow></mtd><mtd><mrow><mn>67</mn><mo>.</mo><mn>19</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>1</mn><mo>.</mo><mn>4</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mrow><mn>0</mn><mo>.</mo><mn>0</mn></mrow></mtd><mtd><mo>-</mo><mrow><mn>1</mn><mo>.</mo><mn>5</mn></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Float
+</div>
+
+
+
+<p>Matrices can be joined either horizontally or vertically to make
+new matrices.
+</p>
+
+
+
+
+<div id="spadComm9-173" class="spadComm" >
+<form id="formComm9-173" action="javascript:makeRequest('9-173');" >
+<input id="comm9-173" type="text" class="command" style="width: 30em;" value="a := matrix [ [1/2,1/3,1/4],[1/5,1/6,1/7] ] " />
+</form>
+<span id="commSav9-173" class="commSav" >a := matrix [ [1/2,1/3,1/4],[1/5,1/6,1/7] ] </span>
+<div id="mathAns9-173" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-174" class="spadComm" >
+<form id="formComm9-174" action="javascript:makeRequest('9-174');" >
+<input id="comm9-174" type="text" class="command" style="width: 32em;" value="b := matrix [ [3/5,3/7,3/11],[3/13,3/17,3/19] ] " />
+</form>
+<span id="commSav9-174" class="commSav" >b := matrix [ [3/5,3/7,3/11],[3/13,3/17,3/19] ] </span>
+<div id="mathAns9-174" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>3</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>11</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>3</mn><mn>13</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>17</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>19</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Integer
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >horizConcat</span><span class="index">horizConcat</span><a name="chapter-9-96"/><span class="index">Matrix</span><a name="chapter-9-97"/> to append them side to side.
+The two matrices must have the same number of rows.
+</p>
+
+
+
+
+<div id="spadComm9-175" class="spadComm" >
+<form id="formComm9-175" action="javascript:makeRequest('9-175');" >
+<input id="comm9-175" type="text" class="command" style="width: 12em;" value="horizConcat(a,b) " />
+</form>
+<span id="commSav9-175" class="commSav" >horizConcat(a,b) </span>
+<div id="mathAns9-175" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>11</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>13</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>17</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>19</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Integer
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >vertConcat</span><span class="index">vertConcat</span><a name="chapter-9-98"/><span class="index">Matrix</span><a name="chapter-9-99"/> to stack one upon the other.
+The two matrices must have the same number of columns.
+</p>
+
+
+
+
+<div id="spadComm9-176" class="spadComm" >
+<form id="formComm9-176" action="javascript:makeRequest('9-176');" >
+<input id="comm9-176" type="text" class="command" style="width: 16em;" value="vab := vertConcat(a,b) " />
+</form>
+<span id="commSav9-176" class="commSav" >vab := vertConcat(a,b) </span>
+<div id="mathAns9-176" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>3</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>11</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>3</mn><mn>13</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>17</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>19</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >transpose</span><span class="index">transpose</span><a name="chapter-9-100"/><span class="index">Matrix</span><a name="chapter-9-101"/> is used to create a new
+matrix by reflection across the main diagonal.
+</p>
+
+
+
+
+<div id="spadComm9-177" class="spadComm" >
+<form id="formComm9-177" action="javascript:makeRequest('9-177');" >
+<input id="comm9-177" type="text" class="command" style="width: 10em;" value="transpose vab " />
+</form>
+<span id="commSav9-177" class="commSav" >transpose vab </span>
+<div id="mathAns9-177" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>13</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>17</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>7</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>11</mn></mfrac></mtd><mtd><mfrac><mn>3</mn><mn>19</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Integer
+</div>
+
+
+
+
+
+</div>
+
+
+
+<a name="subsec-9.52.2"/>
+<div class="subsection"  id="subsec-9.52.2">
+<h3 class="subsectitle">9.52.2  Operations on Matrices</h3>
+
+
+
+<p>Axiom provides both left and right scalar multiplication.
+</p>
+
+
+
+
+<div id="spadComm9-178" class="spadComm" >
+<form id="formComm9-178" action="javascript:makeRequest('9-178');" >
+<input id="comm9-178" type="text" class="command" style="width: 19em;" value="m := matrix [ [1,2],[3,4] ] " />
+</form>
+<span id="commSav9-178" class="commSav" >m := matrix [ [1,2],[3,4] ] </span>
+<div id="mathAns9-178" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-179" class="spadComm" >
+<form id="formComm9-179" action="javascript:makeRequest('9-179');" >
+<input id="comm9-179" type="text" class="command" style="width: 8em;" value="4 * m * (-5)" />
+</form>
+<span id="commSav9-179" class="commSav" >4 * m * (-5)</span>
+<div id="mathAns9-179" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mn>20</mn></mtd><mtd><mo>-</mo><mn>40</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>60</mn></mtd><mtd><mo>-</mo><mn>80</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>You can add, subtract, and multiply matrices provided, of course, that
+the matrices have compatible dimensions.  If not, an error message is
+displayed.
+</p>
+
+
+
+
+<div id="spadComm9-180" class="spadComm" >
+<form id="formComm9-180" action="javascript:makeRequest('9-180');" >
+<input id="comm9-180" type="text" class="command" style="width: 24em;" value="n := matrix([ [1,0,-2],[-3,5,1] ]) " />
+</form>
+<span id="commSav9-180" class="commSav" >n := matrix([ [1,0,-2],[-3,5,1] ]) </span>
+<div id="mathAns9-180" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mn>2</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>3</mn></mtd><mtd><mn>5</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>This following product is defined but <span class="teletype">n * m</span> is not.
+</p>
+
+
+
+
+<div id="spadComm9-181" class="spadComm" >
+<form id="formComm9-181" action="javascript:makeRequest('9-181');" >
+<input id="comm9-181" type="text" class="command" style="width: 4em;" value="m * n " />
+</form>
+<span id="commSav9-181" class="commSav" >m * n </span>
+<div id="mathAns9-181" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mn>5</mn></mtd><mtd><mn>10</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>9</mn></mtd><mtd><mn>20</mn></mtd><mtd><mo>-</mo><mn>2</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>The operations <span class="spadfunFrom" >nrows</span><span class="index">nrows</span><a name="chapter-9-102"/><span class="index">Matrix</span><a name="chapter-9-103"/> and
+<span class="spadfunFrom" >ncols</span><span class="index">ncols</span><a name="chapter-9-104"/><span class="index">Matrix</span><a name="chapter-9-105"/> return the number of rows and columns of a
+matrix.  You can extract a row or a column of a matrix using the
+operations <span class="spadfunFrom" >row</span><span class="index">row</span><a name="chapter-9-106"/><span class="index">Matrix</span><a name="chapter-9-107"/> and <span class="spadfunFrom" >column</span><span class="index">column</span><a name="chapter-9-108"/><span class="index">Matrix</span><a name="chapter-9-109"/>.
+The object returned is a <span class="teletype">Vector</span>.
+</p>
+
+
+<p>Here is the third column of the matrix <span class="teletype">n</span>.
+</p>
+
+
+
+
+<div id="spadComm9-182" class="spadComm" >
+<form id="formComm9-182" action="javascript:makeRequest('9-182');" >
+<input id="comm9-182" type="text" class="command" style="width: 14em;" value="vec := column(n,3)  " />
+</form>
+<span id="commSav9-182" class="commSav" >vec := column(n,3)  </span>
+<div id="mathAns9-182" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+<p>You can multiply a matrix on the left by a ``row vector'' and on the right
+by a ``column vector.''
+</p>
+
+
+
+
+<div id="spadComm9-183" class="spadComm" >
+<form id="formComm9-183" action="javascript:makeRequest('9-183');" >
+<input id="comm9-183" type="text" class="command" style="width: 6em;" value="vec * m " />
+</form>
+<span id="commSav9-183" class="commSav" >vec * m </span>
+<div id="mathAns9-183" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+<p>Of course, the dimensions of the vector and the matrix must be compatible
+or an error message is returned.
+</p>
+
+
+
+
+<div id="spadComm9-184" class="spadComm" >
+<form id="formComm9-184" action="javascript:makeRequest('9-184');" >
+<input id="comm9-184" type="text" class="command" style="width: 6em;" value="m * vec " />
+</form>
+<span id="commSav9-184" class="commSav" >m * vec </span>
+<div id="mathAns9-184" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mo>-</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >inverse</span><span class="index">inverse</span><a name="chapter-9-110"/><span class="index">Matrix</span><a name="chapter-9-111"/> computes the inverse of a
+matrix if the matrix is invertible, and returns <span class="teletype">"failed"</span> if not.
+</p>
+
+
+<p>This Hilbert matrix is invertible.
+</p>
+
+
+
+
+<div id="spadComm9-185" class="spadComm" >
+<form id="formComm9-185" action="javascript:makeRequest('9-185');" >
+<input id="comm9-185" type="text" class="command" style="width: 40em;" value="hilb := matrix([ [1/(i + j) for i in 1..3] for j in 1..3]) " />
+</form>
+<span id="commSav9-185" class="commSav" >hilb := matrix([ [1/(i + j) for i in 1..3] for j in 1..3]) </span>
+<div id="mathAns9-185" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>1</mn><mn>2</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>5</mn></mfrac></mtd><mtd><mfrac><mn>1</mn><mn>6</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-186" class="spadComm" >
+<form id="formComm9-186" action="javascript:makeRequest('9-186');" >
+<input id="comm9-186" type="text" class="command" style="width: 10em;" value="inverse(hilb) " />
+</form>
+<span id="commSav9-186" class="commSav" >inverse(hilb) </span>
+<div id="mathAns9-186" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>72</mn></mtd><mtd><mo>-</mo><mn>240</mn></mtd><mtd><mn>180</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>240</mn></mtd><mtd><mn>900</mn></mtd><mtd><mo>-</mo><mn>720</mn></mtd></mtr><mtr><mtd><mn>180</mn></mtd><mtd><mo>-</mo><mn>720</mn></mtd><mtd><mn>600</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Matrix Fraction Integer,...)
+</div>
+
+
+
+<p>This matrix is not invertible.
+</p>
+
+
+
+
+<div id="spadComm9-187" class="spadComm" >
+<form id="formComm9-187" action="javascript:makeRequest('9-187');" >
+<input id="comm9-187" type="text" class="command" style="width: 46em;" value="mm := matrix([ [1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16] ]) " />
+</form>
+<span id="commSav9-187" class="commSav" >mm := matrix([ [1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16] ]) </span>
+<div id="mathAns9-187" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>5</mn></mtd><mtd><mn>6</mn></mtd><mtd><mn>7</mn></mtd><mtd><mn>8</mn></mtd></mtr><mtr><mtd><mn>9</mn></mtd><mtd><mn>10</mn></mtd><mtd><mn>11</mn></mtd><mtd><mn>12</mn></mtd></mtr><mtr><mtd><mn>13</mn></mtd><mtd><mn>14</mn></mtd><mtd><mn>15</mn></mtd><mtd><mn>16</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-188" class="spadComm" >
+<form id="formComm9-188" action="javascript:makeRequest('9-188');" >
+<input id="comm9-188" type="text" class="command" style="width: 8em;" value="inverse(mm) " />
+</form>
+<span id="commSav9-188" class="commSav" >inverse(mm) </span>
+<div id="mathAns9-188" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >determinant</span><span class="index">determinant</span><a name="chapter-9-112"/><span class="index">Matrix</span><a name="chapter-9-113"/> computes the
+determinant of a matrix provided that the entries of the matrix belong
+to a <span class="teletype">CommutativeRing</span>.
+</p>
+
+
+<p>The above matrix <span class="teletype">mm</span> is not invertible and, hence, must have
+determinant <span class="teletype">0</span>.
+</p>
+
+
+
+
+<div id="spadComm9-189" class="spadComm" >
+<form id="formComm9-189" action="javascript:makeRequest('9-189');" >
+<input id="comm9-189" type="text" class="command" style="width: 11em;" value="determinant(mm) " />
+</form>
+<span id="commSav9-189" class="commSav" >determinant(mm) </span>
+<div id="mathAns9-189" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >trace</span><span class="index">trace</span><a name="chapter-9-114"/><span class="index">SquareMatrix</span><a name="chapter-9-115"/> computes the trace of
+a <span class="em">square</span> matrix.
+</p>
+
+
+
+
+<div id="spadComm9-190" class="spadComm" >
+<form id="formComm9-190" action="javascript:makeRequest('9-190');" >
+<input id="comm9-190" type="text" class="command" style="width: 7em;" value="trace(mm) " />
+</form>
+<span id="commSav9-190" class="commSav" >trace(mm) </span>
+<div id="mathAns9-190" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>34</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >rank</span><span class="index">rank</span><a name="chapter-9-116"/><span class="index">Matrix</span><a name="chapter-9-117"/> computes the <span class="italic">rank</span> of a
+matrix: the maximal number of linearly independent rows or columns.
+</p>
+
+
+
+
+<div id="spadComm9-191" class="spadComm" >
+<form id="formComm9-191" action="javascript:makeRequest('9-191');" >
+<input id="comm9-191" type="text" class="command" style="width: 6em;" value="rank(mm) " />
+</form>
+<span id="commSav9-191" class="commSav" >rank(mm) </span>
+<div id="mathAns9-191" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >nullity</span><span class="index">nullity</span><a name="chapter-9-118"/><span class="index">Matrix</span><a name="chapter-9-119"/> computes the <span class="italic">nullity</span> of
+a matrix: the dimension of its null space.
+</p>
+
+
+
+
+<div id="spadComm9-192" class="spadComm" >
+<form id="formComm9-192" action="javascript:makeRequest('9-192');" >
+<input id="comm9-192" type="text" class="command" style="width: 8em;" value="nullity(mm) " />
+</form>
+<span id="commSav9-192" class="commSav" >nullity(mm) </span>
+<div id="mathAns9-192" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >nullSpace</span><span class="index">nullSpace</span><a name="chapter-9-120"/><span class="index">Matrix</span><a name="chapter-9-121"/> returns a list
+containing a basis for the null space of a matrix.  Note that the
+nullity is the number of elements in a basis for the null space.
+</p>
+
+
+
+
+<div id="spadComm9-193" class="spadComm" >
+<form id="formComm9-193" action="javascript:makeRequest('9-193');" >
+<input id="comm9-193" type="text" class="command" style="width: 10em;" value="nullSpace(mm) " />
+</form>
+<span id="commSav9-193" class="commSav" >nullSpace(mm) </span>
+<div id="mathAns9-193" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mo>-</mo><mn>3</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Vector Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >rowEchelon</span><span class="index">rowEchelon</span><a name="chapter-9-122"/><span class="index">Matrix</span><a name="chapter-9-123"/> returns the row echelon
+form of a matrix.  It is easy to see that the rank of this matrix is
+two and that its nullity is also two.
+</p>
+
+
+
+
+<div id="spadComm9-194" class="spadComm" >
+<form id="formComm9-194" action="javascript:makeRequest('9-194');" >
+<input id="comm9-194" type="text" class="command" style="width: 10em;" value="rowEchelon(mm) " />
+</form>
+<span id="commSav9-194" class="commSav" >rowEchelon(mm) </span>
+<div id="mathAns9-194" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>4</mn></mtd><mtd><mn>8</mn></mtd><mtd><mn>12</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Integer
+</div>
+
+
+
+<p>For more information on related topics, see 
+<a href="ugIntroTwoDimPage" class="ref" >ugIntroTwoDimPage</a>  in Section 
+<a href="ugIntroTwoDimNumber" class="ref" >ugIntroTwoDimNumber</a> , 
+<a href="ugProblemEigenPage" class="ref" >ugProblemEigenPage</a>  in Section
+<a href="ugProblemEigenNumber" class="ref" >ugProblemEigenNumber</a> , 
+<a href="ugxFloatHilbertPage" class="ref" >ugxFloatHilbertPage</a>  in Section
+<a href="ugxFloatHilbertNumber" class="ref" >ugxFloatHilbertNumber</a> , 
+<a href="section-9.62.xhtml#PermanentXmpPage" class="ref" >PermanentXmpPage</a> ,
+<a href="section-9.85.xhtml#VectorXmpPage" class="ref" >VectorXmpPage</a> , 
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a> ,
+and
+<a href="section-9.82.xhtml#TwoDimensionalArrayXmpPage" class="ref" >TwoDimensionalArrayXmpPage</a> .
+</p>
+
+
+
+
+</div>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.51.xhtml" style="margin-right: 10px;">Previous Section 9.51 MappingPackage1</a><a href="section-9.53.xhtml" style="margin-right: 10px;">Next Section 9.53 MultiSet</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.53.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.53.xhtml
new file mode 100644
index 0000000..4608e32
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.53.xhtml
@@ -0,0 +1,429 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.53</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.52.xhtml" style="margin-right: 10px;">Previous Section 9.52 Matrix</a><a href="section-9.54.xhtml" style="margin-right: 10px;">Next Section 9.54 MultivariatePolynomial</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.53">
+<h2 class="sectiontitle">9.53  MultiSet</h2>
+
+
+<a name="MultiSetXmpPage" class="label"/>
+
+
+<p>The domain <span class="teletype">Multiset(R)</span> is similar to <span class="teletype">Set(R)</span> except that
+multiplicities (counts of duplications) are maintained and displayed.
+Use the operation <span class="spadfunFrom" >multiset</span><span class="index">multiset</span><a name="chapter-9-124"/><span class="index">Multiset</span><a name="chapter-9-125"/> to create multisets
+from lists.  All the standard operations from sets are available for
+multisets.  An element with multiplicity greater than one has the
+multiplicity displayed first, then a colon, and then the element.
+</p>
+
+
+<p>Create a multiset of integers.
+</p>
+
+
+
+
+<div id="spadComm9-195" class="spadComm" >
+<form id="formComm9-195" action="javascript:makeRequest('9-195');" >
+<input id="comm9-195" type="text" class="command" style="width: 31em;" value="s := multiset [1,2,3,4,5,4,3,2,3,4,5,6,7,4,10]" />
+</form>
+<span id="commSav9-195" class="commSav" >s := multiset [1,2,3,4,5,4,3,2,3,4,5,6,7,4,10]</span>
+<div id="mathAns9-195" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>7</mn><mo>,</mo><mrow><mn>2</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>5</mn></mrow><mo>,</mo><mrow><mn>3</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>3</mn></mrow><mo>,</mo><mn>1</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>6</mn><mo>,</mo><mrow><mn>4</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>4</mn></mrow><mo>,</mo><mrow><mn>2</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>2</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Multiset PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="teletype">insert!</span> adds an element to a multiset.
+</p>
+
+
+
+
+<div id="spadComm9-196" class="spadComm" >
+<form id="formComm9-196" action="javascript:makeRequest('9-196');" >
+<input id="comm9-196" type="text" class="command" style="width: 8em;" value="insert!(3,s)" />
+</form>
+<span id="commSav9-196" class="commSav" >insert!(3,s)</span>
+<div id="mathAns9-196" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>7</mn><mo>,</mo><mrow><mn>2</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>5</mn></mrow><mo>,</mo><mrow><mn>4</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>3</mn></mrow><mo>,</mo><mn>1</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>6</mn><mo>,</mo><mrow><mn>4</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>4</mn></mrow><mo>,</mo><mrow><mn>2</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>2</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Multiset PositiveInteger
+</div>
+
+
+
+<p>Use <span class="teletype">remove!</span> to remove an element.  If a third argument is
+present, it specifies how many instances to remove. Otherwise all
+instances of the element are removed.  Display the resulting multiset.
+</p>
+
+
+
+
+<div id="spadComm9-197" class="spadComm" >
+<form id="formComm9-197" action="javascript:makeRequest('9-197');" >
+<input id="comm9-197" type="text" class="command" style="width: 12em;" value="remove!(3,s,1); s" />
+</form>
+<span id="commSav9-197" class="commSav" >remove!(3,s,1); s</span>
+<div id="mathAns9-197" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>7</mn><mo>,</mo><mrow><mn>2</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>5</mn></mrow><mo>,</mo><mrow><mn>3</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>3</mn></mrow><mo>,</mo><mn>1</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>6</mn><mo>,</mo><mrow><mn>4</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>4</mn></mrow><mo>,</mo><mrow><mn>2</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>2</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Multiset PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-198" class="spadComm" >
+<form id="formComm9-198" action="javascript:makeRequest('9-198');" >
+<input id="comm9-198" type="text" class="command" style="width: 10em;" value="remove!(5,s); s" />
+</form>
+<span id="commSav9-198" class="commSav" >remove!(5,s); s</span>
+<div id="mathAns9-198" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>7</mn><mo>,</mo><mrow><mn>3</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>3</mn></mrow><mo>,</mo><mn>1</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>6</mn><mo>,</mo><mrow><mn>4</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>4</mn></mrow><mo>,</mo><mrow><mn>2</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>2</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Multiset PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="teletype">count</span> returns the number of copies of a given value.
+</p>
+
+
+
+
+<div id="spadComm9-199" class="spadComm" >
+<form id="formComm9-199" action="javascript:makeRequest('9-199');" >
+<input id="comm9-199" type="text" class="command" style="width: 7em;" value="count(5,s)" />
+</form>
+<span id="commSav9-199" class="commSav" >count(5,s)</span>
+<div id="mathAns9-199" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>A second multiset.
+</p>
+
+
+
+
+<div id="spadComm9-200" class="spadComm" >
+<form id="formComm9-200" action="javascript:makeRequest('9-200');" >
+<input id="comm9-200" type="text" class="command" style="width: 16em;" value="t := multiset [2,2,2,-9]" />
+</form>
+<span id="commSav9-200" class="commSav" >t := multiset [2,2,2,-9]</span>
+<div id="mathAns9-200" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mo>-</mo><mn>9</mn><mo>,</mo><mrow><mn>3</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>2</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Multiset Integer
+</div>
+
+
+
+<p>The <span class="teletype">union</span> of two multisets is additive.
+</p>
+
+
+
+
+<div id="spadComm9-201" class="spadComm" >
+<form id="formComm9-201" action="javascript:makeRequest('9-201');" >
+<input id="comm9-201" type="text" class="command" style="width: 10em;" value="U := union(s,t)" />
+</form>
+<span id="commSav9-201" class="commSav" >U := union(s,t)</span>
+<div id="mathAns9-201" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>7</mn><mo>,</mo><mrow><mn>3</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>3</mn></mrow><mo>,</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>6</mn><mo>,</mo><mrow><mn>4</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>4</mn></mrow><mo>,</mo><mrow><mn>5</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>2</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Multiset Integer
+</div>
+
+
+
+<p>The <span class="teletype">intersect</span> operation gives the elements that are in
+common, with additive multiplicity.
+</p>
+
+
+
+
+<div id="spadComm9-202" class="spadComm" >
+<form id="formComm9-202" action="javascript:makeRequest('9-202');" >
+<input id="comm9-202" type="text" class="command" style="width: 13em;" value="I := intersect(s,t)" />
+</form>
+<span id="commSav9-202" class="commSav" >I := intersect(s,t)</span>
+<div id="mathAns9-202" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mn>5</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>2</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Multiset Integer
+</div>
+
+
+
+<p>The <span class="teletype">difference</span> of <span class="teletype">s</span> and <span class="teletype">t</span> consists of the elements
+that <span class="teletype">s</span> has but <span class="teletype">t</span> does not.  Elements are regarded as
+indistinguishable, so that if <span class="teletype">s</span> and <span class="teletype">t</span> have any element in
+common, the <span class="teletype">difference</span> does not contain that element.
+</p>
+
+
+
+
+<div id="spadComm9-203" class="spadComm" >
+<form id="formComm9-203" action="javascript:makeRequest('9-203');" >
+<input id="comm9-203" type="text" class="command" style="width: 10em;" value="difference(s,t)" />
+</form>
+<span id="commSav9-203" class="commSav" >difference(s,t)</span>
+<div id="mathAns9-203" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>7</mn><mo>,</mo><mrow><mn>3</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>3</mn></mrow><mo>,</mo><mn>1</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>6</mn><mo>,</mo><mrow><mn>4</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>4</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Multiset Integer
+</div>
+
+
+
+<p>The <span class="teletype">symmetricDifference</span> is the <span class="teletype">union</span> of <span class="teletype">difference(s, t)</span> 
+and <span class="teletype">difference(t, s)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-204" class="spadComm" >
+<form id="formComm9-204" action="javascript:makeRequest('9-204');" >
+<input id="comm9-204" type="text" class="command" style="width: 20em;" value="S := symmetricDifference(s,t)" />
+</form>
+<span id="commSav9-204" class="commSav" >S := symmetricDifference(s,t)</span>
+<div id="mathAns9-204" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>7</mn><mo>,</mo><mrow><mn>3</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>3</mn></mrow><mo>,</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>6</mn><mo>,</mo><mrow><mn>4</mn><mtext><mrow><mtext>:</mtext></mrow></mtext><mn>4</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Multiset Integer
+</div>
+
+
+
+<p>Check that the <span class="teletype">union</span> of the <span class="teletype">symmetricDifference</span> and
+the <span class="teletype">intersect</span> equals the <span class="teletype">union</span> of the elements.
+</p>
+
+
+
+
+<div id="spadComm9-205" class="spadComm" >
+<form id="formComm9-205" action="javascript:makeRequest('9-205');" >
+<input id="comm9-205" type="text" class="command" style="width: 16em;" value="(U = union(S,I))@Boolean" />
+</form>
+<span id="commSav9-205" class="commSav" >(U = union(S,I))@Boolean</span>
+<div id="mathAns9-205" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Check some inclusion relations.
+</p>
+
+
+
+
+<div id="spadComm9-206" class="spadComm" >
+<form id="formComm9-206" action="javascript:makeRequest('9-206');" >
+<input id="comm9-206" type="text" class="command" style="width: 39em;" value="t1 := multiset [1,2,2,3]; [t1 &lt; t, t1 &lt; s, t &lt; s, t1 &lt;= s]" />
+</form>
+<span id="commSav9-206" class="commSav" >t1 := multiset [1,2,2,3]; [t1 &lt; t, t1 &lt; s, t &lt; s, t1 &lt;= s]</span>
+<div id="mathAns9-206" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Boolean
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.52.xhtml" style="margin-right: 10px;">Previous Section 9.52 Matrix</a><a href="section-9.54.xhtml" style="margin-right: 10px;">Next Section 9.54 MultivariatePolynomial</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.54.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.54.xhtml
new file mode 100644
index 0000000..f3ddb23
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.54.xhtml
@@ -0,0 +1,417 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.54</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.53.xhtml" style="margin-right: 10px;">Previous Section 9.53 MultiSet</a><a href="section-9.55.xhtml" style="margin-right: 10px;">Next Section 9.55 None</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.54">
+<h2 class="sectiontitle">9.54  MultivariatePolynomial</h2>
+
+
+<a name="MultivariatePolynomialXmpPage" class="label"/>
+
+
+<p>The domain constructor <span class="teletype">MultivariatePolynomial</span> is similar to <span class="teletype">Polynomial</span> except that it specifies the variables to be used.  <span class="teletype">Polynomial</span> are available for <span class="teletype">MultivariatePolynomial</span>.  The
+abbreviation for <span class="teletype">MultivariatePolynomial</span> is <span class="teletype">MPOLY</span>.  The
+type expressions 
+</p>
+
+
+<div class="centerline"><span class="teletype">MultivariatePolynomial([x,y],Integer)</span></div>
+
+<p> 
+and 
+</p>
+
+
+<div class="centerline"><span class="teletype">MPOLY([x,y],INT)</span></div>
+
+<p> refer to the domain of 
+multivariate polynomials in the variables <span class="teletype">x</span> and <span class="teletype">y</span> where the 
+coefficients are restricted to be integers.  The first variable specified 
+is the main variable and the display of the polynomial reflects this.
+</p>
+
+
+<p>This polynomial appears with terms in descending powers of the
+variable <span class="teletype">x</span>.
+</p>
+
+
+
+
+<div id="spadComm9-207" class="spadComm" >
+<form id="formComm9-207" action="javascript:makeRequest('9-207');" >
+<input id="comm9-207" type="text" class="command" style="width: 32em;" value="m : MPOLY([x,y],INT) := (x**2 - x*y**3 +3*y)**2 " />
+</form>
+<span id="commSav9-207" class="commSav" >m : MPOLY([x,y],INT) := (x**2 - x*y**3 +3*y)**2 </span>
+<div id="mathAns9-207" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: MultivariatePolynomial([x,y],Integer)
+</div>
+
+
+
+<p>It is easy to see a different variable ordering by doing a conversion.
+</p>
+
+
+
+
+<div id="spadComm9-208" class="spadComm" >
+<form id="formComm9-208" action="javascript:makeRequest('9-208');" >
+<input id="comm9-208" type="text" class="command" style="width: 15em;" value="m :: MPOLY([y,x],INT) " />
+</form>
+<span id="commSav9-208" class="commSav" >m :: MPOLY([y,x],INT) </span>
+<div id="mathAns9-208" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: MultivariatePolynomial([y,x],Integer)
+</div>
+
+
+
+<p>You can use other, unspecified variables, by using <span class="teletype">Polynomial</span> in
+the coefficient type of <span class="teletype">MPOLY</span>.
+</p>
+
+
+
+
+<div id="spadComm9-209" class="spadComm" >
+<form id="formComm9-209" action="javascript:makeRequest('9-209');" >
+<input id="comm9-209" type="text" class="command" style="width: 18em;" value="p : MPOLY([x,y],POLY INT) " />
+</form>
+<span id="commSav9-209" class="commSav" >p : MPOLY([x,y],POLY INT) </span>
+<div id="mathAns9-209" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-210" class="spadComm" >
+<form id="formComm9-210" action="javascript:makeRequest('9-210');" >
+<input id="comm9-210" type="text" class="command" style="width: 20em;" value="p := (a**2*x - b*y**2 + 1)**2 " />
+</form>
+<span id="commSav9-210" class="commSav" >p := (a**2*x - b*y**2 + 1)**2 </span>
+<div id="mathAns9-210" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: MultivariatePolynomial([x,y],Polynomial Integer)
+</div>
+
+
+
+<p>Conversions can be used to re-express such polynomials in terms of
+the other variables.  For example, you can first push all the
+variables into a polynomial with integer coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-211" class="spadComm" >
+<form id="formComm9-211" action="javascript:makeRequest('9-211');" >
+<input id="comm9-211" type="text" class="command" style="width: 10em;" value="p :: POLY INT " />
+</form>
+<span id="commSav9-211" class="commSav" >p :: POLY INT </span>
+<div id="mathAns9-211" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>b</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Now pull out the variables of interest.
+</p>
+
+
+
+
+<div id="spadComm9-212" class="spadComm" >
+<form id="formComm9-212" action="javascript:makeRequest('9-212');" >
+<input id="comm9-212" type="text" class="command" style="width: 19em;" value="% :: MPOLY([a,b],POLY INT) " />
+</form>
+<span id="commSav9-212" class="commSav" >% :: MPOLY([a,b],POLY INT) </span>
+<div id="mathAns9-212" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: MultivariatePolynomial([a,b],Polynomial Integer)
+</div>
+
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p> <span style="font-weight: bold;"> Restriction:</span>
+</p>
+
+
+
+<div class="quotation">
+
+
+<p>Axiom does not allow you to create types where
+<span class="teletype">MultivariatePolynomial</span> is contained in the coefficient type of
+<span class="teletype">Polynomial</span>. Therefore,
+<span class="teletype">MPOLY([x,y],POLY INT)</span> is legal but
+<span class="teletype">POLY MPOLY([x,y],INT)</span> is not.
+</p>
+
+
+
+</div>
+
+
+<p>.
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p>Multivariate polynomials may be combined with univariate polynomials
+to create types with special structures.
+</p>
+
+
+
+
+<div id="spadComm9-213" class="spadComm" >
+<form id="formComm9-213" action="javascript:makeRequest('9-213');" >
+<input id="comm9-213" type="text" class="command" style="width: 22em;" value="q : UP(x, FRAC MPOLY([y,z],INT)) " />
+</form>
+<span id="commSav9-213" class="commSav" >q : UP(x, FRAC MPOLY([y,z],INT)) </span>
+<div id="mathAns9-213" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>This is a polynomial in <span class="teletype">x</span> whose coefficients are quotients of
+polynomials in <span class="teletype">y</span> and <span class="teletype">z</span>.
+</p>
+
+
+
+
+<div id="spadComm9-214" class="spadComm" >
+<form id="formComm9-214" action="javascript:makeRequest('9-214');" >
+<input id="comm9-214" type="text" class="command" style="width: 20em;" value="q := (x**2 - x*(z+1)/y +2)**2 " />
+</form>
+<span id="commSav9-214" class="commSav" >q := (x**2 - x*(z+1)/y +2)**2 </span>
+<div id="mathAns9-214" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mfrac><mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>2</mn></mrow><mi>y</mi></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mn>1</mn></mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>4</mn></mrow><mi>y</mi></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>4</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+UnivariatePolynomial(x,Fraction MultivariatePolynomial([y,z],Integer))
+</div>
+
+
+
+<p>Use conversions for structural rearrangements.  <span class="teletype">z</span> does not
+appear in a denominator and so it can be made the main variable.
+</p>
+
+
+
+
+<div id="spadComm9-215" class="spadComm" >
+<form id="formComm9-215" action="javascript:makeRequest('9-215');" >
+<input id="comm9-215" type="text" class="command" style="width: 23em;" value="q :: UP(z, FRAC MPOLY([x,y],INT)) " />
+</form>
+<span id="commSav9-215" class="commSav" >q :: UP(z, FRAC MPOLY([x,y],INT)) </span>
+<div id="mathAns9-215" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>x</mi></mrow></mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mfrac><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow></mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+UnivariatePolynomial(z,Fraction MultivariatePolynomial([x,y],Integer))
+</div>
+
+
+
+<p>Or you can make a multivariate polynomial in <span class="teletype">x</span> and <span class="teletype">z</span>
+whose coefficients are fractions in polynomials in <span class="teletype">y</span>.
+</p>
+
+
+
+
+<div id="spadComm9-216" class="spadComm" >
+<form id="formComm9-216" action="javascript:makeRequest('9-216');" >
+<input id="comm9-216" type="text" class="command" style="width: 23em;" value="q :: MPOLY([x,z], FRAC UP(y,INT)) " />
+</form>
+<span id="commSav9-216" class="commSav" >q :: MPOLY([x,z], FRAC UP(y,INT)) </span>
+<div id="mathAns9-216" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mfrac><mn>2</mn><mi>y</mi></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mfrac><mn>2</mn><mi>y</mi></mfrac><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mfrac><mn>1</mn><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mfrac><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mfrac><mn>4</mn><mi>y</mi></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mfrac><mn>4</mn><mi>y</mi></mfrac><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>4</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+MultivariatePolynomial([x,z],Fraction UnivariatePolynomial(y,Integer))
+</div>
+
+
+
+<p>A conversion like <span class="teletype">q :: MPOLY([x,y], FRAC UP(z,INT))</span> is not
+possible in this example because <span class="teletype">y</span> appears in the denominator of
+a fraction.  As you can see, Axiom provides extraordinary flexibility
+in the manipulation and display of expressions via its conversion
+facility.
+</p>
+
+
+<p>For more information on related topics, see
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >PolynomialXmpPage</a> ,
+<a href="section-9.83.xhtml#UnivariatePolynomialXmpPage" class="ref" >UnivariatePolynomialXmpPage</a> , and
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >DistributedMultivariatePolynomialXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.53.xhtml" style="margin-right: 10px;">Previous Section 9.53 MultiSet</a><a href="section-9.55.xhtml" style="margin-right: 10px;">Next Section 9.55 None</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.55.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.55.xhtml
new file mode 100644
index 0000000..22b684d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.55.xhtml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.55</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.54.xhtml" style="margin-right: 10px;">Previous Section 9.54 MultivariatePolynomial</a><a href="section-9.56.xhtml" style="margin-right: 10px;">Next Section 9.56 Octonion</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.55">
+<h2 class="sectiontitle">9.55  None</h2>
+
+
+<a name="NoneXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">None</span> domain is not very useful for interactive work but it
+is provided nevertheless for completeness of the Axiom type system.
+</p>
+
+
+<p>Probably the only place you will ever see it is if you enter an
+empty list with no type information.
+</p>
+
+
+
+
+<div id="spadComm9-217" class="spadComm" >
+<form id="formComm9-217" action="javascript:makeRequest('9-217');" >
+<input id="comm9-217" type="text" class="command" style="width: 2em;" value="[ ]" />
+</form>
+<span id="commSav9-217" class="commSav" >[ ]</span>
+<div id="mathAns9-217" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mspace width="0.5 em" /><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List None
+</div>
+
+
+<p>Such an empty list can be converted into an empty list
+of any other type.
+</p>
+
+
+
+
+<div id="spadComm9-218" class="spadComm" >
+<form id="formComm9-218" action="javascript:makeRequest('9-218');" >
+<input id="comm9-218" type="text" class="command" style="width: 12em;" value="[ ] :: List Float" />
+</form>
+<span id="commSav9-218" class="commSav" >[ ] :: List Float</span>
+<div id="mathAns9-218" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mspace width="0.5 em" /><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Float
+</div>
+
+
+
+<p>If you wish to produce an empty list of a particular
+type directly, such as <span class="teletype">List NonNegativeInteger</span>, do it this way.
+</p>
+
+
+
+
+<div id="spadComm9-219" class="spadComm" >
+<form id="formComm9-219" action="javascript:makeRequest('9-219');" >
+<input id="comm9-219" type="text" class="command" style="width: 19em;" value="[ ]$List(NonNegativeInteger)" />
+</form>
+<span id="commSav9-219" class="commSav" >[ ]$List(NonNegativeInteger)</span>
+<div id="mathAns9-219" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mspace width="0.5 em" /><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.54.xhtml" style="margin-right: 10px;">Previous Section 9.54 MultivariatePolynomial</a><a href="section-9.56.xhtml" style="margin-right: 10px;">Next Section 9.56 Octonion</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.56.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.56.xhtml
new file mode 100644
index 0000000..2e1d069
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.56.xhtml
@@ -0,0 +1,508 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.56</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.55.xhtml" style="margin-right: 10px;">Previous Section 9.55 None</a><a href="section-9.57.xhtml" style="margin-right: 10px;">Next Section 9.57 OneDimensionalArray</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.56">
+<h2 class="sectiontitle">9.56  Octonion</h2>
+
+
+<a name="OctonionXmpPage" class="label"/>
+
+
+<p>The Octonions, also called the Cayley-Dixon algebra, defined over a
+commutative ring are an eight-dimensional non-associative algebra.
+Their construction from quaternions is similar to the construction
+of quaternions from complex numbers (see 
+<a href="section-9.64.xhtml#QuaternionXmpPage" class="ref" >QuaternionXmpPage</a> ).
+</p>
+
+
+<p>As <span class="teletype">Octonion</span> creates an eight-dimensional algebra, you have to
+give eight components to construct an octonion.
+</p>
+
+
+
+
+<div id="spadComm9-220" class="spadComm" >
+<form id="formComm9-220" action="javascript:makeRequest('9-220');" >
+<input id="comm9-220" type="text" class="command" style="width: 21em;" value="oci1 := octon(1,2,3,4,5,6,7,8) " />
+</form>
+<span id="commSav9-220" class="commSav" >oci1 := octon(1,2,3,4,5,6,7,8) </span>
+<div id="mathAns9-220" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>j</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>k</mi></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>E</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>I</mi></mrow><mo>+</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>J</mi></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>K</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-221" class="spadComm" >
+<form id="formComm9-221" action="javascript:makeRequest('9-221');" >
+<input id="comm9-221" type="text" class="command" style="width: 22em;" value="oci2 := octon(7,2,3,-4,5,6,-7,0) " />
+</form>
+<span id="commSav9-221" class="commSav" >oci2 := octon(7,2,3,-4,5,6,-7,0) </span>
+<div id="mathAns9-221" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>7</mn><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>j</mi></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>k</mi></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>E</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>I</mi></mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>J</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Integer
+</div>
+
+
+
+<p>Or you can use two quaternions to create an octonion.
+</p>
+
+
+
+
+<div id="spadComm9-222" class="spadComm" >
+<form id="formComm9-222" action="javascript:makeRequest('9-222');" >
+<input id="comm9-222" type="text" class="command" style="width: 37em;" value="oci3 := octon(quatern(-7,-12,3,-10), quatern(5,6,9,0)) " />
+</form>
+<span id="commSav9-222" class="commSav" >oci3 := octon(quatern(-7,-12,3,-10), quatern(5,6,9,0)) </span>
+<div id="mathAns9-222" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>7</mn><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>j</mi></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>k</mi></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>E</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>I</mi></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mi>J</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Integer
+</div>
+
+
+
+<p>You can easily demonstrate the non-associativity of multiplication.
+</p>
+
+
+
+
+<div id="spadComm9-223" class="spadComm" >
+<form id="formComm9-223" action="javascript:makeRequest('9-223');" >
+<input id="comm9-223" type="text" class="command" style="width: 30em;" value="(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3) " />
+</form>
+<span id="commSav9-223" class="commSav" >(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3) </span>
+<div id="mathAns9-223" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2696</mn><mspace width="0.5 em" /><mi>i</mi></mrow><mo>-</mo><mrow><mn>2928</mn><mspace width="0.5 em" /><mi>j</mi></mrow><mo>-</mo><mrow><mn>4072</mn><mspace width="0.5 em" /><mi>k</mi></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mi>E</mi></mrow><mo>-</mo><mrow><mn>1192</mn><mspace width="0.5 em" /><mi>I</mi></mrow><mo>+</mo><mrow><mn>832</mn><mspace width="0.5 em" /><mi>J</mi></mrow><mo>+</mo><mrow><mn>2616</mn><mspace width="0.5 em" /><mi>K</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Integer
+</div>
+
+
+
+<p>As with the quaternions, we have a real part, the imaginary parts <span class="teletype">i</span>, <span class="teletype">j</span>, <span class="teletype">k</span>, and four additional imaginary parts <span class="teletype">E</span>,
+<span class="teletype">I</span>, <span class="teletype">J</span> and <span class="teletype">K</span>.  These parts correspond to the canonical
+basis <span class="teletype">(1,i,j,k,E,I,J,K)</span>.
+</p>
+
+
+<p>For each basis element there is a component operation to extract
+the coefficient of the basis element for a given octonion.
+</p>
+
+
+
+
+<div id="spadComm9-224" class="spadComm" >
+<form id="formComm9-224" action="javascript:makeRequest('9-224');" >
+<input id="comm9-224" type="text" class="command" style="width: 64em;" value="[real oci1, imagi oci1, imagj oci1, imagk oci1, imagE oci1, imagI oci1, imagJ oci1, imagK oci1] " />
+</form>
+<span id="commSav9-224" class="commSav" >[real oci1, imagi oci1, imagj oci1, imagk oci1, imagE oci1, imagI oci1, imagJ oci1, imagK oci1] </span>
+<div id="mathAns9-224" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List PositiveInteger
+</div>
+
+
+
+<p>A basis with respect to the quaternions is given by <span class="teletype">(1,E)</span>.
+However, you might ask, what then are the commuting rules?  To answer
+this, we create some generic elements.
+</p>
+
+
+<p>We do this in Axiom by simply changing the ground ring from <span class="teletype">Integer</span> to <span class="teletype">Polynomial Integer</span>.
+</p>
+
+
+
+
+<div id="spadComm9-225" class="spadComm" >
+<form id="formComm9-225" action="javascript:makeRequest('9-225');" >
+<input id="comm9-225" type="text" class="command" style="width: 41em;" value="q : Quaternion Polynomial Integer := quatern(q1, qi, qj, qk) " />
+</form>
+<span id="commSav9-225" class="commSav" >q : Quaternion Polynomial Integer := quatern(q1, qi, qj, qk) </span>
+<div id="mathAns9-225" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>q1</mi><mo>+</mo><mrow><mi>qi</mi><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mi>qj</mi><mspace width="0.5 em" /><mi>j</mi></mrow><mo>+</mo><mrow><mi>qk</mi><mspace width="0.5 em" /><mi>k</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-226" class="spadComm" >
+<form id="formComm9-226" action="javascript:makeRequest('9-226');" >
+<input id="comm9-226" type="text" class="command" style="width: 38em;" value="E : Octonion Polynomial Integer:= octon(0,0,0,0,1,0,0,0) " />
+</form>
+<span id="commSav9-226" class="commSav" >E : Octonion Polynomial Integer:= octon(0,0,0,0,1,0,0,0) </span>
+<div id="mathAns9-226" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>E</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Polynomial Integer
+</div>
+
+
+
+<p>Note that quaternions are automatically converted to octonions in the
+obvious way.
+</p>
+
+
+
+
+<div id="spadComm9-227" class="spadComm" >
+<form id="formComm9-227" action="javascript:makeRequest('9-227');" >
+<input id="comm9-227" type="text" class="command" style="width: 4em;" value="q * E " />
+</form>
+<span id="commSav9-227" class="commSav" >q * E </span>
+<div id="mathAns9-227" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>q1</mi><mspace width="0.5 em" /><mi>E</mi></mrow><mo>+</mo><mrow><mi>qi</mi><mspace width="0.5 em" /><mi>I</mi></mrow><mo>+</mo><mrow><mi>qj</mi><mspace width="0.5 em" /><mi>J</mi></mrow><mo>+</mo><mrow><mi>qk</mi><mspace width="0.5 em" /><mi>K</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-228" class="spadComm" >
+<form id="formComm9-228" action="javascript:makeRequest('9-228');" >
+<input id="comm9-228" type="text" class="command" style="width: 4em;" value="E * q " />
+</form>
+<span id="commSav9-228" class="commSav" >E * q </span>
+<div id="mathAns9-228" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>q1</mi><mspace width="0.5 em" /><mi>E</mi></mrow><mo>-</mo><mrow><mi>qi</mi><mspace width="0.5 em" /><mi>I</mi></mrow><mo>-</mo><mrow><mi>qj</mi><mspace width="0.5 em" /><mi>J</mi></mrow><mo>-</mo><mrow><mi>qk</mi><mspace width="0.5 em" /><mi>K</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-229" class="spadComm" >
+<form id="formComm9-229" action="javascript:makeRequest('9-229');" >
+<input id="comm9-229" type="text" class="command" style="width: 24em;" value="q * 1$(Octonion Polynomial Integer) " />
+</form>
+<span id="commSav9-229" class="commSav" >q * 1$(Octonion Polynomial Integer) </span>
+<div id="mathAns9-229" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>q1</mi><mo>+</mo><mrow><mi>qi</mi><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mi>qj</mi><mspace width="0.5 em" /><mi>j</mi></mrow><mo>+</mo><mrow><mi>qk</mi><mspace width="0.5 em" /><mi>k</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-230" class="spadComm" >
+<form id="formComm9-230" action="javascript:makeRequest('9-230');" >
+<input id="comm9-230" type="text" class="command" style="width: 24em;" value="1$(Octonion Polynomial Integer) * q " />
+</form>
+<span id="commSav9-230" class="commSav" >1$(Octonion Polynomial Integer) * q </span>
+<div id="mathAns9-230" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>q1</mi><mo>+</mo><mrow><mi>qi</mi><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mi>qj</mi><mspace width="0.5 em" /><mi>j</mi></mrow><mo>+</mo><mrow><mi>qk</mi><mspace width="0.5 em" /><mi>k</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Polynomial Integer
+</div>
+
+
+
+<p>Finally, we check that the <span class="spadfunFrom" >norm</span><span class="index">norm</span><a name="chapter-9-126"/><span class="index">Octonion</span><a name="chapter-9-127"/>, defined as
+the sum of the squares of the coefficients, is a multiplicative map.
+</p>
+
+
+
+
+<div id="spadComm9-231" class="spadComm" >
+<form id="formComm9-231" action="javascript:makeRequest('9-231');" >
+<input id="comm9-231" type="text" class="command" style="width: 49em;" value="o : Octonion Polynomial Integer := octon(o1, oi, oj, ok, oE, oI, oJ, oK) " />
+</form>
+<span id="commSav9-231" class="commSav" >o : Octonion Polynomial Integer := octon(o1, oi, oj, ok, oE, oI, oJ, oK) </span>
+<div id="mathAns9-231" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>o1</mi><mo>+</mo><mrow><mi>oi</mi><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mi>oj</mi><mspace width="0.5 em" /><mi>j</mi></mrow><mo>+</mo><mrow><mi>ok</mi><mspace width="0.5 em" /><mi>k</mi></mrow><mo>+</mo><mrow><mi>oE</mi><mspace width="0.5 em" /><mi>E</mi></mrow><mo>+</mo><mrow><mi>oI</mi><mspace width="0.5 em" /><mi>I</mi></mrow><mo>+</mo><mrow><mi>oJ</mi><mspace width="0.5 em" /><mi>J</mi></mrow><mo>+</mo><mrow><mi>oK</mi><mspace width="0.5 em" /><mi>K</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-232" class="spadComm" >
+<form id="formComm9-232" action="javascript:makeRequest('9-232');" >
+<input id="comm9-232" type="text" class="command" style="width: 5em;" value="norm o " />
+</form>
+<span id="commSav9-232" class="commSav" >norm o </span>
+<div id="mathAns9-232" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>ok</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>oj</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>oi</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>oK</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>oJ</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>oI</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>oE</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><msup><mi>o1</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-233" class="spadComm" >
+<form id="formComm9-233" action="javascript:makeRequest('9-233');" >
+<input id="comm9-233" type="text" class="command" style="width: 49em;" value="p : Octonion Polynomial Integer := octon(p1, pi, pj, pk, pE, pI, pJ, pK) " />
+</form>
+<span id="commSav9-233" class="commSav" >p : Octonion Polynomial Integer := octon(p1, pi, pj, pk, pE, pI, pJ, pK) </span>
+<div id="mathAns9-233" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>p1</mi><mo>+</mo><mrow><mi>pi</mi><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mi>pj</mi><mspace width="0.5 em" /><mi>j</mi></mrow><mo>+</mo><mrow><mi>pk</mi><mspace width="0.5 em" /><mi>k</mi></mrow><mo>+</mo><mrow><mi>pE</mi><mspace width="0.5 em" /><mi>E</mi></mrow><mo>+</mo><mrow><mi>pI</mi><mspace width="0.5 em" /><mi>I</mi></mrow><mo>+</mo><mrow><mi>pJ</mi><mspace width="0.5 em" /><mi>J</mi></mrow><mo>+</mo><mrow><mi>pK</mi><mspace width="0.5 em" /><mi>K</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Octonion Polynomial Integer
+</div>
+
+
+
+<p>Since the result is <span class="teletype">0</span>, the norm is multiplicative.
+</p>
+
+
+
+
+<div id="spadComm9-234" class="spadComm" >
+<form id="formComm9-234" action="javascript:makeRequest('9-234');" >
+<input id="comm9-234" type="text" class="command" style="width: 18em;" value="norm(o*p)-norm(p)*norm(o) " />
+</form>
+<span id="commSav9-234" class="commSav" >norm(o*p)-norm(p)*norm(o) </span>
+<div id="mathAns9-234" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.55.xhtml" style="margin-right: 10px;">Previous Section 9.55 None</a><a href="section-9.57.xhtml" style="margin-right: 10px;">Next Section 9.57 OneDimensionalArray</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.57.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.57.xhtml
new file mode 100644
index 0000000..92851c9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.57.xhtml
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.57</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.56.xhtml" style="margin-right: 10px;">Previous Section 9.56 Octonion</a><a href="section-9.58.xhtml" style="margin-right: 10px;">Next Section 9.58  Operator</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.57">
+<h2 class="sectiontitle">9.57  OneDimensionalArray</h2>
+
+
+<a name="OneDimensionalArrayXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">OneDimensionalArray</span> domain is used for storing data in a
+one-dimensional indexed data structure.  Such an array is a
+homogeneous data structure in that all the entries of the array must
+belong to the same Axiom domain.  Each array has a fixed length
+specified by the user and arrays are not extensible.  The indexing of
+one-dimensional arrays is one-based.  This means that the ``first''
+element of an array is given the index <span class="teletype">1</span>.  See also
+<a href="section-9.85.xhtml#VectorXmpPage" class="ref" >VectorXmpPage</a>  and 
+<a href="section-9.26.xhtml#FlexibleArrayXmpPage" class="ref" >FlexibleArrayXmpPage</a> .
+</p>
+
+
+<p>To create a one-dimensional array, apply the operation 
+<span class="teletype">oneDimensionalArray</span> to a list.
+</p>
+
+
+
+
+<div id="spadComm9-235" class="spadComm" >
+<form id="formComm9-235" action="javascript:makeRequest('9-235');" >
+<input id="comm9-235" type="text" class="command" style="width: 28em;" value="oneDimensionalArray [i**2 for i in 1..10]" />
+</form>
+<span id="commSav9-235" class="commSav" >oneDimensionalArray [i**2 for i in 1..10]</span>
+<div id="mathAns9-235" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>100</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray PositiveInteger
+</div>
+
+
+
+<p>Another approach is to first create <span class="teletype">a</span>, a one-dimensional array
+of 10 <span class="teletype">0</span>'s.  <span class="teletype">OneDimensionalArray</span> has the convenient
+abbreviation <span class="teletype">ARRAY1</span>.
+</p>
+
+
+
+
+<div id="spadComm9-236" class="spadComm" >
+<form id="formComm9-236" action="javascript:makeRequest('9-236');" >
+<input id="comm9-236" type="text" class="command" style="width: 18em;" value="a : ARRAY1 INT := new(10,0)" />
+</form>
+<span id="commSav9-236" class="commSav" >a : ARRAY1 INT := new(10,0)</span>
+<div id="mathAns9-236" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Integer
+</div>
+
+
+
+<p>Set each <span class="teletype">i</span>th element to i, then display the result.
+</p>
+
+
+
+
+<div id="spadComm9-237" class="spadComm" >
+<form id="formComm9-237" action="javascript:makeRequest('9-237');" >
+<input id="comm9-237" type="text" class="command" style="width: 22em;" value="for i in 1..10 repeat a.i := i; a" />
+</form>
+<span id="commSav9-237" class="commSav" >for i in 1..10 repeat a.i := i; a</span>
+<div id="mathAns9-237" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Integer
+</div>
+
+
+
+<p>Square each element by mapping the function  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>i</mi><mo>&#x21a6;</mo><msup><mi>i</mi><mn>2</mn></msup></mrow></mstyle></math> onto each
+element.
+</p>
+
+
+
+
+<div id="spadComm9-238" class="spadComm" >
+<form id="formComm9-238" action="javascript:makeRequest('9-238');" >
+<input id="comm9-238" type="text" class="command" style="width: 16em;" value="map!(i +-> i ** 2,a); a" />
+</form>
+<span id="commSav9-238" class="commSav" >map!(i +-> i ** 2,a); a</span>
+<div id="mathAns9-238" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>100</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Integer
+</div>
+
+
+
+<p>Reverse the elements in place.
+</p>
+
+
+
+
+<div id="spadComm9-239" class="spadComm" >
+<form id="formComm9-239" action="javascript:makeRequest('9-239');" >
+<input id="comm9-239" type="text" class="command" style="width: 7em;" value="reverse! a" />
+</form>
+<span id="commSav9-239" class="commSav" >reverse! a</span>
+<div id="mathAns9-239" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>100</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Integer
+</div>
+
+
+
+<p>Swap the <span class="teletype">4</span>th and <span class="teletype">5</span>th element.
+</p>
+
+
+
+
+<div id="spadComm9-240" class="spadComm" >
+<form id="formComm9-240" action="javascript:makeRequest('9-240');" >
+<input id="comm9-240" type="text" class="command" style="width: 10em;" value="swap!(a,4,5); a" />
+</form>
+<span id="commSav9-240" class="commSav" >swap!(a,4,5); a</span>
+<div id="mathAns9-240" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>100</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Integer
+</div>
+
+
+
+<p>Sort the elements in place.
+</p>
+
+
+
+
+<div id="spadComm9-241" class="spadComm" >
+<form id="formComm9-241" action="javascript:makeRequest('9-241');" >
+<input id="comm9-241" type="text" class="command" style="width: 6em;" value="sort! a " />
+</form>
+<span id="commSav9-241" class="commSav" >sort! a </span>
+<div id="mathAns9-241" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>100</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Integer
+</div>
+
+
+
+<p>Create a new one-dimensional array <span class="teletype">b</span> containing the last 5
+elements of <span class="teletype">a</span>.
+</p>
+
+
+
+
+<div id="spadComm9-242" class="spadComm" >
+<form id="formComm9-242" action="javascript:makeRequest('9-242');" >
+<input id="comm9-242" type="text" class="command" style="width: 9em;" value="b := a(6..10)" />
+</form>
+<span id="commSav9-242" class="commSav" >b := a(6..10)</span>
+<div id="mathAns9-242" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>36</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>100</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Integer
+</div>
+
+
+
+<p>Replace the first 5 elements of <span class="teletype">a</span> with those of <span class="teletype">b</span>.
+</p>
+
+
+
+
+<div id="spadComm9-243" class="spadComm" >
+<form id="formComm9-243" action="javascript:makeRequest('9-243');" >
+<input id="comm9-243" type="text" class="command" style="width: 11em;" value="copyInto!(a,b,1)" />
+</form>
+<span id="commSav9-243" class="commSav" >copyInto!(a,b,1)</span>
+<div id="mathAns9-243" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>36</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>100</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>100</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.56.xhtml" style="margin-right: 10px;">Previous Section 9.56 Octonion</a><a href="section-9.58.xhtml" style="margin-right: 10px;">Next Section 9.58  Operator</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.58.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.58.xhtml
new file mode 100644
index 0000000..7f51c45
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.58.xhtml
@@ -0,0 +1,704 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.58</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.57.xhtml" style="margin-right: 10px;">Previous Section 9.57  OneDimensionalArray</a><a href="section-9.59.xhtml" style="margin-right: 10px;">Next Section 9.59 OrderedVariableList</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.58">
+<h2 class="sectiontitle">9.58  Operator</h2>
+
+
+<a name="OperatorXmpPage" class="label"/>
+
+
+<p>Given any ring <span class="teletype">R</span>, the ring of the <span class="teletype">Integer</span>-linear operators
+over <span class="teletype">R</span> is called <span class="teletype">Operator(R)</span>.  To create an operator over
+<span class="teletype">R</span>, first create a basic operator using the operation 
+<span class="teletype">operator</span>, and then convert it to <span class="teletype">Operator(R)</span> for the <span class="teletype">R</span>
+you want.
+</p>
+
+
+<p>We choose <span class="teletype">R</span> to be the two by two matrices over the integers.
+</p>
+
+
+
+
+<div id="spadComm9-1" class="spadComm" >
+<form id="formComm9-1" action="javascript:makeRequest('9-1');" >
+<input id="comm9-1" type="text" class="command" style="width: 14em;" value="R := SQMATRIX(2, INT)" />
+</form>
+<span id="commSav9-1" class="commSav" >R := SQMATRIX(2, INT)</span>
+<div id="mathAns9-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>SquareMatrix</mi><mo>(</mo><mn>2</mn><mo>,</mo><mi>Integer</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Create the operator <span class="teletype">tilde</span> on <span class="teletype">R</span>.
+</p>
+
+
+
+
+<div id="spadComm9-2" class="spadComm" >
+<form id="formComm9-2" action="javascript:makeRequest('9-2');" >
+<input id="comm9-2" type="text" class="command" style="width: 22em;" value='t := operator("tilde") :: OP(R) ' />
+</form>
+<span id="commSav9-2" class="commSav" >t := operator("tilde") :: OP(R) </span>
+<div id="mathAns9-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>tilde</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Operator SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>Since <span class="teletype">Operator</span> is unexposed we must either package-call operations
+from it, or expose it explicitly.  For convenience we will do the latter.
+</p>
+
+
+<p>Expose <span class="teletype">Operator</span>.
+</p>
+
+
+
+
+<div id="spadComm9-3" class="spadComm" >
+<form id="formComm9-3" action="javascript:makeRequest('9-3');" >
+<input id="comm9-3" type="text" class="command" style="width: 25em;" value=")set expose add constructor Operator " />
+</form>
+<span id="commSav9-3" class="commSav" >)set expose add constructor Operator </span>
+<div id="mathAns9-3" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Operator&nbsp;is&nbsp;now&nbsp;explicitly&nbsp;exposed&nbsp;in&nbsp;frame&nbsp;G82322&nbsp;<br />
+</div>
+
+
+
+<p>To attach an evaluation function (from <span class="teletype">R</span> to <span class="teletype">R</span>) to an
+operator over <span class="teletype">R</span>, use <span class="teletype">evaluate(op, f)</span> where <span class="teletype">op</span> is an
+operator over <span class="teletype">R</span> and <span class="teletype">f</span> is a function <span class="teletype">R -> R</span>.  This
+needs to be done only once when the operator is defined.  Note that
+<span class="teletype">f</span> must be <span class="teletype">Integer</span>-linear (that is, 
+<span class="teletype">f(ax+y) = a f(x) + f(y)</span> for any integer <span class="teletype">a</span>, and any <span class="teletype">x</span> 
+and <span class="teletype">y</span> in <span class="teletype">R</span>).
+</p>
+
+
+<p>We now attach the transpose map to the above operator <span class="teletype">t</span>.
+</p>
+
+
+
+
+<div id="spadComm9-4" class="spadComm" >
+<form id="formComm9-4" action="javascript:makeRequest('9-4');" >
+<input id="comm9-4" type="text" class="command" style="width: 20em;" value="evaluate(t, m +-> transpose m)" />
+</form>
+<span id="commSav9-4" class="commSav" >evaluate(t, m +-> transpose m)</span>
+<div id="mathAns9-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>tilde</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Operator SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>Operators can be manipulated formally as in any ring: <span class="teletype">+</span> is
+the pointwise addition and <span class="teletype">*</span> is composition.  Any element
+<span class="teletype">x</span> of <span class="teletype">R</span> can be converted to an operator 
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mi>x</mi></msub></mrow></mstyle></math> over <span class="teletype">R</span>, and the evaluation function of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>op</mi><mi>x</mi></msub></mrow></mstyle></math> is left-multiplication by <span class="teletype">x</span>.
+</p>
+
+
+<p>Multiplying on the left by this matrix swaps the two rows.
+</p>
+
+
+
+
+<div id="spadComm9-5" class="spadComm" >
+<form id="formComm9-5" action="javascript:makeRequest('9-5');" >
+<input id="comm9-5" type="text" class="command" style="width: 23em;" value="s : R := matrix [ [0, 1], [1, 0] ]" />
+</form>
+<span id="commSav9-5" class="commSav" >s : R := matrix [ [0, 1], [1, 0] ]</span>
+<div id="mathAns9-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>Can you guess what is the action of the following operator?
+</p>
+
+
+
+
+<div id="spadComm9-6" class="spadComm" >
+<form id="formComm9-6" action="javascript:makeRequest('9-6');" >
+<input id="comm9-6" type="text" class="command" style="width: 8em;" value="rho := t * s" />
+</form>
+<span id="commSav9-6" class="commSav" >rho := t * s</span>
+<div id="mathAns9-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>tilde</mi><mspace width="0.5 em" /><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Operator SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>Hint: applying <span class="teletype">rho</span> four times gives the identity, so
+<span class="teletype">rho**4-1</span> should return 0 when applied to any two by two matrix.
+</p>
+
+
+
+
+<div id="spadComm9-7" class="spadComm" >
+<form id="formComm9-7" action="javascript:makeRequest('9-7');" >
+<input id="comm9-7" type="text" class="command" style="width: 10em;" value="z := rho**4 - 1" />
+</form>
+<span id="commSav9-7" class="commSav" >z := rho**4 - 1</span>
+<div id="mathAns9-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>1</mn><mo>+</mo><mrow><mi>tilde</mi><mspace width="0.5 em" /><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>tilde</mi><mspace width="0.5 em" /><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>tilde</mi><mspace width="0.5 em" /><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>tilde</mi><mspace width="0.5 em" /><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Operator SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>Now check with this matrix.
+</p>
+
+
+
+
+<div id="spadComm9-8" class="spadComm" >
+<form id="formComm9-8" action="javascript:makeRequest('9-8');" >
+<input id="comm9-8" type="text" class="command" style="width: 22em;" value="m:R := matrix [ [1, 2], [3, 4] ]" />
+</form>
+<span id="commSav9-8" class="commSav" >m:R := matrix [ [1, 2], [3, 4] ]</span>
+<div id="mathAns9-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mn>4</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-9" class="spadComm" >
+<form id="formComm9-9" action="javascript:makeRequest('9-9');" >
+<input id="comm9-9" type="text" class="command" style="width: 2em;" value="z m" />
+</form>
+<span id="commSav9-9" class="commSav" >z m</span>
+<div id="mathAns9-9" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>As you have probably guessed by now, <span class="teletype">rho</span> acts on matrices
+by rotating the elements clockwise.
+</p>
+
+
+
+
+<div id="spadComm9-10" class="spadComm" >
+<form id="formComm9-10" action="javascript:makeRequest('9-10');" >
+<input id="comm9-10" type="text" class="command" style="width: 4em;" value="rho m" />
+</form>
+<span id="commSav9-10" class="commSav" >rho m</span>
+<div id="mathAns9-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>3</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>2</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-11" class="spadComm" >
+<form id="formComm9-11" action="javascript:makeRequest('9-11');" >
+<input id="comm9-11" type="text" class="command" style="width: 6em;" value="rho rho m" />
+</form>
+<span id="commSav9-11" class="commSav" >rho rho m</span>
+<div id="mathAns9-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>4</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-12" class="spadComm" >
+<form id="formComm9-12" action="javascript:makeRequest('9-12');" >
+<input id="comm9-12" type="text" class="command" style="width: 7em;" value="(rho**3) m" />
+</form>
+<span id="commSav9-12" class="commSav" >(rho**3) m</span>
+<div id="mathAns9-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>Do the swapping of rows and transposition commute?  We can check by
+computing their bracket.
+</p>
+
+
+
+
+<div id="spadComm9-13" class="spadComm" >
+<form id="formComm9-13" action="javascript:makeRequest('9-13');" >
+<input id="comm9-13" type="text" class="command" style="width: 12em;" value="b := t * s - s * t" />
+</form>
+<span id="commSav9-13" class="commSav" >b := t * s - s * t</span>
+<div id="mathAns9-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>tilde</mi></mrow><mo>+</mo><mrow><mi>tilde</mi><mspace width="0.5 em" /><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Operator SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>Now apply it to <span class="teletype">m</span>.
+</p>
+
+
+
+
+<div id="spadComm9-14" class="spadComm" >
+<form id="formComm9-14" action="javascript:makeRequest('9-14');" >
+<input id="comm9-14" type="text" class="command" style="width: 3em;" value="b m " />
+</form>
+<span id="commSav9-14" class="commSav" >b m </span>
+<div id="mathAns9-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>3</mn></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+<p> 
+Next we demonstrate how to define a differential operator on a
+polynomial ring.
+</p>
+
+
+<p>This is the recursive definition of the <span class="teletype">n</span>-th Legendre polynomial.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+L&nbsp;n&nbsp;==<br />
+&nbsp;&nbsp;n&nbsp;=&nbsp;0&nbsp;=&gt;&nbsp;1<br />
+&nbsp;&nbsp;n&nbsp;=&nbsp;1&nbsp;=&gt;&nbsp;x<br />
+&nbsp;&nbsp;(2*n-1)/n&nbsp;*&nbsp;x&nbsp;*&nbsp;L(n-1)&nbsp;-&nbsp;(n-1)/n&nbsp;*&nbsp;L(n-2)<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>Create the differential operator  <math xmlns="&mathml;" mathsize="big"><mstyle><mfrac><mi>d</mi><mi>dx</mi></mfrac></mstyle></math> on polynomials in <span class="teletype">x</span> 
+over the rational numbers.
+</p>
+
+
+
+
+<div id="spadComm9-15" class="spadComm" >
+<form id="formComm9-15" action="javascript:makeRequest('9-15');" >
+<input id="comm9-15" type="text" class="command" style="width: 28em;" value='dx := operator("D") :: OP(POLY FRAC INT) ' />
+</form>
+<span id="commSav9-15" class="commSav" >dx := operator("D") :: OP(POLY FRAC INT) </span>
+<div id="mathAns9-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>D</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Operator Polynomial Fraction Integer
+</div>
+
+
+
+<p>Now attach the map to it.
+</p>
+
+
+
+
+<div id="spadComm9-16" class="spadComm" >
+<form id="formComm9-16" action="javascript:makeRequest('9-16');" >
+<input id="comm9-16" type="text" class="command" style="width: 20em;" value="evaluate(dx, p +-> D(p, 'x)) " />
+</form>
+<span id="commSav9-16" class="commSav" >evaluate(dx, p +-> D(p, 'x)) </span>
+<div id="mathAns9-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>D</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Operator Polynomial Fraction Integer
+</div>
+
+
+
+<p>This is the differential equation satisfied by the <span class="teletype">n</span>-th
+Legendre polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-17" class="spadComm" >
+<form id="formComm9-17" action="javascript:makeRequest('9-17');" >
+<input id="comm9-17" type="text" class="command" style="width: 33em;" value="E n == (1 - x**2) * dx**2 - 2 * x * dx + n*(n+1) " />
+</form>
+<span id="commSav9-17" class="commSav" >E n == (1 - x**2) * dx**2 - 2 * x * dx + n*(n+1) </span>
+<div id="mathAns9-17" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>Now we verify this for <span class="teletype">n = 15</span>.  Here is the polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-18" class="spadComm" >
+<form id="formComm9-18" action="javascript:makeRequest('9-18');" >
+<input id="comm9-18" type="text" class="command" style="width: 4em;" value="L 15 " />
+</form>
+<span id="commSav9-18" class="commSav" >L 15 </span>
+<div id="mathAns9-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mfrac><mn>9694845</mn><mn>2048</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>35102025</mn><mn>2048</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>50702925</mn><mn>2048</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>37182145</mn><mn>2048</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>14549535</mn><mn>2048</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2909907</mn><mn>2048</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>255255</mn><mn>2048</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6435</mn><mn>2048</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+<p>Here is the operator.
+</p>
+
+
+
+
+<div id="spadComm9-19" class="spadComm" >
+<form id="formComm9-19" action="javascript:makeRequest('9-19');" >
+<input id="comm9-19" type="text" class="command" style="width: 4em;" value="E 15 " />
+</form>
+<span id="commSav9-19" class="commSav" >E 15 </span>
+<div id="mathAns9-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>240</mn><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>D</mi></mrow><mo>-</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>D</mi><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Operator Polynomial Fraction Integer
+</div>
+
+
+
+<p>Here is the evaluation.
+</p>
+
+
+
+
+<div id="spadComm9-20" class="spadComm" >
+<form id="formComm9-20" action="javascript:makeRequest('9-20');" >
+<input id="comm9-20" type="text" class="command" style="width: 9em;" value="(E 15)(L 15) " />
+</form>
+<span id="commSav9-20" class="commSav" >(E 15)(L 15) </span>
+<div id="mathAns9-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.57.xhtml" style="margin-right: 10px;">Previous Section 9.57  OneDimensionalArray</a><a href="section-9.59.xhtml" style="margin-right: 10px;">Next Section 9.59 OrderedVariableList</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.59.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.59.xhtml
new file mode 100644
index 0000000..7bf1ed2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.59.xhtml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.59</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.58.xhtml" style="margin-right: 10px;">Previous Section 9.58 Operator</a><a href="section-9.60.xhtml" style="margin-right: 10px;">Next Section 9.60 OrderlyDifferentialPolynomial</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.59">
+<h2 class="sectiontitle">9.59  OrderedVariableList</h2>
+
+
+<a name="OrderedVariableListXmpPage" class="label"/>
+
+
+<p>The domain <span class="teletype">OrderedVariableList</span> provides symbols which are
+restricted to a particular list and have a definite ordering. Those
+two features are specified by a <span class="teletype">List Symbol</span> object that is the
+argument to the domain.
+</p>
+
+
+<p>This is a sample ordering of three symbols.
+</p>
+
+
+
+
+<div id="spadComm9-21" class="spadComm" >
+<form id="formComm9-21" action="javascript:makeRequest('9-21');" >
+<input id="comm9-21" type="text" class="command" style="width: 18em;" value="ls:List Symbol:=['x,'a,'z] " />
+</form>
+<span id="commSav9-21" class="commSav" >ls:List Symbol:=['x,'a,'z] </span>
+<div id="mathAns9-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>a</mi><mo>,</mo><mi>z</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>Let's build the domain
+</p>
+
+
+
+
+<div id="spadComm9-22" class="spadComm" >
+<form id="formComm9-22" action="javascript:makeRequest('9-22');" >
+<input id="comm9-22" type="text" class="command" style="width: 8em;" value="Z:=OVAR ls  " />
+</form>
+<span id="commSav9-22" class="commSav" >Z:=OVAR ls  </span>
+<div id="mathAns9-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedVariableList[x,a,z]</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>How many variables does it have?
+</p>
+
+
+
+
+<div id="spadComm9-23" class="spadComm" >
+<form id="formComm9-23" action="javascript:makeRequest('9-23');" >
+<input id="comm9-23" type="text" class="command" style="width: 6em;" value="size()$Z " />
+</form>
+<span id="commSav9-23" class="commSav" >size()$Z </span>
+<div id="mathAns9-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>They are (in the imposed order)
+</p>
+
+
+
+
+<div id="spadComm9-24" class="spadComm" >
+<form id="formComm9-24" action="javascript:makeRequest('9-24');" >
+<input id="comm9-24" type="text" class="command" style="width: 28em;" value="lv:=[index(i::PI)$Z for i in 1..size()$Z] " />
+</form>
+<span id="commSav9-24" class="commSav" >lv:=[index(i::PI)$Z for i in 1..size()$Z] </span>
+<div id="mathAns9-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>a</mi><mo>,</mo><mi>z</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List OrderedVariableList [x,a,z]
+</div>
+
+
+
+<p>Check that the ordering is right
+</p>
+
+
+
+
+<div id="spadComm9-25" class="spadComm" >
+<form id="formComm9-25" action="javascript:makeRequest('9-25');" >
+<input id="comm9-25" type="text" class="command" style="width: 10em;" value="sorted?(>,lv) " />
+</form>
+<span id="commSav9-25" class="commSav" >sorted?(>,lv) </span>
+<div id="mathAns9-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.58.xhtml" style="margin-right: 10px;">Previous Section 9.58 Operator</a><a href="section-9.60.xhtml" style="margin-right: 10px;">Next Section 9.60 OrderlyDifferentialPolynomial</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.6.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.6.xhtml
new file mode 100644
index 0000000..7dc30f2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.6.xhtml
@@ -0,0 +1,678 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.6</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.5.xhtml" style="margin-right: 10px;">Previous Section 9.5 BinarySearchTree</a><a href="section-9.7.xhtml" style="margin-right: 10px;">Next Section 9.7 CartesianTensor</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.6">
+<h2 class="sectiontitle">9.6  CardinalNumber</h2>
+
+
+<a name="CardinalNumberXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">CardinalNumber</span> domain can be used for values indicating the
+cardinality of sets, both finite and infinite.  For example, the
+<span class="spadfunFrom" >dimension</span><span class="index">dimension</span><a name="chapter-9-23"/><span class="index">VectorSpace</span><a name="chapter-9-24"/> operation in the category 
+<span class="teletype">VectorSpace</span> returns a cardinal number.
+</p>
+
+
+<p>The non-negative integers have a natural construction as cardinals
+</p>
+
+
+
+<div class="verbatim"><br />
+0&nbsp;=&nbsp;#{&nbsp;},&nbsp;1&nbsp;=&nbsp;{0},&nbsp;2&nbsp;=&nbsp;{0,&nbsp;1},&nbsp;...,&nbsp;n&nbsp;=&nbsp;{i&nbsp;|&nbsp;0&nbsp;&lt;=&nbsp;i&nbsp;&lt;&nbsp;n}.<br />
+</div>
+
+
+
+<p>The fact that <span class="teletype">0</span> acts as a zero for the multiplication of cardinals is
+equivalent to the axiom of choice.
+</p>
+
+
+<p>Cardinal numbers can be created by conversion from non-negative integers.
+</p>
+
+
+
+
+<div id="spadComm9-57" class="spadComm" >
+<form id="formComm9-57" action="javascript:makeRequest('9-57');" >
+<input id="comm9-57" type="text" class="command" style="width: 17em;" value="c0 := 0 :: CardinalNumber" />
+</form>
+<span id="commSav9-57" class="commSav" >c0 := 0 :: CardinalNumber</span>
+<div id="mathAns9-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CardinalNumber
+</div>
+
+
+
+
+
+<div id="spadComm9-58" class="spadComm" >
+<form id="formComm9-58" action="javascript:makeRequest('9-58');" >
+<input id="comm9-58" type="text" class="command" style="width: 17em;" value="c1 := 1 :: CardinalNumber" />
+</form>
+<span id="commSav9-58" class="commSav" >c1 := 1 :: CardinalNumber</span>
+<div id="mathAns9-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CardinalNumber
+</div>
+
+
+
+
+
+<div id="spadComm9-59" class="spadComm" >
+<form id="formComm9-59" action="javascript:makeRequest('9-59');" >
+<input id="comm9-59" type="text" class="command" style="width: 17em;" value="c2 := 2 :: CardinalNumber" />
+</form>
+<span id="commSav9-59" class="commSav" >c2 := 2 :: CardinalNumber</span>
+<div id="mathAns9-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CardinalNumber
+</div>
+
+
+
+
+
+<div id="spadComm9-60" class="spadComm" >
+<form id="formComm9-60" action="javascript:makeRequest('9-60');" >
+<input id="comm9-60" type="text" class="command" style="width: 17em;" value="c3 := 3 :: CardinalNumber" />
+</form>
+<span id="commSav9-60" class="commSav" >c3 := 3 :: CardinalNumber</span>
+<div id="mathAns9-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CardinalNumber
+</div>
+
+
+
+<p>They can also be obtained as the named cardinal <span class="teletype">Aleph(n)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-61" class="spadComm" >
+<form id="formComm9-61" action="javascript:makeRequest('9-61');" >
+<input id="comm9-61" type="text" class="command" style="width: 9em;" value="A0 := Aleph 0" />
+</form>
+<span id="commSav9-61" class="commSav" >A0 := Aleph 0</span>
+<div id="mathAns9-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>Aleph</mi><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CardinalNumber
+</div>
+
+
+
+
+
+<div id="spadComm9-62" class="spadComm" >
+<form id="formComm9-62" action="javascript:makeRequest('9-62');" >
+<input id="comm9-62" type="text" class="command" style="width: 9em;" value="A1 := Aleph 1" />
+</form>
+<span id="commSav9-62" class="commSav" >A1 := Aleph 1</span>
+<div id="mathAns9-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CardinalNumber
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >finite?</span><span class="index">finite?</span><a name="chapter-9-25"/><span class="index">CardinalNumber</span><a name="chapter-9-26"/> operation tests whether a
+value is a finite cardinal, that is, a non-negative integer.
+</p>
+
+
+
+
+<div id="spadComm9-63" class="spadComm" >
+<form id="formComm9-63" action="javascript:makeRequest('9-63');" >
+<input id="comm9-63" type="text" class="command" style="width: 7em;" value="finite? c2" />
+</form>
+<span id="commSav9-63" class="commSav" >finite? c2</span>
+<div id="mathAns9-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-64" class="spadComm" >
+<form id="formComm9-64" action="javascript:makeRequest('9-64');" >
+<input id="comm9-64" type="text" class="command" style="width: 7em;" value="finite? A0" />
+</form>
+<span id="commSav9-64" class="commSav" >finite? A0</span>
+<div id="mathAns9-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Similarly, the <span class="spadfunFrom" >countable?</span><span class="index">countable?</span><a name="chapter-9-27"/><span class="index">CardinalNumber</span><a name="chapter-9-28"/>
+operation determines whether a value is
+a countable cardinal, that is, finite or <span class="teletype">Aleph(0)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-65" class="spadComm" >
+<form id="formComm9-65" action="javascript:makeRequest('9-65');" >
+<input id="comm9-65" type="text" class="command" style="width: 9em;" value="countable? c2" />
+</form>
+<span id="commSav9-65" class="commSav" >countable? c2</span>
+<div id="mathAns9-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-66" class="spadComm" >
+<form id="formComm9-66" action="javascript:makeRequest('9-66');" >
+<input id="comm9-66" type="text" class="command" style="width: 9em;" value="countable? A0" />
+</form>
+<span id="commSav9-66" class="commSav" >countable? A0</span>
+<div id="mathAns9-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-67" class="spadComm" >
+<form id="formComm9-67" action="javascript:makeRequest('9-67');" >
+<input id="comm9-67" type="text" class="command" style="width: 9em;" value="countable? A1" />
+</form>
+<span id="commSav9-67" class="commSav" >countable? A1</span>
+<div id="mathAns9-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Arithmetic operations are defined on cardinal numbers as follows:
+If <span class="teletype">x =  #X</span>  and  <span class="teletype">y =  #Y</span> then
+</p>
+
+
+
+<p> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext mathvariant='monospace'>x+y= #(X+Y)</mtext></mrow></mtd><mtd><mi>cardinality</mi><mi>of</mi><mi>the</mi><mi>disjoint</mi><mi>union</mi></mtd></mtr><mtr><mtd><mrow><mtext mathvariant='monospace'>x-y= #(X-Y)</mtext></mrow></mtd><mtd><mi>cardinality</mi><mi>of</mi><mi>the</mi><mi>relative</mi><mi>complement</mi></mtd></mtr><mtr><mtd><mrow><mtext mathvariant='monospace'>x*y= #(X*Y)</mtext></mrow></mtd><mtd><mi>cardinality</mi><mi>of</mi><mi>the</mi><mi>Cartesian</mi><mi>product</mi></mtd></mtr><mtr><mtd><mrow><mtext mathvariant='monospace'>x**y= #(X**Y)</mtext></mrow></mtd><mtd><mi>cardinality</mi><mi>of</mi><mi>the</mi><mi>set</mi><mi>of</mi><mi>maps</mi><mi>from</mi><mrow><mtext mathvariant='monospace'>Y</mtext></mrow><mi>to</mi><mrow><mtext mathvariant='monospace'>X</mtext></mrow></mtd></mtr><mtr><mtd></mtd></mtr></mtable></mrow></mstyle></math>
+</p>
+
+
+<p>Here are some arithmetic examples.
+</p>
+
+
+
+
+<div id="spadComm9-68" class="spadComm" >
+<form id="formComm9-68" action="javascript:makeRequest('9-68');" >
+<input id="comm9-68" type="text" class="command" style="width: 12em;" value="[c2 + c2, c2 + A1]" />
+</form>
+<span id="commSav9-68" class="commSav" >[c2 + c2, c2 + A1]</span>
+<div id="mathAns9-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List CardinalNumber
+</div>
+
+
+
+
+
+<div id="spadComm9-69" class="spadComm" >
+<form id="formComm9-69" action="javascript:makeRequest('9-69');" >
+<input id="comm9-69" type="text" class="command" style="width: 33em;" value="[c0*c2, c1*c2, c2*c2, c0*A1, c1*A1, c2*A1, A0*A1]" />
+</form>
+<span id="commSav9-69" class="commSav" >[c0*c2, c1*c2, c2*c2, c0*A1, c1*A1, c2*A1, A0*A1]</span>
+<div id="mathAns9-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>0</mn><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List CardinalNumber
+</div>
+
+
+
+
+
+<div id="spadComm9-70" class="spadComm" >
+<form id="formComm9-70" action="javascript:makeRequest('9-70');" >
+<input id="comm9-70" type="text" class="command" style="width: 32em;" value="[c2**c0, c2**c1, c2**c2, A1**c0, A1**c1, A1**c2]" />
+</form>
+<span id="commSav9-70" class="commSav" >[c2**c0, c2**c1, c2**c2, A1**c0, A1**c1, A1**c2]</span>
+<div id="mathAns9-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>1</mn><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List CardinalNumber
+</div>
+
+
+
+<p>Subtraction is a partial operation: it is not defined
+when subtracting a larger cardinal from a smaller one, nor
+when subtracting two equal infinite cardinals.
+</p>
+
+
+
+
+<div id="spadComm9-71" class="spadComm" >
+<form id="formComm9-71" action="javascript:makeRequest('9-71');" >
+<input id="comm9-71" type="text" class="command" style="width: 28em;" value="[c2-c1, c2-c2, c2-c3, A1-c2, A1-A0, A1-A1]" />
+</form>
+<span id="commSav9-71" class="commSav" >[c2-c1, c2-c2, c2-c3, A1-c2, A1-A0, A1-A1]</span>
+<div id="mathAns9-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Union(CardinalNumber,"failed")
+</div>
+
+
+
+<p>The generalized continuum hypothesis asserts that
+</p>
+
+
+
+<div class="verbatim"><br />
+2**Aleph&nbsp;i&nbsp;=&nbsp;Aleph(i+1)<br />
+</div>
+
+
+<p>and is independent of the axioms of set theory.  <span class="footnote">Goedel,
+<span class="italic">The consistency of the continuum hypothesis,</span>
+Ann. Math. Studies, Princeton Univ. Press, 1940.</span>
+</p>
+
+
+<p>The <span class="teletype">CardinalNumber</span> domain provides an operation to assert
+whether the hypothesis is to be assumed.
+</p>
+
+
+
+
+<div id="spadComm9-72" class="spadComm" >
+<form id="formComm9-72" action="javascript:makeRequest('9-72');" >
+<input id="comm9-72" type="text" class="command" style="width: 28em;" value="generalizedContinuumHypothesisAssumed true" />
+</form>
+<span id="commSav9-72" class="commSav" >generalizedContinuumHypothesisAssumed true</span>
+<div id="mathAns9-72" ></div>
+</div>
+
+
+
+<p>When the generalized continuum hypothesis
+is assumed, exponentiation to a transfinite power is allowed.
+</p>
+
+
+
+
+<div id="spadComm9-73" class="spadComm" >
+<form id="formComm9-73" action="javascript:makeRequest('9-73');" >
+<input id="comm9-73" type="text" class="command" style="width: 38em;" value="[c0**A0, c1**A0, c2**A0, A0**A0, A0**A1, A1**A0, A1**A1]" />
+</form>
+<span id="commSav9-73" class="commSav" >[c0**A0, c1**A0, c2**A0, A0**A0, A0**A1, A1**A0, A1**A1]</span>
+<div id="mathAns9-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><mrow><mi>Aleph</mi><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List CardinalNumber
+</div>
+
+
+
+<p>Three commonly encountered cardinal numbers are
+</p>
+
+
+
+<p> <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext mathvariant='monospace'>a</mtext></mrow><mo>=</mo><mrow><mtext mathvariant='monospace'> #</mtext></mrow><mrow><mtext style="fontweight: bold;">Z</mtext></mrow></mtd><mtd><mi>countable</mi><mi>infinity</mi></mtd></mtr><mtr><mtd><mrow><mtext mathvariant='monospace'>c</mtext></mrow><mo>=</mo><mrow><mtext mathvariant='monospace'> #</mtext></mrow><mrow><mtext style="fontweight: bold;">R</mtext></mrow></mtd><mtd><mi>the</mi><mi>continuum</mi></mtd></mtr><mtr><mtd><mrow><mtext mathvariant='monospace'>f</mtext></mrow><mo>=</mo><mrow><mtext mathvariant='monospace'> #</mtext></mrow><mo>{</mo><mi>g</mi><mo>|</mo><mi>g</mi><mo>:</mo><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>]</mo><mo>-</mo><mo>&gt;</mo><mrow><mtext style="fontweight: bold;">R</mtext></mrow><mo>}</mo></mtd></mtr><mtr><mtd></mtd></mtr></mtable></mrow></mstyle></math>
+</p>
+
+
+<p>In this domain, these values are obtained under the generalized
+continuum hypothesis in this way.
+</p>
+
+
+
+
+<div id="spadComm9-74" class="spadComm" >
+<form id="formComm9-74" action="javascript:makeRequest('9-74');" >
+<input id="comm9-74" type="text" class="command" style="width: 8em;" value="a := Aleph 0" />
+</form>
+<span id="commSav9-74" class="commSav" >a := Aleph 0</span>
+<div id="mathAns9-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>Aleph</mi><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CardinalNumber
+</div>
+
+
+
+
+
+<div id="spadComm9-75" class="spadComm" >
+<form id="formComm9-75" action="javascript:makeRequest('9-75');" >
+<input id="comm9-75" type="text" class="command" style="width: 6em;" value="c := 2**a" />
+</form>
+<span id="commSav9-75" class="commSav" >c := 2**a</span>
+<div id="mathAns9-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>Aleph</mi><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CardinalNumber
+</div>
+
+
+
+
+
+<div id="spadComm9-76" class="spadComm" >
+<form id="formComm9-76" action="javascript:makeRequest('9-76');" >
+<input id="comm9-76" type="text" class="command" style="width: 6em;" value="f := 2**c" />
+</form>
+<span id="commSav9-76" class="commSav" >f := 2**c</span>
+<div id="mathAns9-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>Aleph</mi><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CardinalNumber
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.5.xhtml" style="margin-right: 10px;">Previous Section 9.5 BinarySearchTree</a><a href="section-9.7.xhtml" style="margin-right: 10px;">Next Section 9.7 CartesianTensor</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.60.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.60.xhtml
new file mode 100644
index 0000000..8a0cea8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.60.xhtml
@@ -0,0 +1,1219 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.60</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.59.xhtml" style="margin-right: 10px;">Previous Section 9.59 OrderedVariableList</a><a href="section-9.61.xhtml" style="margin-right: 10px;">Next Section 9.61 PartialFraction</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.60">
+<h2 class="sectiontitle">9.60  OrderlyDifferentialPolynomial</h2>
+
+
+<a name="OrderlyDifferentialPolynomialXmpPage" class="label"/>
+
+
+<p>Many systems of differential equations may be transformed to
+equivalent systems of ordinary differential equations where the
+equations are expressed polynomially in terms of the unknown
+functions.  In Axiom, the domain constructors 
+<span class="teletype">OrderlyDifferentialPolynomial</span> (abbreviated <span class="teletype">ODPOL</span>) and 
+<span class="teletype">SequentialDifferentialPolynomial</span> (abbreviation <span class="teletype">SDPOL</span>) implement
+two domains of ordinary differential polynomials over any differential
+ring.  In the simplest case, this differential ring is usually either
+the ring of integers, or the field of rational numbers.  However,
+Axiom can handle ordinary differential polynomials over a field of
+rational functions in a single indeterminate.
+</p>
+
+
+<p>The two domains <span class="teletype">ODPOL</span> and <span class="teletype">SDPOL</span> are almost identical, the
+only difference being the choice of a different ranking, which is an
+ordering of the derivatives of the indeterminates.  The first domain
+uses an orderly ranking, that is, derivatives of higher order are
+ranked higher, and derivatives of the same order are ranked
+alphabetically.  The second domain uses a sequential ranking, where
+derivatives are ordered first alphabetically by the differential
+indeterminates, and then by order.  A more general domain constructor,
+<span class="teletype">DifferentialSparseMultivariatePolynomial</span> (abbreviation 
+<span class="teletype">DSMP</span>) allows both a user-provided list of differential indeterminates
+as well as a user-defined ranking.  We shall illustrate 
+<span class="teletype">ODPOL(FRAC INT)</span>, which constructs a domain of ordinary differential
+polynomials in an arbitrary number of differential indeterminates with
+rational numbers as coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-26" class="spadComm" >
+<form id="formComm9-26" action="javascript:makeRequest('9-26');" >
+<input id="comm9-26" type="text" class="command" style="width: 16em;" value="dpol:= ODPOL(FRAC INT) " />
+</form>
+<span id="commSav9-26" class="commSav" >dpol:= ODPOL(FRAC INT) </span>
+<div id="mathAns9-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderlyDifferentialPolynomialFractionInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>A differential indeterminate <span class="teletype">w</span> may be viewed as an infinite
+sequence of algebraic indeterminates, which are the derivatives of
+<span class="teletype">w</span>.  To facilitate referencing these, Axiom provides the
+operation <span class="spadfunFrom" >makeVariable</span><span class="index">makeVariable</span><a name="chapter-9-0"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-1"/> to
+convert an element of type <span class="teletype">Symbol</span> to a map from the natural
+numbers to the differential polynomial ring.
+</p>
+
+
+
+
+<div id="spadComm9-27" class="spadComm" >
+<form id="formComm9-27" action="javascript:makeRequest('9-27');" >
+<input id="comm9-27" type="text" class="command" style="width: 18em;" value="w := makeVariable('w)$dpol " />
+</form>
+<span id="commSav9-27" class="commSav" >w := makeVariable('w)$dpol </span>
+<div id="mathAns9-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+(NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-28" class="spadComm" >
+<form id="formComm9-28" action="javascript:makeRequest('9-28');" >
+<input id="comm9-28" type="text" class="command" style="width: 18em;" value="z := makeVariable('z)$dpol " />
+</form>
+<span id="commSav9-28" class="commSav" >z := makeVariable('z)$dpol </span>
+<div id="mathAns9-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+(NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
+</div>
+
+
+
+<p>The fifth derivative of <span class="teletype">w</span> can be obtained by applying the map
+<span class="teletype">w</span> to the number <span class="teletype">5.</span>  Note that the order of differentiation
+is given as a subscript (except when the order is 0).
+</p>
+
+
+
+
+<div id="spadComm9-29" class="spadComm" >
+<form id="formComm9-29" action="javascript:makeRequest('9-29');" >
+<input id="comm9-29" type="text" class="command" style="width: 3em;" value="w.5 " />
+</form>
+<span id="commSav9-29" class="commSav" >w.5 </span>
+<div id="mathAns9-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>w</mi><mn>5</mn></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-30" class="spadComm" >
+<form id="formComm9-30" action="javascript:makeRequest('9-30');" >
+<input id="comm9-30" type="text" class="command" style="width: 3em;" value="w 0 " />
+</form>
+<span id="commSav9-30" class="commSav" >w 0 </span>
+<div id="mathAns9-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>w</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>The first five derivatives of <span class="teletype">z</span> can be generated by a list.
+</p>
+
+
+
+
+<div id="spadComm9-31" class="spadComm" >
+<form id="formComm9-31" action="javascript:makeRequest('9-31');" >
+<input id="comm9-31" type="text" class="command" style="width: 14em;" value="[z.i for i in 1..5] " />
+</form>
+<span id="commSav9-31" class="commSav" >[z.i for i in 1..5] </span>
+<div id="mathAns9-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mo>,</mo><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mo>,</mo><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow><mo>,</mo><mrow><msub><mi>z</mi><mn>4</mn></msub></mrow><mo>,</mo><mrow><msub><mi>z</mi><mn>5</mn></msub></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>The usual arithmetic can be used to form a differential polynomial from
+the derivatives.
+</p>
+
+
+
+
+<div id="spadComm9-32" class="spadComm" >
+<form id="formComm9-32" action="javascript:makeRequest('9-32');" >
+<input id="comm9-32" type="text" class="command" style="width: 18em;" value="f:= w.4 - w.1 * w.1 * z.3 " />
+</form>
+<span id="commSav9-32" class="commSav" >f:= w.4 - w.1 * w.1 * z.3 </span>
+<div id="mathAns9-32" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msub><mi>w</mi><mn>4</mn></msub></mrow><mo>-</mo><mrow><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-33" class="spadComm" >
+<form id="formComm9-33" action="javascript:makeRequest('9-33');" >
+<input id="comm9-33" type="text" class="command" style="width: 20em;" value="g:=(z.1)**3 * (z.2)**2 - w.2 " />
+</form>
+<span id="commSav9-33" class="commSav" >g:=(z.1)**3 * (z.2)**2 - w.2 </span>
+<div id="mathAns9-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >D</span><span class="index">D</span><a name="chapter-9-2"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-3"/>
+computes the derivative of any differential polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-34" class="spadComm" >
+<form id="formComm9-34" action="javascript:makeRequest('9-34');" >
+<input id="comm9-34" type="text" class="command" style="width: 4em;" value="D(f) " />
+</form>
+<span id="commSav9-34" class="commSav" >D(f) </span>
+<div id="mathAns9-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msub><mi>w</mi><mn>5</mn></msub></mrow><mo>-</mo><mrow><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>4</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>The same operation can compute higher derivatives, like the
+fourth derivative.
+</p>
+
+
+
+
+<div id="spadComm9-35" class="spadComm" >
+<form id="formComm9-35" action="javascript:makeRequest('9-35');" >
+<input id="comm9-35" type="text" class="command" style="width: 5em;" value="D(f,4) " />
+</form>
+<span id="commSav9-35" class="commSav" >D(f,4) </span>
+<div id="mathAns9-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msub><mi>w</mi><mn>8</mn></msub></mrow><mo>-</mo><mrow><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>7</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>6</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>3</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>5</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>5</mn></msub></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>4</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>3</mn></msub></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>4</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>4</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>w</mi><mn>3</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >makeVariable</span><span class="index">makeVariable</span><a name="chapter-9-4"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-5"/>
+creates a map to facilitate referencing the derivatives of <span class="teletype">f</span>,
+similar to the map <span class="teletype">w</span>.
+</p>
+
+
+
+
+<div id="spadComm9-36" class="spadComm" >
+<form id="formComm9-36" action="javascript:makeRequest('9-36');" >
+<input id="comm9-36" type="text" class="command" style="width: 17em;" value="df:=makeVariable(f)$dpol " />
+</form>
+<span id="commSav9-36" class="commSav" >df:=makeVariable(f)$dpol </span>
+<div id="mathAns9-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mi>theMap</mi><mo>(</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+(NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
+</div>
+
+
+
+<p>The fourth derivative of f may be referenced easily.
+</p>
+
+
+
+
+<div id="spadComm9-37" class="spadComm" >
+<form id="formComm9-37" action="javascript:makeRequest('9-37');" >
+<input id="comm9-37" type="text" class="command" style="width: 4em;" value="df.4 " />
+</form>
+<span id="commSav9-37" class="commSav" >df.4 </span>
+<div id="mathAns9-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><msub><mi>w</mi><mn>8</mn></msub></mrow><mo>-</mo><mrow><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>7</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>6</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>3</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>5</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>5</mn></msub></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>4</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>3</mn></msub></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>4</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>4</mn></msub></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>w</mi><mn>3</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >order</span><span class="index">order</span><a name="chapter-9-6"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-7"/>
+returns the order of a differential polynomial, or the order
+in a specified differential indeterminate.
+</p>
+
+
+
+
+<div id="spadComm9-38" class="spadComm" >
+<form id="formComm9-38" action="javascript:makeRequest('9-38');" >
+<input id="comm9-38" type="text" class="command" style="width: 7em;" value="order(g)  " />
+</form>
+<span id="commSav9-38" class="commSav" >order(g)  </span>
+<div id="mathAns9-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-39" class="spadComm" >
+<form id="formComm9-39" action="javascript:makeRequest('9-39');" >
+<input id="comm9-39" type="text" class="command" style="width: 10em;" value="order(g, 'w)  " />
+</form>
+<span id="commSav9-39" class="commSav" >order(g, 'w)  </span>
+<div id="mathAns9-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation
+<span class="spadfunFrom" >differentialVariables</span><span class="index">differentialVariables</span><a name="chapter-9-8"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-9"/> returns
+a list of differential indeterminates occurring in a differential polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-40" class="spadComm" >
+<form id="formComm9-40" action="javascript:makeRequest('9-40');" >
+<input id="comm9-40" type="text" class="command" style="width: 18em;" value="differentialVariables(g)  " />
+</form>
+<span id="commSav9-40" class="commSav" >differentialVariables(g)  </span>
+<div id="mathAns9-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>z</mi><mo>,</mo><mi>w</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >degree</span><span class="index">degree</span><a name="chapter-9-10"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-11"/> returns
+the degree, or the degree in the differential indeterminate specified.
+</p>
+
+
+
+
+<div id="spadComm9-41" class="spadComm" >
+<form id="formComm9-41" action="javascript:makeRequest('9-41');" >
+<input id="comm9-41" type="text" class="command" style="width: 7em;" value="degree(g) " />
+</form>
+<span id="commSav9-41" class="commSav" >degree(g) </span>
+<div id="mathAns9-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: IndexedExponents OrderlyDifferentialVariable Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-42" class="spadComm" >
+<form id="formComm9-42" action="javascript:makeRequest('9-42');" >
+<input id="comm9-42" type="text" class="command" style="width: 10em;" value="degree(g, 'w)  " />
+</form>
+<span id="commSav9-42" class="commSav" >degree(g, 'w)  </span>
+<div id="mathAns9-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >weights</span><span class="index">weights</span><a name="chapter-9-12"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-13"/> returns
+a list of weights of differential monomials appearing in differential
+polynomial, or a list of weights in a specified differential
+indeterminate.
+</p>
+
+
+
+
+<div id="spadComm9-43" class="spadComm" >
+<form id="formComm9-43" action="javascript:makeRequest('9-43');" >
+<input id="comm9-43" type="text" class="command" style="width: 8em;" value="weights(g)  " />
+</form>
+<span id="commSav9-43" class="commSav" >weights(g)  </span>
+<div id="mathAns9-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-44" class="spadComm" >
+<form id="formComm9-44" action="javascript:makeRequest('9-44');" >
+<input id="comm9-44" type="text" class="command" style="width: 10em;" value="weights(g,'w) " />
+</form>
+<span id="commSav9-44" class="commSav" >weights(g,'w) </span>
+<div id="mathAns9-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >weight</span><span class="index">weight</span><a name="chapter-9-14"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-15"/> returns
+the maximum weight of all differential monomials appearing in the
+differential polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-45" class="spadComm" >
+<form id="formComm9-45" action="javascript:makeRequest('9-45');" >
+<input id="comm9-45" type="text" class="command" style="width: 8em;" value="weight(g)  " />
+</form>
+<span id="commSav9-45" class="commSav" >weight(g)  </span>
+<div id="mathAns9-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>7</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>A differential polynomial is <span class="em">isobaric</span> if the weights of all
+differential monomials appearing in it are equal.
+</p>
+
+
+
+
+<div id="spadComm9-46" class="spadComm" >
+<form id="formComm9-46" action="javascript:makeRequest('9-46');" >
+<input id="comm9-46" type="text" class="command" style="width: 9em;" value="isobaric?(g) " />
+</form>
+<span id="commSav9-46" class="commSav" >isobaric?(g) </span>
+<div id="mathAns9-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>To substitute <span class="em">differentially</span>, use
+<span class="spadfunFrom" >eval</span><span class="index">eval</span><a name="chapter-9-16"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-17"/>.  Note that we must
+coerce <span class="teletype">'w</span> to <span class="teletype">Symbol</span>, since in <span class="teletype">ODPOL</span>, differential
+indeterminates belong to the domain <span class="teletype">Symbol</span>.  Compare this result
+to the next, which substitutes <span class="em">algebraically</span> (no substitution is
+done since <span class="teletype">w.0</span> does not appear in <span class="teletype">g</span>).
+</p>
+
+
+
+
+<div id="spadComm9-47" class="spadComm" >
+<form id="formComm9-47" action="javascript:makeRequest('9-47');" >
+<input id="comm9-47" type="text" class="command" style="width: 17em;" value="eval(g,['w::Symbol],[f]) " />
+</form>
+<span id="commSav9-47" class="commSav" >eval(g,['w::Symbol],[f]) </span>
+<div id="mathAns9-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msub><mi>w</mi><mn>6</mn></msub></mrow><mo>+</mo><mrow><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>5</mn></msub></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>4</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>3</mn></msub></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mn>2</mn></msup></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow></mrow><mo>+</mo><mrow><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-48" class="spadComm" >
+<form id="formComm9-48" action="javascript:makeRequest('9-48');" >
+<input id="comm9-48" type="text" class="command" style="width: 18em;" value="eval(g,variables(w.0),[f]) " />
+</form>
+<span id="commSav9-48" class="commSav" >eval(g,variables(w.0),[f]) </span>
+<div id="mathAns9-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>Since <span class="teletype">OrderlyDifferentialPolynomial</span> belongs to
+<span class="teletype">PolynomialCategory</span>, all the operations defined in the latter
+category, or in packages for the latter category, are available.
+</p>
+
+
+
+
+<div id="spadComm9-49" class="spadComm" >
+<form id="formComm9-49" action="javascript:makeRequest('9-49');" >
+<input id="comm9-49" type="text" class="command" style="width: 9em;" value="monomials(g) " />
+</form>
+<span id="commSav9-49" class="commSav" >monomials(g) </span>
+<div id="mathAns9-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mn>2</mn></msup></mrow></mrow><mo>,</mo><mo>-</mo><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-50" class="spadComm" >
+<form id="formComm9-50" action="javascript:makeRequest('9-50');" >
+<input id="comm9-50" type="text" class="command" style="width: 9em;" value="variables(g) " />
+</form>
+<span id="commSav9-50" class="commSav" >variables(g) </span>
+<div id="mathAns9-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mo>,</mo><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mo>,</mo><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List OrderlyDifferentialVariable Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-51" class="spadComm" >
+<form id="formComm9-51" action="javascript:makeRequest('9-51');" >
+<input id="comm9-51" type="text" class="command" style="width: 6em;" value="gcd(f,g) " />
+</form>
+<span id="commSav9-51" class="commSav" >gcd(f,g) </span>
+<div id="mathAns9-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-52" class="spadComm" >
+<form id="formComm9-52" action="javascript:makeRequest('9-52');" >
+<input id="comm9-52" type="text" class="command" style="width: 11em;" value="groebner([f,g]) " />
+</form>
+<span id="commSav9-52" class="commSav" >groebner([f,g]) </span>
+<div id="mathAns9-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><msub><mi>w</mi><mn>4</mn></msub></mrow><mo>-</mo><mrow><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow></mrow></mrow><mo>,</mo><mrow><mrow><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>The next three operations are essential for elimination procedures in
+differential polynomial rings.  The operation
+<span class="spadfunFrom" >leader</span><span class="index">leader</span><a name="chapter-9-18"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-19"/> returns the leader
+of a differential polynomial, which is the highest ranked derivative
+of the differential indeterminates that occurs.
+</p>
+
+
+
+
+<div id="spadComm9-53" class="spadComm" >
+<form id="formComm9-53" action="javascript:makeRequest('9-53');" >
+<input id="comm9-53" type="text" class="command" style="width: 10em;" value="lg:=leader(g)  " />
+</form>
+<span id="commSav9-53" class="commSav" >lg:=leader(g)  </span>
+<div id="mathAns9-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialVariable Symbol
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >separant</span><span class="index">separant</span><a name="chapter-9-20"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-21"/> returns
+the separant of a differential polynomial, which is the partial derivative
+with respect to the leader.
+</p>
+
+
+
+
+<div id="spadComm9-54" class="spadComm" >
+<form id="formComm9-54" action="javascript:makeRequest('9-54');" >
+<input id="comm9-54" type="text" class="command" style="width: 12em;" value="sg:=separant(g)  " />
+</form>
+<span id="commSav9-54" class="commSav" >sg:=separant(g)  </span>
+<div id="mathAns9-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >initial</span><span class="index">initial</span><a name="chapter-9-22"/><span class="index">OrderlyDifferentialPolynomial</span><a name="chapter-9-23"/> returns
+the initial, which is the leading coefficient when the given differential
+polynomial is expressed as a polynomial in the leader.
+</p>
+
+
+
+
+<div id="spadComm9-55" class="spadComm" >
+<form id="formComm9-55" action="javascript:makeRequest('9-55');" >
+<input id="comm9-55" type="text" class="command" style="width: 11em;" value="ig:=initial(g)  " />
+</form>
+<span id="commSav9-55" class="commSav" >ig:=initial(g)  </span>
+<div id="mathAns9-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>Using these three operations, it is possible to reduce <span class="teletype">f</span> modulo
+the differential ideal generated by <span class="teletype">g</span>.  The general scheme is to
+first reduce the order, then reduce the degree in the leader.  First,
+eliminate <span class="teletype">z.3</span> using the derivative of <span class="teletype">g</span>.
+</p>
+
+
+
+
+<div id="spadComm9-56" class="spadComm" >
+<form id="formComm9-56" action="javascript:makeRequest('9-56');" >
+<input id="comm9-56" type="text" class="command" style="width: 7em;" value="g1 := D g " />
+</form>
+<span id="commSav9-56" class="commSav" >g1 := D g </span>
+<div id="mathAns9-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow></mrow><mo>-</mo><mrow><msub><mi>w</mi><mn>3</mn></msub></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mn>3</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>Find its leader.
+</p>
+
+
+
+
+<div id="spadComm9-57" class="spadComm" >
+<form id="formComm9-57" action="javascript:makeRequest('9-57');" >
+<input id="comm9-57" type="text" class="command" style="width: 11em;" value="lg1:= leader g1 " />
+</form>
+<span id="commSav9-57" class="commSav" >lg1:= leader g1 </span>
+<div id="mathAns9-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>z</mi><mn>3</mn></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialVariable Symbol
+</div>
+
+
+
+<p>Differentiate <span class="teletype">f</span> partially with respect to this leader.
+</p>
+
+
+
+
+<div id="spadComm9-58" class="spadComm" >
+<form id="formComm9-58" action="javascript:makeRequest('9-58');" >
+<input id="comm9-58" type="text" class="command" style="width: 10em;" value="pdf:=D(f, lg1) " />
+</form>
+<span id="commSav9-58" class="commSav" >pdf:=D(f, lg1) </span>
+<div id="mathAns9-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>Compute the partial remainder of <span class="teletype">f</span> with respect to <span class="teletype">g</span>.
+</p>
+
+
+
+
+<div id="spadComm9-59" class="spadComm" >
+<form id="formComm9-59" action="javascript:makeRequest('9-59');" >
+<input id="comm9-59" type="text" class="command" style="width: 15em;" value="prf:=sg * f- pdf * g1 " />
+</form>
+<span id="commSav9-59" class="commSav" >prf:=sg * f- pdf * g1 </span>
+<div id="mathAns9-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>4</mn></msub></mrow></mrow><mo>-</mo><mrow><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>3</mn></msub></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mn>3</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>Note that high powers of <span class="teletype">lg</span> still appear in <span class="teletype">prf</span>.  Compute
+the leading coefficient of <span class="teletype">prf</span> as a polynomial in the leader of
+<span class="teletype">g</span>.
+</p>
+
+
+
+
+<div id="spadComm9-60" class="spadComm" >
+<form id="formComm9-60" action="javascript:makeRequest('9-60');" >
+<input id="comm9-60" type="text" class="command" style="width: 30em;" value="lcf:=leadingCoefficient univariate(prf, lg) " />
+</form>
+<span id="commSav9-60" class="commSav" >lcf:=leadingCoefficient univariate(prf, lg) </span>
+<div id="mathAns9-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+<p>Finally, continue eliminating the high powers of <span class="teletype">lg</span> appearing in
+<span class="teletype">prf</span> to obtain the (pseudo) remainder of <span class="teletype">f</span> modulo <span class="teletype">g</span>
+and its derivatives.
+</p>
+
+
+
+
+<div id="spadComm9-61" class="spadComm" >
+<form id="formComm9-61" action="javascript:makeRequest('9-61');" >
+<input id="comm9-61" type="text" class="command" style="width: 16em;" value="ig * prf - lcf * g * lg " />
+</form>
+<span id="commSav9-61" class="commSav" >ig * prf - lcf * g * lg </span>
+<div id="mathAns9-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>6</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>4</mn></msub></mrow></mrow><mo>-</mo><mrow><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>3</mn></msub></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>w</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><msub><mi>z</mi><mn>1</mn></msub></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msub><mi>w</mi><mn>2</mn></msub></mrow><mspace width="0.5 em" /><mrow><msub><mi>z</mi><mn>2</mn></msub></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderlyDifferentialPolynomial Fraction Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.59.xhtml" style="margin-right: 10px;">Previous Section 9.59 OrderedVariableList</a><a href="section-9.61.xhtml" style="margin-right: 10px;">Next Section 9.61 PartialFraction</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.61.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.61.xhtml
new file mode 100644
index 0000000..53d37ab
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.61.xhtml
@@ -0,0 +1,421 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.61</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.60.xhtml" style="margin-right: 10px;">Previous Section 9.60 OrderlyDifferentialPolynomial</a><a href="section-9.62.xhtml" style="margin-right: 10px;">Next Section 9.62 Permanent</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.61">
+<h2 class="sectiontitle">9.61  PartialFraction</h2>
+
+
+<a name="PartialFractionXmpPage" class="label"/>
+
+
+<p>A <span class="italic">partial fraction</span> is a decomposition of a quotient into a sum
+of quotients where the denominators of the summands are powers of
+primes.<span class="footnote">Most people first encounter partial fractions when
+they are learning integral calculus.  For a technical discussion of
+partial fractions, see, for example, Lang's <span class="italic">Algebra.</span></span> For
+example, the rational number <span class="teletype">1/6</span> is decomposed into <span class="teletype">1/2-1/3</span>.  
+You can compute partial fractions of quotients of objects from
+domains belonging to the category <span class="teletype">EuclideanDomain</span>.  For example,
+<span class="teletype">Integer</span>, <span class="teletype">Complex Integer</span>, and 
+<span class="teletype">UnivariatePolynomial(x, Fraction Integer)</span> 
+all belong to <span class="teletype">EuclideanDomain</span>.  In the
+examples following, we demonstrate how to decompose quotients of each
+of these kinds of object into partial fractions.  Issue the system
+command <span class="teletype">)show PartialFraction</span> to display the full list of
+operations defined by <span class="teletype">PartialFraction</span>.
+</p>
+
+
+<p>It is necessary that we know how to factor the denominator when we
+want to compute a partial fraction.  Although the interpreter can
+often do this automatically, it may be necessary for you to include a
+call to <span class="teletype">factor</span>.  In these examples, it is not necessary to
+factor the denominators explicitly.
+</p>
+
+
+<p>The main operation for computing partial fractions is called
+<span class="spadfunFrom" >partialFraction</span><span class="index">partialFraction</span><a name="chapter-9-24"/><span class="index">PartialFraction</span><a name="chapter-9-25"/> and we use this to
+compute a decomposition of <span class="teletype">1 / 10!</span>.  The first argument to
+<span class="spadfunFrom" >partialFraction</span><span class="index">partialFraction</span><a name="chapter-9-26"/><span class="index">PartialFraction</span><a name="chapter-9-27"/> is the numerator of the
+quotient and the second argument is the factored denominator.
+</p>
+
+
+
+
+<div id="spadComm9-62" class="spadComm" >
+<form id="formComm9-62" action="javascript:makeRequest('9-62');" >
+<input id="comm9-62" type="text" class="command" style="width: 22em;" value="partialFraction(1,factorial 10) " />
+</form>
+<span id="commSav9-62" class="commSav" >partialFraction(1,factorial 10) </span>
+<div id="mathAns9-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>159</mn><mrow><msup><mn>2</mn><mn>8</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>23</mn><mrow><msup><mn>3</mn><mn>4</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>12</mn><mrow><msup><mn>5</mn><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mn>7</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+<p>Since the denominators are powers of primes, it may be possible
+to expand the numerators further with respect to those primes. Use the
+operation <span class="spadfunFrom" >padicFraction</span><span class="index">padicFraction</span><a name="chapter-9-28"/><span class="index">PartialFraction</span><a name="chapter-9-29"/> to do this.
+</p>
+
+
+
+
+<div id="spadComm9-63" class="spadComm" >
+<form id="formComm9-63" action="javascript:makeRequest('9-63');" >
+<input id="comm9-63" type="text" class="command" style="width: 16em;" value="f := padicFraction(%) " />
+</form>
+<span id="commSav9-63" class="commSav" >f := padicFraction(%) </span>
+<div id="mathAns9-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>+</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>4</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>5</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>6</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>7</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>8</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>2</mn><mrow><msup><mn>3</mn><mn>2</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>1</mn><mrow><msup><mn>3</mn><mn>3</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>2</mn><mrow><msup><mn>3</mn><mn>4</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>2</mn><mn>5</mn></mfrac><mo>-</mo><mfrac><mn>2</mn><mrow><msup><mn>5</mn><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mn>7</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >compactFraction</span><span class="index">compactFraction</span><a name="chapter-9-30"/><span class="index">PartialFraction</span><a name="chapter-9-31"/> returns
+an expanded fraction into the usual form.  The compacted version is
+used internally for computational efficiency.
+</p>
+
+
+
+
+<div id="spadComm9-64" class="spadComm" >
+<form id="formComm9-64" action="javascript:makeRequest('9-64');" >
+<input id="comm9-64" type="text" class="command" style="width: 13em;" value="compactFraction(f) " />
+</form>
+<span id="commSav9-64" class="commSav" >compactFraction(f) </span>
+<div id="mathAns9-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>159</mn><mrow><msup><mn>2</mn><mn>8</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>23</mn><mrow><msup><mn>3</mn><mn>4</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mn>12</mn><mrow><msup><mn>5</mn><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mn>1</mn><mn>7</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+<p>You can add, subtract, multiply and divide partial fractions.  In
+addition, you can extract the parts of the decomposition.
+<span class="spadfunFrom" >numberOfFractionalTerms</span><span class="index">numberOfFractionalTerms</span><a name="chapter-9-32"/><span class="index">PartialFraction</span><a name="chapter-9-33"/> computes the
+number of terms in the fractional part.  This does not include the
+whole part of the fraction, which you get by calling
+<span class="spadfunFrom" >wholePart</span><span class="index">wholePart</span><a name="chapter-9-34"/><span class="index">PartialFraction</span><a name="chapter-9-35"/>.  In this example, the whole
+part is just <span class="teletype">0</span>.
+</p>
+
+
+
+
+<div id="spadComm9-65" class="spadComm" >
+<form id="formComm9-65" action="javascript:makeRequest('9-65');" >
+<input id="comm9-65" type="text" class="command" style="width: 18em;" value="numberOfFractionalTerms(f) " />
+</form>
+<span id="commSav9-65" class="commSav" >numberOfFractionalTerms(f) </span>
+<div id="mathAns9-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>12</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >nthFractionalTerm</span><span class="index">nthFractionalTerm</span><a name="chapter-9-36"/><span class="index">PartialFraction</span><a name="chapter-9-37"/> returns
+the individual terms in the decomposition.  Notice that the object
+returned is a partial fraction itself.
+<span class="spadfunFrom" >firstNumer</span><span class="index">firstNumer</span><a name="chapter-9-38"/><span class="index">PartialFraction</span><a name="chapter-9-39"/> and
+<span class="spadfunFrom" >firstDenom</span><span class="index">firstDenom</span><a name="chapter-9-40"/><span class="index">PartialFraction</span><a name="chapter-9-41"/> extract the numerator and
+denominator of the first term of the fraction.
+</p>
+
+
+
+
+<div id="spadComm9-66" class="spadComm" >
+<form id="formComm9-66" action="javascript:makeRequest('9-66');" >
+<input id="comm9-66" type="text" class="command" style="width: 16em;" value="nthFractionalTerm(f,3) " />
+</form>
+<span id="commSav9-66" class="commSav" >nthFractionalTerm(f,3) </span>
+<div id="mathAns9-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>1</mn><mrow><msup><mn>2</mn><mn>5</mn></msup></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Integer
+</div>
+
+
+
+<p>Given two gaussian integers (see 
+<a href="section-9.11.xhtml#ComplexXmpPage" class="ref" >ComplexXmpPage</a> ), you can
+decompose their quotient into a partial fraction.
+</p>
+
+
+
+
+<div id="spadComm9-67" class="spadComm" >
+<form id="formComm9-67" action="javascript:makeRequest('9-67');" >
+<input id="comm9-67" type="text" class="command" style="width: 24em;" value="partialFraction(1,- 13 + 14 * %i) " />
+</form>
+<span id="commSav9-67" class="commSav" >partialFraction(1,- 13 + 14 * %i) </span>
+<div id="mathAns9-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mfrac><mo>+</mo><mfrac><mn>4</mn><mrow><mn>3</mn><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction Complex Integer
+</div>
+
+
+
+<p>To convert back to a quotient, simply use a conversion.
+</p>
+
+
+
+
+<div id="spadComm9-68" class="spadComm" >
+<form id="formComm9-68" action="javascript:makeRequest('9-68');" >
+<input id="comm9-68" type="text" class="command" style="width: 21em;" value="% :: Fraction Complex Integer " />
+</form>
+<span id="commSav9-68" class="commSav" >% :: Fraction Complex Integer </span>
+<div id="mathAns9-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mi>i</mi><mrow><mn>14</mn><mo>+</mo><mrow><mn>13</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Complex Integer
+</div>
+
+
+
+<p>To conclude this section, we compute the decomposition of
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------------------------------<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(x&nbsp;+&nbsp;1)(x&nbsp;+&nbsp;2)&nbsp;(x&nbsp;+&nbsp;3)&nbsp;(x&nbsp;+&nbsp;4)<br />
+</div>
+
+
+
+<p>The polynomials in this object have type
+<span class="teletype">UnivariatePolynomial(x, Fraction Integer)</span>.
+</p>
+
+
+<p>We use the <span class="spadfunFrom" >primeFactor</span><span class="index">primeFactor</span><a name="chapter-9-42"/><span class="index">Factored</span><a name="chapter-9-43"/> operation (see
+<a href="section-9.22.xhtml#FactoredXmpPage" class="ref" >FactoredXmpPage</a> ) 
+to create the denominator in factored form directly.
+</p>
+
+
+
+
+<div id="spadComm9-69" class="spadComm" >
+<form id="formComm9-69" action="javascript:makeRequest('9-69');" >
+<input id="comm9-69" type="text" class="command" style="width: 48em;" value="u : FR UP(x, FRAC INT) := reduce(*,[primeFactor(x+i,i) for i in 1..4]) " />
+</form>
+<span id="commSav9-69" class="commSav" >u : FR UP(x, FRAC INT) := reduce(*,[primeFactor(x+i,i) for i in 1..4]) </span>
+<div id="mathAns9-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>3</mn><mo>)</mo></mrow><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mn>4</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>These are the compact and expanded partial fractions for the quotient.
+</p>
+
+
+
+
+<div id="spadComm9-70" class="spadComm" >
+<form id="formComm9-70" action="javascript:makeRequest('9-70');" >
+<input id="comm9-70" type="text" class="command" style="width: 14em;" value="partialFraction(1,u) " />
+</form>
+<span id="commSav9-70" class="commSav" >partialFraction(1,u) </span>
+<div id="mathAns9-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mfrac><mn>1</mn><mn>648</mn></mfrac><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow></mfrac><mo>+</mo><mfrac><mrow><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mfrac><mn>7</mn><mn>16</mn></mfrac></mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mrow><mo>-</mo><mrow><mfrac><mn>17</mn><mn>8</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mfrac><mn>139</mn><mn>8</mn></mfrac></mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>3</mn><mo>)</mo></mrow><mn>3</mn></msup></mrow></mfrac><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mfrac><mrow><mrow><mfrac><mn>607</mn><mn>324</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>10115</mn><mn>432</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>391</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mfrac><mn>44179</mn><mn>324</mn></mfrac></mrow><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mn>4</mn></msup></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-71" class="spadComm" >
+<form id="formComm9-71" action="javascript:makeRequest('9-71');" >
+<input id="comm9-71" type="text" class="command" style="width: 12em;" value="padicFraction % " />
+</form>
+<span id="commSav9-71" class="commSav" >padicFraction % </span>
+<div id="mathAns9-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mfrac><mn>1</mn><mn>648</mn></mfrac><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow></mfrac><mo>+</mo><mfrac><mfrac><mn>1</mn><mn>4</mn></mfrac><mrow><mi>x</mi><mo>+</mo><mn>2</mn></mrow></mfrac><mo>-</mo><mfrac><mfrac><mn>1</mn><mn>16</mn></mfrac><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mfrac><mn>17</mn><mn>8</mn></mfrac><mrow><mi>x</mi><mo>+</mo><mn>3</mn></mrow></mfrac><mo>+</mo><mfrac><mfrac><mn>3</mn><mn>4</mn></mfrac><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>3</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac><mo>-</mo><mfrac><mfrac><mn>1</mn><mn>2</mn></mfrac><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>3</mn><mo>)</mo></mrow><mn>3</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mfrac><mn>607</mn><mn>324</mn></mfrac><mrow><mi>x</mi><mo>+</mo><mn>4</mn></mrow></mfrac><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mfrac><mfrac><mn>403</mn><mn>432</mn></mfrac><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mfrac><mn>13</mn><mn>36</mn></mfrac><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mn>3</mn></msup></mrow></mfrac><mo>+</mo><mfrac><mfrac><mn>1</mn><mn>12</mn></mfrac><mrow><msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mn>4</mn></msup></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PartialFraction UnivariatePolynomial(x,Fraction Integer)
+</div>
+
+
+
+<p>All see <a href="section-9.29.xhtml#FullPartialFractionExpansionXmpPage" class="ref" >FullPartialFractionExpansionXmpPage</a>  for examples of
+factor-free conversion of quotients to full partial fractions.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.60.xhtml" style="margin-right: 10px;">Previous Section 9.60 OrderlyDifferentialPolynomial</a><a href="section-9.62.xhtml" style="margin-right: 10px;">Next Section 9.62 Permanent</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.62.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.62.xhtml
new file mode 100644
index 0000000..1c3c26b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.62.xhtml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.62</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.61.xhtml" style="margin-right: 10px;">Previous Section 9.61 PartialFraction</a><a href="section-9.63.xhtml" style="margin-right: 10px;">Next Section 9.63 Polynomial</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.62">
+<h2 class="sectiontitle">9.62  Permanent</h2>
+
+
+<a name="PermanentXmpPage" class="label"/>
+
+
+<p>The package <span class="teletype">Permanent</span> provides the function
+<span class="spadfunFrom" >permanent</span><span class="index">permanent</span><a name="chapter-9-44"/><span class="index">Permanent</span><a name="chapter-9-45"/> for square matrices.  The
+<span class="spadfunFrom" >permanent</span><span class="index">permanent</span><a name="chapter-9-46"/><span class="index">Permanent</span><a name="chapter-9-47"/> of a square matrix can be computed
+in the same way as the determinant by expansion of minors except that
+for the permanent the sign for each element is <span class="teletype">1</span>, rather than
+being <span class="teletype">1</span> if the row plus column indices is positive and <span class="teletype">-1</span>
+otherwise.  This function is much more difficult to compute
+efficiently than the <span class="spadfunFrom" >determinant</span><span class="index">determinant</span><a name="chapter-9-48"/><span class="index">Matrix</span><a name="chapter-9-49"/>.  An example of
+the use of <span class="spadfunFrom" >permanent</span><span class="index">permanent</span><a name="chapter-9-50"/><span class="index">Permanent</span><a name="chapter-9-51"/> is the calculation of
+the  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-th derangement number, defined to be the number of
+different possibilities for <span class="teletype">n</span> couples to dance but never with
+their own spouse.
+</p>
+
+
+<p>Consider an <span class="teletype">n</span> by <span class="teletype">n</span> matrix with entries <span class="teletype">0</span> on the
+diagonal and <span class="teletype">1</span> elsewhere.  Think of the rows as one-half of each
+couple (for example, the males) and the columns the other half.  The
+permanent of such a matrix gives the desired derangement number.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+kn&nbsp;n&nbsp;==<br />
+&nbsp;&nbsp;r&nbsp;:&nbsp;MATRIX&nbsp;INT&nbsp;:=&nbsp;new(n,n,1)<br />
+&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;1..n&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;r.i.i&nbsp;:=&nbsp;0<br />
+&nbsp;&nbsp;r<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>Here are some derangement numbers, which you see grow quite fast.
+</p>
+
+
+
+
+<div id="spadComm9-72" class="spadComm" >
+<form id="formComm9-72" action="javascript:makeRequest('9-72');" >
+<input id="comm9-72" type="text" class="command" style="width: 24em;" value="permanent(kn(5) :: SQMATRIX(5,INT)) " />
+</form>
+<span id="commSav9-72" class="commSav" >permanent(kn(5) :: SQMATRIX(5,INT)) </span>
+<div id="mathAns9-72" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;function&nbsp;kn&nbsp;with&nbsp;type&nbsp;PositiveInteger&nbsp;-&gt;&nbsp;Matrix&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>44</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-73" class="spadComm" >
+<form id="formComm9-73" action="javascript:makeRequest('9-73');" >
+<input id="comm9-73" type="text" class="command" style="width: 36em;" value="[permanent(kn(n) :: SQMATRIX(n,INT)) for n in 1..13] " />
+</form>
+<span id="commSav9-73" class="commSav" >[permanent(kn(n) :: SQMATRIX(n,INT)) for n in 1..13] </span>
+<div id="mathAns9-73" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Cannot&nbsp;compile&nbsp;conversion&nbsp;for&nbsp;types&nbsp;involving&nbsp;local&nbsp;variables.&nbsp;<br />
+&nbsp;&nbsp;&nbsp;In&nbsp;particular,&nbsp;could&nbsp;not&nbsp;compile&nbsp;the&nbsp;expression&nbsp;involving&nbsp;<br />
+&nbsp;&nbsp;&nbsp;::&nbsp;SQMATRIX(n,INT)&nbsp;<br />
+AXIOM&nbsp;will&nbsp;attempt&nbsp;to&nbsp;step&nbsp;through&nbsp;and&nbsp;interpret&nbsp;the&nbsp;code.<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>44</mn><mo>,</mo><mn>265</mn><mo>,</mo><mn>1854</mn><mo>,</mo><mn>14833</mn><mo>,</mo><mn>133496</mn><mo>,</mo></mtd></mtr><mtr><mtd><mn>1334961</mn><mo>,</mo><mn>14684570</mn><mo>,</mo><mn>176214841</mn><mo>,</mo><mn>2290792932</mn><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.61.xhtml" style="margin-right: 10px;">Previous Section 9.61 PartialFraction</a><a href="section-9.63.xhtml" style="margin-right: 10px;">Next Section 9.63 Polynomial</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.63.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.63.xhtml
new file mode 100644
index 0000000..e6b6401
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.63.xhtml
@@ -0,0 +1,1600 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.63</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.62.xhtml" style="margin-right: 10px;">Previous Section 9.62 Permanent</a><a href="section-9.64.xhtml" style="margin-right: 10px;">Next Section 9.64 Quaternion</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.63">
+<h2 class="sectiontitle">9.63  Polynomial</h2>
+
+
+<a name="PolynomialXmpPage" class="label"/>
+
+
+<p>The domain constructor <span class="teletype">Polynomial</span> (abbreviation: <span class="teletype">POLY</span>)
+provides polynomials with an arbitrary number of unspecified
+variables.
+</p>
+
+
+<p>It is used to create the default polynomial domains in Axiom.
+Here the coefficients are integers.
+</p>
+
+
+
+
+<div id="spadComm9-74" class="spadComm" >
+<form id="formComm9-74" action="javascript:makeRequest('9-74');" >
+<input id="comm9-74" type="text" class="command" style="width: 4em;" value="x + 1" />
+</form>
+<span id="commSav9-74" class="commSav" >x + 1</span>
+<div id="mathAns9-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Here the coefficients have type <span class="teletype">Float</span>.
+</p>
+
+
+
+
+<div id="spadComm9-75" class="spadComm" >
+<form id="formComm9-75" action="javascript:makeRequest('9-75');" >
+<input id="comm9-75" type="text" class="command" style="width: 5em;" value="z - 2.3" />
+</form>
+<span id="commSav9-75" class="commSav" >z - 2.3</span>
+<div id="mathAns9-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>z</mi><mo>-</mo><mrow><mn>2</mn><mo>.</mo><mn>3</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Float
+</div>
+
+
+
+<p>And here we have a polynomial in two variables with coefficients which
+have type <span class="teletype">Fraction Integer</span>.
+</p>
+
+
+
+
+<div id="spadComm9-76" class="spadComm" >
+<form id="formComm9-76" action="javascript:makeRequest('9-76');" >
+<input id="comm9-76" type="text" class="command" style="width: 10em;" value="y**2 - z + 3/4" />
+</form>
+<span id="commSav9-76" class="commSav" >y**2 - z + 3/4</span>
+<div id="mathAns9-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mi>z</mi><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mfrac><mn>3</mn><mn>4</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+<p>The representation of objects of domains created by <span class="teletype">Polynomial</span>
+is that of recursive univariate polynomials.<span class="footnote">The term
+<span class="teletype">univariate</span> means ``one variable.'' <span class="teletype">multivariate</span> means
+``possibly more than one variable.''</span>
+</p>
+
+
+<p>This recursive structure is sometimes obvious from the display of
+a polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-77" class="spadComm" >
+<form id="formComm9-77" action="javascript:makeRequest('9-77');" >
+<input id="comm9-77" type="text" class="command" style="width: 11em;" value="y **2 + x*y + y " />
+</form>
+<span id="commSav9-77" class="commSav" >y **2 + x*y + y </span>
+<div id="mathAns9-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>In this example, you see that the polynomial is stored as a polynomial
+in <span class="teletype">y</span> with coefficients that are polynomials in <span class="teletype">x</span> with
+integer coefficients.  In fact, you really don't need to worry about
+the representation unless you are working on an advanced application
+where it is critical.  The polynomial types created from <span class="teletype">DistributedMultivariatePolynomial</span> and 
+<span class="teletype">NewDistributedMultivariatePolynomial</span> (discussed in
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >DistributedMultivariatePolynomialXmpPage</a> ) are stored and
+displayed in a non-recursive manner.
+</p>
+
+
+<p>You see a ``flat'' display of the above polynomial by converting to
+one of those types.
+</p>
+
+
+
+
+<div id="spadComm9-78" class="spadComm" >
+<form id="formComm9-78" action="javascript:makeRequest('9-78');" >
+<input id="comm9-78" type="text" class="command" style="width: 14em;" value="% :: DMP([y,x],INT) " />
+</form>
+<span id="commSav9-78" class="commSav" >% :: DMP([y,x],INT) </span>
+<div id="mathAns9-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mi>y</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DistributedMultivariatePolynomial([y,x],Integer)
+</div>
+
+
+
+<p>We will demonstrate many of the polynomial facilities by using two
+polynomials with integer coefficients.
+</p>
+
+
+<p>By default, the interpreter expands polynomial expressions, even if they
+are written in a factored format.
+</p>
+
+
+
+
+<div id="spadComm9-79" class="spadComm" >
+<form id="formComm9-79" action="javascript:makeRequest('9-79');" >
+<input id="comm9-79" type="text" class="command" style="width: 15em;" value="p := (y-1)**2 * x * z " />
+</form>
+<span id="commSav9-79" class="commSav" >p := (y-1)**2 * x * z </span>
+<div id="mathAns9-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>See <a href="section-9.22.xhtml#FactoredXmpPage" class="ref" >FactoredXmpPage</a>  
+to see how to create objects in factored form directly.
+</p>
+
+
+
+
+<div id="spadComm9-80" class="spadComm" >
+<form id="formComm9-80" action="javascript:makeRequest('9-80');" >
+<input id="comm9-80" type="text" class="command" style="width: 16em;" value="q := (y-1) * x * (z+5) " />
+</form>
+<span id="commSav9-80" class="commSav" >q := (y-1) * x * (z+5) </span>
+<div id="mathAns9-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>The fully factored form can be recovered by using
+<span class="spadfunFrom" >factor</span><span class="index">factor</span><a name="chapter-9-52"/><span class="index">Polynomial</span><a name="chapter-9-53"/>.
+</p>
+
+
+
+
+<div id="spadComm9-81" class="spadComm" >
+<form id="formComm9-81" action="javascript:makeRequest('9-81');" >
+<input id="comm9-81" type="text" class="command" style="width: 7em;" value="factor(q) " />
+</form>
+<span id="commSav9-81" class="commSav" >factor(q) </span>
+<div id="mathAns9-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mo>(</mo><mi>z</mi><mo>+</mo><mn>5</mn><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Integer
+</div>
+
+
+
+<p>This is the same name used for the operation to factor integers.  Such
+reuse of names is called <span class="index">overloading</span><a name="chapter-9-54"/> and makes it much easier
+to think of solving problems in general ways.  Axiom facilities for
+factoring polynomials created with <span class="teletype">Polynomial</span> are currently
+restricted to the integer and rational number coefficient cases.
+There are more complete facilities for factoring univariate
+polynomials: see <a href="ugProblemFactorPage" class="ref" >ugProblemFactorPage</a>  in Section <a href="ugProblemFactorNumber" class="ref" >ugProblemFactorNumber</a> 
+.
+</p>
+
+
+<p>The standard arithmetic operations are available for polynomials.
+</p>
+
+
+
+
+<div id="spadComm9-82" class="spadComm" >
+<form id="formComm9-82" action="javascript:makeRequest('9-82');" >
+<input id="comm9-82" type="text" class="command" style="width: 6em;" value="p - q**2" />
+</form>
+<span id="commSav9-82" class="commSav" >p - q**2</span>
+<div id="mathAns9-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>20</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>25</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>50</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>25</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >gcd</span><span class="index">gcd</span><a name="chapter-9-55"/><span class="index">Polynomial</span><a name="chapter-9-56"/> is used to compute the
+greatest common divisor of two polynomials.
+</p>
+
+
+
+
+<div id="spadComm9-83" class="spadComm" >
+<form id="formComm9-83" action="javascript:makeRequest('9-83');" >
+<input id="comm9-83" type="text" class="command" style="width: 6em;" value="gcd(p,q) " />
+</form>
+<span id="commSav9-83" class="commSav" >gcd(p,q) </span>
+<div id="mathAns9-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>In the case of <span class="teletype">p</span> and <span class="teletype">q</span>, the gcd is obvious from their
+definitions.  We factor the gcd to show this relationship better.
+</p>
+
+
+
+
+<div id="spadComm9-84" class="spadComm" >
+<form id="formComm9-84" action="javascript:makeRequest('9-84');" >
+<input id="comm9-84" type="text" class="command" style="width: 7em;" value="factor % " />
+</form>
+<span id="commSav9-84" class="commSav" >factor % </span>
+<div id="mathAns9-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Factored Polynomial Integer
+</div>
+
+
+
+<p>The least common multiple is computed by using <span class="spadfunFrom" >lcm</span><span class="index">lcm</span><a name="chapter-9-57"/><span class="index">Polynomial</span><a name="chapter-9-58"/>.
+</p>
+
+
+
+
+<div id="spadComm9-85" class="spadComm" >
+<form id="formComm9-85" action="javascript:makeRequest('9-85');" >
+<input id="comm9-85" type="text" class="command" style="width: 6em;" value="lcm(p,q) " />
+</form>
+<span id="commSav9-85" class="commSav" >lcm(p,q) </span>
+<div id="mathAns9-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >content</span><span class="index">content</span><a name="chapter-9-59"/><span class="index">Polynomial</span><a name="chapter-9-60"/> to compute the greatest common
+divisor of the coefficients of the polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-86" class="spadComm" >
+<form id="formComm9-86" action="javascript:makeRequest('9-86');" >
+<input id="comm9-86" type="text" class="command" style="width: 7em;" value="content p " />
+</form>
+<span id="commSav9-86" class="commSav" >content p </span>
+<div id="mathAns9-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Many of the operations on polynomials require you to specify a
+variable.  For example, <span class="spadfunFrom" >resultant</span><span class="index">resultant</span><a name="chapter-9-61"/><span class="index">Polynomial</span><a name="chapter-9-62"/> requires
+you to give the variable in which the polynomials should be expressed.
+</p>
+
+
+<p>This computes the resultant of the values of <span class="teletype">p</span> and <span class="teletype">q</span>,
+considering them as polynomials in the variable <span class="teletype">z</span>.  They do not
+share a root when thought of as polynomials in <span class="teletype">z</span>.
+</p>
+
+
+
+
+<div id="spadComm9-87" class="spadComm" >
+<form id="formComm9-87" action="javascript:makeRequest('9-87');" >
+<input id="comm9-87" type="text" class="command" style="width: 12em;" value="resultant(p,q,z) " />
+</form>
+<span id="commSav9-87" class="commSav" >resultant(p,q,z) </span>
+<div id="mathAns9-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>This value is <span class="teletype">0</span> because as polynomials in <span class="teletype">x</span> the polynomials
+have a common root.
+</p>
+
+
+
+
+<div id="spadComm9-88" class="spadComm" >
+<form id="formComm9-88" action="javascript:makeRequest('9-88');" >
+<input id="comm9-88" type="text" class="command" style="width: 12em;" value="resultant(p,q,x) " />
+</form>
+<span id="commSav9-88" class="commSav" >resultant(p,q,x) </span>
+<div id="mathAns9-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>The data type used for the variables created by <span class="teletype">Polynomial</span> is
+<span class="teletype">Symbol</span>.  As mentioned above, the representation used by <span class="teletype">Polynomial</span> is recursive and so there is a main variable for
+nonconstant polynomials.
+</p>
+
+
+<p>The operation <span class="spadfunFrom" >mainVariable</span><span class="index">mainVariable</span><a name="chapter-9-63"/><span class="index">Polynomial</span><a name="chapter-9-64"/> returns this
+variable.  The return type is actually a union of <span class="teletype">Symbol</span> and
+<span class="teletype">"failed"</span>.
+</p>
+
+
+
+
+<div id="spadComm9-89" class="spadComm" >
+<form id="formComm9-89" action="javascript:makeRequest('9-89');" >
+<input id="comm9-89" type="text" class="command" style="width: 10em;" value="mainVariable p " />
+</form>
+<span id="commSav9-89" class="commSav" >mainVariable p </span>
+<div id="mathAns9-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>z</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Symbol,...)
+</div>
+
+
+
+<p>The latter branch of the union is be used if the polynomial has no
+variables, that is, is a constant.
+</p>
+
+
+
+
+<div id="spadComm9-90" class="spadComm" >
+<form id="formComm9-90" action="javascript:makeRequest('9-90');" >
+<input id="comm9-90" type="text" class="command" style="width: 18em;" value="mainVariable(1 :: POLY INT)" />
+</form>
+<span id="commSav9-90" class="commSav" >mainVariable(1 :: POLY INT)</span>
+<div id="mathAns9-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"failed"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>You can also use the predicate <span class="spadfunFrom" >ground?</span><span class="index">ground?</span><a name="chapter-9-65"/><span class="index">Polynomial</span><a name="chapter-9-66"/> to test
+whether a polynomial is in fact a member of its ground ring.
+</p>
+
+
+
+
+<div id="spadComm9-91" class="spadComm" >
+<form id="formComm9-91" action="javascript:makeRequest('9-91');" >
+<input id="comm9-91" type="text" class="command" style="width: 7em;" value="ground? p " />
+</form>
+<span id="commSav9-91" class="commSav" >ground? p </span>
+<div id="mathAns9-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-92" class="spadComm" >
+<form id="formComm9-92" action="javascript:makeRequest('9-92');" >
+<input id="comm9-92" type="text" class="command" style="width: 15em;" value="ground?(1 :: POLY INT)" />
+</form>
+<span id="commSav9-92" class="commSav" >ground?(1 :: POLY INT)</span>
+<div id="mathAns9-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The complete list of variables actually used in a particular
+polynomial is returned by <span class="spadfunFrom" >variables</span><span class="index">variables</span><a name="chapter-9-67"/><span class="index">Polynomial</span><a name="chapter-9-68"/>.  For
+constant polynomials, this list is empty.
+</p>
+
+
+
+
+<div id="spadComm9-93" class="spadComm" >
+<form id="formComm9-93" action="javascript:makeRequest('9-93');" >
+<input id="comm9-93" type="text" class="command" style="width: 8em;" value="variables p " />
+</form>
+<span id="commSav9-93" class="commSav" >variables p </span>
+<div id="mathAns9-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >degree</span><span class="index">degree</span><a name="chapter-9-69"/><span class="index">Polynomial</span><a name="chapter-9-70"/> operation returns the
+degree of a polynomial in a specific variable.
+</p>
+
+
+
+
+<div id="spadComm9-94" class="spadComm" >
+<form id="formComm9-94" action="javascript:makeRequest('9-94');" >
+<input id="comm9-94" type="text" class="command" style="width: 8em;" value="degree(p,x) " />
+</form>
+<span id="commSav9-94" class="commSav" >degree(p,x) </span>
+<div id="mathAns9-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-95" class="spadComm" >
+<form id="formComm9-95" action="javascript:makeRequest('9-95');" >
+<input id="comm9-95" type="text" class="command" style="width: 8em;" value="degree(p,y) " />
+</form>
+<span id="commSav9-95" class="commSav" >degree(p,y) </span>
+<div id="mathAns9-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-96" class="spadComm" >
+<form id="formComm9-96" action="javascript:makeRequest('9-96');" >
+<input id="comm9-96" type="text" class="command" style="width: 8em;" value="degree(p,z) " />
+</form>
+<span id="commSav9-96" class="commSav" >degree(p,z) </span>
+<div id="mathAns9-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>If you give a list of variables for the second argument, a list
+of the degrees in those variables is returned.
+</p>
+
+
+
+
+<div id="spadComm9-97" class="spadComm" >
+<form id="formComm9-97" action="javascript:makeRequest('9-97');" >
+<input id="comm9-97" type="text" class="command" style="width: 12em;" value="degree(p,[x,y,z]) " />
+</form>
+<span id="commSav9-97" class="commSav" >degree(p,[x,y,z]) </span>
+<div id="mathAns9-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+<p>The minimum degree of a variable in a polynomial is computed using
+<span class="spadfunFrom" >minimumDegree</span><span class="index">minimumDegree</span><a name="chapter-9-71"/><span class="index">Polynomial</span><a name="chapter-9-72"/>.
+</p>
+
+
+
+
+<div id="spadComm9-98" class="spadComm" >
+<form id="formComm9-98" action="javascript:makeRequest('9-98');" >
+<input id="comm9-98" type="text" class="command" style="width: 13em;" value="minimumDegree(p,z) " />
+</form>
+<span id="commSav9-98" class="commSav" >minimumDegree(p,z) </span>
+<div id="mathAns9-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The total degree of a polynomial is returned by
+<span class="spadfunFrom" >totalDegree</span><span class="index">totalDegree</span><a name="chapter-9-73"/><span class="index">Polynomial</span><a name="chapter-9-74"/>.
+</p>
+
+
+
+
+<div id="spadComm9-99" class="spadComm" >
+<form id="formComm9-99" action="javascript:makeRequest('9-99');" >
+<input id="comm9-99" type="text" class="command" style="width: 10em;" value="totalDegree p " />
+</form>
+<span id="commSav9-99" class="commSav" >totalDegree p </span>
+<div id="mathAns9-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>It is often convenient to think of a polynomial as a leading monomial plus
+the remaining terms.
+</p>
+
+
+
+
+<div id="spadComm9-100" class="spadComm" >
+<form id="formComm9-100" action="javascript:makeRequest('9-100');" >
+<input id="comm9-100" type="text" class="command" style="width: 12em;" value="leadingMonomial p " />
+</form>
+<span id="commSav9-100" class="commSav" >leadingMonomial p </span>
+<div id="mathAns9-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >reductum</span><span class="index">reductum</span><a name="chapter-9-75"/><span class="index">Polynomial</span><a name="chapter-9-76"/> operation returns a polynomial
+consisting of the sum of the monomials after the first.
+</p>
+
+
+
+
+<div id="spadComm9-101" class="spadComm" >
+<form id="formComm9-101" action="javascript:makeRequest('9-101');" >
+<input id="comm9-101" type="text" class="command" style="width: 8em;" value="reductum p " />
+</form>
+<span id="commSav9-101" class="commSav" >reductum p </span>
+<div id="mathAns9-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>These have the obvious relationship that the original polynomial
+is equal to the leading monomial plus the reductum.
+</p>
+
+
+
+
+<div id="spadComm9-102" class="spadComm" >
+<form id="formComm9-102" action="javascript:makeRequest('9-102');" >
+<input id="comm9-102" type="text" class="command" style="width: 24em;" value="p - leadingMonomial p - reductum p " />
+</form>
+<span id="commSav9-102" class="commSav" >p - leadingMonomial p - reductum p </span>
+<div id="mathAns9-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>The value returned by <span class="spadfunFrom" >leadingMonomial</span><span class="index">leadingMonomial</span><a name="chapter-9-77"/><span class="index">Polynomial</span><a name="chapter-9-78"/>
+includes the coefficient of that term.  This is extracted by using
+<span class="spadfunFrom" >leadingCoefficient</span><span class="index">leadingCoefficient</span><a name="chapter-9-79"/><span class="index">Polynomial</span><a name="chapter-9-80"/> on the original
+polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-103" class="spadComm" >
+<form id="formComm9-103" action="javascript:makeRequest('9-103');" >
+<input id="comm9-103" type="text" class="command" style="width: 14em;" value="leadingCoefficient p " />
+</form>
+<span id="commSav9-103" class="commSav" >leadingCoefficient p </span>
+<div id="mathAns9-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >eval</span><span class="index">eval</span><a name="chapter-9-81"/><span class="index">Polynomial</span><a name="chapter-9-82"/> is used to substitute a value
+for a variable in a polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-104" class="spadComm" >
+<form id="formComm9-104" action="javascript:makeRequest('9-104');" >
+<input id="comm9-104" type="text" class="command" style="width: 2em;" value="p  " />
+</form>
+<span id="commSav9-104" class="commSav" >p  </span>
+<div id="mathAns9-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>This value may be another variable, a constant or a polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-105" class="spadComm" >
+<form id="formComm9-105" action="javascript:makeRequest('9-105');" >
+<input id="comm9-105" type="text" class="command" style="width: 8em;" value="eval(p,x,w) " />
+</form>
+<span id="commSav9-105" class="commSav" >eval(p,x,w) </span>
+<div id="mathAns9-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><mi>w</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>w</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mi>w</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-106" class="spadComm" >
+<form id="formComm9-106" action="javascript:makeRequest('9-106');" >
+<input id="comm9-106" type="text" class="command" style="width: 8em;" value="eval(p,x,1) " />
+</form>
+<span id="commSav9-106" class="commSav" >eval(p,x,1) </span>
+<div id="mathAns9-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Actually, all the things being substituted are just polynomials,
+some more trivial than others.
+</p>
+
+
+
+
+<div id="spadComm9-107" class="spadComm" >
+<form id="formComm9-107" action="javascript:makeRequest('9-107');" >
+<input id="comm9-107" type="text" class="command" style="width: 13em;" value="eval(p,x,y**2 - 1) " />
+</form>
+<span id="commSav9-107" class="commSav" >eval(p,x,y**2 - 1) </span>
+<div id="mathAns9-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><msup><mi>y</mi><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Derivatives are computed using the <span class="spadfunFrom" >D</span><span class="index">D</span><a name="chapter-9-83"/><span class="index">Polynomial</span><a name="chapter-9-84"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-108" class="spadComm" >
+<form id="formComm9-108" action="javascript:makeRequest('9-108');" >
+<input id="comm9-108" type="text" class="command" style="width: 5em;" value="D(p,x) " />
+</form>
+<span id="commSav9-108" class="commSav" >D(p,x) </span>
+<div id="mathAns9-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>The first argument is the polynomial and the second is the variable.
+</p>
+
+
+
+
+<div id="spadComm9-109" class="spadComm" >
+<form id="formComm9-109" action="javascript:makeRequest('9-109');" >
+<input id="comm9-109" type="text" class="command" style="width: 5em;" value="D(p,y) " />
+</form>
+<span id="commSav9-109" class="commSav" >D(p,y) </span>
+<div id="mathAns9-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Even if the polynomial has only one variable, you must specify it.
+</p>
+
+
+
+
+<div id="spadComm9-110" class="spadComm" >
+<form id="formComm9-110" action="javascript:makeRequest('9-110');" >
+<input id="comm9-110" type="text" class="command" style="width: 5em;" value="D(p,z) " />
+</form>
+<span id="commSav9-110" class="commSav" >D(p,z) </span>
+<div id="mathAns9-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Integration of polynomials is similar and the
+<span class="spadfunFrom" >integrate</span><span class="index">integrate</span><a name="chapter-9-85"/><span class="index">Polynomial</span><a name="chapter-9-86"/> operation is used.
+</p>
+
+
+<p>Integration requires that the coefficients support division.
+Consequently, Axiom converts polynomials over the integers to
+polynomials over the rational numbers before integrating them.
+</p>
+
+
+
+
+<div id="spadComm9-111" class="spadComm" >
+<form id="formComm9-111" action="javascript:makeRequest('9-111');" >
+<input id="comm9-111" type="text" class="command" style="width: 10em;" value="integrate(p,y) " />
+</form>
+<span id="commSav9-111" class="commSav" >integrate(p,y) </span>
+<div id="mathAns9-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+<p>It is not possible, in general, to divide two polynomials.  In our
+example using polynomials over the integers, the operation
+<span class="spadfunFrom" >monicDivide</span><span class="index">monicDivide</span><a name="chapter-9-87"/><span class="index">Polynomial</span><a name="chapter-9-88"/> divides a polynomial by a monic
+polynomial (that is, a polynomial with leading coefficient equal to
+1).  The result is a record of the quotient and remainder of the
+division.
+</p>
+
+
+<p>You must specify the variable in which to express the polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-112" class="spadComm" >
+<form id="formComm9-112" action="javascript:makeRequest('9-112');" >
+<input id="comm9-112" type="text" class="command" style="width: 18em;" value="qr := monicDivide(p,x+1,x) " />
+</form>
+<span id="commSav9-112" class="commSav" >qr := monicDivide(p,x+1,x) </span>
+<div id="mathAns9-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>quotient</mi><mo>=</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mrow><mo>,</mo><mrow><mi>remainder</mi><mo>=</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Record(quotient: Polynomial Integer,remainder: Polynomial Integer)
+</div>
+
+
+
+<p>The selectors of the components of the record are <span class="teletype">quotient</span> and
+<span class="teletype">remainder</span>.  Issue this to extract the remainder.
+</p>
+
+
+
+
+<div id="spadComm9-113" class="spadComm" >
+<form id="formComm9-113" action="javascript:makeRequest('9-113');" >
+<input id="comm9-113" type="text" class="command" style="width: 9em;" value="qr.remainder " />
+</form>
+<span id="commSav9-113" class="commSav" >qr.remainder </span>
+<div id="mathAns9-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mo>-</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Now that we can extract the components, we can demonstrate the
+relationship among them and the arguments to our original expression
+<span class="teletype">qr := monicDivide(p,x+1,x)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-114" class="spadComm" >
+<form id="formComm9-114" action="javascript:makeRequest('9-114');" >
+<input id="comm9-114" type="text" class="command" style="width: 28em;" value="p - ((x+1) * qr.quotient + qr.remainder) " />
+</form>
+<span id="commSav9-114" class="commSav" >p - ((x+1) * qr.quotient + qr.remainder) </span>
+<div id="mathAns9-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>If the <span class="spadopFrom" title="Fraction">/</span> operator is used with polynomials, a
+fraction object is created.  In this example, the result is an object
+of type <span class="teletype">Fraction Polynomial Integer</span>.
+</p>
+
+
+
+
+<div id="spadComm9-115" class="spadComm" >
+<form id="formComm9-115" action="javascript:makeRequest('9-115');" >
+<input id="comm9-115" type="text" class="command" style="width: 3em;" value="p/q " />
+</form>
+<span id="commSav9-115" class="commSav" >p/q </span>
+<div id="mathAns9-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mrow><mi>z</mi><mo>+</mo><mn>5</mn></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+<p>If you use rational numbers as polynomial coefficients, the
+resulting object is of type <span class="teletype">Polynomial Fraction Integer</span>.
+</p>
+
+
+
+
+<div id="spadComm9-116" class="spadComm" >
+<form id="formComm9-116" action="javascript:makeRequest('9-116');" >
+<input id="comm9-116" type="text" class="command" style="width: 16em;" value="(2/3) * x**2 - y + 4/5 " />
+</form>
+<span id="commSav9-116" class="commSav" >(2/3) * x**2 - y + 4/5 </span>
+<div id="mathAns9-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mi>y</mi><mo>+</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>4</mn><mn>5</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+<p>This can be converted to a fraction of polynomials and back again, if
+required.
+</p>
+
+
+
+
+<div id="spadComm9-117" class="spadComm" >
+<form id="formComm9-117" action="javascript:makeRequest('9-117');" >
+<input id="comm9-117" type="text" class="command" style="width: 14em;" value="% :: FRAC POLY INT " />
+</form>
+<span id="commSav9-117" class="commSav" >% :: FRAC POLY INT </span>
+<div id="mathAns9-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mo>-</mo><mrow><mn>15</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>12</mn></mrow><mn>15</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-118" class="spadComm" >
+<form id="formComm9-118" action="javascript:makeRequest('9-118');" >
+<input id="comm9-118" type="text" class="command" style="width: 14em;" value="% :: POLY FRAC INT " />
+</form>
+<span id="commSav9-118" class="commSav" >% :: POLY FRAC INT </span>
+<div id="mathAns9-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mi>y</mi><mo>+</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>4</mn><mn>5</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Fraction Integer
+</div>
+
+
+
+<p>To convert the coefficients to floating point, map the <span class="teletype">numeric</span>
+operation on the coefficients of the polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-119" class="spadComm" >
+<form id="formComm9-119" action="javascript:makeRequest('9-119');" >
+<input id="comm9-119" type="text" class="command" style="width: 11em;" value="map(numeric,%) " />
+</form>
+<span id="commSav9-119" class="commSav" >map(numeric,%) </span>
+<div id="mathAns9-119" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mrow><mn>1</mn><mo>.</mo><mn>0</mn></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mrow><mn>0</mn><mo>.</mo><mn>6666666666</mn><mn>6666666667</mn></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>0</mn><mo>.</mo><mn>8</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Float
+</div>
+
+
+
+<p>For more information on related topics, see
+<a href="section-9.83.xhtml#UnivariatePolynomialXmpPage" class="ref" >UnivariatePolynomialXmpPage</a> , 
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >MultivariatePolynomialXmpPage</a> , and
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >DistributedMultivariatePolynomialXmpPage</a> .  You can also issue
+the system command <span class="teletype">)show Polynomial</span> to display the full list
+of operations defined by <span class="teletype">Polynomial</span>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.62.xhtml" style="margin-right: 10px;">Previous Section 9.62 Permanent</a><a href="section-9.64.xhtml" style="margin-right: 10px;">Next Section 9.64 Quaternion</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.64.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.64.xhtml
new file mode 100644
index 0000000..f69d6a4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.64.xhtml
@@ -0,0 +1,387 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.64</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.63.xhtml" style="margin-right: 10px;">Previous Section 9.63 Polynomial</a><a href="section-9.65.xhtml" style="margin-right: 10px;">Next Section 9.65 RadixExpansion</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.64">
+<h2 class="sectiontitle">9.64  Quaternion</h2>
+
+
+<a name="QuaternionXmpPage" class="label"/>
+
+
+<p>The domain constructor <span class="teletype">Quaternion</span> implements quaternions over
+commutative rings.  For information on related topics see
+<!-- \menuxmpref{CliffordAlgebra} --> 
+<a href="section-9.11.xhtml#ComplexXmpPage" class="ref" >ComplexXmpPage</a>  and
+<a href="section-9.56.xhtml#OctonionXmpPage" class="ref" >OctonionXmpPage</a> .  
+You can also issue the system command
+<span class="teletype">)show Quaternion</span> to display the full list of operations
+defined by <span class="teletype">Quaternion</span>.
+</p>
+
+
+<p>The basic operation for creating quaternions is
+<span class="spadfunFrom" >quatern</span><span class="index">quatern</span><a name="chapter-9-89"/><span class="index">Quaternion</span><a name="chapter-9-90"/>.
+This is a quaternion over the rational numbers.
+</p>
+
+
+
+
+<div id="spadComm9-120" class="spadComm" >
+<form id="formComm9-120" action="javascript:makeRequest('9-120');" >
+<input id="comm9-120" type="text" class="command" style="width: 19em;" value="q := quatern(2/11,-8,3/4,1) " />
+</form>
+<span id="commSav9-120" class="commSav" >q := quatern(2/11,-8,3/4,1) </span>
+<div id="mathAns9-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>2</mn><mn>11</mn></mfrac><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mfrac><mn>3</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mi>j</mi></mrow><mo>+</mo><mi>k</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Fraction Integer
+</div>
+
+
+
+<p>The four arguments are the real part, the <span class="teletype">i</span> imaginary part, the
+<span class="teletype">j</span> imaginary part, and the <span class="teletype">k</span> imaginary part, respectively.
+</p>
+
+
+
+
+<div id="spadComm9-121" class="spadComm" >
+<form id="formComm9-121" action="javascript:makeRequest('9-121');" >
+<input id="comm9-121" type="text" class="command" style="width: 24em;" value="[real q, imagI q, imagJ q, imagK q] " />
+</form>
+<span id="commSav9-121" class="commSav" >[real q, imagI q, imagJ q, imagK q] </span>
+<div id="mathAns9-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mfrac><mn>2</mn><mn>11</mn></mfrac><mo>,</mo><mo>-</mo><mn>8</mn><mo>,</mo><mfrac><mn>3</mn><mn>4</mn></mfrac><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Fraction Integer
+</div>
+
+
+
+<p>Because <span class="teletype">q</span> is over the rationals (and nonzero), you can invert it.
+</p>
+
+
+
+
+<div id="spadComm9-122" class="spadComm" >
+<form id="formComm9-122" action="javascript:makeRequest('9-122');" >
+<input id="comm9-122" type="text" class="command" style="width: 4em;" value="inv q " />
+</form>
+<span id="commSav9-122" class="commSav" >inv q </span>
+<div id="mathAns9-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>352</mn><mn>126993</mn></mfrac><mo>+</mo><mrow><mfrac><mn>15488</mn><mn>126993</mn></mfrac><mspace width="0.5 em" /><mi>i</mi></mrow><mo>-</mo><mrow><mfrac><mn>484</mn><mn>42331</mn></mfrac><mspace width="0.5 em" /><mi>j</mi></mrow><mo>-</mo><mrow><mfrac><mn>1936</mn><mn>126993</mn></mfrac><mspace width="0.5 em" /><mi>k</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Fraction Integer
+</div>
+
+
+
+<p>The usual arithmetic (ring) operations are available
+</p>
+
+
+
+
+<div id="spadComm9-123" class="spadComm" >
+<form id="formComm9-123" action="javascript:makeRequest('9-123');" >
+<input id="comm9-123" type="text" class="command" style="width: 4em;" value="q**6 " />
+</form>
+<span id="commSav9-123" class="commSav" >q**6 </span>
+<div id="mathAns9-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>2029490709319345</mn><mn>7256313856</mn></mfrac><mo>-</mo><mrow><mfrac><mn>48251690851</mn><mn>1288408</mn></mfrac><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mfrac><mn>144755072553</mn><mn>41229056</mn></mfrac><mspace width="0.5 em" /><mi>j</mi></mrow><mo>+</mo><mrow><mfrac><mn>48251690851</mn><mn>10307264</mn></mfrac><mspace width="0.5 em" /><mi>k</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-124" class="spadComm" >
+<form id="formComm9-124" action="javascript:makeRequest('9-124');" >
+<input id="comm9-124" type="text" class="command" style="width: 24em;" value="r := quatern(-2,3,23/9,-89); q + r " />
+</form>
+<span id="commSav9-124" class="commSav" >r := quatern(-2,3,23/9,-89); q + r </span>
+<div id="mathAns9-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mfrac><mn>20</mn><mn>11</mn></mfrac><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mrow><mfrac><mn>119</mn><mn>36</mn></mfrac><mspace width="0.5 em" /><mi>j</mi></mrow><mo>-</mo><mrow><mn>88</mn><mspace width="0.5 em" /><mi>k</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Fraction Integer
+</div>
+
+
+
+<p>In general, multiplication is not commutative.
+</p>
+
+
+
+
+<div id="spadComm9-125" class="spadComm" >
+<form id="formComm9-125" action="javascript:makeRequest('9-125');" >
+<input id="comm9-125" type="text" class="command" style="width: 9em;" value="q * r - r * q" />
+</form>
+<span id="commSav9-125" class="commSav" >q * r - r * q</span>
+<div id="mathAns9-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mfrac><mn>2495</mn><mn>18</mn></mfrac><mspace width="0.5 em" /><mi>i</mi></mrow><mo>-</mo><mrow><mn>1418</mn><mspace width="0.5 em" /><mi>j</mi></mrow><mo>-</mo><mrow><mfrac><mn>817</mn><mn>18</mn></mfrac><mspace width="0.5 em" /><mi>k</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Fraction Integer
+</div>
+
+
+
+<p>There are no predefined constants for the imaginary <span class="teletype">i, j</span>,
+and <span class="teletype">k</span> parts, but you can easily define them.
+</p>
+
+
+
+
+<div id="spadComm9-126" class="spadComm" >
+<form id="formComm9-126" action="javascript:makeRequest('9-126');" >
+<input id="comm9-126" type="text" class="command" style="width: 42em;" value="i:=quatern(0,1,0,0); j:=quatern(0,0,1,0); k:=quatern(0,0,0,1) " />
+</form>
+<span id="commSav9-126" class="commSav" >i:=quatern(0,1,0,0); j:=quatern(0,0,1,0); k:=quatern(0,0,0,1) </span>
+<div id="mathAns9-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>k</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Integer
+</div>
+
+
+
+<p>These satisfy the normal identities.
+</p>
+
+
+
+
+<div id="spadComm9-127" class="spadComm" >
+<form id="formComm9-127" action="javascript:makeRequest('9-127');" >
+<input id="comm9-127" type="text" class="command" style="width: 24em;" value="[i*i, j*j, k*k, i*j, j*k, k*i, q*i] " />
+</form>
+<span id="commSav9-127" class="commSav" >[i*i, j*j, k*k, i*j, j*k, k*i, q*i] </span>
+<div id="mathAns9-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mi>k</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mrow><mn>8</mn><mo>+</mo><mrow><mfrac><mn>2</mn><mn>11</mn></mfrac><mspace width="0.5 em" /><mi>i</mi></mrow><mo>+</mo><mi>j</mi><mo>-</mo><mrow><mfrac><mn>3</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mi>k</mi></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Quaternion Fraction Integer
+</div>
+
+
+
+<p>The norm is the quaternion times its conjugate.
+</p>
+
+
+
+
+<div id="spadComm9-128" class="spadComm" >
+<form id="formComm9-128" action="javascript:makeRequest('9-128');" >
+<input id="comm9-128" type="text" class="command" style="width: 5em;" value="norm q " />
+</form>
+<span id="commSav9-128" class="commSav" >norm q </span>
+<div id="mathAns9-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>126993</mn><mn>1936</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-129" class="spadComm" >
+<form id="formComm9-129" action="javascript:makeRequest('9-129');" >
+<input id="comm9-129" type="text" class="command" style="width: 9em;" value="conjugate q  " />
+</form>
+<span id="commSav9-129" class="commSav" >conjugate q  </span>
+<div id="mathAns9-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>2</mn><mn>11</mn></mfrac><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>i</mi></mrow><mo>-</mo><mrow><mfrac><mn>3</mn><mn>4</mn></mfrac><mspace width="0.5 em" /><mi>j</mi></mrow><mo>-</mo><mi>k</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-130" class="spadComm" >
+<form id="formComm9-130" action="javascript:makeRequest('9-130');" >
+<input id="comm9-130" type="text" class="command" style="width: 5em;" value="q * % " />
+</form>
+<span id="commSav9-130" class="commSav" >q * % </span>
+<div id="mathAns9-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>126993</mn><mn>1936</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Quaternion Fraction Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.63.xhtml" style="margin-right: 10px;">Previous Section 9.63 Polynomial</a><a href="section-9.65.xhtml" style="margin-right: 10px;">Next Section 9.65 RadixExpansion</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.65.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.65.xhtml
new file mode 100644
index 0000000..e015729
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.65.xhtml
@@ -0,0 +1,573 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.65</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.64.xhtml" style="margin-right: 10px;">Previous Section 9.64 Quaternion</a><a href="section-9.66.xhtml" style="margin-right: 10px;">Next Section 9.66 RealClosure</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.65">
+<h2 class="sectiontitle">9.65  RadixExpansion</h2>
+
+
+<a name="RadixExpansionXmpPage" class="label"/>
+
+
+<p>It possible to expand numbers in general bases.
+</p>
+
+
+<p>Here we expand <span class="teletype">111</span> in base <span class="teletype">5</span>.
+This means
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm9-131" class="spadComm" >
+<form id="formComm9-131" action="javascript:makeRequest('9-131');" >
+<input id="comm9-131" type="text" class="command" style="width: 15em;" value="111::RadixExpansion(5)" />
+</form>
+<span id="commSav9-131" class="commSav" >111::RadixExpansion(5)</span>
+<div id="mathAns9-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>421</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 5
+</div>
+
+
+
+<p>You can expand fractions to form repeating expansions.
+</p>
+
+
+
+
+<div id="spadComm9-132" class="spadComm" >
+<form id="formComm9-132" action="javascript:makeRequest('9-132');" >
+<input id="comm9-132" type="text" class="command" style="width: 17em;" value="(5/24)::RadixExpansion(2)" />
+</form>
+<span id="commSav9-132" class="commSav" >(5/24)::RadixExpansion(2)</span>
+<div id="mathAns9-132" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>001</mn><mrow><mover accent="true"><mrow><mn>10</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 2
+</div>
+
+
+
+
+
+<div id="spadComm9-133" class="spadComm" >
+<form id="formComm9-133" action="javascript:makeRequest('9-133');" >
+<input id="comm9-133" type="text" class="command" style="width: 17em;" value="(5/24)::RadixExpansion(3)" />
+</form>
+<span id="commSav9-133" class="commSav" >(5/24)::RadixExpansion(3)</span>
+<div id="mathAns9-133" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>0</mn><mrow><mover accent="true"><mrow><mn>12</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 3
+</div>
+
+
+
+
+
+<div id="spadComm9-134" class="spadComm" >
+<form id="formComm9-134" action="javascript:makeRequest('9-134');" >
+<input id="comm9-134" type="text" class="command" style="width: 17em;" value="(5/24)::RadixExpansion(8)" />
+</form>
+<span id="commSav9-134" class="commSav" >(5/24)::RadixExpansion(8)</span>
+<div id="mathAns9-134" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>1</mn><mrow><mover accent="true"><mrow><mn>52</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 8
+</div>
+
+
+
+
+
+<div id="spadComm9-135" class="spadComm" >
+<form id="formComm9-135" action="javascript:makeRequest('9-135');" >
+<input id="comm9-135" type="text" class="command" style="width: 18em;" value="(5/24)::RadixExpansion(10)" />
+</form>
+<span id="commSav9-135" class="commSav" >(5/24)::RadixExpansion(10)</span>
+<div id="mathAns9-135" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>208</mn><mrow><mover accent="true"><mrow><mn>3</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 10
+</div>
+
+
+
+<p>For bases from 11 to 36 the letters A through Z are used.
+</p>
+
+
+
+
+<div id="spadComm9-136" class="spadComm" >
+<form id="formComm9-136" action="javascript:makeRequest('9-136');" >
+<input id="comm9-136" type="text" class="command" style="width: 18em;" value="(5/24)::RadixExpansion(12)" />
+</form>
+<span id="commSav9-136" class="commSav" >(5/24)::RadixExpansion(12)</span>
+<div id="mathAns9-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>26</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 12
+</div>
+
+
+
+
+
+<div id="spadComm9-137" class="spadComm" >
+<form id="formComm9-137" action="javascript:makeRequest('9-137');" >
+<input id="comm9-137" type="text" class="command" style="width: 18em;" value="(5/24)::RadixExpansion(16)" />
+</form>
+<span id="commSav9-137" class="commSav" >(5/24)::RadixExpansion(16)</span>
+<div id="mathAns9-137" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mn>3</mn><mrow><mover accent="true"><mrow><mn>5</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 16
+</div>
+
+
+
+
+
+<div id="spadComm9-138" class="spadComm" >
+<form id="formComm9-138" action="javascript:makeRequest('9-138');" >
+<input id="comm9-138" type="text" class="command" style="width: 18em;" value="(5/24)::RadixExpansion(36)" />
+</form>
+<span id="commSav9-138" class="commSav" >(5/24)::RadixExpansion(36)</span>
+<div id="mathAns9-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mrow><mtext>7I</mtext></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 36
+</div>
+
+
+
+<p>For bases greater than 36, the ragits are separated by blanks.
+</p>
+
+
+
+
+<div id="spadComm9-139" class="spadComm" >
+<form id="formComm9-139" action="javascript:makeRequest('9-139');" >
+<input id="comm9-139" type="text" class="command" style="width: 18em;" value="(5/24)::RadixExpansion(38)" />
+</form>
+<span id="commSav9-139" class="commSav" >(5/24)::RadixExpansion(38)</span>
+<div id="mathAns9-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mspace width="0.5 em" /><mo>.</mo><mspace width="0.5 em" /><mn>7</mn><mspace width="0.5 em" /><mn>34</mn><mspace width="0.5 em" /><mn>31</mn><mspace width="0.5 em" /><mrow><mover accent="true"><mrow><mrow><mn>25</mn><mspace width="0.5 em" /><mn>12</mn></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 38
+</div>
+
+
+
+<p>The <span class="teletype">RadixExpansion</span> type provides operations to obtain the
+individual ragits.  Here is a rational number in base <span class="teletype">8</span>.
+</p>
+
+
+
+
+<div id="spadComm9-140" class="spadComm" >
+<form id="formComm9-140" action="javascript:makeRequest('9-140');" >
+<input id="comm9-140" type="text" class="command" style="width: 24em;" value="a := (76543/210)::RadixExpansion(8) " />
+</form>
+<span id="commSav9-140" class="commSav" >a := (76543/210)::RadixExpansion(8) </span>
+<div id="mathAns9-140" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>554</mn><mo>.</mo><mn>3</mn><mrow><mover accent="true"><mrow><mn>7307</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 8
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >wholeRagits</span><span class="index">wholeRagits</span><a name="chapter-9-91"/><span class="index">RadixExpansion</span><a name="chapter-9-92"/> returns a list of the
+ragits for the integral part of the number.
+</p>
+
+
+
+
+<div id="spadComm9-141" class="spadComm" >
+<form id="formComm9-141" action="javascript:makeRequest('9-141');" >
+<input id="comm9-141" type="text" class="command" style="width: 13em;" value="w := wholeRagits a " />
+</form>
+<span id="commSav9-141" class="commSav" >w := wholeRagits a </span>
+<div id="mathAns9-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>5</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>The operations <span class="spadfunFrom" >prefixRagits</span><span class="index">prefixRagits</span><a name="chapter-9-93"/><span class="index">RadixExpansion</span><a name="chapter-9-94"/> and
+<span class="spadfunFrom" >cycleRagits</span><span class="index">cycleRagits</span><a name="chapter-9-95"/><span class="index">RadixExpansion</span><a name="chapter-9-96"/> return lists of the initial
+and repeating ragits in the fractional part of the number.
+</p>
+
+
+
+
+<div id="spadComm9-142" class="spadComm" >
+<form id="formComm9-142" action="javascript:makeRequest('9-142');" >
+<input id="comm9-142" type="text" class="command" style="width: 14em;" value="f0 := prefixRagits a " />
+</form>
+<span id="commSav9-142" class="commSav" >f0 := prefixRagits a </span>
+<div id="mathAns9-142" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-143" class="spadComm" >
+<form id="formComm9-143" action="javascript:makeRequest('9-143');" >
+<input id="comm9-143" type="text" class="command" style="width: 14em;" value="f1 := cycleRagits a " />
+</form>
+<span id="commSav9-143" class="commSav" >f1 := cycleRagits a </span>
+<div id="mathAns9-143" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>7</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>You can construct any radix expansion by giving the whole, prefix and
+cycle parts.  The declaration is necessary to let Axiom know the base
+of the ragits.
+</p>
+
+
+
+
+<div id="spadComm9-144" class="spadComm" >
+<form id="formComm9-144" action="javascript:makeRequest('9-144');" >
+<input id="comm9-144" type="text" class="command" style="width: 36em;" value="u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1) " />
+</form>
+<span id="commSav9-144" class="commSav" >u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1) </span>
+<div id="mathAns9-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>554</mn><mo>.</mo><mn>3</mn><mrow><mover accent="true"><mrow><mn>7307</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 8
+</div>
+
+
+
+<p>If there is no repeating part, then the list <span class="teletype">[0]</span> should be used.
+</p>
+
+
+
+
+<div id="spadComm9-145" class="spadComm" >
+<form id="formComm9-145" action="javascript:makeRequest('9-145');" >
+<input id="comm9-145" type="text" class="command" style="width: 36em;" value="v: RadixExpansion(12) := fractRadix([1,2,3,11], [0]) " />
+</form>
+<span id="commSav9-145" class="commSav" >v: RadixExpansion(12) := fractRadix([1,2,3,11], [0]) </span>
+<div id="mathAns9-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>0</mn><mo>.</mo><mrow><mn>123</mn><mi>B</mi></mrow><mrow><mover accent="true"><mrow><mn>0</mn></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RadixExpansion 12
+</div>
+
+
+
+<p>If you are not interested in the repeating nature of the expansion,
+an infinite stream of ragits can be obtained using
+<span class="spadfunFrom" >fractRagits</span><span class="index">fractRagits</span><a name="chapter-9-97"/><span class="index">RadixExpansion</span><a name="chapter-9-98"/>.
+</p>
+
+
+
+
+<div id="spadComm9-146" class="spadComm" >
+<form id="formComm9-146" action="javascript:makeRequest('9-146');" >
+<input id="comm9-146" type="text" class="command" style="width: 10em;" value="fractRagits(u) " />
+</form>
+<span id="commSav9-146" class="commSav" >fractRagits(u) </span>
+<div id="mathAns9-146" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>7</mn><mo>,</mo><mrow><mover accent="true"><mrow><mrow><mn>3</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>7</mn></mrow></mrow><mo stretchy="true">&OverBar;</mo></mover></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>Of course, it's possible to recover the fraction representation:
+</p>
+
+
+
+
+<div id="spadComm9-147" class="spadComm" >
+<form id="formComm9-147" action="javascript:makeRequest('9-147');" >
+<input id="comm9-147" type="text" class="command" style="width: 16em;" value="a :: Fraction(Integer) " />
+</form>
+<span id="commSav9-147" class="commSav" >a :: Fraction(Integer) </span>
+<div id="mathAns9-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>76543</mn><mn>210</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Integer
+</div>
+
+
+
+<p>More examples of expansions are available in
+<a href="section-9.15.xhtml#DecimalExpansionXmpPage" class="ref" >DecimalExpansionXmpPage</a> , 
+<a href="section-9.4.xhtml#BinaryExpansionXmpPage" class="ref" >BinaryExpansionXmpPage</a> , and
+<a href="section-9.33.xhtml#HexadecimalExpansionXmpPage" class="ref" >HexadecimalExpansionXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.64.xhtml" style="margin-right: 10px;">Previous Section 9.64 Quaternion</a><a href="section-9.66.xhtml" style="margin-right: 10px;">Next Section 9.66 RealClosure</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.66.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.66.xhtml
new file mode 100644
index 0000000..31c4501
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.66.xhtml
@@ -0,0 +1,2113 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.66</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.65.xhtml" style="margin-right: 10px;">Previous Section 9.65 RadixExpansion</a><a href="section-9.67.xhtml" style="margin-right: 10px;">Next Section 9.67 RegularTriangularSet</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.66">
+<h2 class="sectiontitle">9.66  RealClosure</h2>
+
+
+<a name="RealClosureXmpPage" class="label"/>
+
+
+<p>The Real Closure 1.0 package provided by Renaud Rioboo
+(Renaud.Rioboo@lip6.fr) consists of different packages, categories and
+domains :
+</p>
+
+
+
+
+<div class="beginlist">
+<div class="item">
+ The package <span class="teletype">RealPolynomialUtilitiesPackage</span> which needs a
+<span class="teletype">Field</span> <span class="em">F</span> and a <span class="teletype">UnivariatePolynomialCategory</span> domain
+with coefficients in <span class="em">F</span>. It computes some simple functions such
+as Sturm and Sylvester sequences
+(<span class="spadfunFrom" >sturmSequence</span><span class="index">sturmSequence</span><a name="chapter-9-99"/><span class="index">RealPolynomialUtilitiesPackage</span><a name="chapter-9-100"/>,
+<span class="spadfunFrom" >sylvesterSequence</span><span class="index">sylvesterSequence</span><a name="chapter-9-101"/><span class="index">RealPolynomialUtilitiesPackage</span><a name="chapter-9-102"/>).
+
+</div>
+<div class="item"> The category <span class="teletype">RealRootCharacterizationCategory</span> provides abstract
+functions to work with ``real roots'' of univariate polynomials. These
+resemble variables with some functionality needed to compute important
+operations.
+
+</div>
+<div class="item"> The category <span class="teletype">RealClosedField</span> provides common operations
+available over real closed fiels. These include finding all the roots
+of a univariate polynomial, taking square (and higher) roots, ...
+
+</div>
+<div class="item"> The domain <span class="teletype">RightOpenIntervalRootCharacterization</span> is the
+main code that provides the functionality of <span class="teletype">RealRootCharacterizationCategory</span> for the case of archimedean
+fields. Abstract roots are encoded with a left closed right open
+interval containing the root together with a defining polynomial for
+the root.
+
+</div>
+<div class="item"> The <span class="teletype">RealClosure</span> domain is the end-user code. It provides
+usual arithmetic with real algebraic numbers, along with the
+functionality of a real closed field. It also provides functions to
+approximate a real algebraic number by an element of the base
+field. This approximation may either be absolute
+(<span class="spadfunFrom" >approximate</span><span class="index">approximate</span><a name="chapter-9-103"/><span class="index">RealClosure</span><a name="chapter-9-104"/>) or relative
+(<span class="spadfunFrom" >relativeApprox</span><span class="index">relativeApprox</span><a name="chapter-9-105"/><span class="index">RealClosure</span><a name="chapter-9-106"/>).
+
+</div>
+</div>
+
+
+
+
+
+<div class="centerline">CAVEATS</div>
+
+
+
+<p>Since real algebraic expressions are stored as depending on ``real
+roots'' which are managed like variables, there is an ordering on
+these. This ordering is dynamical in the sense that any new algebraic
+takes precedence over older ones. In particular every creation
+function raises a new ``real root''. This has the effect that when you
+type something like <span class="teletype">sqrt(2) + sqrt(2)</span> you have two new variables
+which happen to be equal. To avoid this name the expression such as in
+<span class="teletype">s2 := sqrt(2) ; s2 + s2</span>
+</p>
+
+
+<p>Also note that computing times depend strongly on the ordering you
+implicitly provide. Please provide algebraics in the order which seems
+most natural to you.
+</p>
+
+
+
+
+<div class="centerline">LIMITATIONS</div>
+
+
+
+<p>These packages use algorithms which are published in [1] and [2] which
+are based on field arithmetics, in particular for polynomial gcd
+related algorithms. This can be quite slow for high degree polynomials
+and subresultants methods usually work best. Beta versions of the
+package try to use these techniques in a better way and work
+significantly faster. These are mostly based on unpublished algorithms
+and cannot be distributed. Please contact the author if you have a
+particular problem to solve or want to use these versions.
+</p>
+
+
+<p>Be aware that approximations behave as post-processing and that all
+computations are done exactly. They can thus be quite time consuming when
+depending on several ``real roots''.
+</p>
+
+
+
+
+<div class="centerline">REFERENCES</div>
+
+
+
+
+<p>[1]  R. Rioboo : Real Algebraic Closure of an ordered Field : Implementation 
+     in Axiom. 
+     In proceedings of the ISSAC'92 Conference, Berkeley 1992 pp. 206-215.
+</p>
+
+
+<p>[2]  Z. Ligatsikas, R. Rioboo, M. F. Roy : Generic computation of the real
+     closure of an ordered field.
+     In Mathematics and Computers in Simulation Volume 42, Issue 4-6,
+     November 1996.
+</p>
+
+
+
+
+<div class="centerline">EXAMPLES</div>
+
+
+
+<p>We shall work with the real closure of the ordered field of 
+rational numbers.
+</p>
+
+
+
+
+<div id="spadComm9-148" class="spadComm" >
+<form id="formComm9-148" action="javascript:makeRequest('9-148');" >
+<input id="comm9-148" type="text" class="command" style="width: 16em;" value="Ran := RECLOS(FRAC INT) " />
+</form>
+<span id="commSav9-148" class="commSav" >Ran := RECLOS(FRAC INT) </span>
+<div id="mathAns9-148" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>RealClosureFractionInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Some simple signs for square roots, these correspond to an extension
+of degree 16 of the rational numbers. Examples provided by J. Abbot.
+</p>
+
+
+
+
+<div id="spadComm9-149" class="spadComm" >
+<form id="formComm9-149" action="javascript:makeRequest('9-149');" >
+<input id="comm9-149" type="text" class="command" style="width: 53em;" value="fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d)  " />
+</form>
+<span id="commSav9-149" class="commSav" >fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d)  </span>
+<div id="mathAns9-149" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Function&nbsp;declaration&nbsp;fourSquares&nbsp;:&nbsp;(RealClosure&nbsp;Fraction&nbsp;Integer,<br />
+&nbsp;&nbsp;&nbsp;RealClosure&nbsp;Fraction&nbsp;Integer,RealClosure&nbsp;Fraction&nbsp;Integer,<br />
+&nbsp;&nbsp;&nbsp;RealClosure&nbsp;Fraction&nbsp;Integer)&nbsp;-&gt;&nbsp;RealClosure&nbsp;Fraction&nbsp;Integer&nbsp;has<br />
+&nbsp;&nbsp;&nbsp;been&nbsp;added&nbsp;to&nbsp;workspace.<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>These produce values very close to zero.
+</p>
+
+
+
+
+<div id="spadComm9-150" class="spadComm" >
+<form id="formComm9-150" action="javascript:makeRequest('9-150');" >
+<input id="comm9-150" type="text" class="command" style="width: 28em;" value="squareDiff1 := fourSquares(73,548,60,586) " />
+</form>
+<span id="commSav9-150" class="commSav" >squareDiff1 := fourSquares(73,548,60,586) </span>
+<div id="mathAns9-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msqrt><mn>586</mn></msqrt></mrow><mo>-</mo><mrow><msqrt><mn>60</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>548</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>73</mn></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-151" class="spadComm" >
+<form id="formComm9-151" action="javascript:makeRequest('9-151');" >
+<input id="comm9-151" type="text" class="command" style="width: 12em;" value="recip(squareDiff1)" />
+</form>
+<span id="commSav9-151" class="commSav" >recip(squareDiff1)</span>
+<div id="mathAns9-151" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mrow><mn>54602</mn><mspace width="0.5 em" /><mrow><msqrt><mn>548</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>149602</mn><mspace width="0.5 em" /><mrow><msqrt><mn>73</mn></msqrt></mrow></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>60</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>49502</mn><mspace width="0.5 em" /><mrow><msqrt><mn>73</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>548</mn></msqrt></mrow></mrow><mo>+</mo><mn>9900895</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>586</mn></msqrt></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>154702</mn><mspace width="0.5 em" /><mrow><msqrt><mn>73</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>548</mn></msqrt></mrow></mrow><mo>+</mo><mn>30941947</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>60</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>10238421</mn><mspace width="0.5 em" /><mrow><msqrt><mn>548</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>28051871</mn><mspace width="0.5 em" /><mrow><msqrt><mn>73</mn></msqrt></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(RealClosure Fraction Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-152" class="spadComm" >
+<form id="formComm9-152" action="javascript:makeRequest('9-152');" >
+<input id="comm9-152" type="text" class="command" style="width: 12em;" value="sign(squareDiff1)" />
+</form>
+<span id="commSav9-152" class="commSav" >sign(squareDiff1)</span>
+<div id="mathAns9-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-153" class="spadComm" >
+<form id="formComm9-153" action="javascript:makeRequest('9-153');" >
+<input id="comm9-153" type="text" class="command" style="width: 29em;" value="squareDiff2 := fourSquares(165,778,86,990) " />
+</form>
+<span id="commSav9-153" class="commSav" >squareDiff2 := fourSquares(165,778,86,990) </span>
+<div id="mathAns9-153" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msqrt><mn>990</mn></msqrt></mrow><mo>-</mo><mrow><msqrt><mn>86</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>778</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>165</mn></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-154" class="spadComm" >
+<form id="formComm9-154" action="javascript:makeRequest('9-154');" >
+<input id="comm9-154" type="text" class="command" style="width: 12em;" value="recip(squareDiff2)" />
+</form>
+<span id="commSav9-154" class="commSav" >recip(squareDiff2)</span>
+<div id="mathAns9-154" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mo>(</mo><mrow><mn>556778</mn><mspace width="0.5 em" /><mrow><msqrt><mn>778</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>1209010</mn><mspace width="0.5 em" /><mrow><msqrt><mn>165</mn></msqrt></mrow></mrow><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>86</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>401966</mn><mspace width="0.5 em" /><mrow><msqrt><mn>165</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>778</mn></msqrt></mrow></mrow><mo>+</mo><mn>144019431</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>990</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>1363822</mn><mspace width="0.5 em" /><mrow><msqrt><mn>165</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>778</mn></msqrt></mrow></mrow><mo>+</mo><mn>488640503</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>86</mn></msqrt></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>162460913</mn><mspace width="0.5 em" /><mrow><msqrt><mn>778</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>352774119</mn><mspace width="0.5 em" /><mrow><msqrt><mn>165</mn></msqrt></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(RealClosure Fraction Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-155" class="spadComm" >
+<form id="formComm9-155" action="javascript:makeRequest('9-155');" >
+<input id="comm9-155" type="text" class="command" style="width: 12em;" value="sign(squareDiff2)" />
+</form>
+<span id="commSav9-155" class="commSav" >sign(squareDiff2)</span>
+<div id="mathAns9-155" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-156" class="spadComm" >
+<form id="formComm9-156" action="javascript:makeRequest('9-156');" >
+<input id="comm9-156" type="text" class="command" style="width: 30em;" value="squareDiff3 := fourSquares(217,708,226,692) " />
+</form>
+<span id="commSav9-156" class="commSav" >squareDiff3 := fourSquares(217,708,226,692) </span>
+<div id="mathAns9-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msqrt><mn>692</mn></msqrt></mrow><mo>-</mo><mrow><msqrt><mn>226</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>708</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>217</mn></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-157" class="spadComm" >
+<form id="formComm9-157" action="javascript:makeRequest('9-157');" >
+<input id="comm9-157" type="text" class="command" style="width: 12em;" value="recip(squareDiff3)" />
+</form>
+<span id="commSav9-157" class="commSav" >recip(squareDiff3)</span>
+<div id="mathAns9-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mo>(</mo><mo>-</mo><mrow><mn>34102</mn><mspace width="0.5 em" /><mrow><msqrt><mn>708</mn></msqrt></mrow></mrow><mo>-</mo><mrow><mn>61598</mn><mspace width="0.5 em" /><mrow><msqrt><mn>217</mn></msqrt></mrow></mrow><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>226</mn></msqrt></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>34802</mn><mspace width="0.5 em" /><mrow><msqrt><mn>217</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>708</mn></msqrt></mrow></mrow><mo>-</mo><mn>13641141</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>692</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mrow><mn>60898</mn><mspace width="0.5 em" /><mrow><msqrt><mn>217</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>708</mn></msqrt></mrow></mrow><mo>-</mo><mn>23869841</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>226</mn></msqrt></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>13486123</mn><mspace width="0.5 em" /><mrow><msqrt><mn>708</mn></msqrt></mrow></mrow><mo>-</mo><mrow><mn>24359809</mn><mspace width="0.5 em" /><mrow><msqrt><mn>217</mn></msqrt></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(RealClosure Fraction Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-158" class="spadComm" >
+<form id="formComm9-158" action="javascript:makeRequest('9-158');" >
+<input id="comm9-158" type="text" class="command" style="width: 12em;" value="sign(squareDiff3)" />
+</form>
+<span id="commSav9-158" class="commSav" >sign(squareDiff3)</span>
+<div id="mathAns9-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-159" class="spadComm" >
+<form id="formComm9-159" action="javascript:makeRequest('9-159');" >
+<input id="comm9-159" type="text" class="command" style="width: 30em;" value="squareDiff4 := fourSquares(155,836,162,820)  " />
+</form>
+<span id="commSav9-159" class="commSav" >squareDiff4 := fourSquares(155,836,162,820)  </span>
+<div id="mathAns9-159" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msqrt><mn>820</mn></msqrt></mrow><mo>-</mo><mrow><msqrt><mn>162</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>836</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>155</mn></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-160" class="spadComm" >
+<form id="formComm9-160" action="javascript:makeRequest('9-160');" >
+<input id="comm9-160" type="text" class="command" style="width: 12em;" value="recip(squareDiff4)" />
+</form>
+<span id="commSav9-160" class="commSav" >recip(squareDiff4)</span>
+<div id="mathAns9-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mo>(</mo><mo>-</mo><mrow><mn>37078</mn><mspace width="0.5 em" /><mrow><msqrt><mn>836</mn></msqrt></mrow></mrow><mo>-</mo><mrow><mn>86110</mn><mspace width="0.5 em" /><mrow><msqrt><mn>155</mn></msqrt></mrow></mrow><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>162</mn></msqrt></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>37906</mn><mspace width="0.5 em" /><mrow><msqrt><mn>155</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>836</mn></msqrt></mrow></mrow><mo>-</mo><mn>13645107</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>820</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mrow><mn>85282</mn><mspace width="0.5 em" /><mrow><msqrt><mn>155</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>836</mn></msqrt></mrow></mrow><mo>-</mo><mn>30699151</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>162</mn></msqrt></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>13513901</mn><mspace width="0.5 em" /><mrow><msqrt><mn>836</mn></msqrt></mrow></mrow><mo>-</mo><mrow><mn>31384703</mn><mspace width="0.5 em" /><mrow><msqrt><mn>155</mn></msqrt></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(RealClosure Fraction Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-161" class="spadComm" >
+<form id="formComm9-161" action="javascript:makeRequest('9-161');" >
+<input id="comm9-161" type="text" class="command" style="width: 12em;" value="sign(squareDiff4)" />
+</form>
+<span id="commSav9-161" class="commSav" >sign(squareDiff4)</span>
+<div id="mathAns9-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-162" class="spadComm" >
+<form id="formComm9-162" action="javascript:makeRequest('9-162');" >
+<input id="comm9-162" type="text" class="command" style="width: 30em;" value="squareDiff5 := fourSquares(591,772,552,818) " />
+</form>
+<span id="commSav9-162" class="commSav" >squareDiff5 := fourSquares(591,772,552,818) </span>
+<div id="mathAns9-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msqrt><mn>818</mn></msqrt></mrow><mo>-</mo><mrow><msqrt><mn>552</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>772</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>591</mn></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-163" class="spadComm" >
+<form id="formComm9-163" action="javascript:makeRequest('9-163');" >
+<input id="comm9-163" type="text" class="command" style="width: 12em;" value="recip(squareDiff5)" />
+</form>
+<span id="commSav9-163" class="commSav" >recip(squareDiff5)</span>
+<div id="mathAns9-163" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mo>(</mo><mrow><mn>70922</mn><mspace width="0.5 em" /><mrow><msqrt><mn>772</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>81058</mn><mspace width="0.5 em" /><mrow><msqrt><mn>591</mn></msqrt></mrow></mrow><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>552</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>68542</mn><mspace width="0.5 em" /><mrow><msqrt><mn>591</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>772</mn></msqrt></mrow></mrow><mo>+</mo><mn>46297673</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>818</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mrow><mn>83438</mn><mspace width="0.5 em" /><mrow><msqrt><mn>591</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>772</mn></msqrt></mrow></mrow><mo>+</mo><mn>56359389</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>552</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>47657051</mn><mspace width="0.5 em" /><mrow><msqrt><mn>772</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>54468081</mn><mspace width="0.5 em" /><mrow><msqrt><mn>591</mn></msqrt></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(RealClosure Fraction Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-164" class="spadComm" >
+<form id="formComm9-164" action="javascript:makeRequest('9-164');" >
+<input id="comm9-164" type="text" class="command" style="width: 12em;" value="sign(squareDiff5)" />
+</form>
+<span id="commSav9-164" class="commSav" >sign(squareDiff5)</span>
+<div id="mathAns9-164" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-165" class="spadComm" >
+<form id="formComm9-165" action="javascript:makeRequest('9-165');" >
+<input id="comm9-165" type="text" class="command" style="width: 31em;" value="squareDiff6 := fourSquares(434,1053,412,1088) " />
+</form>
+<span id="commSav9-165" class="commSav" >squareDiff6 := fourSquares(434,1053,412,1088) </span>
+<div id="mathAns9-165" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msqrt><mn>1088</mn></msqrt></mrow><mo>-</mo><mrow><msqrt><mn>412</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>1053</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>434</mn></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-166" class="spadComm" >
+<form id="formComm9-166" action="javascript:makeRequest('9-166');" >
+<input id="comm9-166" type="text" class="command" style="width: 12em;" value="recip(squareDiff6)" />
+</form>
+<span id="commSav9-166" class="commSav" >recip(squareDiff6)</span>
+<div id="mathAns9-166" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mo>(</mo><mrow><mn>115442</mn><mspace width="0.5 em" /><mrow><msqrt><mn>1053</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>179818</mn><mspace width="0.5 em" /><mrow><msqrt><mn>434</mn></msqrt></mrow></mrow><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>412</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>112478</mn><mspace width="0.5 em" /><mrow><msqrt><mn>434</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>1053</mn></msqrt></mrow></mrow><mo>+</mo><mn>76037291</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>1088</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mrow><mn>182782</mn><mspace width="0.5 em" /><mrow><msqrt><mn>434</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>1053</mn></msqrt></mrow></mrow><mo>+</mo><mn>123564147</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>412</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>77290639</mn><mspace width="0.5 em" /><mrow><msqrt><mn>1053</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>120391609</mn><mspace width="0.5 em" /><mrow><msqrt><mn>434</mn></msqrt></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(RealClosure Fraction Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-167" class="spadComm" >
+<form id="formComm9-167" action="javascript:makeRequest('9-167');" >
+<input id="comm9-167" type="text" class="command" style="width: 12em;" value="sign(squareDiff6)" />
+</form>
+<span id="commSav9-167" class="commSav" >sign(squareDiff6)</span>
+<div id="mathAns9-167" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-168" class="spadComm" >
+<form id="formComm9-168" action="javascript:makeRequest('9-168');" >
+<input id="comm9-168" type="text" class="command" style="width: 31em;" value="squareDiff7 := fourSquares(514,1049,446,1152) " />
+</form>
+<span id="commSav9-168" class="commSav" >squareDiff7 := fourSquares(514,1049,446,1152) </span>
+<div id="mathAns9-168" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msqrt><mn>1152</mn></msqrt></mrow><mo>-</mo><mrow><msqrt><mn>446</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>1049</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>514</mn></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-169" class="spadComm" >
+<form id="formComm9-169" action="javascript:makeRequest('9-169');" >
+<input id="comm9-169" type="text" class="command" style="width: 12em;" value="recip(squareDiff7)" />
+</form>
+<span id="commSav9-169" class="commSav" >recip(squareDiff7)</span>
+<div id="mathAns9-169" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mo>(</mo><mrow><mn>349522</mn><mspace width="0.5 em" /><mrow><msqrt><mn>1049</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>499322</mn><mspace width="0.5 em" /><mrow><msqrt><mn>514</mn></msqrt></mrow></mrow><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>446</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>325582</mn><mspace width="0.5 em" /><mrow><msqrt><mn>514</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>1049</mn></msqrt></mrow></mrow><mo>+</mo><mn>239072537</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>1152</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mrow><mn>523262</mn><mspace width="0.5 em" /><mrow><msqrt><mn>514</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>1049</mn></msqrt></mrow></mrow><mo>+</mo><mn>384227549</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>446</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>250534873</mn><mspace width="0.5 em" /><mrow><msqrt><mn>1049</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>357910443</mn><mspace width="0.5 em" /><mrow><msqrt><mn>514</mn></msqrt></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(RealClosure Fraction Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-170" class="spadComm" >
+<form id="formComm9-170" action="javascript:makeRequest('9-170');" >
+<input id="comm9-170" type="text" class="command" style="width: 12em;" value="sign(squareDiff7)" />
+</form>
+<span id="commSav9-170" class="commSav" >sign(squareDiff7)</span>
+<div id="mathAns9-170" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-171" class="spadComm" >
+<form id="formComm9-171" action="javascript:makeRequest('9-171');" >
+<input id="comm9-171" type="text" class="command" style="width: 31em;" value="squareDiff8 := fourSquares(190,1751,208,1698) " />
+</form>
+<span id="commSav9-171" class="commSav" >squareDiff8 := fourSquares(190,1751,208,1698) </span>
+<div id="mathAns9-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><msqrt><mn>1698</mn></msqrt></mrow><mo>-</mo><mrow><msqrt><mn>208</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>1751</mn></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>190</mn></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-172" class="spadComm" >
+<form id="formComm9-172" action="javascript:makeRequest('9-172');" >
+<input id="comm9-172" type="text" class="command" style="width: 12em;" value="recip(squareDiff8)" />
+</form>
+<span id="commSav9-172" class="commSav" >recip(squareDiff8)</span>
+<div id="mathAns9-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mo>(</mo><mo>-</mo><mrow><mn>214702</mn><mspace width="0.5 em" /><mrow><msqrt><mn>1751</mn></msqrt></mrow></mrow><mo>-</mo><mrow><mn>651782</mn><mspace width="0.5 em" /><mrow><msqrt><mn>190</mn></msqrt></mrow></mrow><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>208</mn></msqrt></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>224642</mn><mspace width="0.5 em" /><mrow><msqrt><mn>190</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>1751</mn></msqrt></mrow></mrow><mo>-</mo><mn>129571901</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>1698</mn></msqrt></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mrow><mn>641842</mn><mspace width="0.5 em" /><mrow><msqrt><mn>190</mn></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>1751</mn></msqrt></mrow></mrow><mo>-</mo><mn>370209881</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msqrt><mn>208</mn></msqrt></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>127595865</mn><mspace width="0.5 em" /><mrow><msqrt><mn>1751</mn></msqrt></mrow></mrow><mo>-</mo><mrow><mn>387349387</mn><mspace width="0.5 em" /><mrow><msqrt><mn>190</mn></msqrt></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(RealClosure Fraction Integer,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-173" class="spadComm" >
+<form id="formComm9-173" action="javascript:makeRequest('9-173');" >
+<input id="comm9-173" type="text" class="command" style="width: 12em;" value="sign(squareDiff8)" />
+</form>
+<span id="commSav9-173" class="commSav" >sign(squareDiff8)</span>
+<div id="mathAns9-173" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>This should give three digits of precision
+</p>
+
+
+
+
+<div id="spadComm9-174" class="spadComm" >
+<form id="formComm9-174" action="javascript:makeRequest('9-174');" >
+<input id="comm9-174" type="text" class="command" style="width: 30em;" value="relativeApprox(squareDiff8,10**(-3))::Float " />
+</form>
+<span id="commSav9-174" class="commSav" >relativeApprox(squareDiff8,10**(-3))::Float </span>
+<div id="mathAns9-174" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>0</mn><mo>.</mo><mn>2340527771</mn><mspace width="0.5 em" /><mn>5937700123</mn><mi>E</mi><mo>-</mo><mn>10</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Float
+</div>
+
+
+
+<p>The sum of these 4 roots is 0
+</p>
+
+
+
+
+<div id="spadComm9-175" class="spadComm" >
+<form id="formComm9-175" action="javascript:makeRequest('9-175');" >
+<input id="comm9-175" type="text" class="command" style="width: 24em;" value="l := allRootsOf((x**2-2)**2-2)$Ran  " />
+</form>
+<span id="commSav9-175" class="commSav" >l := allRootsOf((x**2-2)**2-2)$Ran  </span>
+<div id="mathAns9-175" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>%</mo><mi>A</mi><mn>33</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>A</mi><mn>34</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>A</mi><mn>35</mn></mrow><mo>,</mo><mrow><mo>%</mo><mi>A</mi><mn>36</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List RealClosure Fraction Integer
+</div>
+
+
+
+<p>Check that they are all roots of the same polynomial
+</p>
+
+
+
+
+<div id="spadComm9-176" class="spadComm" >
+<form id="formComm9-176" action="javascript:makeRequest('9-176');" >
+<input id="comm9-176" type="text" class="command" style="width: 32em;" value="removeDuplicates map(mainDefiningPolynomial,l) " />
+</form>
+<span id="commSav9-176" class="commSav" >removeDuplicates map(mainDefiningPolynomial,l) </span>
+<div id="mathAns9-176" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List Union(SparseUnivariatePolynomial RealClosure Fraction Integer,"failed")
+</div>
+
+
+
+<p>We can see at a glance that they are separate roots
+</p>
+
+
+
+
+<div id="spadComm9-177" class="spadComm" >
+<form id="formComm9-177" action="javascript:makeRequest('9-177');" >
+<input id="comm9-177" type="text" class="command" style="width: 19em;" value="map(mainCharacterization,l) " />
+</form>
+<span id="commSav9-177" class="commSav" >map(mainCharacterization,l) </span>
+<div id="mathAns9-177" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><mo>[</mo><mo>-</mo><mn>2</mn></mrow><mo>,</mo><mrow><mo>-</mo><mn>1</mn><mo>[</mo></mrow></mrow><mo>,</mo><mrow><mrow><mo>[</mo><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>[</mo></mrow></mrow><mo>,</mo><mrow><mrow><mo>[</mo><mn>0</mn></mrow><mo>,</mo><mrow><mn>1</mn><mo>[</mo></mrow></mrow><mo>,</mo><mrow><mrow><mo>[</mo><mn>1</mn></mrow><mo>,</mo><mrow><mn>2</mn><mo>[</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List Union(
+RightOpenIntervalRootCharacterization(
+RealClosure Fraction Integer,
+SparseUnivariatePolynomial RealClosure Fraction Integer),
+"failed")
+</div>
+
+
+
+<p>Check the sum and product
+</p>
+
+
+
+
+<div id="spadComm9-178" class="spadComm" >
+<form id="formComm9-178" action="javascript:makeRequest('9-178');" >
+<input id="comm9-178" type="text" class="command" style="width: 19em;" value="[reduce(+,l),reduce(*,l)-2] " />
+</form>
+<span id="commSav9-178" class="commSav" >[reduce(+,l),reduce(*,l)-2] </span>
+<div id="mathAns9-178" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List RealClosure Fraction Integer
+</div>
+
+
+
+<p>A more complicated test that involve an extension of degree 256.
+This is a way of checking nested radical identities.
+</p>
+
+
+
+
+<div id="spadComm9-179" class="spadComm" >
+<form id="formComm9-179" action="javascript:makeRequest('9-179');" >
+<input id="comm9-179" type="text" class="command" style="width: 39em;" value="(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran) " />
+</form>
+<span id="commSav9-179" class="commSav" >(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran) </span>
+<div id="mathAns9-179" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msqrt><mn>10</mn></msqrt></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-180" class="spadComm" >
+<form id="formComm9-180" action="javascript:makeRequest('9-180');" >
+<input id="comm9-180" type="text" class="command" style="width: 47em;" value="eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10) " />
+</form>
+<span id="commSav9-180" class="commSav" >eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10) </span>
+<div id="mathAns9-180" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>-</mo><mrow><mrow><msqrt><mrow><mrow><msqrt><mn>10</mn></msqrt></mrow><mo>-</mo><mn>3</mn></mrow></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mrow><mrow><msqrt><mn>5</mn></msqrt></mrow><mo>-</mo><mn>2</mn></mrow></msqrt></mrow></mrow><mo>+</mo><mrow><mrow><msqrt><mrow><mrow><msqrt><mn>10</mn></msqrt></mrow><mo>+</mo><mn>3</mn></mrow></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mrow><mrow><msqrt><mn>5</mn></msqrt></mrow><mo>+</mo><mn>2</mn></mrow></msqrt></mrow></mrow></mrow><mo>=</mo><mrow><msqrt><mrow><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msqrt><mn>2</mn></msqrt></mrow></mrow><mo>+</mo><mn>10</mn></mrow></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-181" class="spadComm" >
+<form id="formComm9-181" action="javascript:makeRequest('9-181');" >
+<input id="comm9-181" type="text" class="command" style="width: 9em;" value="eq1::Boolean " />
+</form>
+<span id="commSav9-181" class="commSav" >eq1::Boolean </span>
+<div id="mathAns9-181" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-182" class="spadComm" >
+<form id="formComm9-182" action="javascript:makeRequest('9-182');" >
+<input id="comm9-182" type="text" class="command" style="width: 44em;" value="eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)" />
+</form>
+<span id="commSav9-182" class="commSav" >eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)</span>
+<div id="mathAns9-182" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>-</mo><mrow><mrow><msqrt><mrow><mrow><msqrt><mn>5</mn></msqrt></mrow><mo>-</mo><mn>2</mn></mrow></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mrow><mrow><msqrt><mn>2</mn></msqrt></mrow><mo>-</mo><mn>1</mn></mrow></msqrt></mrow></mrow><mo>+</mo><mrow><mrow><msqrt><mrow><mrow><msqrt><mn>5</mn></msqrt></mrow><mo>+</mo><mn>2</mn></mrow></msqrt></mrow><mspace width="0.5 em" /><mrow><msqrt><mrow><mrow><msqrt><mn>2</mn></msqrt></mrow><mo>+</mo><mn>1</mn></mrow></msqrt></mrow></mrow></mrow><mo>=</mo><mrow><msqrt><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>10</mn></msqrt></mrow></mrow><mo>+</mo><mn>2</mn></mrow></msqrt></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-183" class="spadComm" >
+<form id="formComm9-183" action="javascript:makeRequest('9-183');" >
+<input id="comm9-183" type="text" class="command" style="width: 9em;" value="eq2::Boolean " />
+</form>
+<span id="commSav9-183" class="commSav" >eq2::Boolean </span>
+<div id="mathAns9-183" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Some more examples from J. M. Arnaudies
+</p>
+
+
+
+
+<div id="spadComm9-184" class="spadComm" >
+<form id="formComm9-184" action="javascript:makeRequest('9-184');" >
+<input id="comm9-184" type="text" class="command" style="width: 12em;" value="s3 := sqrt(3)$Ran " />
+</form>
+<span id="commSav9-184" class="commSav" >s3 := sqrt(3)$Ran </span>
+<div id="mathAns9-184" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msqrt><mn>3</mn></msqrt></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-185" class="spadComm" >
+<form id="formComm9-185" action="javascript:makeRequest('9-185');" >
+<input id="comm9-185" type="text" class="command" style="width: 12em;" value="s7:= sqrt(7)$Ran " />
+</form>
+<span id="commSav9-185" class="commSav" >s7:= sqrt(7)$Ran </span>
+<div id="mathAns9-185" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msqrt><mn>7</mn></msqrt></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-186" class="spadComm" >
+<form id="formComm9-186" action="javascript:makeRequest('9-186');" >
+<input id="comm9-186" type="text" class="command" style="width: 18em;" value="e1 := sqrt(2*s7-3*s3,3)   " />
+</form>
+<span id="commSav9-186" class="commSav" >e1 := sqrt(2*s7-3*s3,3)   </span>
+<div id="mathAns9-186" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mroot><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>7</mn></msqrt></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow></mrow><mn>3</mn></mroot></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-187" class="spadComm" >
+<form id="formComm9-187" action="javascript:makeRequest('9-187');" >
+<input id="comm9-187" type="text" class="command" style="width: 18em;" value="e2 := sqrt(2*s7+3*s3,3)   " />
+</form>
+<span id="commSav9-187" class="commSav" >e2 := sqrt(2*s7+3*s3,3)   </span>
+<div id="mathAns9-187" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mroot><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>7</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow></mrow><mn>3</mn></mroot></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+<p>This should be null
+</p>
+
+
+
+
+<div id="spadComm9-188" class="spadComm" >
+<form id="formComm9-188" action="javascript:makeRequest('9-188');" >
+<input id="comm9-188" type="text" class="command" style="width: 8em;" value="e2-e1-s3   " />
+</form>
+<span id="commSav9-188" class="commSav" >e2-e1-s3   </span>
+<div id="mathAns9-188" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+<p>A quartic polynomial
+</p>
+
+
+
+
+<div id="spadComm9-189" class="spadComm" >
+<form id="formComm9-189" action="javascript:makeRequest('9-189');" >
+<input id="comm9-189" type="text" class="command" style="width: 33em;" value="pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3)  " />
+</form>
+<span id="commSav9-189" class="commSav" >pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3)  </span>
+<div id="mathAns9-189" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>7</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mfrac><mn>100</mn><mn>3</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,RealClosure Fraction Integer)
+</div>
+
+
+
+<p>Add some cubic roots
+</p>
+
+
+
+
+<div id="spadComm9-190" class="spadComm" >
+<form id="formComm9-190" action="javascript:makeRequest('9-190');" >
+<input id="comm9-190" type="text" class="command" style="width: 14em;" value="r1 := sqrt(7633)$Ran " />
+</form>
+<span id="commSav9-190" class="commSav" >r1 := sqrt(7633)$Ran </span>
+<div id="mathAns9-190" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msqrt><mn>7633</mn></msqrt></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-191" class="spadComm" >
+<form id="formComm9-191" action="javascript:makeRequest('9-191');" >
+<input id="comm9-191" type="text" class="command" style="width: 20em;" value="alpha := sqrt(5*r1-436,3)/3  " />
+</form>
+<span id="commSav9-191" class="commSav" >alpha := sqrt(5*r1-436,3)/3  </span>
+<div id="mathAns9-191" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><mroot><mrow><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msqrt><mn>7633</mn></msqrt></mrow></mrow><mo>-</mo><mn>436</mn></mrow><mn>3</mn></mroot></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-192" class="spadComm" >
+<form id="formComm9-192" action="javascript:makeRequest('9-192');" >
+<input id="comm9-192" type="text" class="command" style="width: 20em;" value="beta := -sqrt(5*r1+436,3)/3  " />
+</form>
+<span id="commSav9-192" class="commSav" >beta := -sqrt(5*r1+436,3)/3  </span>
+<div id="mathAns9-192" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><mroot><mrow><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msqrt><mn>7633</mn></msqrt></mrow></mrow><mo>+</mo><mn>436</mn></mrow><mn>3</mn></mroot></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+<p>this should be null
+</p>
+
+
+
+
+<div id="spadComm9-193" class="spadComm" >
+<form id="formComm9-193" action="javascript:makeRequest('9-193');" >
+<input id="comm9-193" type="text" class="command" style="width: 16em;" value="pol.(alpha+beta-1/3)   " />
+</form>
+<span id="commSav9-193" class="commSav" >pol.(alpha+beta-1/3)   </span>
+<div id="mathAns9-193" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+<p>A quintic polynomial
+</p>
+
+
+
+
+<div id="spadComm9-194" class="spadComm" >
+<form id="formComm9-194" action="javascript:makeRequest('9-194');" >
+<input id="comm9-194" type="text" class="command" style="width: 27em;" value="qol : UP(x,Ran) := x**5+10*x**3+20*x+22 " />
+</form>
+<span id="commSav9-194" class="commSav" >qol : UP(x,Ran) := x**5+10*x**3+20*x+22 </span>
+<div id="mathAns9-194" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>20</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>22</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,RealClosure Fraction Integer)
+</div>
+
+
+
+<p>Add some cubic roots
+</p>
+
+
+
+
+<div id="spadComm9-195" class="spadComm" >
+<form id="formComm9-195" action="javascript:makeRequest('9-195');" >
+<input id="comm9-195" type="text" class="command" style="width: 14em;" value="r2 := sqrt(153)$Ran " />
+</form>
+<span id="commSav9-195" class="commSav" >r2 := sqrt(153)$Ran </span>
+<div id="mathAns9-195" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msqrt><mn>153</mn></msqrt></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-196" class="spadComm" >
+<form id="formComm9-196" action="javascript:makeRequest('9-196');" >
+<input id="comm9-196" type="text" class="command" style="width: 16em;" value="alpha2 := sqrt(r2-11,5) " />
+</form>
+<span id="commSav9-196" class="commSav" >alpha2 := sqrt(r2-11,5) </span>
+<div id="mathAns9-196" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mroot><mrow><mrow><msqrt><mn>153</mn></msqrt></mrow><mo>-</mo><mn>11</mn></mrow><mn>5</mn></mroot></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-197" class="spadComm" >
+<form id="formComm9-197" action="javascript:makeRequest('9-197');" >
+<input id="comm9-197" type="text" class="command" style="width: 16em;" value="beta2 := -sqrt(r2+11,5) " />
+</form>
+<span id="commSav9-197" class="commSav" >beta2 := -sqrt(r2+11,5) </span>
+<div id="mathAns9-197" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mroot><mrow><mrow><msqrt><mn>153</mn></msqrt></mrow><mo>+</mo><mn>11</mn></mrow><mn>5</mn></mroot></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+<p>this should be null
+</p>
+
+
+
+
+<div id="spadComm9-198" class="spadComm" >
+<form id="formComm9-198" action="javascript:makeRequest('9-198');" >
+<input id="comm9-198" type="text" class="command" style="width: 12em;" value="qol(alpha2+beta2) " />
+</form>
+<span id="commSav9-198" class="commSav" >qol(alpha2+beta2) </span>
+<div id="mathAns9-198" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+<p>Finally, some examples from the book Computer Algebra by 
+Davenport, Siret and Tournier (page 77).
+The last one is due to Ramanujan.
+</p>
+
+
+
+
+<div id="spadComm9-199" class="spadComm" >
+<form id="formComm9-199" action="javascript:makeRequest('9-199');" >
+<input id="comm9-199" type="text" class="command" style="width: 18em;" value="dst1:=sqrt(9+4*s2)=1+2*s2 " />
+</form>
+<span id="commSav9-199" class="commSav" >dst1:=sqrt(9+4*s2)=1+2*s2 </span>
+<div id="mathAns9-199" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msqrt><mrow><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msqrt><mn>2</mn></msqrt></mrow></mrow><mo>+</mo><mn>9</mn></mrow></msqrt></mrow><mo>=</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>2</mn></msqrt></mrow></mrow><mo>+</mo><mn>1</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-200" class="spadComm" >
+<form id="formComm9-200" action="javascript:makeRequest('9-200');" >
+<input id="comm9-200" type="text" class="command" style="width: 10em;" value="dst1::Boolean " />
+</form>
+<span id="commSav9-200" class="commSav" >dst1::Boolean </span>
+<div id="mathAns9-200" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-201" class="spadComm" >
+<form id="formComm9-201" action="javascript:makeRequest('9-201');" >
+<input id="comm9-201" type="text" class="command" style="width: 10em;" value="s6:Ran:=sqrt 6 " />
+</form>
+<span id="commSav9-201" class="commSav" >s6:Ran:=sqrt 6 </span>
+<div id="mathAns9-201" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msqrt><mn>6</mn></msqrt></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-202" class="spadComm" >
+<form id="formComm9-202" action="javascript:makeRequest('9-202');" >
+<input id="comm9-202" type="text" class="command" style="width: 26em;" value="dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3 " />
+</form>
+<span id="commSav9-202" class="commSav" >dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3 </span>
+<div id="mathAns9-202" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msqrt><mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>6</mn></msqrt></mrow></mrow><mo>+</mo><mn>5</mn></mrow></msqrt></mrow><mo>+</mo><mrow><msqrt><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>6</mn></msqrt></mrow></mrow><mo>+</mo><mn>5</mn></mrow></msqrt></mrow></mrow><mo>=</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>3</mn></msqrt></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-203" class="spadComm" >
+<form id="formComm9-203" action="javascript:makeRequest('9-203');" >
+<input id="comm9-203" type="text" class="command" style="width: 10em;" value="dst2::Boolean " />
+</form>
+<span id="commSav9-203" class="commSav" >dst2::Boolean </span>
+<div id="mathAns9-203" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-204" class="spadComm" >
+<form id="formComm9-204" action="javascript:makeRequest('9-204');" >
+<input id="comm9-204" type="text" class="command" style="width: 12em;" value="s29:Ran:=sqrt 29 " />
+</form>
+<span id="commSav9-204" class="commSav" >s29:Ran:=sqrt 29 </span>
+<div id="mathAns9-204" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msqrt><mn>29</mn></msqrt></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-205" class="spadComm" >
+<form id="formComm9-205" action="javascript:makeRequest('9-205');" >
+<input id="comm9-205" type="text" class="command" style="width: 49em;" value="dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5 " />
+</form>
+<span id="commSav9-205" class="commSav" >dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5 </span>
+<div id="mathAns9-205" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msqrt><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msqrt><mn>29</mn></msqrt></mrow></mrow><mo>+</mo><mn>55</mn></mrow></msqrt></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>29</mn></msqrt></mrow></mrow><mo>+</mo><mn>16</mn></mrow></msqrt></mrow><mo>=</mo><mrow><mo>-</mo><mrow><msqrt><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>29</mn></msqrt></mrow></mrow><mo>+</mo><mn>11</mn></mrow></msqrt></mrow><mo>+</mo><mrow><msqrt><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msqrt><mn>5</mn></msqrt></mrow></mrow><mo>+</mo><mn>22</mn></mrow></msqrt></mrow><mo>+</mo><mrow><msqrt><mn>5</mn></msqrt></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-206" class="spadComm" >
+<form id="formComm9-206" action="javascript:makeRequest('9-206');" >
+<input id="comm9-206" type="text" class="command" style="width: 10em;" value="dst4::Boolean " />
+</form>
+<span id="commSav9-206" class="commSav" >dst4::Boolean </span>
+<div id="mathAns9-206" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-207" class="spadComm" >
+<form id="formComm9-207" action="javascript:makeRequest('9-207');" >
+<input id="comm9-207" type="text" class="command" style="width: 40em;" value="dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5 " />
+</form>
+<span id="commSav9-207" class="commSav" >dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5 </span>
+<div id="mathAns9-207" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msqrt><mrow><mrow><mrow><mo>(</mo><mrow><mn>34</mn><mspace width="0.5 em" /><mrow><msqrt><mn>2</mn></msqrt></mrow></mrow><mo>+</mo><mn>46</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>5</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>70</mn><mspace width="0.5 em" /><mrow><msqrt><mn>2</mn></msqrt></mrow></mrow><mo>+</mo><mn>112</mn></mrow></msqrt></mrow><mo>=</mo><mrow><mrow><mrow><mo>(</mo><mrow><msqrt><mn>2</mn></msqrt></mrow><mo>+</mo><mn>3</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msqrt><mn>5</mn></msqrt></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msqrt><mn>2</mn></msqrt></mrow></mrow><mo>+</mo><mn>5</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-208" class="spadComm" >
+<form id="formComm9-208" action="javascript:makeRequest('9-208');" >
+<input id="comm9-208" type="text" class="command" style="width: 10em;" value="dst6::Boolean " />
+</form>
+<span id="commSav9-208" class="commSav" >dst6::Boolean </span>
+<div id="mathAns9-208" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-209" class="spadComm" >
+<form id="formComm9-209" action="javascript:makeRequest('9-209');" >
+<input id="comm9-209" type="text" class="command" style="width: 12em;" value="f3:Ran:=sqrt(3,5) " />
+</form>
+<span id="commSav9-209" class="commSav" >f3:Ran:=sqrt(3,5) </span>
+<div id="mathAns9-209" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mroot><mn>3</mn><mn>5</mn></mroot></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-210" class="spadComm" >
+<form id="formComm9-210" action="javascript:makeRequest('9-210');" >
+<input id="comm9-210" type="text" class="command" style="width: 15em;" value="f25:Ran:=sqrt(1/25,5) " />
+</form>
+<span id="commSav9-210" class="commSav" >f25:Ran:=sqrt(1/25,5) </span>
+<div id="mathAns9-210" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mroot><mfrac><mn>1</mn><mn>25</mn></mfrac><mn>5</mn></mroot></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-211" class="spadComm" >
+<form id="formComm9-211" action="javascript:makeRequest('9-211');" >
+<input id="comm9-211" type="text" class="command" style="width: 15em;" value="f32:Ran:=sqrt(32/5,5) " />
+</form>
+<span id="commSav9-211" class="commSav" >f32:Ran:=sqrt(32/5,5) </span>
+<div id="mathAns9-211" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mroot><mfrac><mn>32</mn><mn>5</mn></mfrac><mn>5</mn></mroot></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-212" class="spadComm" >
+<form id="formComm9-212" action="javascript:makeRequest('9-212');" >
+<input id="comm9-212" type="text" class="command" style="width: 15em;" value="f27:Ran:=sqrt(27/5,5) " />
+</form>
+<span id="commSav9-212" class="commSav" >f27:Ran:=sqrt(27/5,5) </span>
+<div id="mathAns9-212" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mroot><mfrac><mn>27</mn><mn>5</mn></mfrac><mn>5</mn></mroot></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-213" class="spadComm" >
+<form id="formComm9-213" action="javascript:makeRequest('9-213');" >
+<input id="comm9-213" type="text" class="command" style="width: 28em;" value="dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)" />
+</form>
+<span id="commSav9-213" class="commSav" >dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)</span>
+<div id="mathAns9-213" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mroot><mrow><mo>-</mo><mrow><mroot><mfrac><mn>27</mn><mn>5</mn></mfrac><mn>5</mn></mroot></mrow><mo>+</mo><mrow><mroot><mfrac><mn>32</mn><mn>5</mn></mfrac><mn>5</mn></mroot></mrow></mrow><mn>3</mn></mroot></mrow><mo>=</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><msup><mrow><mroot><mn>3</mn><mn>5</mn></mroot></mrow><mn>2</mn></msup></mrow><mo>+</mo><mrow><mroot><mn>3</mn><mn>5</mn></mroot></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><mroot><mfrac><mn>1</mn><mn>25</mn></mfrac><mn>5</mn></mroot></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation RealClosure Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-214" class="spadComm" >
+<form id="formComm9-214" action="javascript:makeRequest('9-214');" >
+<input id="comm9-214" type="text" class="command" style="width: 10em;" value="dst5::Boolean " />
+</form>
+<span id="commSav9-214" class="commSav" >dst5::Boolean </span>
+<div id="mathAns9-214" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.65.xhtml" style="margin-right: 10px;">Previous Section 9.65 RadixExpansion</a><a href="section-9.67.xhtml" style="margin-right: 10px;">Next Section 9.67 RegularTriangularSet</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.67.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.67.xhtml
new file mode 100644
index 0000000..a8cd7f3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.67.xhtml
@@ -0,0 +1,1583 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.67</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.66.xhtml" style="margin-right: 10px;">Previous Section 9.66 RealClosure</a><a href="section-9.68.xhtml" style="margin-right: 10px;">Next Section 9.68 RomanNumeral</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.67">
+<h2 class="sectiontitle">9.67  RegularTriangularSet</h2>
+
+
+<a name="RegularTriangularSetXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">RegularTriangularSet</span> domain constructor implements regular
+triangular sets.  These particular triangular sets were introduced by
+M. Kalkbrener (1991) in his PhD Thesis under the name regular chains.
+Regular chains and their related concepts are presented in the paper
+``On the Theories of Triangular sets'' By P. Aubry, D. Lazard and
+M. Moreno Maza (to appear in the Journal of Symbolic Computation).
+The <span class="teletype">RegularTriangularSet</span> constructor also provides a new method
+(by the third author) for solving polynomial system by means of
+regular chains.  This method has two ways of solving.  One has the
+same specifications as Kalkbrener's algorithm (1991) and the other is
+closer to Lazard's method (Discr. App. Math, 1991).  Moreover, this
+new method removes redundant component from the decompositions when
+this is not <span class="em">too expensive</span>.  This is always the case with
+square-free regular chains.  So if you want to obtain decompositions
+without redundant components just use the <span class="teletype">SquareFreeRegularTriangularSet</span> domain constructor or the <span class="teletype">LazardSetSolvingPackage</span> package constructor.  See also the <span class="teletype">LexTriangularPackage</span> and <span class="teletype">ZeroDimensionalSolvePackage</span> for the
+case of algebraic systems with a finite number of (complex) solutions.
+</p>
+
+
+<p>One of the main features of regular triangular sets is that they
+naturally define towers of simple extensions of a field.
+This allows to perform with multivariate polynomials the 
+same kind of operations as one can do in an <span class="teletype">EuclideanDomain</span>.
+</p>
+
+
+<p>The <span class="teletype">RegularTriangularSet</span> constructor takes four arguments.  The
+first one, <span style="font-weight: bold;"> R</span>, is the coefficient ring of the polynomials; it
+must belong to the category <span class="teletype">GcdDomain</span>.  The second one, <span style="font-weight: bold;"> E</span>,
+is the exponent monoid of the polynomials; it must belong to the
+category <span class="teletype">OrderedAbelianMonoidSup</span>.  the third one, <span style="font-weight: bold;"> V</span>, is
+the ordered set of variables; it must belong to the category 
+<span class="teletype">OrderedSet</span>.  The last one is the polynomial ring; it must belong to
+the category <span class="teletype">RecursivePolynomialCategory(R,E,V)</span>.  The
+abbreviation for <span class="teletype">RegularTriangularSet</span> is <span class="teletype">REGSET</span>.  See also
+the constructor <span class="teletype">RegularChain</span> which only takes two arguments, the
+coefficient ring and the ordered set of variables; in that case,
+polynomials are necessarily built with the 
+<span class="teletype">NewSparseMultivariatePolynomial</span> domain constructor.
+</p>
+
+
+<p>We shall explain now how to use the constructor <span class="teletype">REGSET</span> and how
+to read the decomposition of a polynomial system by means of regular
+sets.
+</p>
+
+
+<p>Let us give some examples.  We start with an easy one
+(Donati-Traverso) in order to understand the two ways of solving
+polynomial systems provided by the <span class="teletype">REGSET</span> constructor.
+</p>
+
+
+<p>Define the coefficient ring.
+</p>
+
+
+
+
+<div id="spadComm9-215" class="spadComm" >
+<form id="formComm9-215" action="javascript:makeRequest('9-215');" >
+<input id="comm9-215" type="text" class="command" style="width: 9em;" value="R := Integer " />
+</form>
+<span id="commSav9-215" class="commSav" >R := Integer </span>
+<div id="mathAns9-215" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>Integer</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the list of variables,
+</p>
+
+
+
+
+<div id="spadComm9-216" class="spadComm" >
+<form id="formComm9-216" action="javascript:makeRequest('9-216');" >
+<input id="comm9-216" type="text" class="command" style="width: 20em;" value="ls : List Symbol := [x,y,z,t] " />
+</form>
+<span id="commSav9-216" class="commSav" >ls : List Symbol := [x,y,z,t] </span>
+<div id="mathAns9-216" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>t</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>and make it an ordered set;
+</p>
+
+
+
+
+<div id="spadComm9-217" class="spadComm" >
+<form id="formComm9-217" action="javascript:makeRequest('9-217');" >
+<input id="comm9-217" type="text" class="command" style="width: 10em;" value="V := OVAR(ls)  " />
+</form>
+<span id="commSav9-217" class="commSav" >V := OVAR(ls)  </span>
+<div id="mathAns9-217" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedVariableList[x,y,z,t]</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>then define the exponent monoid.
+</p>
+
+
+
+
+<div id="spadComm9-218" class="spadComm" >
+<form id="formComm9-218" action="javascript:makeRequest('9-218');" >
+<input id="comm9-218" type="text" class="command" style="width: 17em;" value="E := IndexedExponents V  " />
+</form>
+<span id="commSav9-218" class="commSav" >E := IndexedExponents V  </span>
+<div id="mathAns9-218" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>IndexedExponentsOrderedVariableList[x,y,z,t]</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the polynomial ring.
+</p>
+
+
+
+
+<div id="spadComm9-219" class="spadComm" >
+<form id="formComm9-219" action="javascript:makeRequest('9-219');" >
+<input id="comm9-219" type="text" class="command" style="width: 12em;" value="P := NSMP(R, V)   " />
+</form>
+<span id="commSav9-219" class="commSav" >P := NSMP(R, V)   </span>
+<div id="mathAns9-219" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>NewSparseMultivariatePolynomial(Integer,OrderedVariableList[x,y,z,t])</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Let the variables be polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-220" class="spadComm" >
+<form id="formComm9-220" action="javascript:makeRequest('9-220');" >
+<input id="comm9-220" type="text" class="command" style="width: 8em;" value="x: P := 'x  " />
+</form>
+<span id="commSav9-220" class="commSav" >x: P := 'x  </span>
+<div id="mathAns9-220" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(
+Integer,
+OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-221" class="spadComm" >
+<form id="formComm9-221" action="javascript:makeRequest('9-221');" >
+<input id="comm9-221" type="text" class="command" style="width: 8em;" value="y: P := 'y  " />
+</form>
+<span id="commSav9-221" class="commSav" >y: P := 'y  </span>
+<div id="mathAns9-221" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(
+Integer,
+OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-222" class="spadComm" >
+<form id="formComm9-222" action="javascript:makeRequest('9-222');" >
+<input id="comm9-222" type="text" class="command" style="width: 8em;" value="z: P := 'z  " />
+</form>
+<span id="commSav9-222" class="commSav" >z: P := 'z  </span>
+<div id="mathAns9-222" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>z</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(
+Integer,
+OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-223" class="spadComm" >
+<form id="formComm9-223" action="javascript:makeRequest('9-223');" >
+<input id="comm9-223" type="text" class="command" style="width: 8em;" value="t: P := 't  " />
+</form>
+<span id="commSav9-223" class="commSav" >t: P := 't  </span>
+<div id="mathAns9-223" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>t</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(
+Integer,
+OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+<p>Now call the <span class="teletype">RegularTriangularSet</span> domain constructor.
+</p>
+
+
+
+
+<div id="spadComm9-224" class="spadComm" >
+<form id="formComm9-224" action="javascript:makeRequest('9-224');" >
+<input id="comm9-224" type="text" class="command" style="width: 14em;" value="T := REGSET(R,E,V,P)" />
+</form>
+<span id="commSav9-224" class="commSav" >T := REGSET(R,E,V,P)</span>
+<div id="mathAns9-224" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>RegularTriangularSet(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;IndexedExponentsOrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[x,y,z,t]))</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define a polynomial system.
+</p>
+
+
+
+
+<div id="spadComm9-225" class="spadComm" >
+<form id="formComm9-225" action="javascript:makeRequest('9-225');" >
+<input id="comm9-225" type="text" class="command" style="width: 22em;" value="p1 := x ** 31 - x ** 6 - x - y   " />
+</form>
+<span id="commSav9-225" class="commSav" >p1 := x ** 31 - x ** 6 - x - y   </span>
+<div id="mathAns9-225" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>31</mn></msup></mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>-</mo><mi>x</mi><mo>-</mo><mi>y</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-226" class="spadComm" >
+<form id="formComm9-226" action="javascript:makeRequest('9-226');" >
+<input id="comm9-226" type="text" class="command" style="width: 14em;" value="p2 := x ** 8  - z   " />
+</form>
+<span id="commSav9-226" class="commSav" >p2 := x ** 8  - z   </span>
+<div id="mathAns9-226" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>-</mo><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-227" class="spadComm" >
+<form id="formComm9-227" action="javascript:makeRequest('9-227');" >
+<input id="comm9-227" type="text" class="command" style="width: 14em;" value="p3 := x ** 10 - t   " />
+</form>
+<span id="commSav9-227" class="commSav" >p3 := x ** 10 - t   </span>
+<div id="mathAns9-227" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(
+Integer,
+OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-228" class="spadComm" >
+<form id="formComm9-228" action="javascript:makeRequest('9-228');" >
+<input id="comm9-228" type="text" class="command" style="width: 15em;" value="lp := [p1, p2, p3]    " />
+</form>
+<span id="commSav9-228" class="commSav" >lp := [p1, p2, p3]    </span>
+<div id="mathAns9-228" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><msup><mi>x</mi><mn>31</mn></msup></mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>-</mo><mi>x</mi><mo>-</mo><mi>y</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>-</mo><mi>z</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List NewSparseMultivariatePolynomial(
+Integer,
+OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+<p>First of all, let us solve this system in the sense of Kalkbrener.
+</p>
+
+
+
+
+<div id="spadComm9-229" class="spadComm" >
+<form id="formComm9-229" action="javascript:makeRequest('9-229');" >
+<input id="comm9-229" type="text" class="command" style="width: 14em;" value="zeroSetSplit(lp)$T  " />
+</form>
+<span id="commSav9-229" class="commSav" >zeroSetSplit(lp)$T  </span>
+<div id="mathAns9-229" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>{</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow><mo>-</mo><mi>t</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>}</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List RegularTriangularSet(
+Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(
+Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+<p>And now in the sense of Lazard (or Wu and other authors).
+</p>
+
+
+
+
+<div id="spadComm9-230" class="spadComm" >
+<form id="formComm9-230" action="javascript:makeRequest('9-230');" >
+<input id="comm9-230" type="text" class="command" style="width: 23em;" value="lts := zeroSetSplit(lp,false)$T   " />
+</form>
+<span id="commSav9-230" class="commSav" >lts := zeroSetSplit(lp,false)$T   </span>
+<div id="mathAns9-230" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>{</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow><mo>-</mo><mi>t</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>t</mi></mrow><mo>}</mo></mrow><mo>,</mo><mrow><mo>{</mo><mi>t</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>}</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List RegularTriangularSet(
+Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(
+Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+<p>We can see that the first decomposition is a subset of the second.
+So how can both be correct ?
+</p>
+
+
+<p>Recall first that polynomials from a domain of the category 
+<span class="teletype">RecursivePolynomialCategory</span> are regarded as univariate polynomials in
+their main variable.  For instance the second polynomial in the first
+set of each decomposition has main variable <span style="font-weight: bold;"> y</span> and its initial
+(i.e. its leading coefficient w.r.t. its main variable) is <span style="font-weight: bold;"> t z</span>.
+</p>
+
+
+<p>Now let us explain how to read the second decomposition.  Note that
+the non-constant initials of the first set are  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>t</mi><mn>4</mn></msup><mo>-</mo><mi>t</mi></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>t</mi><mi>z</mi></mrow></mstyle></math>.
+Then the solutions described by this first set are the common zeros of
+its polynomials that do not cancel the polynomials  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msup><mi>t</mi><mn>4</mn></msup><mo>-</mo><mi>t</mi></mrow></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>ty</mi><mi>z</mi></mrow></mstyle></math>.
+Now the solutions of the input system <span style="font-weight: bold;"> lp</span> satisfying these
+equations are described by the second and the third sets of the
+decomposition.  Thus, in some sense, they can be considered as
+degenerated solutions.  The solutions given by the first set are
+called the generic points of the system; they give the general form of
+the solutions.  The first decomposition only provides these generic
+points.  This latter decomposition is useful when they are many
+degenerated solutions (which is sometimes hard to compute) and when
+one is only interested in general informations, like the dimension of
+the input system.
+</p>
+
+
+<p>We can get the dimensions of each component
+of a decomposition as follows.
+</p>
+
+
+
+
+<div id="spadComm9-231" class="spadComm" >
+<form id="formComm9-231" action="javascript:makeRequest('9-231');" >
+<input id="comm9-231" type="text" class="command" style="width: 20em;" value="[coHeight(ts) for ts in lts] " />
+</form>
+<span id="commSav9-231" class="commSav" >[coHeight(ts) for ts in lts] </span>
+<div id="mathAns9-231" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+<p>Thus the first set has dimension one.  Indeed <span style="font-weight: bold;"> t</span> can take any
+value, except <span style="font-weight: bold;"> 0</span> or any third root of <span style="font-weight: bold;"> 1</span>, whereas <span style="font-weight: bold;"> z</span> is
+completely determined from <span style="font-weight: bold;"> t</span>, <span style="font-weight: bold;"> y</span> is given by <span style="font-weight: bold;"> z</span> and
+<span style="font-weight: bold;"> t</span>, and finally <span style="font-weight: bold;"> x</span> is given by the other three variables.
+In the second and the third sets of the second decomposition the four
+variables are completely determined and thus these sets have dimension
+zero.
+</p>
+
+
+<p>We give now the precise specifications of each decomposition.  This
+assume some mathematical knowledge.  However, for the non-expert user,
+the above explanations will be sufficient to understand the other
+features of the <span class="teletype">RSEGSET</span> constructor.
+</p>
+
+
+<p>The input system <span style="font-weight: bold;"> lp</span> is decomposed in the sense of Kalkbrener as
+finitely many regular sets <span style="font-weight: bold;"> T1,...,Ts</span> such that the radical ideal
+generated by <span style="font-weight: bold;"> lp</span> is the intersection of the radicals of the
+saturated ideals of <span style="font-weight: bold;"> T1,...,Ts</span>.  In other words, the affine
+variety associated with <span style="font-weight: bold;"> lp</span> is the union of the closures
+(w.r.t. Zarisky topology) of the regular-zeros sets of 
+<span style="font-weight: bold;"> T1,...,Ts</span>.
+</p>
+
+
+<p><span style="font-weight: bold;"> N. B.</span> The prime ideals associated with the radical of the
+saturated ideal of a regular triangular set have all the same
+dimension; moreover these prime ideals can be given by characteristic
+sets with the same main variables.  Thus a decomposition in the sense
+of Kalkbrener is unmixed dimensional.  Then it can be viewed as a <span class="em">lazy</span> decomposition into prime ideals (some of these prime ideals
+being merged into unmixed dimensional ideals).
+</p>
+
+
+<p>Now we explain the other way of solving by means of regular triangular
+sets.  The input system <span style="font-weight: bold;"> lp</span> is decomposed in the sense of Lazard
+as finitely many regular triangular sets <span style="font-weight: bold;"> T1,...,Ts</span> such that the
+affine variety associated with <span style="font-weight: bold;"> lp</span> is the union of the
+regular-zeros sets of <span style="font-weight: bold;"> T1,...,Ts</span>.  Thus a decomposition in the
+sense of Lazard is also a decomposition in the sense of Kalkbrener;
+the converse is false as we have seen before.
+</p>
+
+
+<p>When the input system has a finite number of solutions, both ways of
+solving provide similar decompositions as we shall see with this
+second example (Caprasse).
+</p>
+
+
+<p>Define a polynomial system.
+</p>
+
+
+
+
+<div id="spadComm9-232" class="spadComm" >
+<form id="formComm9-232" action="javascript:makeRequest('9-232');" >
+<input id="comm9-232" type="text" class="command" style="width: 21em;" value="f1 := y**2*z+2*x*y*t-2*x-z     " />
+</form>
+<span id="commSav9-232" class="commSav" >f1 := y**2*z+2*x*y*t-2*x-z     </span>
+<div id="mathAns9-232" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-233" class="spadComm" >
+<form id="formComm9-233" action="javascript:makeRequest('9-233');" >
+<input id="comm9-233" type="text" class="command" style="width: 57em;" value="f2 :=   -x**3*z+ 4*x*y**2*z+ 4*x**2*y*t+ 2*y**3*t+ 4*x**2- 10*y**2+ 4*x*z- 10*y*t+ 2 " />
+</form>
+<span id="commSav9-233" class="commSav" >f2 :=   -x**3*z+ 4*x*y**2*z+ 4*x**2*y*t+ 2*y**3*t+ 4*x**2- 10*y**2+ 4*x*z- 10*y*t+ 2 </span>
+<div id="mathAns9-233" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-234" class="spadComm" >
+<form id="formComm9-234" action="javascript:makeRequest('9-234');" >
+<input id="comm9-234" type="text" class="command" style="width: 19em;" value="f3 :=  2*y*z*t+x*t**2-x-2*z " />
+</form>
+<span id="commSav9-234" class="commSav" >f3 :=  2*y*z*t+x*t**2-x-2*z </span>
+<div id="mathAns9-234" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-235" class="spadComm" >
+<form id="formComm9-235" action="javascript:makeRequest('9-235');" >
+<input id="comm9-235" type="text" class="command" style="width: 55em;" value="f4 :=   -x*z**3+ 4*y*z**2*t+ 4*x*z*t**2+ 2*y*t**3+ 4*x*z+ 4*z**2-10*y*t- 10*t**2+2" />
+</form>
+<span id="commSav9-235" class="commSav" >f4 :=   -x*z**3+ 4*y*z**2*t+ 4*x*z*t**2+ 2*y*t**3+ 4*x*z+ 4*z**2-10*y*t- 10*t**2+2</span>
+<div id="mathAns9-235" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-236" class="spadComm" >
+<form id="formComm9-236" action="javascript:makeRequest('9-236');" >
+<input id="comm9-236" type="text" class="command" style="width: 15em;" value="lf := [f1, f2, f3, f4]" />
+</form>
+<span id="commSav9-236" class="commSav" >lf := [f1, f2, f3, f4]</span>
+<div id="mathAns9-236" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>z</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>-</mo><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>2</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><mo>(</mo><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+<p>First of all, let us solve this system in the sense of Kalkbrener.
+</p>
+
+
+
+
+<div id="spadComm9-237" class="spadComm" >
+<form id="formComm9-237" action="javascript:makeRequest('9-237');" >
+<input id="comm9-237" type="text" class="command" style="width: 14em;" value="zeroSetSplit(lf)$T  " />
+</form>
+<span id="commSav9-237" class="commSav" >zeroSetSplit(lf)$T  </span>
+<div id="mathAns9-237" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>8</mn></msup></mrow><mo>-</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>256</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>256</mn></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>16</mn></mrow><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mi>t</mi></mrow><mo>,</mo><mrow><mi>x</mi><mo>+</mo><mi>z</mi></mrow><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>x</mi><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>3</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>4</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mi>t</mi></mrow><mo>,</mo><mrow><mi>x</mi><mo>-</mo><mi>z</mi></mrow><mo>}</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List RegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+<p>And now in the sense of Lazard (or Wu and other authors).
+</p>
+
+
+
+
+<div id="spadComm9-238" class="spadComm" >
+<form id="formComm9-238" action="javascript:makeRequest('9-238');" >
+<input id="comm9-238" type="text" class="command" style="width: 24em;" value="lts2 := zeroSetSplit(lf,false)$T   " />
+</form>
+<span id="commSav9-238" class="commSav" >lts2 := zeroSetSplit(lf,false)$T   </span>
+<div id="mathAns9-238" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>x</mi><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>8</mn></msup></mrow><mo>-</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>256</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>256</mn></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>16</mn></mrow><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mi>t</mi></mrow><mo>,</mo><mrow><mi>x</mi><mo>+</mo><mi>z</mi></mrow><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>3</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>4</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mi>t</mi></mrow><mo>,</mo><mrow><mi>x</mi><mo>-</mo><mi>z</mi></mrow><mo>}</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List RegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+<p>Up to the ordering of the components, both decompositions are identical.
+</p>
+
+
+<p>Let us check that each component has a finite number of solutions.
+</p>
+
+
+
+
+<div id="spadComm9-239" class="spadComm" >
+<form id="formComm9-239" action="javascript:makeRequest('9-239');" >
+<input id="comm9-239" type="text" class="command" style="width: 20em;" value="[coHeight(ts) for ts in lts2] " />
+</form>
+<span id="commSav9-239" class="commSav" >[coHeight(ts) for ts in lts2] </span>
+<div id="mathAns9-239" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+<p>Let us count the degrees of each component,
+</p>
+
+
+
+
+<div id="spadComm9-240" class="spadComm" >
+<form id="formComm9-240" action="javascript:makeRequest('9-240');" >
+<input id="comm9-240" type="text" class="command" style="width: 27em;" value="degrees := [degree(ts) for ts in lts2]  " />
+</form>
+<span id="commSav9-240" class="commSav" >degrees := [degree(ts) for ts in lts2]  </span>
+<div id="mathAns9-240" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>8</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List NonNegativeInteger
+</div>
+
+
+
+<p>and compute their sum.
+</p>
+
+
+
+
+<div id="spadComm9-241" class="spadComm" >
+<form id="formComm9-241" action="javascript:makeRequest('9-241');" >
+<input id="comm9-241" type="text" class="command" style="width: 12em;" value="reduce(+,degrees) " />
+</form>
+<span id="commSav9-241" class="commSav" >reduce(+,degrees) </span>
+<div id="mathAns9-241" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>32</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>We study now the options of the <span class="teletype">zeroSetSplit</span> operation.  As we
+have seen yet, there is an optional second argument which is a boolean
+value. If this value is <span class="teletype">true</span> (this is the default) then the
+decomposition is computed in the sense of Kalkbrener, otherwise it is
+computed in the sense of Lazard.
+</p>
+
+
+<p>There is a second boolean optional argument that can be used (in that
+case the first optional argument must be present).  This second option
+allows you to get some information during the computations.
+</p>
+
+
+<p>Therefore, we need to understand a little what is going on during the
+computations.  An important feature of the algorithm is that the
+intermediate computations are managed in some sense like the processes
+of a Unix system.  Indeed, each intermediate computation may generate
+other intermediate computations and the management of all these
+computations is a crucial task for the efficiency.  Thus any
+intermediate computation may be suspended, killed or resumed,
+depending on algebraic considerations that determine priorities for
+these processes.  The goal is of course to go as fast as possible
+towards the final decomposition which means to avoid as much as
+possible unnecessary computations.
+</p>
+
+
+<p>To follow the computations, one needs to set to <span class="teletype">true</span> the second
+argument.  Then a lot of numbers and letters are displayed.  Between a
+<span class="teletype">[</span> and a <span class="teletype">]</span> one has the state of the processes at a given
+time.  Just after <span class="teletype">[</span> one can see the number of processes.  Then
+each process is represented by two numbers between <span class="teletype">&lt;</span> and 
+<span class="teletype">></span>.  A process consists of a list of polynomial <span style="font-weight: bold;"> ps</span> and a
+triangular set <span style="font-weight: bold;"> ts</span>; its goal is to compute the common zeros of
+<span style="font-weight: bold;"> ps</span> that belong to the regular-zeros set of <span style="font-weight: bold;"> ts</span>.  After the
+processes, the number between pipes gives the total number of
+polynomials in all the sets <span class="teletype">ps</span>.  Finally, the number between
+braces gives the number of components of a decomposition that are
+already computed. This number may decrease.
+</p>
+
+
+<p>Let us take a third example (Czapor-Geddes-Wang) to see how this
+information is displayed.
+</p>
+
+
+<p>Define a polynomial system.
+</p>
+
+
+
+
+<div id="spadComm9-242" class="spadComm" >
+<form id="formComm9-242" action="javascript:makeRequest('9-242');" >
+<input id="comm9-242" type="text" class="command" style="width: 9em;" value="u : R := 2   " />
+</form>
+<span id="commSav9-242" class="commSav" >u : R := 2   </span>
+<div id="mathAns9-242" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-243" class="spadComm" >
+<form id="formComm9-243" action="javascript:makeRequest('9-243');" >
+<input id="comm9-243" type="text" class="command" style="width: 144em;" value="q1 := 2*(u-1)**2+ 2*(x-z*x+z**2)+ y**2*(x-1)**2- 2*u*x+ 2*y*t*(1-x)*(x-z)+ 2*u*z*t*(t-y)+ u**2*t**2*(1-2*z)+ 2*u*t**2*(z-x)+ 2*u*t*y*(z-1)+ 2*u*z*x*(y+1)+ (u**2-2*u)*z**2*t**2+ 2*u**2*z**2+ 4*u*(1-u)*z+ t**2*(z-x)**2" />
+</form>
+<span id="commSav9-243" class="commSav" >q1 := 2*(u-1)**2+ 2*(x-z*x+z**2)+ y**2*(x-1)**2- 2*u*x+ 2*y*t*(1-x)*(x-z)+ 2*u*z*t*(t-y)+ u**2*t**2*(1-2*z)+ 2*u*t**2*(z-x)+ 2*u*t*y*(z-1)+ 2*u*z*x*(y+1)+ (u**2-2*u)*z**2*t**2+ 2*u**2*z**2+ 4*u*(1-u)*z+ t**2*(z-x)**2</span>
+<div id="mathAns9-243" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>10</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-244" class="spadComm" >
+<form id="formComm9-244" action="javascript:makeRequest('9-244');" >
+<input id="comm9-244" type="text" class="command" style="width: 64em;" value="q2 := t*(2*z+1)*(x-z)+ y*(z+2)*(1-x)+ u*(u-2)*t+ u*(1-2*u)*z*t+ u*y*(x+u-z*x-1)+ u*(u+1)*z**2*t" />
+</form>
+<span id="commSav9-244" class="commSav" >q2 := t*(2*z+1)*(x-z)+ y*(z+2)*(1-x)+ u*(u-2)*t+ u*(1-2*u)*z*t+ u*y*(x+u-z*x-1)+ u*(u+1)*z**2*t</span>
+<div id="mathAns9-244" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mi>t</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mi>z</mi><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-245" class="spadComm" >
+<form id="formComm9-245" action="javascript:makeRequest('9-245');" >
+<input id="comm9-245" type="text" class="command" style="width: 26em;" value="q3 := -u**2*(z-1)**2+ 2*z*(z-x)-2*(x-1)" />
+</form>
+<span id="commSav9-245" class="commSav" >q3 := -u**2*(z-1)**2+ 2*z*(z-x)-2*(x-1)</span>
+<div id="mathAns9-245" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-246" class="spadComm" >
+<form id="formComm9-246" action="javascript:makeRequest('9-246');" >
+<input id="comm9-246" type="text" class="command" style="width: 74em;" value="q4 :=   u**2+4*(z-x**2)+3*y**2*(x-1)**2- 3*t**2*(z-x)**2 +3*u**2*t**2*(z-1)**2+u**2*z*(z-2)+6*u*t*y*(z+x+z*x-1)" />
+</form>
+<span id="commSav9-246" class="commSav" >q4 :=   u**2+4*(z-x**2)+3*y**2*(x-1)**2- 3*t**2*(z-x)**2 +3*u**2*t**2*(z-1)**2+u**2*z*(z-2)+6*u*t*y*(z+x+z*x-1)</span>
+<div id="mathAns9-246" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>4</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>4</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-247" class="spadComm" >
+<form id="formComm9-247" action="javascript:makeRequest('9-247');" >
+<input id="comm9-247" type="text" class="command" style="width: 15em;" value="lq := [q1, q2, q3, q4]" />
+</form>
+<span id="commSav9-247" class="commSav" >lq := [q1, q2, q3, q4]</span>
+<div id="mathAns9-247" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mo>(</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo>(</mo><mo>(</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mn>4</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>+</mo><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>2</mn><mo>)</mo><mspace width="0.5 em" /><mi>x</mi><mo>+</mo><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>+</mo><mo>(</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>10</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>2</mn><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mi>t</mi><mo>)</mo><mspace width="0.5 em" /><mi>x</mi><mo>+</mo><mo>(</mo><mi>z</mi><mo>+</mo><mn>4</mn><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>2</mn><mo>)</mo><mspace width="0.5 em" /><mi>x</mi><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>2</mn><mo>,</mo><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>4</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo>(</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo><mspace width="0.5 em" /><mi>x</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>+</mo><mo>(</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>(</mo><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>4</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>4</mn><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+<p>Let us try the information option.  N.B. The timing should be between
+1 and 10 minutes, depending on your machine.
+</p>
+
+
+
+
+<div id="spadComm9-248" class="spadComm" >
+<form id="formComm9-248" action="javascript:makeRequest('9-248');" >
+<input id="comm9-248" type="text" class="command" style="width: 20em;" value="zeroSetSplit(lq,true,true)$T  " />
+</form>
+<span id="commSav9-248" class="commSav" >zeroSetSplit(lq,true,true)$T  </span>
+<div id="mathAns9-248" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+[1&nbsp;&lt;4,0&gt;&nbsp;-&gt;&nbsp;|4|;&nbsp;{0}]W[2&nbsp;&lt;5,0&gt;,&lt;3,1&gt;&nbsp;-&gt;&nbsp;|8|;&nbsp;{0}][2&nbsp;&lt;4,1&gt;,&lt;3,1&gt;&nbsp;-&gt;&nbsp;|7|;&nbsp;<br />
+{0}][1&nbsp;&lt;3,1&gt;&nbsp;-&gt;&nbsp;|3|;&nbsp;{0}]G[2&nbsp;&lt;4,1&gt;,&lt;4,1&gt;&nbsp;-&gt;&nbsp;|8|;&nbsp;{0}]W[3&nbsp;&lt;5,1&gt;,&lt;4,1&gt;,<br />
+&lt;3,2&gt;&nbsp;-&gt;&nbsp;|12|;&nbsp;{0}]GI[3&nbsp;&lt;4,2&gt;,&lt;4,1&gt;,&lt;3,2&gt;&nbsp;-&gt;&nbsp;|11|;&nbsp;{0}]GWw[3&nbsp;&lt;4,1&gt;,<br />
+&lt;3,2&gt;,&lt;5,2&gt;&nbsp;-&gt;&nbsp;|12|;&nbsp;{0}][3&nbsp;&lt;3,2&gt;,&lt;3,2&gt;,&lt;5,2&gt;&nbsp;-&gt;&nbsp;|11|;&nbsp;{0}]GIwWWWw<br />
+[4&nbsp;&lt;3,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|14|;&nbsp;{0}][4&nbsp;&lt;2,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;<br />
+|13|;&nbsp;{0}]Gwww[5&nbsp;&lt;3,2&gt;,&lt;3,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|17|;&nbsp;{0}]Gwwwwww<br />
+[8&nbsp;&lt;3,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|30|;&nbsp;{0}]Gwwwwww<br />
+[8&nbsp;&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2>,&lt;2,3>&nbsp;->&nbsp;|31|;&nbsp;{0}][8&nbsp;<br />
+&lt;3,3>,&lt;4,2>,&lt;4,2>,&lt;4,2>,&lt;4,2>,&lt;4,2>,&lt;5,2>,&lt;2,3>&nbsp;->&nbsp;|30|;&nbsp;{0}][8&nbsp;&lt;2,3>,<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|29|;&nbsp;{0}][8&nbsp;&lt;1,3&gt;,&lt;4,2&gt;,<br />
+&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|28|;&nbsp;{0}][7&nbsp;&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,<br />
+&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|27|;&nbsp;{0}][6&nbsp;&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,<br />
+&lt;2,3&gt;&nbsp;-&gt;&nbsp;|23|;&nbsp;{0}][5&nbsp;&lt;4,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|19|;&nbsp;{0}]<br />
+GIGIWwww[6&nbsp;&lt;5,2&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;3,3&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|23|;&nbsp;{0}][6&nbsp;&lt;4,3&gt;,<br />
+&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;3,3&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|22|;&nbsp;{0}]GIGI[6&nbsp;&lt;3,4&gt;,&lt;4,2&gt;,&lt;4,2&gt;,<br />
+&lt;5,2&gt;,&lt;3,3&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|21|;&nbsp;{0}][6&nbsp;&lt;2,4&gt;,&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;3,3&gt;,&lt;2,3&gt;&nbsp;<br />
+-&gt;&nbsp;|20|;&nbsp;{0}]GGG[5&nbsp;&lt;4,2&gt;,&lt;4,2&gt;,&lt;5,2&gt;,&lt;3,3&gt;,&lt;2,3&gt;&nbsp;-&gt;&nbsp;|18|;&nbsp;{0}]GIGIWwwwW<br />
+[6&nbsp;&lt;5,2>,&lt;4,2>,&lt;5,2>,&lt;3,3>,&lt;3,3>,&lt;2,3>&nbsp;->&nbsp;|22|;&nbsp;{0}][6&nbsp;&lt;4,3>,&lt;4,2>,<br />
+&lt;5,2>,&lt;3,3>,&lt;3,3>,&lt;2,3>&nbsp;->&nbsp;|21|;&nbsp;{0}]GIwwWwWWWWWWWwWWWWwwwww[8&nbsp;&lt;4,2>,<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&lt;5,2&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|27|;&nbsp;{0}][8&nbsp;&lt;3,3&gt;,&lt;5,2&gt;,<br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|26|;&nbsp;{0}][8&nbsp;&lt;2,3&gt;,&lt;5,2&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|25|;&nbsp;{0}]Gwwwwwwwwwwwwwwwwwwww[9&nbsp;<br />
+&lt;5,2&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|29|;&nbsp;{0}]<br />
+GI[9&nbsp;&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|28|;&nbsp;<br />
+{0}][9&nbsp;&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|27|;&nbsp;<br />
+{0}][9&nbsp;&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|26|;&nbsp;<br />
+{0}]GGwwwwwwwwwwwwWWwwwwwwww[11&nbsp;&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3>,<br />
+&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|33|;&nbsp;{0}][11&nbsp;&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,<br />
+&lt;4,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|32|;&nbsp;{0}][11&nbsp;&lt;1,3>,&lt;3,3>,<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|31|;&nbsp;{0}]<br />
+GGGwwwwwwwwwwwww[12&nbsp;&lt;2,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|34|;&nbsp;{0}]GGwwwwwwwwwwwww[13&nbsp;&lt;3,3&gt;,&lt;2,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;<br />
+|38|;&nbsp;{0}]Gwwwwwwwwwwwww[13&nbsp;&lt;2,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|39|;&nbsp;{0}]GGGwwwwwwwwwwwww[15&nbsp;<br />
+&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|46|;&nbsp;{0}][14&nbsp;&lt;4,3&gt;,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,<br />
+&lt;3,3>,&lt;4,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|43|;&nbsp;{0}]GIGGGGIGGI<br />
+[14&nbsp;&lt;3,4>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;4,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|42|;&nbsp;{0}]GGG[14&nbsp;&lt;2,4&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|41|;&nbsp;{0}]<br />
+[14&nbsp;&lt;1,4&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|40|;&nbsp;{0}]GGG[13&nbsp;&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|39|;&nbsp;{0}]<br />
+Gwwwwwwwwwwwww[15&nbsp;&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,<br />
+&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|48|;&nbsp;{0}]Gwwwwwwwwwwwww<br />
+[15&nbsp;&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;4,3>,&lt;3,3>,&lt;3,3>,&lt;2,3>,&lt;3,3>,<br />
+&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|49|;&nbsp;{0}]GIGI[15&nbsp;&lt;3,4>,&lt;4,3>,&lt;3,3>,&lt;4,3>,<br />
+&lt;4,3>,&lt;3,3>,&lt;4,3>,&lt;3,3>,&lt;3,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+|48|;&nbsp;{0}]G[14&nbsp;&lt;4,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|45|;&nbsp;{0}][13&nbsp;&lt;3,3&gt;,&lt;4,3&gt;,&lt;4,3&gt;,<br />
+&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|41|;&nbsp;<br />
+{0}]Gwwwwwwwwwwwww[13&nbsp;&lt;4,3&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|42|;&nbsp;{0}]GIGGGGIGGI[13&nbsp;&lt;3,4&gt;,&lt;4,3&gt;,<br />
+&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;<br />
+|41|;&nbsp;{0}]GGGGGGGG[13&nbsp;&lt;2,4&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|40|;&nbsp;{0}][13&nbsp;&lt;1,4>,&lt;4,3>,&lt;4,3>,&lt;3,3>,<br />
+&lt;3,3>,&lt;4,3>,&lt;3,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|39|;&nbsp;{0}]<br />
+[13&nbsp;&lt;0,4>,&lt;4,3>,&lt;4,3>,&lt;3,3>,&lt;3,3>,&lt;4,3>,&lt;3,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|38|;&nbsp;{0}][12&nbsp;&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,<br />
+&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|38|;&nbsp;{1}][11&nbsp;&lt;4,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|34|;&nbsp;{1}]<br />
+[10&nbsp;&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;<br />
+|30|;&nbsp;{1}][10&nbsp;&lt;2,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,<br />
+&lt;3,4&gt;&nbsp;-&gt;&nbsp;|29|;&nbsp;{1}]GGGwwwwwwwwwwwww[11&nbsp;&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|33|;&nbsp;{1}]<br />
+GGGwwwwwwwwwwwww[12&nbsp;&lt;4,3&gt;,&lt;3,3&gt;,&lt;4,3>,&lt;3,3>,&lt;3,3>,&lt;4,3>,<br />
+&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|38|;&nbsp;{1}]Gwwwwwwwwwwwww<br />
+[12&nbsp;&lt;3,3>,&lt;4,3>,&lt;5,3>,&lt;3,3>,&lt;4,3>,&lt;3,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|39|;&nbsp;{1}]GGwwwwwwwwwwwww[13&nbsp;&lt;5,3&gt;,&lt;4,3&gt;,&lt;4,3&gt;,<br />
+&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;<br />
+|44|;&nbsp;{1}]GIGGGGIGGIW[13&nbsp;&lt;4,4&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|43|;&nbsp;{1}]GGW[13&nbsp;<br />
+&lt;3,4&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|42|;&nbsp;{1}]GGG[12&nbsp;&lt;4,3&gt;,&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,<br />
+&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|39|;&nbsp;{1}]Gwwwwwwwwwwwww[12&nbsp;<br />
+&lt;4,3&gt;,&lt;4,3&gt;,&lt;5,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3>,&lt;3,3>,&lt;3,4>,<br />
+&lt;3,4>&nbsp;->&nbsp;|40|;&nbsp;{1}]Gwwwwwwwwwwwww[13&nbsp;&lt;5,3>,&lt;5,3>,&lt;4,3>,&lt;5,3>,&lt;3,3>,<br />
+&lt;3,3>,&lt;4,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|46|;&nbsp;{1}]GIGIW<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+[13&nbsp;&lt;4,4&gt;,&lt;5,3&gt;,&lt;4,3&gt;,&lt;5,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|45|;&nbsp;{1}][13&nbsp;&lt;3,4&gt;,&lt;5,3&gt;,&lt;4,3&gt;,&lt;5,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|44|;&nbsp;{1}][13&nbsp;<br />
+&lt;2,4&gt;,&lt;5,3&gt;,&lt;4,3&gt;,&lt;5,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|43|;&nbsp;{1}]GG[12&nbsp;&lt;5,3&gt;,&lt;4,3&gt;,&lt;5,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,<br />
+&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|41|;&nbsp;{1}]GIGGGGIGGIW[12&nbsp;<br />
+&lt;4,4&gt;,&lt;4,3&gt;,&lt;5,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,<br />
+&lt;3,4&gt;&nbsp;-&gt;&nbsp;|40|;&nbsp;{1}]GGGGGGW[12&nbsp;&lt;3,4&gt;,&lt;4,3&gt;,&lt;5,3>,&lt;3,3>,&lt;3,3>,&lt;4,3>,<br />
+&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|39|;&nbsp;{1}][12&nbsp;&lt;2,4>,&lt;4,3>,<br />
+&lt;5,3>,&lt;3,3>,&lt;3,3>,&lt;4,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|38|;&nbsp;<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+{1}][12&nbsp;&lt;1,4&gt;,&lt;4,3&gt;,&lt;5,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|37|;&nbsp;{1}]GGG[11&nbsp;&lt;4,3&gt;,&lt;5,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|36|;&nbsp;{1}][10&nbsp;&lt;5,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|32|;&nbsp;{1}][9&nbsp;&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|27|;&nbsp;{1}]W[9&nbsp;<br />
+&lt;2,4&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|26|;&nbsp;{1}]<br />
+[9&nbsp;&lt;1,4&gt;,&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|25|;&nbsp;<br />
+{1}][8&nbsp;&lt;3,3&gt;,&lt;4,3&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|24|;&nbsp;{1}]<br />
+W[8&nbsp;&lt;2,4>,&lt;4,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|23|;&nbsp;{1}][8&nbsp;<br />
+&lt;1,4>,&lt;4,3>,&lt;2,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|22|;&nbsp;{1}][7&nbsp;&lt;4,3>,<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|21|;&nbsp;{1}]w[7&nbsp;&lt;3,4&gt;,&lt;2,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|20|;&nbsp;{1}][7&nbsp;&lt;2,4&gt;,&lt;2,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|19|;&nbsp;{1}][7&nbsp;&lt;1,4&gt;,&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|18|;&nbsp;{1}][6&nbsp;&lt;2,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,<br />
+&lt;3,4&gt;&nbsp;-&gt;&nbsp;|17|;&nbsp;{1}]GGwwwwww[7&nbsp;&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,<br />
+&lt;3,4&gt;&nbsp;-&gt;&nbsp;|21|;&nbsp;{1}]GIW[7&nbsp;&lt;2,4&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;<br />
+-&gt;&nbsp;|20|;&nbsp;{1}]GG[6&nbsp;&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|18|;&nbsp;{1}]<br />
+Gwwwwww[7&nbsp;&lt;4,3&gt;,&lt;4,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|23|;&nbsp;{1}]<br />
+GIW[7&nbsp;&lt;3,4>,&lt;4,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|22|;&nbsp;{1}][6&nbsp;<br />
+&lt;4,3>,&lt;3,3>,&lt;3,3>,&lt;3,3>,&lt;3,4>,&lt;3,4>&nbsp;->&nbsp;|19|;&nbsp;{1}]GIW[6&nbsp;&lt;3,4>,&lt;3,3>,<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|18|;&nbsp;{1}]GGW[6&nbsp;&lt;2,4&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,<br />
+&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|17|;&nbsp;{1}][6&nbsp;&lt;1,4&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;<br />
+|16|;&nbsp;{1}]GGG[5&nbsp;&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|15|;&nbsp;{1}]GIW[5&nbsp;<br />
+&lt;2,4&gt;,&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|14|;&nbsp;{1}]GG[4&nbsp;&lt;3,3&gt;,&lt;3,3&gt;,&lt;3,4&gt;,<br />
+&lt;3,4&gt;&nbsp;-&gt;&nbsp;|12|;&nbsp;{1}][3&nbsp;&lt;3,3&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|9|;&nbsp;{1}]W[3&nbsp;&lt;2,4&gt;,&lt;3,4&gt;,<br />
+&lt;3,4&gt;&nbsp;-&gt;&nbsp;|8|;&nbsp;{1}][3&nbsp;&lt;1,4&gt;,&lt;3,4&gt;,&lt;3,4&gt;&nbsp;-&gt;&nbsp;|7|;&nbsp;{1}]G[2&nbsp;&lt;3,4&gt;,&lt;3,4&gt;&nbsp;<br />
+-&gt;&nbsp;|6|;&nbsp;{1}]G[1&nbsp;&lt;3,4>&nbsp;->&nbsp;|3|;&nbsp;{1}][1&nbsp;&lt;2,4>&nbsp;->&nbsp;|2|;&nbsp;{1}][1&nbsp;&lt;1,4>&nbsp;->&nbsp;<br />
+|1|;&nbsp;{1}]<br />
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;***&nbsp;QCMPACK&nbsp;Statistics&nbsp;***<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size:&nbsp;&nbsp;36<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entries&nbsp;reused:&nbsp;&nbsp;255<br />
+<br />
+&nbsp;&nbsp;&nbsp;***&nbsp;REGSETGCD:&nbsp;Gcd&nbsp;Statistics&nbsp;***<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size:&nbsp;&nbsp;125<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entries&nbsp;reused:&nbsp;&nbsp;0<br />
+<br />
+&nbsp;&nbsp;&nbsp;***&nbsp;REGSETGCD:&nbsp;Inv&nbsp;Set&nbsp;Statistics&nbsp;***<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size:&nbsp;&nbsp;30<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entries&nbsp;reused:&nbsp;&nbsp;0<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+<p><math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mrow><mn>26604210869491302385515265737052082361668474181372891857784</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>23</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>443104378424686086067294899528296664238693556855017735265295</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>22</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>279078393286701234679141342358988327155321305829547090310242</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>21</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3390276361413232465107617176615543054620626391823613392185226</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>941478179503540575554198645220352803719793196473813837434129</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>11547855194679475242211696749673949352585747674184320988144390</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1343609566765597789881701656699413216467215660333356417241432</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>17</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>23233813868147873503933551617175640859899102987800663566699334</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>16</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>869574020537672336950845440508790740850931336484983573386433</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>15</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>31561554305876934875419461486969926554241750065103460820476969</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mn>1271400990287717487442065952547731879554823889855386072264931</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>31945089913863736044802526964079540198337049550503295825160523</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3738735704288144509871371560232845884439102270778010470931960</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>25293997512391412026144601435771131587561905532992045692885927</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>5210239009846067123469262799870052773410471135950175008046524</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>15083887986930297166259870568608270427403187606238713491129188</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3522087234692930126383686270775779553481769125670839075109000</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>6079945200395681013086533792568886491101244247440034969288588</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1090634852433900888199913756247986023196987723469934933603680</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1405819430871907102294432537538335402102838994019667487458352</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mn>88071527950320450072536671265507748878347828884933605202432</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>135882489433640933229781177155977768016065765482378657129440</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>13957283442882262230559894607400314082516690749975646520320</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mn>334637692973189299277258325709308472592117112855749713920</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>8567175484043952879756725964506833932149637101090521164936</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>23</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>149792392864201791845708374032728942498797519251667250945721</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>22</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>77258371783645822157410861582159764138123003074190374021550</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>21</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1108862254126854214498918940708612211184560556764334742191654</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>213250494460678865219774480106826053783815789621501732672327</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mn>3668929075160666195729177894178343514501987898410131431699882</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>171388906471001872879490124368748236314765459039567820048872</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>17</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>7192430746914602166660233477331022483144921771645523139658986</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>128798674689690072812879965633090291959663143108437362453385</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>15</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>9553010858341425909306423132921134040856028790803526430270671</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>13296096245675492874538687646300437824658458709144441096603</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>9475806805814145326383085518325333106881690568644274964864413</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>803234687925133458861659855664084927606298794799856265539336</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>7338202759292865165994622349207516400662174302614595173333825</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1308004628480367351164369613111971668880538855640917200187108</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mn>4268059455741255498880229598973705747098216067697754352634748</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>892893526858514095791318775904093300103045601514470613580600</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1679152575460683956631925852181341501981598137465328797013652</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>269757415767922980378967154143357835544113158280591408043936</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>380951527864657529033580829801282724081345372680202920198224</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>19785545294228495032998826937601341132725035339452913286656</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>36477412057384782942366635303396637763303928174935079178528</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>3722212879279038648713080422224976273210890229485838670848</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mn>89079724853114348361230634484013862024728599906874105856</mn><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>11</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mn>4</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>t</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mi>t</mi></mrow><mo>,</mo><mo>:</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mi>z</mi><mo>+</mo><mn>1</mn><mo>)</mo><mspace width="0.5 em" /><mi>x</mi><mo>+</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mn>1</mn><mo>}</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: 
+List RegularTriangularSet(
+Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+<p>Between a sequence of processes, thus between a <span class="teletype">]</span> and a <span class="teletype">[</span>
+you can see capital letters <span class="teletype">W, G, I</span> and lower case letters 
+<span class="teletype">i, w</span>. Each time a capital letter appears a non-trivial computation
+has be performed and its result is put in a hash-table.  Each time a
+lower case letter appears a needed result has been found in an
+hash-table.  The use of these hash-tables generally speed up the
+computations.  However, on very large systems, it may happen that
+these hash-tables become too big to be handle by your AXIOM
+configuration.  Then in these exceptional cases, you may prefer
+getting a result (even if it takes a long time) than getting nothing.
+Hence you need to know how to prevent the <span class="teletype">RSEGSET</span> constructor
+from using these hash-tables.  In that case you will be using the 
+<span class="teletype">zeroSetSplit</span> with five arguments.  The first one is the input system
+<span style="font-weight: bold;"> lp</span> as above.  The second one is a boolean value <span class="teletype">hash?</span>
+which is <span class="teletype">true</span> iff you want to use hash-tables.  The third one is
+boolean value <span class="teletype">clos?</span> which is <span class="teletype">true</span> iff you want to solve
+your system in the sense of Kalkbrener, the other way remaining that
+of Lazard.  The fourth argument is boolean value <span class="teletype">info?</span> which is
+<span class="teletype">true</span> iff you want to display information during the
+computations.  The last one is boolean value <span class="teletype">prep?</span> which is 
+<span class="teletype">true</span> iff you want to use some heuristics that are performed on the
+input system before starting the real algorithm.  The value of this
+flag is <span class="teletype">true</span> when you are using <span class="teletype">zeroSetSplit</span> with less
+than five arguments.  Note that there is no available signature for
+<span class="teletype">zeroSetSplit</span> with four arguments.
+</p>
+
+
+<p>We finish this section by some remarks about both ways of solving, in
+the sense of Kalkbrener or in the sense of Lazard.  For problems with
+a finite number of solutions, there are theoretically equivalent and
+the resulting decompositions are identical, up to the ordering of the
+components.  However, when solving in the sense of Lazard, the
+algorithm behaves differently.  In that case, it becomes more
+incremental than in the sense of Kalkbrener. That means the
+polynomials of the input system are considered one after another
+whereas in the sense of Kalkbrener the input system is treated more
+globally.
+</p>
+
+
+<p>This makes an important difference in positive dimension.  Indeed when
+solving in the sense of Kalkbrener, the <span class="em">Primeidealkettensatz</span> of
+Krull is used.  That means any regular triangular containing more
+polynomials than the input system can be deleted.  This is not
+possible when solving in the sense of Lazard.  This explains why
+Kalkbrener's decompositions usually contain less components than those
+of Lazard.  However, it may happen with some examples that the
+incremental process (that cannot be used when solving in the sense of
+Kalkbrener) provide a more efficient way of solving than the global
+one even if the <span class="em">Primeidealkettensatz</span> is used.  Thus just try
+both, with the various options, before concluding that you cannot
+solve your favorite system with <span class="teletype">zeroSetSplit</span>.  There exist more
+options at the development level that are not currently available in
+this public version.  
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.66.xhtml" style="margin-right: 10px;">Previous Section 9.66 RealClosure</a><a href="section-9.68.xhtml" style="margin-right: 10px;">Next Section 9.68 RomanNumeral</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.68.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.68.xhtml
new file mode 100644
index 0000000..2de2998
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.68.xhtml
@@ -0,0 +1,359 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.68</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.67.xhtml" style="margin-right: 10px;">Previous Section 9.67 RegularTriangularSet</a><a href="section-9.69.xhtml" style="margin-right: 10px;">Next Section 9.69  Segment</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.68">
+<h2 class="sectiontitle">9.68  RomanNumeral</h2>
+
+
+<a name="RomanNumeralXmpPage" class="label"/>
+
+
+<p>The Roman numeral package was added to Axiom in MCMLXXXVI for use in
+denoting higher order derivatives.
+</p>
+
+
+<p>For example, let <span class="teletype">f</span> be a symbolic operator.
+</p>
+
+
+
+
+<div id="spadComm9-249" class="spadComm" >
+<form id="formComm9-249" action="javascript:makeRequest('9-249');" >
+<input id="comm9-249" type="text" class="command" style="width: 12em;" value="f := operator 'f " />
+</form>
+<span id="commSav9-249" class="commSav" >f := operator 'f </span>
+<div id="mathAns9-249" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>f</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: BasicOperator
+</div>
+
+
+
+<p>This is the seventh derivative of <span class="teletype">f</span> with respect to <span class="teletype">x</span>.
+</p>
+
+
+
+
+<div id="spadComm9-250" class="spadComm" >
+<form id="formComm9-250" action="javascript:makeRequest('9-250');" >
+<input id="comm9-250" type="text" class="command" style="width: 8em;" value="D(f x,x,7) " />
+</form>
+<span id="commSav9-250" class="commSav" >D(f x,x,7) </span>
+<div id="mathAns9-250" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msubsup><mi>f</mi><mrow><mspace width="0.5 em" /></mrow><mrow><mrow><mo>(</mo><mi>vii</mi><mo>)</mo></mrow></mrow></msubsup></mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Expression Integer
+</div>
+
+
+
+<p>You can have integers printed as Roman numerals by declaring variables to
+be of type <span class="teletype">RomanNumeral</span> (abbreviation <span class="teletype">ROMAN</span>).
+</p>
+
+
+
+
+<div id="spadComm9-251" class="spadComm" >
+<form id="formComm9-251" action="javascript:makeRequest('9-251');" >
+<input id="comm9-251" type="text" class="command" style="width: 16em;" value="a := roman(1978 - 1965) " />
+</form>
+<span id="commSav9-251" class="commSav" >a := roman(1978 - 1965) </span>
+<div id="mathAns9-251" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>XIII</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RomanNumeral
+</div>
+
+
+
+<p>This package now has a small but devoted group of followers that claim
+this domain has shown its efficacy in many other contexts.  They claim
+that Roman numerals are every bit as useful as ordinary integers.
+</p>
+
+
+<p>In a sense, they are correct, because Roman numerals form a ring and you
+can therefore construct polynomials with Roman numeral coefficients,
+matrices over Roman numerals, etc..
+</p>
+
+
+
+
+<div id="spadComm9-252" class="spadComm" >
+<form id="formComm9-252" action="javascript:makeRequest('9-252');" >
+<input id="comm9-252" type="text" class="command" style="width: 17em;" value="x : UTS(ROMAN,'x,0) := x " />
+</form>
+<span id="commSav9-252" class="commSav" >x : UTS(ROMAN,'x,0) := x </span>
+<div id="mathAns9-252" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariateTaylorSeries(RomanNumeral,x,0)
+</div>
+
+
+
+<p>Was Fibonacci Italian or ROMAN?
+</p>
+
+
+
+
+<div id="spadComm9-253" class="spadComm" >
+<form id="formComm9-253" action="javascript:makeRequest('9-253');" >
+<input id="comm9-253" type="text" class="command" style="width: 14em;" value="recip(1 - x - x**2) " />
+</form>
+<span id="commSav9-253" class="commSav" >recip(1 - x - x**2) </span>
+<div id="mathAns9-253" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>I</mi><mo>+</mo><mi>x</mi><mo>+</mo><mrow><mi>II</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>III</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>V</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>VIII</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>XIII</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>XXI</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>XXXIV</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>LV</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>LXXXIX</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>O</mi><mo>(</mo><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(UnivariateTaylorSeries(RomanNumeral,x,0),...)
+</div>
+
+
+
+<p>You can also construct fractions with Roman numeral numerators and
+denominators, as this matrix Hilberticus illustrates.
+</p>
+
+
+
+
+<div id="spadComm9-254" class="spadComm" >
+<form id="formComm9-254" action="javascript:makeRequest('9-254');" >
+<input id="comm9-254" type="text" class="command" style="width: 15em;" value="m : MATRIX FRAC ROMAN " />
+</form>
+<span id="commSav9-254" class="commSav" >m : MATRIX FRAC ROMAN </span>
+<div id="mathAns9-254" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-255" class="spadComm" >
+<form id="formComm9-255" action="javascript:makeRequest('9-255');" >
+<input id="comm9-255" type="text" class="command" style="width: 38em;" value="m := matrix [ [1/(i + j) for i in 1..3] for j in 1..3]  " />
+</form>
+<span id="commSav9-255" class="commSav" >m := matrix [ [1/(i + j) for i in 1..3] for j in 1..3]  </span>
+<div id="mathAns9-255" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mi>I</mi><mi>II</mi></mfrac></mtd><mtd><mfrac><mi>I</mi><mi>III</mi></mfrac></mtd><mtd><mfrac><mi>I</mi><mi>IV</mi></mfrac></mtd></mtr><mtr><mtd><mfrac><mi>I</mi><mi>III</mi></mfrac></mtd><mtd><mfrac><mi>I</mi><mi>IV</mi></mfrac></mtd><mtd><mfrac><mi>I</mi><mi>V</mi></mfrac></mtd></mtr><mtr><mtd><mfrac><mi>I</mi><mi>IV</mi></mfrac></mtd><mtd><mfrac><mi>I</mi><mi>V</mi></mfrac></mtd><mtd><mfrac><mi>I</mi><mi>VI</mi></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Matrix Fraction RomanNumeral
+</div>
+
+
+
+<p>Note that the inverse of the matrix has integral <span class="teletype">ROMAN</span> entries.
+</p>
+
+
+
+
+<div id="spadComm9-256" class="spadComm" >
+<form id="formComm9-256" action="javascript:makeRequest('9-256');" >
+<input id="comm9-256" type="text" class="command" style="width: 7em;" value="inverse m " />
+</form>
+<span id="commSav9-256" class="commSav" >inverse m </span>
+<div id="mathAns9-256" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mi>LXXII</mi></mtd><mtd><mo>-</mo><mi>CCXL</mi></mtd><mtd><mi>CLXXX</mi></mtd></mtr><mtr><mtd><mo>-</mo><mi>CCXL</mi></mtd><mtd><mi>CM</mi></mtd><mtd><mo>-</mo><mi>DCCXX</mi></mtd></mtr><mtr><mtd><mi>CLXXX</mi></mtd><mtd><mo>-</mo><mi>DCCXX</mi></mtd><mtd><mi>DC</mi></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(Matrix Fraction RomanNumeral,...)
+</div>
+
+
+
+<p>Unfortunately, the spoil-sports say that the fun stops when the
+numbers get big---mostly because the Romans didn't establish
+conventions about representing very large numbers.
+</p>
+
+
+
+
+<div id="spadComm9-257" class="spadComm" >
+<form id="formComm9-257" action="javascript:makeRequest('9-257');" >
+<input id="comm9-257" type="text" class="command" style="width: 12em;" value="y := factorial 10 " />
+</form>
+<span id="commSav9-257" class="commSav" >y := factorial 10 </span>
+<div id="mathAns9-257" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3628800</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>You work it out!
+</p>
+
+
+
+
+<div id="spadComm9-258" class="spadComm" >
+<form id="formComm9-258" action="javascript:makeRequest('9-258');" >
+<input id="comm9-258" type="text" class="command" style="width: 6em;" value="roman y " />
+</form>
+<span id="commSav9-258" class="commSav" >roman y </span>
+<div id="mathAns9-258" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>((((I))))((((I))))((((I))))(((I)))(((I)))(((I)))(((I)))</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>(((I)))(((I)))((I))((I))MMMMMMMMDCCC</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RomanNumeral
+</div>
+
+
+
+<p>Issue the system command <span class="teletype">)show RomanNumeral</span> to display the full
+list of operations defined by <span class="teletype">RomanNumeral</span>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.67.xhtml" style="margin-right: 10px;">Previous Section 9.67 RegularTriangularSet</a><a href="section-9.69.xhtml" style="margin-right: 10px;">Next Section 9.69  Segment</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.69.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.69.xhtml
new file mode 100644
index 0000000..2311444
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.69.xhtml
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.69</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.68.xhtml" style="margin-right: 10px;">Previous Section 9.68  RomanNumeral</a><a href="section-9.70.xhtml" style="margin-right: 10px;">Next Section 9.70 SegmentBinding</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.69">
+<h2 class="sectiontitle">9.69  Segment</h2>
+
+
+<a name="SegmentXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">Segment</span> domain provides a generalized interval type.
+</p>
+
+
+<p>Segments are created using the <span class="teletype">..</span> construct by indicating the
+(included) end points.
+</p>
+
+
+
+
+<div id="spadComm9-1" class="spadComm" >
+<form id="formComm9-1" action="javascript:makeRequest('9-1');" >
+<input id="comm9-1" type="text" class="command" style="width: 8em;" value="s := 3..10 " />
+</form>
+<span id="commSav9-1" class="commSav" >s := 3..10 </span>
+<div id="mathAns9-1" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mo>.</mo><mn>10</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Segment PositiveInteger
+</div>
+
+
+
+<p>The first end point is called the <span class="spadfunFrom" >lo</span><span class="index">lo</span><a name="chapter-9-0"/><span class="index">Segment</span><a name="chapter-9-1"/> and the
+second is called <span class="spadfunFrom" >hi</span><span class="index">hi</span><a name="chapter-9-2"/><span class="index">Segment</span><a name="chapter-9-3"/>.
+</p>
+
+
+
+
+<div id="spadComm9-2" class="spadComm" >
+<form id="formComm9-2" action="javascript:makeRequest('9-2');" >
+<input id="comm9-2" type="text" class="command" style="width: 4em;" value="lo s " />
+</form>
+<span id="commSav9-2" class="commSav" >lo s </span>
+<div id="mathAns9-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>These names are used even though the end points might belong to an
+unordered set.
+</p>
+
+
+
+
+<div id="spadComm9-3" class="spadComm" >
+<form id="formComm9-3" action="javascript:makeRequest('9-3');" >
+<input id="comm9-3" type="text" class="command" style="width: 4em;" value="hi s " />
+</form>
+<span id="commSav9-3" class="commSav" >hi s </span>
+<div id="mathAns9-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>In addition to the end points, each segment has an integer ``increment.''
+An increment can be specified using the ``<span class="teletype">by</span>'' construct.
+</p>
+
+
+
+
+<div id="spadComm9-4" class="spadComm" >
+<form id="formComm9-4" action="javascript:makeRequest('9-4');" >
+<input id="comm9-4" type="text" class="command" style="width: 12em;" value="t := 10..3 by -2 " />
+</form>
+<span id="commSav9-4" class="commSav" >t := 10..3 by -2 </span>
+<div id="mathAns9-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>10</mn><mo>.</mo><mo>.</mo><mn>3</mn></mrow><mtext><mrow><mtext>by&nbsp;</mtext></mrow></mtext><mo>-</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Segment PositiveInteger
+</div>
+
+
+
+<p>This part can be obtained using the <span class="spadfunFrom" >incr</span><span class="index">incr</span><a name="chapter-9-4"/><span class="index">Segment</span><a name="chapter-9-5"/> function.
+</p>
+
+
+
+
+<div id="spadComm9-5" class="spadComm" >
+<form id="formComm9-5" action="javascript:makeRequest('9-5');" >
+<input id="comm9-5" type="text" class="command" style="width: 5em;" value="incr s " />
+</form>
+<span id="commSav9-5" class="commSav" >incr s </span>
+<div id="mathAns9-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Unless otherwise specified, the increment is <span class="teletype">1</span>.
+</p>
+
+
+
+
+<div id="spadComm9-6" class="spadComm" >
+<form id="formComm9-6" action="javascript:makeRequest('9-6');" >
+<input id="comm9-6" type="text" class="command" style="width: 5em;" value="incr t " />
+</form>
+<span id="commSav9-6" class="commSav" >incr t </span>
+<div id="mathAns9-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Integer
+</div>
+
+
+
+<p>A single value can be converted to a segment with equal end points.
+This happens if segments and single values are mixed in a list.
+</p>
+
+
+
+
+<div id="spadComm9-7" class="spadComm" >
+<form id="formComm9-7" action="javascript:makeRequest('9-7');" >
+<input id="comm9-7" type="text" class="command" style="width: 22em;" value="l := [1..3, 5, 9, 15..11 by -1] " />
+</form>
+<span id="commSav9-7" class="commSav" >l := [1..3, 5, 9, 15..11 by -1] </span>
+<div id="mathAns9-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mn>1</mn><mo>.</mo><mo>.</mo><mn>3</mn></mrow><mo>,</mo><mrow><mn>5</mn><mo>.</mo><mo>.</mo><mn>5</mn></mrow><mo>,</mo><mrow><mn>9</mn><mo>.</mo><mo>.</mo><mn>9</mn></mrow><mo>,</mo><mrow><mrow><mn>15</mn><mo>.</mo><mo>.</mo><mn>11</mn></mrow><mtext><mrow><mtext>by</mtext></mrow></mtext><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Segment PositiveInteger
+</div>
+
+
+
+<p>If the underlying type is an ordered ring, it is possible to perform
+additional operations.  The <span class="spadfunFrom" >expand</span><span class="index">expand</span><a name="chapter-9-6"/><span class="index">Segment</span><a name="chapter-9-7"/> operation
+creates a list of points in a segment.
+</p>
+
+
+
+
+<div id="spadComm9-8" class="spadComm" >
+<form id="formComm9-8" action="javascript:makeRequest('9-8');" >
+<input id="comm9-8" type="text" class="command" style="width: 6em;" value="expand s " />
+</form>
+<span id="commSav9-8" class="commSav" >expand s </span>
+<div id="mathAns9-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>If <span class="teletype">k > 0</span>, then <span class="teletype">expand(l..h by k)</span> creates the list
+<span class="teletype">[l, l+k, ..., lN]</span> where <span class="teletype">lN &lt;= h &lt; lN+k</span>.
+If <span class="teletype">k &lt; 0</span>, then <span class="teletype">lN >= h > lN+k</span>.
+</p>
+
+
+
+
+<div id="spadComm9-9" class="spadComm" >
+<form id="formComm9-9" action="javascript:makeRequest('9-9');" >
+<input id="comm9-9" type="text" class="command" style="width: 6em;" value="expand t " />
+</form>
+<span id="commSav9-9" class="commSav" >expand t </span>
+<div id="mathAns9-9" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>10</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>It is also possible to expand a list of segments.  This is equivalent
+to appending lists obtained by expanding each segment individually.
+</p>
+
+
+
+
+<div id="spadComm9-10" class="spadComm" >
+<form id="formComm9-10" action="javascript:makeRequest('9-10');" >
+<input id="comm9-10" type="text" class="command" style="width: 6em;" value="expand l " />
+</form>
+<span id="commSav9-10" class="commSav" >expand l </span>
+<div id="mathAns9-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>15</mn><mo>,</mo><mn>14</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>12</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>For more information on related topics, see
+<a href="section-9.70.xhtml#SegmentBindingXmpPage" class="ref" >SegmentBindingXmpPage</a>  and 
+<a href="section-9.84.xhtml#UniversalSegmentXmpPage" class="ref" >UniversalSegmentXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.68.xhtml" style="margin-right: 10px;">Previous Section 9.68  RomanNumeral</a><a href="section-9.70.xhtml" style="margin-right: 10px;">Next Section 9.70 SegmentBinding</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.7.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.7.xhtml
new file mode 100644
index 0000000..5e0c7e3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.7.xhtml
@@ -0,0 +1,1744 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.7</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.6.xhtml" style="margin-right: 10px;">Previous Section 9.6 CardinalNumber</a><a href="section-9.8.xhtml" style="margin-right: 10px;">Next Section 9.8 Character</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.7">
+<h2 class="sectiontitle">9.7  CartesianTensor</h2>
+
+
+<a name="CartesianTensorXmpPage" class="label"/>
+
+
+<p><span class="teletype">CartesianTensor(i0,dim,R)</span> provides Cartesian tensors with
+components belonging to a commutative ring <span class="teletype">R</span>.  Tensors can be
+described as a generalization of vectors and matrices.  This gives a
+concise <span class="italic">tensor algebra</span> for multilinear objects supported by the
+<span class="teletype">CartesianTensor</span> domain.  You can form the inner or outer product
+of any two tensors and you can add or subtract tensors with the same
+number of components.  Additionally, various forms of traces and
+transpositions are useful.
+</p>
+
+
+<p>The <span class="teletype">CartesianTensor</span> constructor allows you to specify the
+minimum index for subscripting.  In what follows we discuss in detail
+how to manipulate tensors.
+</p>
+
+
+<p>Here we construct the domain of Cartesian tensors of dimension 2 over the
+integers, with indices starting at 1.
+</p>
+
+
+
+
+<div id="spadComm9-77" class="spadComm" >
+<form id="formComm9-77" action="javascript:makeRequest('9-77');" >
+<input id="comm9-77" type="text" class="command" style="width: 22em;" value="CT := CARTEN(i0 := 1, 2, Integer)" />
+</form>
+<span id="commSav9-77" class="commSav" >CT := CARTEN(i0 := 1, 2, Integer)</span>
+<div id="mathAns9-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>CartesianTensor</mi><mo>(</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mi>Integer</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+<a name="subsec-7.1"/>
+<div class="subsection" id="subsec-7.1">
+<h3 class="subsectitle">7.1 Forming tensors</h3>
+
+
+
+<p>Scalars can be converted to tensors of rank zero.
+</p>
+
+
+
+
+<div id="spadComm9-78" class="spadComm" >
+<form id="formComm9-78" action="javascript:makeRequest('9-78');" >
+<input id="comm9-78" type="text" class="command" style="width: 8em;" value="t0: CT := 8" />
+</form>
+<span id="commSav9-78" class="commSav" >t0: CT := 8</span>
+<div id="mathAns9-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-79" class="spadComm" >
+<form id="formComm9-79" action="javascript:makeRequest('9-79');" >
+<input id="comm9-79" type="text" class="command" style="width: 5em;" value="rank t0" />
+</form>
+<span id="commSav9-79" class="commSav" >rank t0</span>
+<div id="mathAns9-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>Vectors (mathematical direct products, rather than one dimensional array
+structures) can be converted to tensors of rank one.
+</p>
+
+
+
+
+<div id="spadComm9-80" class="spadComm" >
+<form id="formComm9-80" action="javascript:makeRequest('9-80');" >
+<input id="comm9-80" type="text" class="command" style="width: 34em;" value="v: DirectProduct(2, Integer) := directProduct [3,4]" />
+</form>
+<span id="commSav9-80" class="commSav" >v: DirectProduct(2, Integer) := directProduct [3,4]</span>
+<div id="mathAns9-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: DirectProduct(2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-81" class="spadComm" >
+<form id="formComm9-81" action="javascript:makeRequest('9-81');" >
+<input id="comm9-81" type="text" class="command" style="width: 8em;" value="Tv: CT := v" />
+</form>
+<span id="commSav9-81" class="commSav" >Tv: CT := v</span>
+<div id="mathAns9-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>Matrices can be converted to tensors of rank two.
+</p>
+
+
+
+
+<div id="spadComm9-82" class="spadComm" >
+<form id="formComm9-82" action="javascript:makeRequest('9-82');" >
+<input id="comm9-82" type="text" class="command" style="width: 36em;" value="m: SquareMatrix(2, Integer) := matrix [ [1,2],[4,5] ]" />
+</form>
+<span id="commSav9-82" class="commSav" >m: SquareMatrix(2, Integer) := matrix [ [1,2],[4,5] ]</span>
+<div id="mathAns9-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-83" class="spadComm" >
+<form id="formComm9-83" action="javascript:makeRequest('9-83');" >
+<input id="comm9-83" type="text" class="command" style="width: 8em;" value="Tm: CT := m" />
+</form>
+<span id="commSav9-83" class="commSav" >Tm: CT := m</span>
+<div id="mathAns9-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-84" class="spadComm" >
+<form id="formComm9-84" action="javascript:makeRequest('9-84');" >
+<input id="comm9-84" type="text" class="command" style="width: 36em;" value="n: SquareMatrix(2, Integer) := matrix [ [2,3],[0,1] ]" />
+</form>
+<span id="commSav9-84" class="commSav" >n: SquareMatrix(2, Integer) := matrix [ [2,3],[0,1] ]</span>
+<div id="mathAns9-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-85" class="spadComm" >
+<form id="formComm9-85" action="javascript:makeRequest('9-85');" >
+<input id="comm9-85" type="text" class="command" style="width: 8em;" value="Tn: CT := n" />
+</form>
+<span id="commSav9-85" class="commSav" >Tn: CT := n</span>
+<div id="mathAns9-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>In general, a tensor of rank <span class="teletype">k</span> can be formed by making a list of
+rank <span class="teletype">k-1</span> tensors or, alternatively, a <span class="teletype">k</span>-deep nested list
+of lists.
+</p>
+
+
+
+
+<div id="spadComm9-86" class="spadComm" >
+<form id="formComm9-86" action="javascript:makeRequest('9-86');" >
+<input id="comm9-86" type="text" class="command" style="width: 11em;" value="t1: CT := [2, 3]" />
+</form>
+<span id="commSav9-86" class="commSav" >t1: CT := [2, 3]</span>
+<div id="mathAns9-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-87" class="spadComm" >
+<form id="formComm9-87" action="javascript:makeRequest('9-87');" >
+<input id="comm9-87" type="text" class="command" style="width: 5em;" value="rank t1" />
+</form>
+<span id="commSav9-87" class="commSav" >rank t1</span>
+<div id="mathAns9-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-88" class="spadComm" >
+<form id="formComm9-88" action="javascript:makeRequest('9-88');" >
+<input id="comm9-88" type="text" class="command" style="width: 12em;" value="t2: CT := [t1, t1]" />
+</form>
+<span id="commSav9-88" class="commSav" >t2: CT := [t1, t1]</span>
+<div id="mathAns9-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-89" class="spadComm" >
+<form id="formComm9-89" action="javascript:makeRequest('9-89');" >
+<input id="comm9-89" type="text" class="command" style="width: 12em;" value="t3: CT := [t2, t2]" />
+</form>
+<span id="commSav9-89" class="commSav" >t3: CT := [t2, t2]</span>
+<div id="mathAns9-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-90" class="spadComm" >
+<form id="formComm9-90" action="javascript:makeRequest('9-90');" >
+<input id="comm9-90" type="text" class="command" style="width: 23em;" value="tt: CT := [t3, t3]; tt := [tt, tt]" />
+</form>
+<span id="commSav9-90" class="commSav" >tt: CT := [t3, t3]; tt := [tt, tt]</span>
+<div id="mathAns9-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-91" class="spadComm" >
+<form id="formComm9-91" action="javascript:makeRequest('9-91');" >
+<input id="comm9-91" type="text" class="command" style="width: 5em;" value="rank tt" />
+</form>
+<span id="commSav9-91" class="commSav" >rank tt</span>
+<div id="mathAns9-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div>
+
+<a name="subsec-7.2"/>
+<div class="subsection" id="subsec-7.2">
+<h3 class="subsectitle">7.2 Multiplication</h3>
+
+
+
+<p>Given two tensors of rank <span class="teletype">k1</span> and <span class="teletype">k2</span>, the outer
+<span class="spadfunFrom" >product</span><span class="index">product</span><a name="chapter-9-29"/><span class="index">CartesianTensor</span><a name="chapter-9-30"/> forms a new tensor of rank 
+<span class="teletype">k1+k2</span>. Here
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>T</mi><mi>mn</mi></msub><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>,</mo><mi>l</mi><mo>)</mo><mo>=</mo><msub><mi>T</mi><mi>m</mi></msub><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo><mspace width="0.5 em" /><msub><mi>T</mi><mi>n</mi></msub><mo>(</mo><mi>k</mi><mo>,</mo><mi>l</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+<div id="spadComm9-92" class="spadComm" >
+<form id="formComm9-92" action="javascript:makeRequest('9-92');" >
+<input id="comm9-92" type="text" class="command" style="width: 15em;" value="Tmn := product(Tm, Tn)" />
+</form>
+<span id="commSav9-92" class="commSav" >Tmn := product(Tm, Tn)</span>
+<div id="mathAns9-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>4</mn></mtd><mtd><mn>6</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>2</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>8</mn></mtd><mtd><mn>12</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>4</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>10</mn></mtd><mtd><mn>15</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>The inner product (<span class="spadfunFrom" >contract</span><span class="index">contract</span><a name="chapter-9-31"/><span class="index">CartesianTensor</span><a name="chapter-9-32"/>) forms a
+tensor of rank <span class="teletype">k1+k2-2</span>.  This product generalizes the vector dot
+product and matrix-vector product by summing component products along
+two indices.
+</p>
+
+
+<p>Here we sum along the second index of  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>T</mi><mi>m</mi></msub></mrow></mstyle></math> and the first index of
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>T</mi><mi>v</mi></msub></mrow></mstyle></math>.  Here 
+</p>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+
+<div id="spadComm9-93" class="spadComm" >
+<form id="formComm9-93" action="javascript:makeRequest('9-93');" >
+<input id="comm9-93" type="text" class="command" style="width: 18em;" value="Tmv := contract(Tm,2,Tv,1)" />
+</form>
+<span id="commSav9-93" class="commSav" >Tmv := contract(Tm,2,Tv,1)</span>
+<div id="mathAns9-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>32</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>The multiplication operator <span class="spadopFrom" title="CartesianTensor">*</span> is scalar
+multiplication or an inner product depending on the ranks of the arguments.
+</p>
+
+
+<p>If either argument is rank zero it is treated as scalar multiplication.
+Otherwise, <span class="teletype">a*b</span> is the inner product summing the last index of
+<span class="teletype">a</span> with the first index of <span class="teletype">b</span>.
+</p>
+
+
+
+
+<div id="spadComm9-94" class="spadComm" >
+<form id="formComm9-94" action="javascript:makeRequest('9-94');" >
+<input id="comm9-94" type="text" class="command" style="width: 4em;" value="Tm*Tv" />
+</form>
+<span id="commSav9-94" class="commSav" >Tm*Tv</span>
+<div id="mathAns9-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>32</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>This definition is consistent with the inner product on matrices
+and vectors.
+</p>
+
+
+
+
+<div id="spadComm9-95" class="spadComm" >
+<form id="formComm9-95" action="javascript:makeRequest('9-95');" >
+<input id="comm9-95" type="text" class="command" style="width: 8em;" value="Tmv = m * v" />
+</form>
+<span id="commSav9-95" class="commSav" >Tmv = m * v</span>
+<div id="mathAns9-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>32</mn><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mn>11</mn><mo>,</mo><mn>32</mn><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+</div>
+
+<a name="subsec-7.3"/>
+<div class="subsection" id="subsec-7.3">
+<h3 class="subsectitle">7.3 Selecting Components</h3>
+
+
+
+<p>For tensors of low rank (that is, four or less), components can be selected
+by applying the tensor to its indices.
+</p>
+
+
+
+
+<div id="spadComm9-96" class="spadComm" >
+<form id="formComm9-96" action="javascript:makeRequest('9-96');" >
+<input id="comm9-96" type="text" class="command" style="width: 3em;" value="t0()" />
+</form>
+<span id="commSav9-96" class="commSav" >t0()</span>
+<div id="mathAns9-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-97" class="spadComm" >
+<form id="formComm9-97" action="javascript:makeRequest('9-97');" >
+<input id="comm9-97" type="text" class="command" style="width: 5em;" value="t1(1+1)" />
+</form>
+<span id="commSav9-97" class="commSav" >t1(1+1)</span>
+<div id="mathAns9-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-98" class="spadComm" >
+<form id="formComm9-98" action="javascript:makeRequest('9-98');" >
+<input id="comm9-98" type="text" class="command" style="width: 5em;" value="t2(2,1)" />
+</form>
+<span id="commSav9-98" class="commSav" >t2(2,1)</span>
+<div id="mathAns9-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-99" class="spadComm" >
+<form id="formComm9-99" action="javascript:makeRequest('9-99');" >
+<input id="comm9-99" type="text" class="command" style="width: 6em;" value="t3(2,1,2)" />
+</form>
+<span id="commSav9-99" class="commSav" >t3(2,1,2)</span>
+<div id="mathAns9-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-100" class="spadComm" >
+<form id="formComm9-100" action="javascript:makeRequest('9-100');" >
+<input id="comm9-100" type="text" class="command" style="width: 8em;" value="Tmn(2,1,2,1)" />
+</form>
+<span id="commSav9-100" class="commSav" >Tmn(2,1,2,1)</span>
+<div id="mathAns9-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>A general indexing mechanism is provided for a list of indices.
+</p>
+
+
+
+
+<div id="spadComm9-101" class="spadComm" >
+<form id="formComm9-101" action="javascript:makeRequest('9-101');" >
+<input id="comm9-101" type="text" class="command" style="width: 3em;" value="t0[]" />
+</form>
+<span id="commSav9-101" class="commSav" >t0[]</span>
+<div id="mathAns9-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-102" class="spadComm" >
+<form id="formComm9-102" action="javascript:makeRequest('9-102');" >
+<input id="comm9-102" type="text" class="command" style="width: 4em;" value="t1[2]" />
+</form>
+<span id="commSav9-102" class="commSav" >t1[2]</span>
+<div id="mathAns9-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-103" class="spadComm" >
+<form id="formComm9-103" action="javascript:makeRequest('9-103');" >
+<input id="comm9-103" type="text" class="command" style="width: 5em;" value="t2[2,1]" />
+</form>
+<span id="commSav9-103" class="commSav" >t2[2,1]</span>
+<div id="mathAns9-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The general mechanism works for tensors of arbitrary rank, but is
+somewhat less efficient since the intermediate index list must be created.
+</p>
+
+
+
+
+<div id="spadComm9-104" class="spadComm" >
+<form id="formComm9-104" action="javascript:makeRequest('9-104');" >
+<input id="comm9-104" type="text" class="command" style="width: 6em;" value="t3[2,1,2]" />
+</form>
+<span id="commSav9-104" class="commSav" >t3[2,1,2]</span>
+<div id="mathAns9-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-105" class="spadComm" >
+<form id="formComm9-105" action="javascript:makeRequest('9-105');" >
+<input id="comm9-105" type="text" class="command" style="width: 8em;" value="Tmn[2,1,2,1]" />
+</form>
+<span id="commSav9-105" class="commSav" >Tmn[2,1,2,1]</span>
+<div id="mathAns9-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+
+
+</div>
+
+<a name="subsec-7.4"/>
+<div class="subsection" id="subsec-7.4">
+<h3 class="subsectitle">7.4 Contraction</h3>
+
+
+
+<p>A ``contraction'' between two tensors is an inner product, as we have
+seen above.  You can also contract a pair of indices of a single
+tensor.  This corresponds to a ``trace'' in linear algebra.  The
+expression <span class="teletype">contract(t,k1,k2)</span> forms a new tensor by summing the
+diagonal given by indices in position <span class="teletype">k1</span> and <span class="teletype">k2</span>.
+</p>
+
+
+<p>This is the tensor given by
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm9-106" class="spadComm" >
+<form id="formComm9-106" action="javascript:makeRequest('9-106');" >
+<input id="comm9-106" type="text" class="command" style="width: 17em;" value="cTmn := contract(Tmn,1,2)" />
+</form>
+<span id="commSav9-106" class="commSav" >cTmn := contract(Tmn,1,2)</span>
+<div id="mathAns9-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>12</mn></mtd><mtd><mn>18</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>6</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>Since <span class="teletype">Tmn</span> is the outer product of matrix <span class="teletype">m</span> and matrix <span class="teletype">n</span>,
+the above is equivalent to this.
+</p>
+
+
+
+
+<div id="spadComm9-107" class="spadComm" >
+<form id="formComm9-107" action="javascript:makeRequest('9-107');" >
+<input id="comm9-107" type="text" class="command" style="width: 8em;" value="trace(m) * n" />
+</form>
+<span id="commSav9-107" class="commSav" >trace(m) * n</span>
+<div id="mathAns9-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>12</mn></mtd><mtd><mn>18</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>6</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Integer)
+</div>
+
+
+
+<p>In this and the next few examples, we show all possible contractions
+of <span class="teletype">Tmn</span> and their matrix algebra equivalents.
+</p>
+
+
+
+
+<div id="spadComm9-108" class="spadComm" >
+<form id="formComm9-108" action="javascript:makeRequest('9-108');" >
+<input id="comm9-108" type="text" class="command" style="width: 22em;" value="contract(Tmn,1,2) = trace(m) * n" />
+</form>
+<span id="commSav9-108" class="commSav" >contract(Tmn,1,2) = trace(m) * n</span>
+<div id="mathAns9-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>12</mn></mtd><mtd><mn>18</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>6</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>12</mn></mtd><mtd><mn>18</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>6</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-109" class="spadComm" >
+<form id="formComm9-109" action="javascript:makeRequest('9-109');" >
+<input id="comm9-109" type="text" class="command" style="width: 24em;" value="contract(Tmn,1,3) = transpose(m) * n" />
+</form>
+<span id="commSav9-109" class="commSav" >contract(Tmn,1,3) = transpose(m) * n</span>
+<div id="mathAns9-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>7</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>11</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>7</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>11</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-110" class="spadComm" >
+<form id="formComm9-110" action="javascript:makeRequest('9-110');" >
+<input id="comm9-110" type="text" class="command" style="width: 32em;" value="contract(Tmn,1,4) = transpose(m) * transpose(n)" />
+</form>
+<span id="commSav9-110" class="commSav" >contract(Tmn,1,4) = transpose(m) * transpose(n)</span>
+<div id="mathAns9-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>14</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>19</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>14</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>19</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-111" class="spadComm" >
+<form id="formComm9-111" action="javascript:makeRequest('9-111');" >
+<input id="comm9-111" type="text" class="command" style="width: 17em;" value="contract(Tmn,2,3) = m * n" />
+</form>
+<span id="commSav9-111" class="commSav" >contract(Tmn,2,3) = m * n</span>
+<div id="mathAns9-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>5</mn></mtd></mtr><mtr><mtd><mn>8</mn></mtd><mtd><mn>17</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>5</mn></mtd></mtr><mtr><mtd><mn>8</mn></mtd><mtd><mn>17</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-112" class="spadComm" >
+<form id="formComm9-112" action="javascript:makeRequest('9-112');" >
+<input id="comm9-112" type="text" class="command" style="width: 24em;" value="contract(Tmn,2,4) = m * transpose(n)" />
+</form>
+<span id="commSav9-112" class="commSav" >contract(Tmn,2,4) = m * transpose(n)</span>
+<div id="mathAns9-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>8</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>23</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>8</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>23</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-113" class="spadComm" >
+<form id="formComm9-113" action="javascript:makeRequest('9-113');" >
+<input id="comm9-113" type="text" class="command" style="width: 22em;" value="contract(Tmn,3,4) = trace(n) * m" />
+</form>
+<span id="commSav9-113" class="commSav" >contract(Tmn,3,4) = trace(n) * m</span>
+<div id="mathAns9-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>3</mn></mtd><mtd><mn>6</mn></mtd></mtr><mtr><mtd><mn>12</mn></mtd><mtd><mn>15</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>3</mn></mtd><mtd><mn>6</mn></mtd></mtr><mtr><mtd><mn>12</mn></mtd><mtd><mn>15</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+</div>
+
+<a name="subsec-7.5"/>
+<div class="subsection" id="subsec-7.5">
+<h3 class="subsectitle">7.5 Transpositions</h3>
+
+
+<p>You can exchange any desired pair of indices using the
+<span class="spadfunFrom" >transpose</span><span class="index">transpose</span><a name="chapter-9-33"/><span class="index">CartesianTensor</span><a name="chapter-9-34"/> operation.
+</p>
+
+
+<p>Here the indices in positions one and three are exchanged, that is,
+ <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>tT</mi><mi>mn</mi></msub><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>,</mo><mi>l</mi><mo>)</mo><mo>=</mo><msub><mi>T</mi><mi>mn</mi></msub><mo>(</mo><mi>k</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>l</mi><mo>)</mo><mo>.</mo></mrow></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm9-114" class="spadComm" >
+<form id="formComm9-114" action="javascript:makeRequest('9-114');" >
+<input id="comm9-114" type="text" class="command" style="width: 18em;" value="tTmn := transpose(Tmn,1,3)" />
+</form>
+<span id="commSav9-114" class="commSav" >tTmn := transpose(Tmn,1,3)</span>
+<div id="mathAns9-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>8</mn></mtd><mtd><mn>12</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>4</mn></mtd><mtd><mn>6</mn></mtd></mtr><mtr><mtd><mn>10</mn></mtd><mtd><mn>15</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>4</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>If no indices are specified, the first and last index are exchanged.
+</p>
+
+
+
+
+<div id="spadComm9-115" class="spadComm" >
+<form id="formComm9-115" action="javascript:makeRequest('9-115');" >
+<input id="comm9-115" type="text" class="command" style="width: 9em;" value="transpose Tmn" />
+</form>
+<span id="commSav9-115" class="commSav" >transpose Tmn</span>
+<div id="mathAns9-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>8</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>4</mn></mtd><mtd><mn>10</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>3</mn></mtd><mtd><mn>12</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>4</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>6</mn></mtd><mtd><mn>15</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>This is consistent with the matrix transpose.
+</p>
+
+
+
+
+<div id="spadComm9-116" class="spadComm" >
+<form id="formComm9-116" action="javascript:makeRequest('9-116');" >
+<input id="comm9-116" type="text" class="command" style="width: 18em;" value="transpose Tm = transpose m" />
+</form>
+<span id="commSav9-116" class="commSav" >transpose Tm = transpose m</span>
+<div id="mathAns9-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>If a more complicated reordering of the indices is required, then the
+<span class="spadfunFrom" >reindex</span><span class="index">reindex</span><a name="chapter-9-35"/><span class="index">CartesianTensor</span><a name="chapter-9-36"/> operation can be used.
+This operation allows the indices to be arbitrarily permuted.
+</p>
+
+
+<p>This defines  <math xmlns="&mathml;" mathsize="big"><mstyle></mstyle></math>
+</p>
+
+
+
+
+<div id="spadComm9-117" class="spadComm" >
+<form id="formComm9-117" action="javascript:makeRequest('9-117');" >
+<input id="comm9-117" type="text" class="command" style="width: 21em;" value="rTmn := reindex(Tmn, [1,4,2,3])" />
+</form>
+<span id="commSav9-117" class="commSav" >rTmn := reindex(Tmn, [1,4,2,3])</span>
+<div id="mathAns9-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>3</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>6</mn></mtd><mtd><mn>2</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>8</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>10</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>12</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>15</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+</div>
+
+
+<a name="subsec-7.6"/>
+<div class="subsection" id="subsec-7.6">
+<h3 class="subsectitle">7.6 Arithmetic</h3>
+
+
+
+<p>Tensors of equal rank can be added or subtracted so arithmetic
+expressions can be used to produce new tensors.
+</p>
+
+
+
+
+<div id="spadComm9-118" class="spadComm" >
+<form id="formComm9-118" action="javascript:makeRequest('9-118');" >
+<input id="comm9-118" type="text" class="command" style="width: 28em;" value="tt := transpose(Tm)*Tn - Tn*transpose(Tm)" />
+</form>
+<span id="commSav9-118" class="commSav" >tt := transpose(Tm)*Tn - Tn*transpose(Tm)</span>
+<div id="mathAns9-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mn>6</mn></mtd><mtd><mo>-</mo><mn>16</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>6</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-119" class="spadComm" >
+<form id="formComm9-119" action="javascript:makeRequest('9-119');" >
+<input id="comm9-119" type="text" class="command" style="width: 7em;" value="Tv*(tt+Tn)" />
+</form>
+<span id="commSav9-119" class="commSav" >Tv*(tt+Tn)</span>
+<div id="mathAns9-119" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>4</mn><mo>,</mo><mo>-</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-120" class="spadComm" >
+<form id="formComm9-120" action="javascript:makeRequest('9-120');" >
+<input id="comm9-120" type="text" class="command" style="width: 36em;" value="reindex(product(Tn,Tn),[4,3,2,1])+3*Tn*product(Tm,Tm)" />
+</form>
+<span id="commSav9-120" class="commSav" >reindex(product(Tn,Tn),[4,3,2,1])+3*Tn*product(Tm,Tm)</span>
+<div id="mathAns9-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>46</mn></mtd><mtd><mn>84</mn></mtd></mtr><mtr><mtd><mn>174</mn></mtd><mtd><mn>212</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>57</mn></mtd><mtd><mn>114</mn></mtd></mtr><mtr><mtd><mn>228</mn></mtd><mtd><mn>285</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>18</mn></mtd><mtd><mn>24</mn></mtd></mtr><mtr><mtd><mn>57</mn></mtd><mtd><mn>63</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>17</mn></mtd><mtd><mn>30</mn></mtd></mtr><mtr><mtd><mn>63</mn></mtd><mtd><mn>76</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+</div>
+
+<a name="subsec-7.7"/>
+<div class="subsection" id="subsec-7.7">
+<h3 class="subsectitle">7.7 Specific Tensors</h3>
+
+
+
+<p>Two specific tensors have properties which depend only on the
+dimension.
+</p>
+
+
+<p>The Kronecker delta satisfies
+</p>
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+-<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;if&nbsp;i&nbsp;&nbsp;=&nbsp;j<br />
+delta(i,j)&nbsp;=&nbsp;|<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;if&nbsp;i&nbsp;^=&nbsp;j<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+-<br />
+</div>
+
+
+
+
+
+<div id="spadComm9-121" class="spadComm" >
+<form id="formComm9-121" action="javascript:makeRequest('9-121');" >
+<input id="comm9-121" type="text" class="command" style="width: 20em;" value="delta:  CT := kroneckerDelta()" />
+</form>
+<span id="commSav9-121" class="commSav" >delta:  CT := kroneckerDelta()</span>
+<div id="mathAns9-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>This can be used to reindex via contraction.
+</p>
+
+
+
+
+<div id="spadComm9-122" class="spadComm" >
+<form id="formComm9-122" action="javascript:makeRequest('9-122');" >
+<input id="comm9-122" type="text" class="command" style="width: 35em;" value="contract(Tmn, 2, delta, 1) = reindex(Tmn, [1,3,4,2])" />
+</form>
+<span id="commSav9-122" class="commSav" >contract(Tmn, 2, delta, 1) = reindex(Tmn, [1,3,4,2])</span>
+<div id="mathAns9-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mn>6</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>8</mn></mtd><mtd><mn>10</mn></mtd></mtr><mtr><mtd><mn>12</mn></mtd><mtd><mn>15</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>4</mn></mtd></mtr><mtr><mtd><mn>3</mn></mtd><mtd><mn>6</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>8</mn></mtd><mtd><mn>10</mn></mtd></mtr><mtr><mtd><mn>12</mn></mtd><mtd><mn>15</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>5</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>The Levi Civita symbol determines the sign of a permutation of indices.
+</p>
+
+
+
+
+<div id="spadComm9-123" class="spadComm" >
+<form id="formComm9-123" action="javascript:makeRequest('9-123');" >
+<input id="comm9-123" type="text" class="command" style="width: 22em;" value="epsilon:CT := leviCivitaSymbol()" />
+</form>
+<span id="commSav9-123" class="commSav" >epsilon:CT := leviCivitaSymbol()</span>
+<div id="mathAns9-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CartesianTensor(1,2,Integer)
+</div>
+
+
+
+<p>Here we have:
+</p>
+
+
+
+<div class="verbatim"><br />
+epsilon(i1,...,idim)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;+1&nbsp;&nbsp;if&nbsp;i1,...,idim&nbsp;is&nbsp;an&nbsp;even&nbsp;permutation&nbsp;of&nbsp;i0,...,i0+dim-1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;-1&nbsp;&nbsp;if&nbsp;i1,...,idim&nbsp;is&nbsp;an&nbsp;&nbsp;odd&nbsp;permutation&nbsp;of&nbsp;i0,...,i0+dim-1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;0&nbsp;&nbsp;if&nbsp;i1,...,idim&nbsp;is&nbsp;not&nbsp;&nbsp;&nbsp;a&nbsp;permutation&nbsp;of&nbsp;i0,...,i0+dim-1<br />
+</div>
+
+
+
+<p>This property can be used to form determinants.
+</p>
+
+
+
+
+<div id="spadComm9-124" class="spadComm" >
+<form id="formComm9-124" action="javascript:makeRequest('9-124');" >
+<input id="comm9-124" type="text" class="command" style="width: 36em;" value="contract(epsilon*Tm*epsilon, 1,2) = 2 * determinant m" />
+</form>
+<span id="commSav9-124" class="commSav" >contract(epsilon*Tm*epsilon, 1,2) = 2 * determinant m</span>
+<div id="mathAns9-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>6</mn><mo>=</mo><mo>-</mo><mn>6</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Equation CartesianTensor(1,2,Integer)
+</div>
+
+
+
+
+
+</div>
+
+<a name="subsec-7.8"/>
+<div class="subsection" id="subsec-7.8">
+<h3 class="subsectitle">7.8 Properties of the CartesianTensor domain</h3>
+
+
+
+<p><span class="teletype">GradedModule(R,E)</span> denotes ``<span class="teletype">E</span>-graded <span class="teletype">R</span>-module'',
+that is, a collection of <span class="teletype">R</span>-modules indexed by an abelian monoid
+<span class="teletype">E.</span>  An element <span class="teletype">g</span> of <span class="teletype">G[s]</span> for some specific <span class="teletype">s</span>
+in <span class="teletype">E</span> is said to be an element of <span class="teletype">G</span> with
+<span class="spadfunFrom" >degree</span><span class="index">degree</span><a name="chapter-9-37"/><span class="index">GradedModule</span><a name="chapter-9-38"/> <span class="teletype">s</span>.  Sums are defined in each
+module <span class="teletype">G[s]</span> so two elements of <span class="teletype">G</span> can be added if they have
+the same degree.  Morphisms can be defined and composed by degree to
+give the mathematical category of graded modules.
+</p>
+
+
+<p><span class="teletype">GradedAlgebra(R,E)</span> denotes ``<span class="teletype">E</span>-graded <span class="teletype">R</span>-algebra.''
+A graded algebra is a graded module together with a degree preserving
+<span class="teletype">R</span>-bilinear map, called the <span class="spadfunFrom" >product</span><span class="index">product</span><a name="chapter-9-39"/><span class="index">GradedAlgebra</span><a name="chapter-9-40"/>.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+degree(product(a,b))&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;degree(a)&nbsp;+&nbsp;degree(b)<br />
+<br />
+product(r*a,b)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;product(a,r*b)&nbsp;=&nbsp;r*product(a,b)<br />
+product(a1+a2,b)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;product(a1,b)&nbsp;+&nbsp;product(a2,b)<br />
+product(a,b1+b2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;product(a,b1)&nbsp;+&nbsp;product(a,b2)<br />
+product(a,product(b,c))&nbsp;=&nbsp;product(product(a,b),c)<br />
+</div>
+
+
+
+<p>The domain <span class="teletype">CartesianTensor(i0, dim, R)</span> belongs to the category
+<span class="teletype">GradedAlgebra(R, NonNegativeInteger)</span>.  The non-negative integer
+<span class="spadfunFrom" >degree</span><span class="index">degree</span><a name="chapter-9-41"/><span class="index">GradedAlgebra</span><a name="chapter-9-42"/> is the tensor rank and the graded
+algebra <span class="spadfunFrom" >product</span><span class="index">product</span><a name="chapter-9-43"/><span class="index">GradedAlgebra</span><a name="chapter-9-44"/> is the tensor outer
+product.  The graded module addition captures the notion that only
+tensors of equal rank can be added.
+</p>
+
+
+<p>If <span class="teletype">V</span> is a vector space of dimension <span class="teletype">dim</span> over <span class="teletype">R</span>,
+then the tensor module <span class="teletype">T[k](V)</span> is defined as
+</p>
+
+
+
+<div class="verbatim"><br />
+T[0](V)&nbsp;=&nbsp;R<br />
+T[k](V)&nbsp;=&nbsp;T[k-1](V)&nbsp;*&nbsp;V<br />
+</div>
+
+
+<p>where <span class="teletype">*</span> denotes the <span class="teletype">R</span>-module tensor
+<span class="spadfunFrom" >product</span><span class="index">product</span><a name="chapter-9-45"/><span class="index">GradedAlgebra</span><a name="chapter-9-46"/>.  <span class="teletype">CartesianTensor(i0,dim,R)</span>
+is the graded algebra in which the degree <span class="teletype">k</span> module is <span class="teletype">T[k](V)</span>.
+</p>
+
+
+
+
+</div>
+
+<a name="subsec-7.9"/>
+<div class="subsection" id="subsec-7.9">
+<h3 class="subsectitle">7.9 Tensor Calculus</h3>
+
+
+
+<p>It should be noted here that often tensors are used in the context of
+tensor-valued manifold maps.  This leads to the notion of covariant
+and contravariant bases with tensor component functions transforming
+in specific ways under a change of coordinates on the manifold.  This
+is no more directly supported by the <span class="teletype">CartesianTensor</span> domain than
+it is by the <span class="teletype">Vector</span> domain.  However, it is possible to have the
+components implicitly represent component maps by choosing a
+polynomial or expression type for the components.  In this case, it is
+up to the user to satisfy any constraints which arise on the basis of
+this interpretation.
+</p>
+
+
+
+
+</div>
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.6.xhtml" style="margin-right: 10px;">Previous Section 9.6 CardinalNumber</a><a href="section-9.8.xhtml" style="margin-right: 10px;">Next Section 9.8 Character</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.70.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.70.xhtml
new file mode 100644
index 0000000..00e4d9d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.70.xhtml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.70</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.69.xhtml" style="margin-right: 10px;">Previous Section 9.69 Segment</a><a href="section-9.71.xhtml" style="margin-right: 10px;">Next Section 9.71 Set</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.70">
+<h2 class="sectiontitle">9.70  SegmentBinding</h2>
+
+
+<a name="SegmentBindingXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">SegmentBinding</span> type is used to indicate a range for a named
+symbol.
+</p>
+
+
+<p>First give the symbol, then an <span class="teletype">=</span> and finally a segment of values.
+</p>
+
+
+
+
+<div id="spadComm9-11" class="spadComm" >
+<form id="formComm9-11" action="javascript:makeRequest('9-11');" >
+<input id="comm9-11" type="text" class="command" style="width: 6em;" value="x = a..b" />
+</form>
+<span id="commSav9-11" class="commSav" >x = a..b</span>
+<div id="mathAns9-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mo>=</mo><mrow><mi>a</mi><mo>.</mo><mo>.</mo><mi>b</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SegmentBinding Symbol
+</div>
+
+
+
+<p>This is used to provide a convenient syntax for arguments to certain
+operations.
+</p>
+
+
+
+
+<div id="spadComm9-12" class="spadComm" >
+<form id="formComm9-12" action="javascript:makeRequest('9-12');" >
+<input id="comm9-12" type="text" class="command" style="width: 13em;" value="sum(i**2, i = 0..n)" />
+</form>
+<span id="commSav9-12" class="commSav" >sum(i**2, i = 0..n)</span>
+<div id="mathAns9-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-13" class="spadComm" >
+<form id="formComm9-13" action="javascript:makeRequest('9-13');" >
+<input id="comm9-13" type="text" class="command" style="width: 14em;" value="draw(x**2, x = -2..2)" />
+</form>
+<span id="commSav9-13" class="commSav" >draw(x**2, x = -2..2)</span>
+<div id="mathAns9-13" ></div>
+</div>
+
+
+
+<p>The left-hand side must be of type <span class="teletype">Symbol</span> but the
+right-hand side can be a segment over any type.
+</p>
+
+
+
+
+<div id="spadComm9-14" class="spadComm" >
+<form id="formComm9-14" action="javascript:makeRequest('9-14');" >
+<input id="comm9-14" type="text" class="command" style="width: 13em;" value="sb := y = 1/2..3/2 " />
+</form>
+<span id="commSav9-14" class="commSav" >sb := y = 1/2..3/2 </span>
+<div id="mathAns9-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>y</mi><mo>=</mo><mrow><mrow><mo>(</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>)</mo></mrow><mo>.</mo><mo>.</mo><mrow><mo>(</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SegmentBinding Fraction Integer
+</div>
+
+
+
+<p>The left- and right-hand sides can be obtained using the
+<span class="spadfunFrom" >variable</span><span class="index">variable</span><a name="chapter-9-8"/><span class="index">SegmentBinding</span><a name="chapter-9-9"/> and
+<span class="spadfunFrom" >segment</span><span class="index">segment</span><a name="chapter-9-10"/><span class="index">SegmentBinding</span><a name="chapter-9-11"/> operations.
+</p>
+
+
+
+
+<div id="spadComm9-15" class="spadComm" >
+<form id="formComm9-15" action="javascript:makeRequest('9-15');" >
+<input id="comm9-15" type="text" class="command" style="width: 9em;" value="variable(sb) " />
+</form>
+<span id="commSav9-15" class="commSav" >variable(sb) </span>
+<div id="mathAns9-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-16" class="spadComm" >
+<form id="formComm9-16" action="javascript:makeRequest('9-16');" >
+<input id="comm9-16" type="text" class="command" style="width: 9em;" value="segment(sb)  " />
+</form>
+<span id="commSav9-16" class="commSav" >segment(sb)  </span>
+<div id="mathAns9-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>(</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>)</mo></mrow><mo>.</mo><mo>.</mo><mrow><mo>(</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>)</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Segment Fraction Integer
+</div>
+
+
+
+<p>For more information on related topics, see
+<a href="section-9.69.xhtml#SegmentXmpPage" class="ref" >SegmentXmpPage</a>  and 
+<a href="section-9.84.xhtml#UniversalSegmentXmpPage" class="ref" >UniversalSegmentXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.69.xhtml" style="margin-right: 10px;">Previous Section 9.69 Segment</a><a href="section-9.71.xhtml" style="margin-right: 10px;">Next Section 9.71 Set</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.71.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.71.xhtml
new file mode 100644
index 0000000..a5d3a6d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.71.xhtml
@@ -0,0 +1,664 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.71</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.70.xhtml" style="margin-right: 10px;">Previous Section 9.70 SegmentBinding</a><a href="section-9.72.xhtml" style="margin-right: 10px;">Next Section 9.72 SingleInteger</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.71">
+<h2 class="sectiontitle">9.71  Set</h2>
+
+
+<a name="SetXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">Set</span> domain allows one to represent explicit finite sets of values.
+These are similar to lists, but duplicate elements are not allowed.
+</p>
+
+
+<p>Sets can be created by giving a fixed set of values ...
+</p>
+
+
+
+
+<div id="spadComm9-17" class="spadComm" >
+<form id="formComm9-17" action="javascript:makeRequest('9-17');" >
+<input id="comm9-17" type="text" class="command" style="width: 23em;" value="s := set [x**2-1, y**2-1, z**2-1] " />
+</form>
+<span id="commSav9-17" class="commSav" >s := set [x**2-1, y**2-1, z**2-1] </span>
+<div id="mathAns9-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set Polynomial Integer
+</div>
+
+
+
+<p>or by using a collect form, just as for lists.  In either case, the
+set is formed from a finite collection of values.
+</p>
+
+
+
+
+<div id="spadComm9-18" class="spadComm" >
+<form id="formComm9-18" action="javascript:makeRequest('9-18');" >
+<input id="comm9-18" type="text" class="command" style="width: 32em;" value="t := set [x**i - i+1 for i in 2..10 | prime? i] " />
+</form>
+<span id="commSav9-18" class="commSav" >t := set [x**i - i+1 for i in 2..10 | prime? i] </span>
+<div id="mathAns9-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>2</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mn>4</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>-</mo><mn>6</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set Polynomial Integer
+</div>
+
+
+
+<p>The basic operations on sets are <span class="spadfunFrom" >intersect</span><span class="index">intersect</span><a name="chapter-9-12"/><span class="index">Set</span><a name="chapter-9-13"/>,
+<span class="spadfunFrom" >union</span><span class="index">union</span><a name="chapter-9-14"/><span class="index">Set</span><a name="chapter-9-15"/>, <span class="spadfunFrom" >difference</span><span class="index">difference</span><a name="chapter-9-16"/><span class="index">Set</span><a name="chapter-9-17"/>, and
+<span class="spadfunFrom" >symmetricDifference</span><span class="index">symmetricDifference</span><a name="chapter-9-18"/><span class="index">Set</span><a name="chapter-9-19"/>.
+</p>
+
+
+
+
+<div id="spadComm9-19" class="spadComm" >
+<form id="formComm9-19" action="javascript:makeRequest('9-19');" >
+<input id="comm9-19" type="text" class="command" style="width: 13em;" value="i := intersect(s,t)" />
+</form>
+<span id="commSav9-19" class="commSav" >i := intersect(s,t)</span>
+<div id="mathAns9-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-20" class="spadComm" >
+<form id="formComm9-20" action="javascript:makeRequest('9-20');" >
+<input id="comm9-20" type="text" class="command" style="width: 10em;" value="u := union(s,t)" />
+</form>
+<span id="commSav9-20" class="commSav" >u := union(s,t)</span>
+<div id="mathAns9-20" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>2</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mn>4</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set Polynomial Integer
+</div>
+
+
+
+<p>The set <span class="teletype">difference(s,t)</span> contains those members of <span class="teletype">s</span> which
+are not in <span class="teletype">t</span>.
+</p>
+
+
+
+
+<div id="spadComm9-21" class="spadComm" >
+<form id="formComm9-21" action="javascript:makeRequest('9-21');" >
+<input id="comm9-21" type="text" class="command" style="width: 10em;" value="difference(s,t)" />
+</form>
+<span id="commSav9-21" class="commSav" >difference(s,t)</span>
+<div id="mathAns9-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set Polynomial Integer
+</div>
+
+
+
+<p>The set <span class="teletype">symmetricDifference(s,t)</span> contains those elements which are
+in <span class="teletype">s</span> or <span class="teletype">t</span> but not in both.
+</p>
+
+
+
+
+<div id="spadComm9-22" class="spadComm" >
+<form id="formComm9-22" action="javascript:makeRequest('9-22');" >
+<input id="comm9-22" type="text" class="command" style="width: 16em;" value="symmetricDifference(s,t)" />
+</form>
+<span id="commSav9-22" class="commSav" >symmetricDifference(s,t)</span>
+<div id="mathAns9-22" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>2</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow><mo>-</mo><mn>4</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow><mo>-</mo><mn>6</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set Polynomial Integer
+</div>
+
+
+
+<p>Set membership is tested using the <span class="spadfunFrom" >member?</span><span class="index">member?</span><a name="chapter-9-20"/><span class="index">Set</span><a name="chapter-9-21"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-23" class="spadComm" >
+<form id="formComm9-23" action="javascript:makeRequest('9-23');" >
+<input id="comm9-23" type="text" class="command" style="width: 9em;" value="member?(y, s)" />
+</form>
+<span id="commSav9-23" class="commSav" >member?(y, s)</span>
+<div id="mathAns9-23" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-24" class="spadComm" >
+<form id="formComm9-24" action="javascript:makeRequest('9-24');" >
+<input id="comm9-24" type="text" class="command" style="width: 16em;" value="member?((y+1)*(y-1), s)" />
+</form>
+<span id="commSav9-24" class="commSav" >member?((y+1)*(y-1), s)</span>
+<div id="mathAns9-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >subset?</span><span class="index">subset?</span><a name="chapter-9-22"/><span class="index">Set</span><a name="chapter-9-23"/> function determines whether one set is
+a subset of another.
+</p>
+
+
+
+
+<div id="spadComm9-25" class="spadComm" >
+<form id="formComm9-25" action="javascript:makeRequest('9-25');" >
+<input id="comm9-25" type="text" class="command" style="width: 9em;" value="subset?(i, s)" />
+</form>
+<span id="commSav9-25" class="commSav" >subset?(i, s)</span>
+<div id="mathAns9-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-26" class="spadComm" >
+<form id="formComm9-26" action="javascript:makeRequest('9-26');" >
+<input id="comm9-26" type="text" class="command" style="width: 9em;" value="subset?(u, s)" />
+</form>
+<span id="commSav9-26" class="commSav" >subset?(u, s)</span>
+<div id="mathAns9-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>When the base type is finite, the absolute complement of a set is
+defined.  This finds the set of all multiplicative generators of 
+<span class="teletype">PrimeField 11</span>---the integers mod <span class="teletype">11.</span>
+</p>
+
+
+
+
+<div id="spadComm9-27" class="spadComm" >
+<form id="formComm9-27" action="javascript:makeRequest('9-27');" >
+<input id="comm9-27" type="text" class="command" style="width: 38em;" value="gs := set [g for i in 1..11 | primitive?(g := i::PF 11)] " />
+</form>
+<span id="commSav9-27" class="commSav" >gs := set [g for i in 1..11 | primitive?(g := i::PF 11)] </span>
+<div id="mathAns9-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>2</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PrimeField 11
+</div>
+
+
+
+<p>The following values are not generators.
+</p>
+
+
+
+
+<div id="spadComm9-28" class="spadComm" >
+<form id="formComm9-28" action="javascript:makeRequest('9-28');" >
+<input id="comm9-28" type="text" class="command" style="width: 10em;" value="complement gs " />
+</form>
+<span id="commSav9-28" class="commSav" >complement gs </span>
+<div id="mathAns9-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>0</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PrimeField 11
+</div>
+
+
+
+<p>Often the members of a set are computed individually; in addition,
+values can be inserted or removed from a set over the course of a
+computation.
+</p>
+
+
+<p>There are two ways to do this:
+</p>
+
+
+
+
+<div id="spadComm9-29" class="spadComm" >
+<form id="formComm9-29" action="javascript:makeRequest('9-29');" >
+<input id="comm9-29" type="text" class="command" style="width: 20em;" value="a := set [i**2 for i in 1..5] " />
+</form>
+<span id="commSav9-29" class="commSav" >a := set [i**2 for i in 1..5] </span>
+<div id="mathAns9-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>25</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PositiveInteger
+</div>
+
+
+
+<p>One is to view a set as a data structure and to apply updating operations.
+</p>
+
+
+
+
+<div id="spadComm9-30" class="spadComm" >
+<form id="formComm9-30" action="javascript:makeRequest('9-30');" >
+<input id="comm9-30" type="text" class="command" style="width: 10em;" value="insert!(32, a) " />
+</form>
+<span id="commSav9-30" class="commSav" >insert!(32, a) </span>
+<div id="mathAns9-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>32</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-31" class="spadComm" >
+<form id="formComm9-31" action="javascript:makeRequest('9-31');" >
+<input id="comm9-31" type="text" class="command" style="width: 10em;" value="remove!(25, a) " />
+</form>
+<span id="commSav9-31" class="commSav" >remove!(25, a) </span>
+<div id="mathAns9-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>32</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-32" class="spadComm" >
+<form id="formComm9-32" action="javascript:makeRequest('9-32');" >
+<input id="comm9-32" type="text" class="command" style="width: 2em;" value="a " />
+</form>
+<span id="commSav9-32" class="commSav" >a </span>
+<div id="mathAns9-32" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>32</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PositiveInteger
+</div>
+
+
+
+<p>The other way is to view a set as a mathematical entity and to
+create new sets from old.
+</p>
+
+
+
+
+<div id="spadComm9-33" class="spadComm" >
+<form id="formComm9-33" action="javascript:makeRequest('9-33');" >
+<input id="comm9-33" type="text" class="command" style="width: 24em;" value="b := b0 := set [i**2 for i in 1..5] " />
+</form>
+<span id="commSav9-33" class="commSav" >b := b0 := set [i**2 for i in 1..5] </span>
+<div id="mathAns9-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>25</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-34" class="spadComm" >
+<form id="formComm9-34" action="javascript:makeRequest('9-34');" >
+<input id="comm9-34" type="text" class="command" style="width: 13em;" value="b := union(b, {32})" />
+</form>
+<span id="commSav9-34" class="commSav" >b := union(b, {32})</span>
+<div id="mathAns9-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>32</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-35" class="spadComm" >
+<form id="formComm9-35" action="javascript:makeRequest('9-35');" >
+<input id="comm9-35" type="text" class="command" style="width: 16em;" value="b := difference(b, {25})" />
+</form>
+<span id="commSav9-35" class="commSav" >b := difference(b, {25})</span>
+<div id="mathAns9-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>32</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-36" class="spadComm" >
+<form id="formComm9-36" action="javascript:makeRequest('9-36');" >
+<input id="comm9-36" type="text" class="command" style="width: 2em;" value="b0 " />
+</form>
+<span id="commSav9-36" class="commSav" >b0 </span>
+<div id="mathAns9-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>25</mn><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Set PositiveInteger
+</div>
+
+
+
+<p>For more information about lists, see <a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.70.xhtml" style="margin-right: 10px;">Previous Section 9.70 SegmentBinding</a><a href="section-9.72.xhtml" style="margin-right: 10px;">Next Section 9.72 SingleInteger</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.72.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.72.xhtml
new file mode 100644
index 0000000..8964618
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.72.xhtml
@@ -0,0 +1,419 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.72</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.71.xhtml" style="margin-right: 10px;">Previous Section 9.71 Set</a><a href="section-9.73.xhtml" style="margin-right: 10px;">Next Section 9.73 SparseTable</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.72">
+<h2 class="sectiontitle">9.72  SingleInteger</h2>
+
+
+<a name="SingleIntegerXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">SingleInteger</span> domain is intended to provide support in Axiom
+for machine integer arithmetic.  It is generally much faster than
+(bignum) <span class="teletype">Integer</span> arithmetic but suffers from a limited range of
+values.  Since Axiom can be implemented on top of various dialects of
+Lisp, the actual representation of small integers may not correspond
+exactly to the host machines integer representation.
+</p>
+
+
+<p>In the CCL implementation of AXIOM (Release 2.1 onwards) the underlying
+representation of <span class="teletype">SingleInteger</span> is the same as <span class="teletype">Integer</span>.  
+The underlying Lisp primitives treat machine-word sized computations
+specially.
+</p>
+
+
+<p>You can discover the minimum and maximum values in your implementation
+by using <span class="spadfunFrom" >min</span><span class="index">min</span><a name="chapter-9-24"/><span class="index">SingleInteger</span><a name="chapter-9-25"/> and <span class="spadfunFrom" >max</span><span class="index">max</span><a name="chapter-9-26"/><span class="index">SingleInteger</span><a name="chapter-9-27"/>.
+</p>
+
+
+
+
+<div id="spadComm9-37" class="spadComm" >
+<form id="formComm9-37" action="javascript:makeRequest('9-37');" >
+<input id="comm9-37" type="text" class="command" style="width: 13em;" value="min()$SingleInteger" />
+</form>
+<span id="commSav9-37" class="commSav" >min()$SingleInteger</span>
+<div id="mathAns9-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>134217728</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-38" class="spadComm" >
+<form id="formComm9-38" action="javascript:makeRequest('9-38');" >
+<input id="comm9-38" type="text" class="command" style="width: 13em;" value="max()$SingleInteger" />
+</form>
+<span id="commSav9-38" class="commSav" >max()$SingleInteger</span>
+<div id="mathAns9-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>134217727</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+<p>To avoid confusion with <span class="teletype">Integer</span>, which is the default type for
+integers, you usually need to work with declared variables
+(<a href="ugTypesDeclarePage" class="ref" >ugTypesDeclarePage</a>  in Section 
+<a href="ugTypesDeclareNumber" class="ref" >ugTypesDeclareNumber</a> )
+...
+</p>
+
+
+
+
+<div id="spadComm9-39" class="spadComm" >
+<form id="formComm9-39" action="javascript:makeRequest('9-39');" >
+<input id="comm9-39" type="text" class="command" style="width: 18em;" value="a := 1234 :: SingleInteger " />
+</form>
+<span id="commSav9-39" class="commSav" >a := 1234 :: SingleInteger </span>
+<div id="mathAns9-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1234</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+<p>or use package calling
+(<a href="ugTypesPkgCallPage" class="ref" >ugTypesPkgCallPage</a>  in Section 
+<a href="ugTypesPkgCallNumber" class="ref" >ugTypesPkgCallNumber</a> ).
+</p>
+
+
+
+
+<div id="spadComm9-40" class="spadComm" >
+<form id="formComm9-40" action="javascript:makeRequest('9-40');" >
+<input id="comm9-40" type="text" class="command" style="width: 16em;" value="b := 124$SingleInteger " />
+</form>
+<span id="commSav9-40" class="commSav" >b := 124$SingleInteger </span>
+<div id="mathAns9-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>124</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+<p>You can add, multiply and subtract <span class="teletype">SingleInteger</span> objects,
+and ask for the greatest common divisor (<span class="teletype">gcd</span>).
+</p>
+
+
+
+
+<div id="spadComm9-41" class="spadComm" >
+<form id="formComm9-41" action="javascript:makeRequest('9-41');" >
+<input id="comm9-41" type="text" class="command" style="width: 6em;" value="gcd(a,b) " />
+</form>
+<span id="commSav9-41" class="commSav" >gcd(a,b) </span>
+<div id="mathAns9-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+<p>The least common multiple (<span class="teletype">lcm</span>) is also available.
+</p>
+
+
+
+
+<div id="spadComm9-42" class="spadComm" >
+<form id="formComm9-42" action="javascript:makeRequest('9-42');" >
+<input id="comm9-42" type="text" class="command" style="width: 6em;" value="lcm(a,b) " />
+</form>
+<span id="commSav9-42" class="commSav" >lcm(a,b) </span>
+<div id="mathAns9-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>76508</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+<p>Operations <span class="spadfunFrom" >mulmod</span><span class="index">mulmod</span><a name="chapter-9-28"/><span class="index">SingleInteger</span><a name="chapter-9-29"/>,
+<span class="spadfunFrom" >addmod</span><span class="index">addmod</span><a name="chapter-9-30"/><span class="index">SingleInteger</span><a name="chapter-9-31"/>,
+<span class="spadfunFrom" >submod</span><span class="index">submod</span><a name="chapter-9-32"/><span class="index">SingleInteger</span><a name="chapter-9-33"/>, and
+<span class="spadfunFrom" >invmod</span><span class="index">invmod</span><a name="chapter-9-34"/><span class="index">SingleInteger</span><a name="chapter-9-35"/> are similar---they provide
+arithmetic modulo a given small integer.
+Here is  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mn>5</mn><mo>*</mo><mn>6</mn><mrow><mtext mathvariant='monospace'>mod<mspace width="0.5em"/></mtext></mrow><mn>13</mn></mrow></mstyle></math>.
+</p>
+
+
+
+
+<div id="spadComm9-43" class="spadComm" >
+<form id="formComm9-43" action="javascript:makeRequest('9-43');" >
+<input id="comm9-43" type="text" class="command" style="width: 19em;" value="mulmod(5,6,13)$SingleInteger" />
+</form>
+<span id="commSav9-43" class="commSav" >mulmod(5,6,13)$SingleInteger</span>
+<div id="mathAns9-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+<p>To reduce a small integer modulo a prime, use
+<span class="spadfunFrom" >positiveRemainder</span><span class="index">positiveRemainder</span><a name="chapter-9-36"/><span class="index">SingleInteger</span><a name="chapter-9-37"/>.
+</p>
+
+
+
+
+<div id="spadComm9-44" class="spadComm" >
+<form id="formComm9-44" action="javascript:makeRequest('9-44');" >
+<input id="comm9-44" type="text" class="command" style="width: 26em;" value="positiveRemainder(37,13)$SingleInteger" />
+</form>
+<span id="commSav9-44" class="commSav" >positiveRemainder(37,13)$SingleInteger</span>
+<div id="mathAns9-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>11</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+<p>Operations
+<span class="spadfunFrom" >And</span><span class="index">And</span><a name="chapter-9-38"/><span class="index">SingleInteger</span><a name="chapter-9-39"/>,
+<span class="spadfunFrom" >Or</span><span class="index">Or</span><a name="chapter-9-40"/><span class="index">SingleInteger</span><a name="chapter-9-41"/>,
+<span class="spadfunFrom" >xor</span><span class="index">xor</span><a name="chapter-9-42"/><span class="index">SingleInteger</span><a name="chapter-9-43"/>,
+and <span class="spadfunFrom" >Not</span><span class="index">Not</span><a name="chapter-9-44"/><span class="index">SingleInteger</span><a name="chapter-9-45"/>
+provide bit level operations on small integers.
+</p>
+
+
+
+
+<div id="spadComm9-45" class="spadComm" >
+<form id="formComm9-45" action="javascript:makeRequest('9-45');" >
+<input id="comm9-45" type="text" class="command" style="width: 15em;" value="And(3,4)$SingleInteger" />
+</form>
+<span id="commSav9-45" class="commSav" >And(3,4)$SingleInteger</span>
+<div id="mathAns9-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+<p>Use <span class="teletype">shift(int,numToShift)</span> to shift bits, where <span class="teletype">i</span> is
+shifted left if <span class="teletype">numToShift</span> is positive, right if negative.
+</p>
+
+
+
+
+<div id="spadComm9-46" class="spadComm" >
+<form id="formComm9-46" action="javascript:makeRequest('9-46');" >
+<input id="comm9-46" type="text" class="command" style="width: 16em;" value="shift(1,4)$SingleInteger" />
+</form>
+<span id="commSav9-46" class="commSav" >shift(1,4)$SingleInteger</span>
+<div id="mathAns9-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>16</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-47" class="spadComm" >
+<form id="formComm9-47" action="javascript:makeRequest('9-47');" >
+<input id="comm9-47" type="text" class="command" style="width: 18em;" value="shift(31,-1)$SingleInteger" />
+</form>
+<span id="commSav9-47" class="commSav" >shift(31,-1)$SingleInteger</span>
+<div id="mathAns9-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>15</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SingleInteger
+</div>
+
+
+
+<p>Many other operations are available for small integers, including many
+of those provided for <span class="teletype">Integer</span>.  To see the other operations, use
+the Browse HyperDoc facility (<a href="ugBrowsePage" class="ref" >ugBrowsePage</a>  in Section
+<a href="ugBrowseNumber" class="ref" >ugBrowseNumber</a> ).
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.71.xhtml" style="margin-right: 10px;">Previous Section 9.71 Set</a><a href="section-9.73.xhtml" style="margin-right: 10px;">Next Section 9.73 SparseTable</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.73.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.73.xhtml
new file mode 100644
index 0000000..57e28c0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.73.xhtml
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.73</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.72.xhtml" style="margin-right: 10px;">Previous Section 9.72 SingleInteger</a><a href="section-9.74.xhtml" style="margin-right: 10px;">Next Section 9.74 SquareMatrix</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.73">
+<h2 class="sectiontitle">9.73  SparseTable</h2>
+
+
+<a name="SparseTableXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">SparseTable</span> domain provides a general purpose table type
+with default entries.
+</p>
+
+
+<p>Here we create a table to save strings under integer keys.  The value
+<span class="teletype">"Try again!"</span> is returned if no other value has been stored for a
+key.
+</p>
+
+
+
+
+<div id="spadComm9-48" class="spadComm" >
+<form id="formComm9-48" action="javascript:makeRequest('9-48');" >
+<input id="comm9-48" type="text" class="command" style="width: 38em;" value='t: SparseTable(Integer, String, "Try again!") := table() ' />
+</form>
+<span id="commSav9-48" class="commSav" >t: SparseTable(Integer, String, "Try again!") := table() </span>
+<div id="mathAns9-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>table</mi><mo>(</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SparseTable(Integer,String,Try again!)
+</div>
+
+
+
+<p>Entries can be stored in the table.
+</p>
+
+
+
+
+<div id="spadComm9-49" class="spadComm" >
+<form id="formComm9-49" action="javascript:makeRequest('9-49');" >
+<input id="comm9-49" type="text" class="command" style="width: 15em;" value='t.3 := "Number three" ' />
+</form>
+<span id="commSav9-49" class="commSav" >t.3 := "Number three" </span>
+<div id="mathAns9-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Number<mspace width="0.5em"/>three<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-50" class="spadComm" >
+<form id="formComm9-50" action="javascript:makeRequest('9-50');" >
+<input id="comm9-50" type="text" class="command" style="width: 14em;" value='t.4 := "Number four" ' />
+</form>
+<span id="commSav9-50" class="commSav" >t.4 := "Number four" </span>
+<div id="mathAns9-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Number<mspace width="0.5em"/>four<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>These values can be retrieved as usual, but if a look up fails the
+default entry will be returned.
+</p>
+
+
+
+
+<div id="spadComm9-51" class="spadComm" >
+<form id="formComm9-51" action="javascript:makeRequest('9-51');" >
+<input id="comm9-51" type="text" class="command" style="width: 3em;" value="t.3 " />
+</form>
+<span id="commSav9-51" class="commSav" >t.3 </span>
+<div id="mathAns9-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Number<mspace width="0.5em"/>three<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-52" class="spadComm" >
+<form id="formComm9-52" action="javascript:makeRequest('9-52');" >
+<input id="comm9-52" type="text" class="command" style="width: 3em;" value="t.2 " />
+</form>
+<span id="commSav9-52" class="commSav" >t.2 </span>
+<div id="mathAns9-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Try<mspace width="0.5em"/>again<mspace width="0.5em"/>!<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>To see which values are explicitly stored, the
+<span class="spadfunFrom" >keys</span><span class="index">keys</span><a name="chapter-9-46"/><span class="index">SparseTable</span><a name="chapter-9-47"/> and <span class="spadfunFrom" >entries</span><span class="index">entries</span><a name="chapter-9-48"/><span class="index">SparseTable</span><a name="chapter-9-49"/>
+functions can be used.
+</p>
+
+
+
+
+<div id="spadComm9-53" class="spadComm" >
+<form id="formComm9-53" action="javascript:makeRequest('9-53');" >
+<input id="comm9-53" type="text" class="command" style="width: 5em;" value="keys t " />
+</form>
+<span id="commSav9-53" class="commSav" >keys t </span>
+<div id="mathAns9-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>4</mn><mo>,</mo><mn>3</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-54" class="spadComm" >
+<form id="formComm9-54" action="javascript:makeRequest('9-54');" >
+<input id="comm9-54" type="text" class="command" style="width: 7em;" value="entries t " />
+</form>
+<span id="commSav9-54" class="commSav" >entries t </span>
+<div id="mathAns9-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Number<mspace width="0.5em"/>four<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Number<mspace width="0.5em"/>three<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List String
+</div>
+
+
+
+<p>If a specific table representation is required, the 
+<span class="teletype">GeneralSparseTable</span> constructor should be used.  The domain 
+<span class="teletype">SparseTable(K, E, dflt)</span> is equivalent to 
+<span class="teletype">GeneralSparseTable(K,E,Table(K,E), dflt)</span>.  
+For more information, see 
+<a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a>  and 
+<a href="section-9.30.xhtml#GeneralSparseTableXmpPage" class="ref" >GeneralSparseTableXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.72.xhtml" style="margin-right: 10px;">Previous Section 9.72 SingleInteger</a><a href="section-9.74.xhtml" style="margin-right: 10px;">Next Section 9.74 SquareMatrix</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.74.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.74.xhtml
new file mode 100644
index 0000000..085959b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.74.xhtml
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.74</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.73.xhtml" style="margin-right: 10px;">Previous Section 9.73 SparseTable</a><a href="section-9.75.xhtml" style="margin-right: 10px;">Next Section 9.75 SquareFreeRegularTriangularSet</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.74">
+<h2 class="sectiontitle">9.74  SquareMatrix</h2>
+
+
+<a name="SquareMatrixXmpPage" class="label"/>
+
+<p> 
+The top level matrix type in Axiom is <span class="teletype">Matrix</span> (see
+<a href="section-9.52.xhtml#MatrixXmpPage" class="ref" >MatrixXmpPage</a> ), which provides
+basic arithmetic and linear algebra functions.  However, since the
+matrices can be of any size it is not true that any pair can be added
+or multiplied.  Thus <span class="teletype">Matrix</span> has little algebraic structure.
+ 
+Sometimes you want to use matrices as coefficients for polynomials
+or in other algebraic contexts.  In this case, <span class="teletype">SquareMatrix</span>
+should be used.  The domain <span class="teletype">SquareMatrix(n,R)</span> gives the ring of
+<span class="teletype">n</span> by <span class="teletype">n</span> square matrices over <span class="teletype">R</span>.
+ 
+Since <span class="teletype">SquareMatrix</span> is not normally exposed at the top level,
+you must expose it before it can be used.
+</p>
+
+
+
+
+<div id="spadComm9-55" class="spadComm" >
+<form id="formComm9-55" action="javascript:makeRequest('9-55');" >
+<input id="comm9-55" type="text" class="command" style="width: 28em;" value=")set expose add constructor SquareMatrix " />
+</form>
+<span id="commSav9-55" class="commSav" >)set expose add constructor SquareMatrix </span>
+<div id="mathAns9-55" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;SquareMatrix&nbsp;is&nbsp;now&nbsp;explicitly&nbsp;exposed&nbsp;in&nbsp;frame&nbsp;G82322&nbsp;<br />
+</div>
+
+
+
+<p>Once <span class="teletype">SQMATRIX</span> has been exposed, values can be created using the
+<span class="spadfunFrom" >squareMatrix</span><span class="index">squareMatrix</span><a name="chapter-9-50"/><span class="index">SquareMatrix</span><a name="chapter-9-51"/> function.
+</p>
+
+
+
+
+<div id="spadComm9-56" class="spadComm" >
+<form id="formComm9-56" action="javascript:makeRequest('9-56');" >
+<input id="comm9-56" type="text" class="command" style="width: 26em;" value="m := squareMatrix [ [1,-%i],[%i,4] ] " />
+</form>
+<span id="commSav9-56" class="commSav" >m := squareMatrix [ [1,-%i],[%i,4] ] </span>
+<div id="mathAns9-56" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mi>i</mi></mtd></mtr><mtr><mtd><mi>i</mi></mtd><mtd><mn>4</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Complex Integer)
+</div>
+
+
+
+<p>The usual arithmetic operations are available.
+</p>
+
+
+
+
+<div id="spadComm9-57" class="spadComm" >
+<form id="formComm9-57" action="javascript:makeRequest('9-57');" >
+<input id="comm9-57" type="text" class="command" style="width: 6em;" value="m*m - m " />
+</form>
+<span id="commSav9-57" class="commSav" >m*m - m </span>
+<div id="mathAns9-57" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mtd></mtr><mtr><mtd><mrow><mn>4</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mtd><mtd><mn>13</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Complex Integer)
+</div>
+
+
+
+<p>Square matrices can be used where ring elements are required.
+For example, here is a matrix with matrix entries.
+</p>
+
+
+
+
+<div id="spadComm9-58" class="spadComm" >
+<form id="formComm9-58" action="javascript:makeRequest('9-58');" >
+<input id="comm9-58" type="text" class="command" style="width: 29em;" value="mm := squareMatrix [ [m, 1], [1-m, m**2] ] " />
+</form>
+<span id="commSav9-58" class="commSav" >mm := squareMatrix [ [m, 1], [1-m, m**2] ] </span>
+<div id="mathAns9-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mi>i</mi></mtd></mtr><mtr><mtd><mi>i</mi></mtd><mtd><mn>4</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mi>i</mi></mtd></mtr><mtr><mtd><mo>-</mo><mi>i</mi></mtd><mtd><mo>-</mo><mn>3</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mtd></mtr><mtr><mtd><mrow><mn>5</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mtd><mtd><mn>17</mn></mtd></mtr></mtable><mo>]</mo></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,SquareMatrix(2,Complex Integer))
+</div>
+
+
+
+<p>Or you can construct a polynomial with  square matrix coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-59" class="spadComm" >
+<form id="formComm9-59" action="javascript:makeRequest('9-59');" >
+<input id="comm9-59" type="text" class="command" style="width: 11em;" value="p := (x + m)**2 " />
+</form>
+<span id="commSav9-59" class="commSav" >p := (x + m)**2 </span>
+<div id="mathAns9-59" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mtd><mtd><mn>8</mn></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mo>[</mo><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mtd></mtr><mtr><mtd><mrow><mn>5</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mtd><mtd><mn>17</mn></mtd></mtr></mtable><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial SquareMatrix(2,Complex Integer)
+</div>
+
+
+
+<p>This value can be converted to a square matrix with polynomial coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-60" class="spadComm" >
+<form id="formComm9-60" action="javascript:makeRequest('9-60');" >
+<input id="comm9-60" type="text" class="command" style="width: 15em;" value="p::SquareMatrix(2, ?) " />
+</form>
+<span id="commSav9-60" class="commSav" >p::SquareMatrix(2, ?) </span>
+<div id="mathAns9-60" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>2</mn></mrow></mtd><mtd><mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>i</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>i</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mi>i</mi></mrow></mrow></mtd><mtd><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>17</mn></mrow></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Polynomial Complex Integer)
+</div>
+
+
+<p> 
+For more information on related topics, see
+<a href="ugTypesWritingModesPage" class="ref" >ugTypesWritingModesPage</a>  in Section
+<a href="ugTypesWritingModesNumber" class="ref" >ugTypesWritingModesNumber</a> , <a href="ugTypesExposePage" class="ref" >ugTypesExposePage</a>  in Section <a href="ugTypesExposeNumber" class="ref" >ugTypesExposeNumber</a>
+, and <a href="section-9.52.xhtml#MatrixXmpPage" class="ref" >MatrixXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.73.xhtml" style="margin-right: 10px;">Previous Section 9.73 SparseTable</a><a href="section-9.75.xhtml" style="margin-right: 10px;">Next Section 9.75 SquareFreeRegularTriangularSet</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.75.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.75.xhtml
new file mode 100644
index 0000000..c5a35c2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.75.xhtml
@@ -0,0 +1,855 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.75</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.74.xhtml" style="margin-right: 10px;">Previous Section 9.74 SquareMatrix</a><a href="section-9.76.xhtml" style="margin-right: 10px;">Next Section 9.76 Stream</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.75">
+<h2 class="sectiontitle">9.75  SquareFreeRegularTriangularSet</h2>
+
+
+<a name="SquareFreeRegularTriangularSetXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">SquareFreeRegularTriangularSet</span> domain constructor implements
+square-free regular triangular sets.  See the 
+<span class="teletype">RegularTriangularSet</span> domain constructor for general regular
+triangular sets.  Let <span class="em">T</span> be a regular triangular set consisting
+of polynomials <span class="em">t1, ..., tm</span> ordered by increasing main variables.
+The regular triangular set <span class="em">T</span> is square-free if <span class="em">T</span> is empty
+or if <span class="em">t1, ..., tm-1</span> is square-free and if the polynomial 
+<span class="em">tm</span> is square-free as a univariate polynomial with coefficients in the
+tower of simple extensions associated with <span class="em">t1, ..., tm-1</span>.
+</p>
+
+
+<p>The main interest of square-free regular triangular sets is that their
+associated towers of simple extensions are product of fields.
+Consequently, the saturated ideal of a square-free regular triangular
+set is radical.  This property simplifies some of the operations
+related to regular triangular sets.  However, building square-free
+regular triangular sets is generally more expensive than building
+general regular triangular sets.
+</p>
+
+
+<p>As the <span class="teletype">RegularTriangularSet</span> domain constructor, the 
+<span class="teletype">SquareFreeRegularTriangularSet</span> domain constructor also implements a
+method for solving polynomial systems by means of regular triangular
+sets.  This is in fact the same method with some adaptations to take
+into account the fact that the computed regular chains are
+square-free.  Note that it is also possible to pass from a
+decomposition into general regular triangular sets to a decomposition
+into square-free regular triangular sets.  This conversion is used
+internally by the <span class="teletype">LazardSetSolvingPackage</span> package constructor.
+</p>
+
+
+<p><span style="font-weight: bold;"> N.B.</span> When solving polynomial systems with the 
+<span class="teletype">SquareFreeRegularTriangularSet</span> domain constructor or the 
+<span class="teletype">LazardSetSolvingPackage</span> package constructor, decompositions have no
+redundant components.  See also <span class="teletype">LexTriangularPackage</span> and 
+<span class="teletype">ZeroDimensionalSolvePackage</span> for the case of algebraic systems with a
+finite number of (complex) solutions.
+</p>
+
+
+<p>We shall explain now how to use the constructor 
+<span class="teletype">SquareFreeRegularTriangularSet</span>.
+</p>
+
+
+<p>This constructor takes four arguments.
+The first one, <span style="font-weight: bold;"> R</span>, is the coefficient ring of the polynomials;
+it must belong to the category <span class="teletype">GcdDomain</span>.
+The second one, <span style="font-weight: bold;"> E</span>, is the exponent monoid of the polynomials;
+it must belong to the category <span class="teletype">OrderedAbelianMonoidSup</span>.
+the third one, <span style="font-weight: bold;"> V</span>, is the ordered set of variables;
+it must belong to the category <span class="teletype">OrderedSet</span>.
+The last one is the polynomial ring;
+it must belong to the category <span class="teletype">RecursivePolynomialCategory(R,E,V)</span>.
+The abbreviation for <span class="teletype">SquareFreeRegularTriangularSet</span> is
+<span class="teletype">SREGSET</span>.
+</p>
+
+
+<p>Note that the way of understanding triangular decompositions 
+is detailed in the example of the <span class="teletype">RegularTriangularSet</span>
+constructor.
+</p>
+
+
+<p>Let us illustrate the use of this constructor with one example
+(Donati-Traverso).  Define the coefficient ring.
+</p>
+
+
+
+
+<div id="spadComm9-61" class="spadComm" >
+<form id="formComm9-61" action="javascript:makeRequest('9-61');" >
+<input id="comm9-61" type="text" class="command" style="width: 9em;" value="R := Integer " />
+</form>
+<span id="commSav9-61" class="commSav" >R := Integer </span>
+<div id="mathAns9-61" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>Integer</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the list of variables,
+</p>
+
+
+
+
+<div id="spadComm9-62" class="spadComm" >
+<form id="formComm9-62" action="javascript:makeRequest('9-62');" >
+<input id="comm9-62" type="text" class="command" style="width: 20em;" value="ls : List Symbol := [x,y,z,t] " />
+</form>
+<span id="commSav9-62" class="commSav" >ls : List Symbol := [x,y,z,t] </span>
+<div id="mathAns9-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>t</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>and make it an ordered set;
+</p>
+
+
+
+
+<div id="spadComm9-63" class="spadComm" >
+<form id="formComm9-63" action="javascript:makeRequest('9-63');" >
+<input id="comm9-63" type="text" class="command" style="width: 10em;" value="V := OVAR(ls)  " />
+</form>
+<span id="commSav9-63" class="commSav" >V := OVAR(ls)  </span>
+<div id="mathAns9-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedVariableList[x,y,z,t]</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>then define the exponent monoid.
+</p>
+
+
+
+
+<div id="spadComm9-64" class="spadComm" >
+<form id="formComm9-64" action="javascript:makeRequest('9-64');" >
+<input id="comm9-64" type="text" class="command" style="width: 17em;" value="E := IndexedExponents V  " />
+</form>
+<span id="commSav9-64" class="commSav" >E := IndexedExponents V  </span>
+<div id="mathAns9-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>IndexedExponentsOrderedVariableList[x,y,z,t]</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the polynomial ring.
+</p>
+
+
+
+
+<div id="spadComm9-65" class="spadComm" >
+<form id="formComm9-65" action="javascript:makeRequest('9-65');" >
+<input id="comm9-65" type="text" class="command" style="width: 10em;" value="P := NSMP(R, V)" />
+</form>
+<span id="commSav9-65" class="commSav" >P := NSMP(R, V)</span>
+<div id="mathAns9-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>NewSparseMultivariatePolynomial(Integer,OrderedVariableList[x,y,z,t])</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Let the variables be polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-66" class="spadComm" >
+<form id="formComm9-66" action="javascript:makeRequest('9-66');" >
+<input id="comm9-66" type="text" class="command" style="width: 8em;" value="x: P := 'x  " />
+</form>
+<span id="commSav9-66" class="commSav" >x: P := 'x  </span>
+<div id="mathAns9-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-67" class="spadComm" >
+<form id="formComm9-67" action="javascript:makeRequest('9-67');" >
+<input id="comm9-67" type="text" class="command" style="width: 8em;" value="y: P := 'y  " />
+</form>
+<span id="commSav9-67" class="commSav" >y: P := 'y  </span>
+<div id="mathAns9-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-68" class="spadComm" >
+<form id="formComm9-68" action="javascript:makeRequest('9-68');" >
+<input id="comm9-68" type="text" class="command" style="width: 8em;" value="z: P := 'z  " />
+</form>
+<span id="commSav9-68" class="commSav" >z: P := 'z  </span>
+<div id="mathAns9-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>z</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-69" class="spadComm" >
+<form id="formComm9-69" action="javascript:makeRequest('9-69');" >
+<input id="comm9-69" type="text" class="command" style="width: 8em;" value="t: P := 't  " />
+</form>
+<span id="commSav9-69" class="commSav" >t: P := 't  </span>
+<div id="mathAns9-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>t</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+<p>Now call the <span class="teletype">SquareFreeRegularTriangularSet</span> domain constructor.
+</p>
+
+
+
+
+<div id="spadComm9-70" class="spadComm" >
+<form id="formComm9-70" action="javascript:makeRequest('9-70');" >
+<input id="comm9-70" type="text" class="command" style="width: 15em;" value="ST := SREGSET(R,E,V,P)" />
+</form>
+<span id="commSav9-70" class="commSav" >ST := SREGSET(R,E,V,P)</span>
+<div id="mathAns9-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>SquareFreeRegularTriangularSet(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;IndexedExponentsOrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[x,y,z,t]))</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define a polynomial system.
+</p>
+
+
+
+
+<div id="spadComm9-71" class="spadComm" >
+<form id="formComm9-71" action="javascript:makeRequest('9-71');" >
+<input id="comm9-71" type="text" class="command" style="width: 20em;" value="p1 := x ** 31 - x ** 6 - x - y" />
+</form>
+<span id="commSav9-71" class="commSav" >p1 := x ** 31 - x ** 6 - x - y</span>
+<div id="mathAns9-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>31</mn></msup></mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>-</mo><mi>x</mi><mo>-</mo><mi>y</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-72" class="spadComm" >
+<form id="formComm9-72" action="javascript:makeRequest('9-72');" >
+<input id="comm9-72" type="text" class="command" style="width: 12em;" value="p2 := x ** 8  - z" />
+</form>
+<span id="commSav9-72" class="commSav" >p2 := x ** 8  - z</span>
+<div id="mathAns9-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>-</mo><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-73" class="spadComm" >
+<form id="formComm9-73" action="javascript:makeRequest('9-73');" >
+<input id="comm9-73" type="text" class="command" style="width: 12em;" value="p3 := x ** 10 - t" />
+</form>
+<span id="commSav9-73" class="commSav" >p3 := x ** 10 - t</span>
+<div id="mathAns9-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-74" class="spadComm" >
+<form id="formComm9-74" action="javascript:makeRequest('9-74');" >
+<input id="comm9-74" type="text" class="command" style="width: 12em;" value="lp := [p1, p2, p3]" />
+</form>
+<span id="commSav9-74" class="commSav" >lp := [p1, p2, p3]</span>
+<div id="mathAns9-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><msup><mi>x</mi><mn>31</mn></msup></mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>-</mo><mi>x</mi><mo>-</mo><mi>y</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>-</mo><mi>z</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+<p>First of all, let us solve this system in the sense of Kalkbrener.
+</p>
+
+
+
+
+<div id="spadComm9-75" class="spadComm" >
+<form id="formComm9-75" action="javascript:makeRequest('9-75');" >
+<input id="comm9-75" type="text" class="command" style="width: 13em;" value="zeroSetSplit(lp)$ST" />
+</form>
+<span id="commSav9-75" class="commSav" >zeroSetSplit(lp)$ST</span>
+<div id="mathAns9-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>{</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow><mo>-</mo><mi>t</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>}</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List SquareFreeRegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+<p>And now in the sense of Lazard (or Wu and other authors).
+</p>
+
+
+
+
+<div id="spadComm9-76" class="spadComm" >
+<form id="formComm9-76" action="javascript:makeRequest('9-76');" >
+<input id="comm9-76" type="text" class="command" style="width: 17em;" value="zeroSetSplit(lp,false)$ST" />
+</form>
+<span id="commSav9-76" class="commSav" >zeroSetSplit(lp,false)$ST</span>
+<div id="mathAns9-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>{</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow><mo>-</mo><mi>t</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>t</mi></mrow><mo>}</mo></mrow><mo>,</mo><mrow><mo>{</mo><mi>t</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>}</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List SquareFreeRegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+<p>Now to see the difference with the <span class="teletype">RegularTriangularSet</span> domain
+constructor, we define:
+</p>
+
+
+
+
+<div id="spadComm9-77" class="spadComm" >
+<form id="formComm9-77" action="javascript:makeRequest('9-77');" >
+<input id="comm9-77" type="text" class="command" style="width: 14em;" value="T := REGSET(R,E,V,P)" />
+</form>
+<span id="commSav9-77" class="commSav" >T := REGSET(R,E,V,P)</span>
+<div id="mathAns9-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>RegularTriangularSet(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>IndexedExponentsOrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>OrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>OrderedVariableList[x,y,z,t]))</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>and compute:
+</p>
+
+
+
+
+<div id="spadComm9-78" class="spadComm" >
+<form id="formComm9-78" action="javascript:makeRequest('9-78');" >
+<input id="comm9-78" type="text" class="command" style="width: 21em;" value="lts := zeroSetSplit(lp,false)$T" />
+</form>
+<span id="commSav9-78" class="commSav" >lts := zeroSetSplit(lp,false)$T</span>
+<div id="mathAns9-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>{</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><mo>(</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow><mo>-</mo><mi>t</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>t</mi></mrow><mo>}</mo></mrow><mo>,</mo><mrow><mo>{</mo><mi>t</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>}</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List RegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+<p>If you look at the second set in both decompositions in the sense of Lazard,
+you will see that the polynomial with main variable <span style="font-weight: bold;"> y</span> is not the same.
+</p>
+
+
+<p>Let us understand what has happened.
+</p>
+
+
+<p>We define:
+</p>
+
+
+
+
+<div id="spadComm9-79" class="spadComm" >
+<form id="formComm9-79" action="javascript:makeRequest('9-79');" >
+<input id="comm9-79" type="text" class="command" style="width: 8em;" value="ts := lts.2" />
+</form>
+<span id="commSav9-79" class="commSav" >ts := lts.2</span>
+<div id="mathAns9-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow><mo>,</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>t</mi></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+RegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+
+
+<div id="spadComm9-80" class="spadComm" >
+<form id="formComm9-80" action="javascript:makeRequest('9-80');" >
+<input id="comm9-80" type="text" class="command" style="width: 15em;" value="pol := select(ts,'y)$T" />
+</form>
+<span id="commSav9-80" class="commSav" >pol := select(ts,'y)$T</span>
+<div id="mathAns9-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Union(
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]),...)
+</div>
+
+
+
+
+
+<div id="spadComm9-81" class="spadComm" >
+<form id="formComm9-81" action="javascript:makeRequest('9-81');" >
+<input id="comm9-81" type="text" class="command" style="width: 20em;" value="tower := collectUnder(ts,'y)$T" />
+</form>
+<span id="commSav9-81" class="commSav" >tower := collectUnder(ts,'y)$T</span>
+<div id="mathAns9-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow><mo>}</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+RegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+
+
+<div id="spadComm9-82" class="spadComm" >
+<form id="formComm9-82" action="javascript:makeRequest('9-82');" >
+<input id="comm9-82" type="text" class="command" style="width: 33em;" value="pack := RegularTriangularSetGcdPackage(R,E,V,P,T)" />
+</form>
+<span id="commSav9-82" class="commSav" >pack := RegularTriangularSetGcdPackage(R,E,V,P,T)</span>
+<div id="mathAns9-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>RegularTriangularSetGcdPackage(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;IndexedExponentsOrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[x,y,z,t]),</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;RegularTriangularSet(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;IndexedExponentsOrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[x,y,z,t])))</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Then we compute:
+</p>
+
+
+
+
+<div id="spadComm9-83" class="spadComm" >
+<form id="formComm9-83" action="javascript:makeRequest('9-83');" >
+<input id="comm9-83" type="text" class="command" style="width: 23em;" value="toseSquareFreePart(pol,tower)$pack" />
+</form>
+<span id="commSav9-83" class="commSav" >toseSquareFreePart(pol,tower)$pack</span>
+<div id="mathAns9-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>val</mi><mo>=</mo><mrow><mrow><mi>t</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow></mrow><mo>,</mo><mrow><mi>tower</mi><mo>=</mo><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow><mo>}</mo></mrow></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List Record(val: 
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]),
+tower: RegularTriangularSet(Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t])))
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.74.xhtml" style="margin-right: 10px;">Previous Section 9.74 SquareMatrix</a><a href="section-9.76.xhtml" style="margin-right: 10px;">Next Section 9.76 Stream</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.76.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.76.xhtml
new file mode 100644
index 0000000..26bf3e4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.76.xhtml
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.76</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.75.xhtml" style="margin-right: 10px;">Previous Section 9.75 SquareFreeRegularTriangularSet</a><a href="section-9.77.xhtml" style="margin-right: 10px;">Next Section 9.77 String</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.76">
+<h2 class="sectiontitle">9.76  Stream</h2>
+
+
+<a name="StreamXmpPage" class="label"/>
+
+
+<p>A <span class="teletype">Stream</span> object is represented as a list whose last element
+contains the wherewithal to create the next element, should it ever be
+required.
+</p>
+
+
+<p>Let <span class="teletype">ints</span> be the infinite stream of non-negative integers.
+</p>
+
+
+
+
+<div id="spadComm9-84" class="spadComm" >
+<form id="formComm9-84" action="javascript:makeRequest('9-84');" >
+<input id="comm9-84" type="text" class="command" style="width: 17em;" value="ints := [i for i in 0..] " />
+</form>
+<span id="commSav9-84" class="commSav" >ints := [i for i in 0..] </span>
+<div id="mathAns9-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream NonNegativeInteger
+</div>
+
+
+
+<p>By default, ten stream elements are calculated.  This number may be
+changed to something else by the system command <span class="teletype">)set streams
+calculate</span>.  For the display purposes of this book, we have chosen a
+smaller value.
+</p>
+
+
+<p>More generally, you can construct a stream by specifying its initial
+value and a function which, when given an element, creates the next element.
+</p>
+
+
+
+
+<div id="spadComm9-85" class="spadComm" >
+<form id="formComm9-85" action="javascript:makeRequest('9-85');" >
+<input id="comm9-85" type="text" class="command" style="width: 17em;" value="f : List INT -> List INT " />
+</form>
+<span id="commSav9-85" class="commSav" >f : List INT -> List INT </span>
+<div id="mathAns9-85" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-86" class="spadComm" >
+<form id="formComm9-86" action="javascript:makeRequest('9-86');" >
+<input id="comm9-86" type="text" class="command" style="width: 16em;" value="f x == [x.1 + x.2, x.1] " />
+</form>
+<span id="commSav9-86" class="commSav" >f x == [x.1 + x.2, x.1] </span>
+<div id="mathAns9-86" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-87" class="spadComm" >
+<form id="formComm9-87" action="javascript:makeRequest('9-87');" >
+<input id="comm9-87" type="text" class="command" style="width: 29em;" value="fibs := [i.2 for i in [generate(f,[1,1])]] " />
+</form>
+<span id="commSav9-87" class="commSav" >fibs := [i.2 for i in [generate(f,[1,1])]] </span>
+<div id="mathAns9-87" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;Compiling&nbsp;function&nbsp;f&nbsp;with&nbsp;type&nbsp;List&nbsp;Integer&nbsp;-&gt;&nbsp;List&nbsp;Integer&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>34</mn><mo>,</mo><mn>55</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>You can create the stream of odd non-negative integers by either filtering
+them from the integers, or by evaluating an expression for each integer.
+</p>
+
+
+
+
+<div id="spadComm9-88" class="spadComm" >
+<form id="formComm9-88" action="javascript:makeRequest('9-88');" >
+<input id="comm9-88" type="text" class="command" style="width: 18em;" value="[i for i in ints | odd? i] " />
+</form>
+<span id="commSav9-88" class="commSav" >[i for i in ints | odd? i] </span>
+<div id="mathAns9-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>15</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>19</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream NonNegativeInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-89" class="spadComm" >
+<form id="formComm9-89" action="javascript:makeRequest('9-89');" >
+<input id="comm9-89" type="text" class="command" style="width: 20em;" value="odds := [2*i+1 for i in ints]" />
+</form>
+<span id="commSav9-89" class="commSav" >odds := [2*i+1 for i in ints]</span>
+<div id="mathAns9-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>15</mn><mo>,</mo><mn>17</mn><mo>,</mo><mn>19</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream NonNegativeInteger
+</div>
+
+
+
+<p>You can accumulate the initial segments of a stream using the
+<span class="spadfunFrom" >scan</span><span class="index">scan</span><a name="chapter-9-52"/><span class="index">StreamFunctions2</span><a name="chapter-9-53"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-90" class="spadComm" >
+<form id="formComm9-90" action="javascript:makeRequest('9-90');" >
+<input id="comm9-90" type="text" class="command" style="width: 10em;" value="scan(0,+,odds) " />
+</form>
+<span id="commSav9-90" class="commSav" >scan(0,+,odds) </span>
+<div id="mathAns9-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>16</mn><mo>,</mo><mn>25</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>49</mn><mo>,</mo><mn>64</mn><mo>,</mo><mn>81</mn><mo>,</mo><mn>100</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream NonNegativeInteger
+</div>
+
+
+
+<p>The corresponding elements of two or more streams can be combined in
+this way.
+</p>
+
+
+
+
+<div id="spadComm9-91" class="spadComm" >
+<form id="formComm9-91" action="javascript:makeRequest('9-91');" >
+<input id="comm9-91" type="text" class="command" style="width: 23em;" value="[i*j for i in ints for j in odds] " />
+</form>
+<span id="commSav9-91" class="commSav" >[i*j for i in ints for j in odds] </span>
+<div id="mathAns9-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>55</mn><mo>,</mo><mn>78</mn><mo>,</mo><mn>105</mn><mo>,</mo><mn>136</mn><mo>,</mo><mn>171</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream NonNegativeInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-92" class="spadComm" >
+<form id="formComm9-92" action="javascript:makeRequest('9-92');" >
+<input id="comm9-92" type="text" class="command" style="width: 11em;" value="map(*,ints,odds)" />
+</form>
+<span id="commSav9-92" class="commSav" >map(*,ints,odds)</span>
+<div id="mathAns9-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>21</mn><mo>,</mo><mn>36</mn><mo>,</mo><mn>55</mn><mo>,</mo><mn>78</mn><mo>,</mo><mn>105</mn><mo>,</mo><mn>136</mn><mo>,</mo><mn>171</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream NonNegativeInteger
+</div>
+
+
+
+<p>Many operations similar to those applicable to lists are available for
+streams.
+</p>
+
+
+
+
+<div id="spadComm9-93" class="spadComm" >
+<form id="formComm9-93" action="javascript:makeRequest('9-93');" >
+<input id="comm9-93" type="text" class="command" style="width: 8em;" value="first ints " />
+</form>
+<span id="commSav9-93" class="commSav" >first ints </span>
+<div id="mathAns9-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-94" class="spadComm" >
+<form id="formComm9-94" action="javascript:makeRequest('9-94');" >
+<input id="comm9-94" type="text" class="command" style="width: 7em;" value="rest ints " />
+</form>
+<span id="commSav9-94" class="commSav" >rest ints </span>
+<div id="mathAns9-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream NonNegativeInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-95" class="spadComm" >
+<form id="formComm9-95" action="javascript:makeRequest('9-95');" >
+<input id="comm9-95" type="text" class="command" style="width: 6em;" value="fibs 20 " />
+</form>
+<span id="commSav9-95" class="commSav" >fibs 20 </span>
+<div id="mathAns9-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>6765</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The packages <span class="teletype">StreamFunctions1</span>, <span class="teletype">StreamFunctions2</span> and 
+<span class="teletype">StreamFunctions3</span> export some useful stream manipulation operations.
+For more information, see <a href="ugLangItsPage" class="ref" >ugLangItsPage</a>  in Section <a href="ugLangItsNumber" class="ref" >ugLangItsNumber</a> , <a href="ugProblemSeriesPage" class="ref" >ugProblemSeriesPage</a>  in Section
+<a href="ugProblemSeriesNumber" class="ref" >ugProblemSeriesNumber</a> ,
+<a href="chapter-9.1-12.xhtml#ContinuedFractionXmpPage" class="ref" >ContinuedFractionXmpPage</a> , and <a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.75.xhtml" style="margin-right: 10px;">Previous Section 9.75 SquareFreeRegularTriangularSet</a><a href="section-9.77.xhtml" style="margin-right: 10px;">Next Section 9.77 String</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.77.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.77.xhtml
new file mode 100644
index 0000000..bea02da
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.77.xhtml
@@ -0,0 +1,1133 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.77</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.76.xhtml" style="margin-right: 10px;">Previous Section 9.76 Stream</a><a href="section-9.78.xhtml" style="margin-right: 10px;">Next Section 9.78 StringTable</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.77">
+<h2 class="sectiontitle">9.77  String</h2>
+
+
+<a name="StringXmpPage" class="label"/>
+
+
+<p>The type <span class="teletype">String</span> provides character strings.  Character strings
+provide all the operations for a one-dimensional array of characters,
+plus additional operations for manipulating text.  For more
+information on related topics, see 
+<a href="section-9.8.xhtml#CharacterXmpPage" class="ref" >CharacterXmpPage</a>  and
+<a href="section-9.9.xhtml#CharacterClassXmpPage" class="ref" >CharacterClassXmpPage</a> .  
+You can also issue the system command
+<span class="teletype">)show String</span> to display the full list of operations defined
+by <span class="teletype">String</span>.
+</p>
+
+
+<p>String values can be created using double quotes.
+</p>
+
+
+
+
+<div id="spadComm9-96" class="spadComm" >
+<form id="formComm9-96" action="javascript:makeRequest('9-96');" >
+<input id="comm9-96" type="text" class="command" style="width: 16em;" value='hello := "Hello AXIOM!" ' />
+</form>
+<span id="commSav9-96" class="commSav" >hello := "Hello AXIOM!" </span>
+<div id="mathAns9-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Hello<mspace width="0.5em"/>AXIOM<mspace width="0.5em"/>!<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Note, however, that double quotes and underscores must be preceded by
+an extra underscore.
+</p>
+
+
+
+
+<div id="spadComm9-97" class="spadComm" >
+<form id="formComm9-97" action="javascript:makeRequest('9-97');" >
+<input id="comm9-97" type="text" class="command" style="width: 23em;" value='said  := "Jane said, _"Look!_"" ' />
+</form>
+<span id="commSav9-97" class="commSav" >said  := "Jane said, _"Look!_"" </span>
+<div id="mathAns9-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Jane<mspace width="0.5em"/>said<mspace width="0.5em"/>,<mspace width="0.5em"/>"<mspace width="0.5em"/>Look<mspace width="0.5em"/>!<mspace width="0.5em"/>"<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-98" class="spadComm" >
+<form id="formComm9-98" action="javascript:makeRequest('9-98');" >
+<input id="comm9-98" type="text" class="command" style="width: 33em;" value='saw   := "She saw exactly one underscore: __." ' />
+</form>
+<span id="commSav9-98" class="commSav" >saw   := "She saw exactly one underscore: __." </span>
+<div id="mathAns9-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>She<mspace width="0.5em"/>saw<mspace width="0.5em"/>exactly<mspace width="0.5em"/>one<mspace width="0.5em"/>underscore<mspace width="0.5em"/>:<mspace width="0.5em"/>_<mspace width="0.5em"/>.<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>It is also possible to use <span class="spadfunFrom" >new</span><span class="index">new</span><a name="chapter-9-54"/><span class="index">String</span><a name="chapter-9-55"/> to create a
+string of any size filled with a given character.  Since there are
+many <span class="teletype">new</span> functions it is necessary to indicate the desired type.
+</p>
+
+
+
+
+<div id="spadComm9-99" class="spadComm" >
+<form id="formComm9-99" action="javascript:makeRequest('9-99');" >
+<input id="comm9-99" type="text" class="command" style="width: 23em;" value='gasp: String := new(32, char "x") ' />
+</form>
+<span id="commSav9-99" class="commSav" >gasp: String := new(32, char "x") </span>
+<div id="mathAns9-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>The length of a string is given by <span class="spadopFrom" title="List"> #</span>.
+</p>
+
+
+
+
+<div id="spadComm9-100" class="spadComm" >
+<form id="formComm9-100" action="javascript:makeRequest('9-100');" >
+<input id="comm9-100" type="text" class="command" style="width: 5em;" value=" #gasp " />
+</form>
+<span id="commSav9-100" class="commSav" > #gasp </span>
+<div id="mathAns9-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>32</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Indexing operations allow characters to be extracted or replaced in strings.
+For any string <span class="teletype">s</span>, indices lie in the range <span class="teletype">1.. #s</span>.
+</p>
+
+
+
+
+<div id="spadComm9-101" class="spadComm" >
+<form id="formComm9-101" action="javascript:makeRequest('9-101');" >
+<input id="comm9-101" type="text" class="command" style="width: 6em;" value="hello.2 " />
+</form>
+<span id="commSav9-101" class="commSav" >hello.2 </span>
+<div id="mathAns9-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>e</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Character
+</div>
+
+
+
+<p>Indexing is really just the application of a string to a subscript,
+so any application syntax works.
+</p>
+
+
+
+
+<div id="spadComm9-102" class="spadComm" >
+<form id="formComm9-102" action="javascript:makeRequest('9-102');" >
+<input id="comm9-102" type="text" class="command" style="width: 6em;" value="hello 2  " />
+</form>
+<span id="commSav9-102" class="commSav" >hello 2  </span>
+<div id="mathAns9-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>e</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Character
+</div>
+
+
+
+
+
+<div id="spadComm9-103" class="spadComm" >
+<form id="formComm9-103" action="javascript:makeRequest('9-103');" >
+<input id="comm9-103" type="text" class="command" style="width: 6em;" value="hello(2) " />
+</form>
+<span id="commSav9-103" class="commSav" >hello(2) </span>
+<div id="mathAns9-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>e</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Character
+</div>
+
+
+
+<p>If it is important not to modify a given string, it should be copied
+before any updating operations are used.
+</p>
+
+
+
+
+<div id="spadComm9-104" class="spadComm" >
+<form id="formComm9-104" action="javascript:makeRequest('9-104');" >
+<input id="comm9-104" type="text" class="command" style="width: 14em;" value="hullo := copy hello " />
+</form>
+<span id="commSav9-104" class="commSav" >hullo := copy hello </span>
+<div id="mathAns9-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Hello<mspace width="0.5em"/>,<mspace width="0.5em"/>I<mspace width="0.5em"/>'<mspace width="0.5em"/>m<mspace width="0.5em"/>AXIOM<mspace width="0.5em"/>!<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-105" class="spadComm" >
+<form id="formComm9-105" action="javascript:makeRequest('9-105');" >
+<input id="comm9-105" type="text" class="command" style="width: 24em;" value='hullo.2 := char "u"; [hello, hullo] ' />
+</form>
+<span id="commSav9-105" class="commSav" >hullo.2 := char "u"; [hello, hullo] </span>
+<div id="mathAns9-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Hello<mspace width="0.5em"/>,<mspace width="0.5em"/>I<mspace width="0.5em"/>'<mspace width="0.5em"/>m<mspace width="0.5em"/>AXIOM<mspace width="0.5em"/>!<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Hullo<mspace width="0.5em"/>,<mspace width="0.5em"/>I<mspace width="0.5em"/>'<mspace width="0.5em"/>m<mspace width="0.5em"/>AXIOM<mspace width="0.5em"/>!<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List String
+</div>
+
+
+
+<p>Operations are provided to split and join strings.  The
+<span class="spadfunFrom" >concat</span><span class="index">concat</span><a name="chapter-9-56"/><span class="index">String</span><a name="chapter-9-57"/> operation allows several strings to be
+joined together.
+</p>
+
+
+
+
+<div id="spadComm9-106" class="spadComm" >
+<form id="formComm9-106" action="javascript:makeRequest('9-106');" >
+<input id="comm9-106" type="text" class="command" style="width: 28em;" value='saidsaw := concat ["alpha","---","omega"] ' />
+</form>
+<span id="commSav9-106" class="commSav" >saidsaw := concat ["alpha","---","omega"] </span>
+<div id="mathAns9-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>alpha<mspace width="0.5em"/>-<mspace width="0.5em"/>-<mspace width="0.5em"/>-<mspace width="0.5em"/>omega<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>There is a version of <span class="spadfunFrom" >concat</span><span class="index">concat</span><a name="chapter-9-58"/><span class="index">String</span><a name="chapter-9-59"/> that works with
+two strings.
+</p>
+
+
+
+
+<div id="spadComm9-107" class="spadComm" >
+<form id="formComm9-107" action="javascript:makeRequest('9-107');" >
+<input id="comm9-107" type="text" class="command" style="width: 18em;" value='concat("hello ","goodbye")' />
+</form>
+<span id="commSav9-107" class="commSav" >concat("hello ","goodbye")</span>
+<div id="mathAns9-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>hello<mspace width="0.5em"/>goodbye<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Juxtaposition can also be used to concatenate strings.
+</p>
+
+
+
+
+<div id="spadComm9-108" class="spadComm" >
+<form id="formComm9-108" action="javascript:makeRequest('9-108');" >
+<input id="comm9-108" type="text" class="command" style="width: 34em;" value='"This " "is " "several " "strings " "concatenated."' />
+</form>
+<span id="commSav9-108" class="commSav" >"This " "is " "several " "strings " "concatenated."</span>
+<div id="mathAns9-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>This<mspace width="0.5em"/>is<mspace width="0.5em"/>several<mspace width="0.5em"/>strings<mspace width="0.5em"/>concatenated<mspace width="0.5em"/>.<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Substrings are obtained by giving an index range.
+</p>
+
+
+
+
+<div id="spadComm9-109" class="spadComm" >
+<form id="formComm9-109" action="javascript:makeRequest('9-109');" >
+<input id="comm9-109" type="text" class="command" style="width: 8em;" value="hello(1..5) " />
+</form>
+<span id="commSav9-109" class="commSav" >hello(1..5) </span>
+<div id="mathAns9-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Hello<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-110" class="spadComm" >
+<form id="formComm9-110" action="javascript:makeRequest('9-110');" >
+<input id="comm9-110" type="text" class="command" style="width: 8em;" value="hello(8..) " />
+</form>
+<span id="commSav9-110" class="commSav" >hello(8..) </span>
+<div id="mathAns9-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>I<mspace width="0.5em"/>'<mspace width="0.5em"/>m<mspace width="0.5em"/>AXIOM<mspace width="0.5em"/>!<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>A string can be split into several substrings by giving a separation
+character or character class.
+</p>
+
+
+
+
+<div id="spadComm9-111" class="spadComm" >
+<form id="formComm9-111" action="javascript:makeRequest('9-111');" >
+<input id="comm9-111" type="text" class="command" style="width: 15em;" value='split(hello, char " ")' />
+</form>
+<span id="commSav9-111" class="commSav" >split(hello, char " ")</span>
+<div id="mathAns9-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Hello<mspace width="0.5em"/>,<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>I<mspace width="0.5em"/>'<mspace width="0.5em"/>m<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>AXIOM<mspace width="0.5em"/>!<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List String
+</div>
+
+
+
+
+
+<div id="spadComm9-112" class="spadComm" >
+<form id="formComm9-112" action="javascript:makeRequest('9-112');" >
+<input id="comm9-112" type="text" class="command" style="width: 24em;" value="other := complement alphanumeric(); " />
+</form>
+<span id="commSav9-112" class="commSav" >other := complement alphanumeric(); </span>
+<div id="mathAns9-112" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-113" class="spadComm" >
+<form id="formComm9-113" action="javascript:makeRequest('9-113');" >
+<input id="comm9-113" type="text" class="command" style="width: 14em;" value="split(saidsaw, other)" />
+</form>
+<span id="commSav9-113" class="commSav" >split(saidsaw, other)</span>
+<div id="mathAns9-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>alpha<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>omega<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List String
+</div>
+
+
+
+<p>Unwanted characters can be trimmed from the beginning or end of a string
+using the operations <span class="spadfunFrom" >trim</span><span class="index">trim</span><a name="chapter-9-60"/><span class="index">String</span><a name="chapter-9-61"/>, <span class="spadfunFrom" >leftTrim</span><span class="index">leftTrim</span><a name="chapter-9-62"/><span class="index">String</span><a name="chapter-9-63"/>
+and <span class="spadfunFrom" >rightTrim</span><span class="index">rightTrim</span><a name="chapter-9-64"/><span class="index">String</span><a name="chapter-9-65"/>.
+</p>
+
+
+
+
+<div id="spadComm9-114" class="spadComm" >
+<form id="formComm9-114" action="javascript:makeRequest('9-114');" >
+<input id="comm9-114" type="text" class="command" style="width: 27em;" value='trim(" # # ++ relax ++  # #", char " #")' />
+</form>
+<span id="commSav9-114" class="commSav" >trim(" # # ++ relax ++  # #", char " #")</span>
+<div id="mathAns9-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>+<mspace width="0.5em"/>+<mspace width="0.5em"/>relax<mspace width="0.5em"/>+<mspace width="0.5em"/>+<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Each of these functions takes a string and a second argument to specify
+the characters to be discarded.
+</p>
+
+
+
+
+<div id="spadComm9-115" class="spadComm" >
+<form id="formComm9-115" action="javascript:makeRequest('9-115');" >
+<input id="comm9-115" type="text" class="command" style="width: 25em;" value='trim(" # # ++ relax ++  # #", other) ' />
+</form>
+<span id="commSav9-115" class="commSav" >trim(" # # ++ relax ++  # #", other) </span>
+<div id="mathAns9-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>relax<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>The second argument can be given either as a single character or as a
+character class.
+</p>
+
+
+
+
+<div id="spadComm9-116" class="spadComm" >
+<form id="formComm9-116" action="javascript:makeRequest('9-116');" >
+<input id="comm9-116" type="text" class="command" style="width: 28em;" value='leftTrim (" # # ++ relax ++  # #", other) ' />
+</form>
+<span id="commSav9-116" class="commSav" >leftTrim (" # # ++ relax ++  # #", other) </span>
+<div id="mathAns9-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>relax<mspace width="0.5em"/>+<mspace width="0.5em"/>+<mspace width="0.5em"/> #<mspace width="0.5em"/> #<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-117" class="spadComm" >
+<form id="formComm9-117" action="javascript:makeRequest('9-117');" >
+<input id="comm9-117" type="text" class="command" style="width: 28em;" value='rightTrim(" # # ++ relax ++  # #", other) ' />
+</form>
+<span id="commSav9-117" class="commSav" >rightTrim(" # # ++ relax ++  # #", other) </span>
+<div id="mathAns9-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/> #<mspace width="0.5em"/> #<mspace width="0.5em"/>+<mspace width="0.5em"/>+<mspace width="0.5em"/>relax<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Strings can be changed to upper case or lower case using the
+operations <span class="spadfunFrom" >upperCase</span><span class="index">upperCase</span><a name="chapter-9-66"/><span class="index">String</span><a name="chapter-9-67"/>,
+<span class="spadfunFrom" >upperCase!</span><span class="index">upperCase!</span><a name="chapter-9-68"/><span class="index">String</span><a name="chapter-9-69"/>, <span class="spadfunFrom" >lowerCase</span><span class="index">lowerCase</span><a name="chapter-9-70"/><span class="index">String</span><a name="chapter-9-71"/> and
+<span class="spadfunFrom" >lowerCase!</span><span class="index">lowerCase!</span><a name="chapter-9-72"/><span class="index">String</span><a name="chapter-9-73"/>.
+</p>
+
+
+
+
+<div id="spadComm9-118" class="spadComm" >
+<form id="formComm9-118" action="javascript:makeRequest('9-118');" >
+<input id="comm9-118" type="text" class="command" style="width: 11em;" value="upperCase hello " />
+</form>
+<span id="commSav9-118" class="commSav" >upperCase hello </span>
+<div id="mathAns9-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>HELLO<mspace width="0.5em"/>,<mspace width="0.5em"/>I<mspace width="0.5em"/>'<mspace width="0.5em"/>M<mspace width="0.5em"/>AXIOM<mspace width="0.5em"/>!<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>The versions with the exclamation mark change the original string,
+while the others produce a copy.
+</p>
+
+
+
+
+<div id="spadComm9-119" class="spadComm" >
+<form id="formComm9-119" action="javascript:makeRequest('9-119');" >
+<input id="comm9-119" type="text" class="command" style="width: 11em;" value="lowerCase hello " />
+</form>
+<span id="commSav9-119" class="commSav" >lowerCase hello </span>
+<div id="mathAns9-119" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>hello<mspace width="0.5em"/>,<mspace width="0.5em"/>i<mspace width="0.5em"/>'<mspace width="0.5em"/>m<mspace width="0.5em"/>axiom<mspace width="0.5em"/>!<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Some basic string matching is provided.  The function
+<span class="spadfunFrom" >prefix?</span><span class="index">prefix?</span><a name="chapter-9-74"/><span class="index">String</span><a name="chapter-9-75"/> tests whether one string is an initial
+prefix of another.
+</p>
+
+
+
+
+<div id="spadComm9-120" class="spadComm" >
+<form id="formComm9-120" action="javascript:makeRequest('9-120');" >
+<input id="comm9-120" type="text" class="command" style="width: 15em;" value='prefix?("He", "Hello")' />
+</form>
+<span id="commSav9-120" class="commSav" >prefix?("He", "Hello")</span>
+<div id="mathAns9-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-121" class="spadComm" >
+<form id="formComm9-121" action="javascript:makeRequest('9-121');" >
+<input id="comm9-121" type="text" class="command" style="width: 16em;" value='prefix?("Her", "Hello")' />
+</form>
+<span id="commSav9-121" class="commSav" >prefix?("Her", "Hello")</span>
+<div id="mathAns9-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>A similar function, <span class="spadfunFrom" >suffix?</span><span class="index">suffix?</span><a name="chapter-9-76"/><span class="index">String</span><a name="chapter-9-77"/>, tests for suffixes.
+</p>
+
+
+
+
+<div id="spadComm9-122" class="spadComm" >
+<form id="formComm9-122" action="javascript:makeRequest('9-122');" >
+<input id="comm9-122" type="text" class="command" style="width: 14em;" value='suffix?("", "Hello")' />
+</form>
+<span id="commSav9-122" class="commSav" >suffix?("", "Hello")</span>
+<div id="mathAns9-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-123" class="spadComm" >
+<form id="formComm9-123" action="javascript:makeRequest('9-123');" >
+<input id="comm9-123" type="text" class="command" style="width: 15em;" value='suffix?("LO", "Hello")' />
+</form>
+<span id="commSav9-123" class="commSav" >suffix?("LO", "Hello")</span>
+<div id="mathAns9-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The function <span class="spadfunFrom" >substring?</span><span class="index">substring?</span><a name="chapter-9-78"/><span class="index">String</span><a name="chapter-9-79"/> tests for a substring
+given a starting position.
+</p>
+
+
+
+
+<div id="spadComm9-124" class="spadComm" >
+<form id="formComm9-124" action="javascript:makeRequest('9-124');" >
+<input id="comm9-124" type="text" class="command" style="width: 19em;" value='substring?("ll", "Hello", 3)' />
+</form>
+<span id="commSav9-124" class="commSav" >substring?("ll", "Hello", 3)</span>
+<div id="mathAns9-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-125" class="spadComm" >
+<form id="formComm9-125" action="javascript:makeRequest('9-125');" >
+<input id="comm9-125" type="text" class="command" style="width: 19em;" value='substring?("ll", "Hello", 4)' />
+</form>
+<span id="commSav9-125" class="commSav" >substring?("ll", "Hello", 4)</span>
+<div id="mathAns9-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>A number of <span class="spadfunFrom" >position</span><span class="index">position</span><a name="chapter-9-80"/><span class="index">String</span><a name="chapter-9-81"/> functions locate things in strings.
+If the first argument to position is a string, then <span class="teletype">position(s,t,i)</span>
+finds the location of <span class="teletype">s</span> as a substring of <span class="teletype">t</span> starting the
+search at position <span class="teletype">i</span>.
+</p>
+
+
+
+
+<div id="spadComm9-126" class="spadComm" >
+<form id="formComm9-126" action="javascript:makeRequest('9-126');" >
+<input id="comm9-126" type="text" class="command" style="width: 27em;" value='n := position("nd", "underground",   1) ' />
+</form>
+<span id="commSav9-126" class="commSav" >n := position("nd", "underground",   1) </span>
+<div id="mathAns9-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-127" class="spadComm" >
+<form id="formComm9-127" action="javascript:makeRequest('9-127');" >
+<input id="comm9-127" type="text" class="command" style="width: 28em;" value='n := position("nd", "underground", n+1)  ' />
+</form>
+<span id="commSav9-127" class="commSav" >n := position("nd", "underground", n+1)  </span>
+<div id="mathAns9-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>10</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>If <span class="teletype">s</span> is not found, then <span class="teletype">0</span> is returned (<span class="teletype">minIndex(s)-1</span>
+in <span class="teletype">IndexedString</span>).
+</p>
+
+
+
+
+<div id="spadComm9-128" class="spadComm" >
+<form id="formComm9-128" action="javascript:makeRequest('9-128');" >
+<input id="comm9-128" type="text" class="command" style="width: 27em;" value='n := position("nd", "underground", n+1) ' />
+</form>
+<span id="commSav9-128" class="commSav" >n := position("nd", "underground", n+1) </span>
+<div id="mathAns9-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>To search for a specific character or a member of a character class,
+a different first argument is used.
+</p>
+
+
+
+
+<div id="spadComm9-129" class="spadComm" >
+<form id="formComm9-129" action="javascript:makeRequest('9-129');" >
+<input id="comm9-129" type="text" class="command" style="width: 24em;" value='position(char "d", "underground", 1)' />
+</form>
+<span id="commSav9-129" class="commSav" >position(char "d", "underground", 1)</span>
+<div id="mathAns9-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-130" class="spadComm" >
+<form id="formComm9-130" action="javascript:makeRequest('9-130');" >
+<input id="comm9-130" type="text" class="command" style="width: 26em;" value='position(hexDigit(), "underground", 1)' />
+</form>
+<span id="commSav9-130" class="commSav" >position(hexDigit(), "underground", 1)</span>
+<div id="mathAns9-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.76.xhtml" style="margin-right: 10px;">Previous Section 9.76 Stream</a><a href="section-9.78.xhtml" style="margin-right: 10px;">Next Section 9.78 StringTable</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.78.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.78.xhtml
new file mode 100644
index 0000000..95f5658
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.78.xhtml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.78</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.77.xhtml" style="margin-right: 10px;">Previous Section 9.77 String</a><a href="section-9.79.xhtml" style="margin-right: 10px;">Next Section 9.79 Symbol</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.78">
+<h2 class="sectiontitle">9.78  StringTable</h2>
+
+
+<a name="StringTableXmpPage" class="label"/>
+
+
+<p>This domain provides a table type in which the keys are known to be
+strings so special techniques can be used.  Other than performance,
+the type <span class="teletype">StringTable(S)</span> should behave exactly the same way as
+<span class="teletype">Table(String,S)</span>.  See <a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a> 
+for general information about tables.
+</p>
+
+
+<p>This creates a new table whose keys are strings.
+</p>
+
+
+
+
+<div id="spadComm9-131" class="spadComm" >
+<form id="formComm9-131" action="javascript:makeRequest('9-131');" >
+<input id="comm9-131" type="text" class="command" style="width: 24em;" value="t: StringTable(Integer) := table()  " />
+</form>
+<span id="commSav9-131" class="commSav" >t: StringTable(Integer) := table()  </span>
+<div id="mathAns9-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>table</mi><mo>(</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: StringTable Integer
+</div>
+
+
+
+<p>The value associated with each string key is the number of characters
+in the string.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+for&nbsp;s&nbsp;in&nbsp;split("My&nbsp;name&nbsp;is&nbsp;Ian&nbsp;Watt.",char&nbsp;"&nbsp;")<br />
+&nbsp;&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;t.s&nbsp;:=&nbsp;#s<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-132" class="spadComm" >
+<form id="formComm9-132" action="javascript:makeRequest('9-132');" >
+<input id="comm9-132" type="text" class="command" style="width: 30em;" value="for key in keys t repeat output [key, t.key] " />
+</form>
+<span id="commSav9-132" class="commSav" >for key in keys t repeat output [key, t.key] </span>
+<div id="mathAns9-132" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+&nbsp;&nbsp;&nbsp;["Ian",3]<br />
+&nbsp;&nbsp;&nbsp;["My",2]<br />
+&nbsp;&nbsp;&nbsp;["Watt.",5]<br />
+&nbsp;&nbsp;&nbsp;["name",4]<br />
+&nbsp;&nbsp;&nbsp;["is",2]<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.77.xhtml" style="margin-right: 10px;">Previous Section 9.77 String</a><a href="section-9.79.xhtml" style="margin-right: 10px;">Next Section 9.79 Symbol</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.79.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.79.xhtml
new file mode 100644
index 0000000..8c3de54
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.79.xhtml
@@ -0,0 +1,808 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.79</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.78.xhtml" style="margin-right: 10px;">Previous Section 9.78 StringTable</a><a href="section-9.80.xhtml" style="margin-right: 10px;">Next Section 9.80 Table</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.79">
+<h2 class="sectiontitle">9.79  Symbol</h2>
+
+
+<a name="SymbolXmpPage" class="label"/>
+
+<p> 
+Symbols are one of the basic types manipulated by Axiom.  The 
+<span class="teletype">Symbol</span> domain provides ways to create symbols of many varieties.
+</p>
+
+
+<p>The simplest way to create a symbol is to ``single quote'' an identifier.
+</p>
+
+
+
+
+<div id="spadComm9-133" class="spadComm" >
+<form id="formComm9-133" action="javascript:makeRequest('9-133');" >
+<input id="comm9-133" type="text" class="command" style="width: 11em;" value="X: Symbol := 'x " />
+</form>
+<span id="commSav9-133" class="commSav" >X: Symbol := 'x </span>
+<div id="mathAns9-133" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>This gives the symbol even if <span class="teletype">x</span> has been assigned a value.  If
+<span class="teletype">x</span> has not been assigned a value, then it is possible to omit the
+quote.
+</p>
+
+
+
+
+<div id="spadComm9-134" class="spadComm" >
+<form id="formComm9-134" action="javascript:makeRequest('9-134');" >
+<input id="comm9-134" type="text" class="command" style="width: 10em;" value="XX: Symbol := x" />
+</form>
+<span id="commSav9-134" class="commSav" >XX: Symbol := x</span>
+<div id="mathAns9-134" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>Declarations must be used when working with symbols, because otherwise
+the interpreter tries to place values in a more specialized type 
+<span class="teletype">Variable</span>.
+</p>
+
+
+
+
+<div id="spadComm9-135" class="spadComm" >
+<form id="formComm9-135" action="javascript:makeRequest('9-135');" >
+<input id="comm9-135" type="text" class="command" style="width: 5em;" value="A := 'a" />
+</form>
+<span id="commSav9-135" class="commSav" >A := 'a</span>
+<div id="mathAns9-135" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>a</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Variable a
+</div>
+
+
+
+
+
+<div id="spadComm9-136" class="spadComm" >
+<form id="formComm9-136" action="javascript:makeRequest('9-136');" >
+<input id="comm9-136" type="text" class="command" style="width: 4em;" value="B := b" />
+</form>
+<span id="commSav9-136" class="commSav" >B := b</span>
+<div id="mathAns9-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Variable b
+</div>
+
+
+
+<p>The normal way of entering polynomials uses this fact.
+</p>
+
+
+
+
+<div id="spadComm9-137" class="spadComm" >
+<form id="formComm9-137" action="javascript:makeRequest('9-137');" >
+<input id="comm9-137" type="text" class="command" style="width: 6em;" value="x**2 + 1" />
+</form>
+<span id="commSav9-137" class="commSav" >x**2 + 1</span>
+<div id="mathAns9-137" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+<p>Another convenient way to create symbols is to convert a string.
+This is useful when the name is to be constructed by a program.
+</p>
+
+
+
+
+<div id="spadComm9-138" class="spadComm" >
+<form id="formComm9-138" action="javascript:makeRequest('9-138');" >
+<input id="comm9-138" type="text" class="command" style="width: 10em;" value='"Hello"::Symbol' />
+</form>
+<span id="commSav9-138" class="commSav" >"Hello"::Symbol</span>
+<div id="mathAns9-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>Hello</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>Sometimes it is necessary to generate new unique symbols, for example,
+to name constants of integration.  The expression <span class="teletype">new()</span>
+generates a symbol starting with <span class="teletype">%</span>.
+</p>
+
+
+
+
+<div id="spadComm9-139" class="spadComm" >
+<form id="formComm9-139" action="javascript:makeRequest('9-139');" >
+<input id="comm9-139" type="text" class="command" style="width: 8em;" value="new()$Symbol" />
+</form>
+<span id="commSav9-139" class="commSav" >new()$Symbol</span>
+<div id="mathAns9-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><mi>A</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>Successive calls to <span class="spadfunFrom" >new</span><span class="index">new</span><a name="chapter-9-82"/><span class="index">Symbol</span><a name="chapter-9-83"/> produce different symbols.
+</p>
+
+
+
+
+<div id="spadComm9-140" class="spadComm" >
+<form id="formComm9-140" action="javascript:makeRequest('9-140');" >
+<input id="comm9-140" type="text" class="command" style="width: 8em;" value="new()$Symbol" />
+</form>
+<span id="commSav9-140" class="commSav" >new()$Symbol</span>
+<div id="mathAns9-140" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><mi>B</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>The expression <span class="teletype">new("s")</span> produces a symbol starting with <span class="teletype">%s</span>.
+</p>
+
+
+
+
+<div id="spadComm9-141" class="spadComm" >
+<form id="formComm9-141" action="javascript:makeRequest('9-141');" >
+<input id="comm9-141" type="text" class="command" style="width: 12em;" value='new("xyz")$Symbol' />
+</form>
+<span id="commSav9-141" class="commSav" >new("xyz")$Symbol</span>
+<div id="mathAns9-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>%</mo><mi>xyz0</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>A symbol can be adorned in various ways.  The most basic thing is
+applying a symbol to a list of subscripts.
+</p>
+
+
+
+
+<div id="spadComm9-142" class="spadComm" >
+<form id="formComm9-142" action="javascript:makeRequest('9-142');" >
+<input id="comm9-142" type="text" class="command" style="width: 5em;" value="X[i,j] " />
+</form>
+<span id="commSav9-142" class="commSav" >X[i,j] </span>
+<div id="mathAns9-142" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>Somewhat less pretty is to attach subscripts, superscripts or arguments.
+</p>
+
+
+
+
+<div id="spadComm9-143" class="spadComm" >
+<form id="formComm9-143" action="javascript:makeRequest('9-143');" >
+<input id="comm9-143" type="text" class="command" style="width: 20em;" value="U := subscript(u, [1,2,1,2]) " />
+</form>
+<span id="commSav9-143" class="commSav" >U := subscript(u, [1,2,1,2]) </span>
+<div id="mathAns9-143" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msub><mi>u</mi><mrow><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn></mrow></msub></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-144" class="spadComm" >
+<form id="formComm9-144" action="javascript:makeRequest('9-144');" >
+<input id="comm9-144" type="text" class="command" style="width: 17em;" value="V := superscript(v, [n]) " />
+</form>
+<span id="commSav9-144" class="commSav" >V := superscript(v, [n]) </span>
+<div id="mathAns9-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mi>v</mi><mi>n</mi></msup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-145" class="spadComm" >
+<form id="formComm9-145" action="javascript:makeRequest('9-145');" >
+<input id="comm9-145" type="text" class="command" style="width: 16em;" value="P := argscript(p, [t]) " />
+</form>
+<span id="commSav9-145" class="commSav" >P := argscript(p, [t]) </span>
+<div id="mathAns9-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msub><mi>p</mi><mo></mo></msub></mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+<p>It is possible to test whether a symbol has scripts using the
+<span class="spadfunFrom" >scripted?</span><span class="index">scripted?</span><a name="chapter-9-84"/><span class="index">Symbol</span><a name="chapter-9-85"/> test.
+</p>
+
+
+
+
+<div id="spadComm9-146" class="spadComm" >
+<form id="formComm9-146" action="javascript:makeRequest('9-146');" >
+<input id="comm9-146" type="text" class="command" style="width: 8em;" value="scripted? U " />
+</form>
+<span id="commSav9-146" class="commSav" >scripted? U </span>
+<div id="mathAns9-146" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-147" class="spadComm" >
+<form id="formComm9-147" action="javascript:makeRequest('9-147');" >
+<input id="comm9-147" type="text" class="command" style="width: 8em;" value="scripted? X " />
+</form>
+<span id="commSav9-147" class="commSav" >scripted? X </span>
+<div id="mathAns9-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>If a symbol is not scripted, then it may be converted to a string.
+</p>
+
+
+
+
+<div id="spadComm9-148" class="spadComm" >
+<form id="formComm9-148" action="javascript:makeRequest('9-148');" >
+<input id="comm9-148" type="text" class="command" style="width: 6em;" value="string X " />
+</form>
+<span id="commSav9-148" class="commSav" >string X </span>
+<div id="mathAns9-148" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>x<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>The basic parts can always be extracted using the
+<span class="spadfunFrom" >name</span><span class="index">name</span><a name="chapter-9-86"/><span class="index">Symbol</span><a name="chapter-9-87"/> and <span class="spadfunFrom" >scripts</span><span class="index">scripts</span><a name="chapter-9-88"/><span class="index">Symbol</span><a name="chapter-9-89"/>
+operations.
+</p>
+
+
+
+
+<div id="spadComm9-149" class="spadComm" >
+<form id="formComm9-149" action="javascript:makeRequest('9-149');" >
+<input id="comm9-149" type="text" class="command" style="width: 5em;" value="name U " />
+</form>
+<span id="commSav9-149" class="commSav" >name U </span>
+<div id="mathAns9-149" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>u</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-150" class="spadComm" >
+<form id="formComm9-150" action="javascript:makeRequest('9-150');" >
+<input id="comm9-150" type="text" class="command" style="width: 7em;" value="scripts U " />
+</form>
+<span id="commSav9-150" class="commSav" >scripts U </span>
+<div id="mathAns9-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>sub</mi><mo>=</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>sup</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>presup</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>presub</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>args</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Record(
+sub: List OutputForm,
+sup: List OutputForm,
+presup: List OutputForm,
+presub: List OutputForm,
+args: List OutputForm)
+</div>
+
+
+
+
+
+<div id="spadComm9-151" class="spadComm" >
+<form id="formComm9-151" action="javascript:makeRequest('9-151');" >
+<input id="comm9-151" type="text" class="command" style="width: 5em;" value="name X " />
+</form>
+<span id="commSav9-151" class="commSav" >name X </span>
+<div id="mathAns9-151" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-152" class="spadComm" >
+<form id="formComm9-152" action="javascript:makeRequest('9-152');" >
+<input id="comm9-152" type="text" class="command" style="width: 7em;" value="scripts X " />
+</form>
+<span id="commSav9-152" class="commSav" >scripts X </span>
+<div id="mathAns9-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>sub</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>sup</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>presup</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>presub</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>args</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Record(
+sub: List OutputForm,
+sup: List OutputForm,
+presup: List OutputForm,
+presub: List OutputForm,
+args: List OutputForm)
+</div>
+
+
+
+<p>The most general form is obtained using the
+<span class="spadfunFrom" >script</span><span class="index">script</span><a name="chapter-9-90"/><span class="index">Symbol</span><a name="chapter-9-91"/> operation.  This operation takes an
+argument which is a list containing, in this order, lists of
+subscripts, superscripts, presuperscripts, presubscripts and arguments
+to a symbol.
+</p>
+
+
+
+
+<div id="spadComm9-153" class="spadComm" >
+<form id="formComm9-153" action="javascript:makeRequest('9-153');" >
+<input id="comm9-153" type="text" class="command" style="width: 38em;" value="M := script(Mammoth, [ [i,j],[k,l],[0,1],[2],[u,v,w] ]) " />
+</form>
+<span id="commSav9-153" class="commSav" >M := script(Mammoth, [ [i,j],[k,l],[0,1],[2],[u,v,w] ]) </span>
+<div id="mathAns9-153" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msubsup><mo></mo><mrow><mn>2</mn></mrow><mrow><mrow><mn>0</mn><mo>,</mo><mn>1</mn></mrow></mrow></msubsup><msubsup><mi>Mammoth</mi><mrow><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></mrow><mrow><mrow><mi>k</mi><mo>,</mo><mi>l</mi></mrow></mrow></msubsup></mrow><mo>(</mo><mrow><mi>u</mi><mo>,</mo><mi>v</mi><mo>,</mo><mi>w</mi></mrow><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-154" class="spadComm" >
+<form id="formComm9-154" action="javascript:makeRequest('9-154');" >
+<input id="comm9-154" type="text" class="command" style="width: 7em;" value="scripts M " />
+</form>
+<span id="commSav9-154" class="commSav" >scripts M </span>
+<div id="mathAns9-154" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>sub</mi><mo>=</mo><mrow><mo>[</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>sup</mi><mo>=</mo><mrow><mo>[</mo><mi>k</mi><mo>,</mo><mi>l</mi><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>presup</mi><mo>=</mo><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>presub</mi><mo>=</mo><mrow><mo>[</mo><mn>2</mn><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>args</mi><mo>=</mo><mrow><mo>[</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>,</mo><mi>w</mi><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Record(
+sub: List OutputForm,
+sup: List OutputForm,
+presup: List OutputForm,
+presub: List OutputForm,
+args: List OutputForm)
+</div>
+
+
+
+<p>If trailing lists of scripts are omitted, they are assumed to be empty.
+</p>
+
+
+
+
+<div id="spadComm9-155" class="spadComm" >
+<form id="formComm9-155" action="javascript:makeRequest('9-155');" >
+<input id="comm9-155" type="text" class="command" style="width: 27em;" value="N := script(Nut, [ [i,j],[k,l],[0,1] ]) " />
+</form>
+<span id="commSav9-155" class="commSav" >N := script(Nut, [ [i,j],[k,l],[0,1] ]) </span>
+<div id="mathAns9-155" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><msup><mo></mo><mrow><mn>0</mn><mo>,</mo><mn>1</mn></mrow></msup><msubsup><mi>Nut</mi><mrow><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></mrow><mrow><mrow><mi>k</mi><mo>,</mo><mi>l</mi></mrow></mrow></msubsup></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-156" class="spadComm" >
+<form id="formComm9-156" action="javascript:makeRequest('9-156');" >
+<input id="comm9-156" type="text" class="command" style="width: 7em;" value="scripts N " />
+</form>
+<span id="commSav9-156" class="commSav" >scripts N </span>
+<div id="mathAns9-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>sub</mi><mo>=</mo><mrow><mo>[</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>sup</mi><mo>=</mo><mrow><mo>[</mo><mi>k</mi><mo>,</mo><mi>l</mi><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>presup</mi><mo>=</mo><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>presub</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>args</mi><mo>=</mo><mrow><mo>[</mo><mo>]</mo></mrow></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Record(
+sub: List OutputForm,
+sup: List OutputForm,
+presup: List OutputForm,
+presub: List OutputForm,
+args: List OutputForm)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.78.xhtml" style="margin-right: 10px;">Previous Section 9.78 StringTable</a><a href="section-9.80.xhtml" style="margin-right: 10px;">Next Section 9.80 Table</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.8.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.8.xhtml
new file mode 100644
index 0000000..71344eb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.8.xhtml
@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.8</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.7.xhtml" style="margin-right: 10px;">Previous Section 9.7 CartesianTensor</a><a href="section-9.9.xhtml" style="margin-right: 10px;">Next Section 9.9 CharacterClass</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.8">
+<h2 class="sectiontitle">9.8  Character</h2>
+
+
+<a name="CharacterXmpPage" class="label"/>
+
+<p>The members of the domain <span class="teletype">Character</span> are values
+representing letters, numerals and other text elements.
+For more information on related topics, see
+<a href="section-9.9.xhtml#CharacterClassXmpPage" class="ref" >CharacterClassXmpPage</a>  and 
+<a href="section-9.77.xhtml#StringXmpPage" class="ref" >StringXmpPage</a> .
+</p>
+
+
+<p>Characters can be obtained using <span class="teletype">String</span> notation.
+</p>
+
+
+
+
+<div id="spadComm9-125" class="spadComm" >
+<form id="formComm9-125" action="javascript:makeRequest('9-125');" >
+<input id="comm9-125" type="text" class="command" style="width: 40em;" value='chars := [char "a", char "A", char "X", char "8", char "+"]' />
+</form>
+<span id="commSav9-125" class="commSav" >chars := [char "a", char "A", char "X", char "8", char "+"]</span>
+<div id="mathAns9-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>a</mi><mo>,</mo><mi>A</mi><mo>,</mo><mi>X</mi><mo>,</mo><mn>8</mn><mo>,</mo><mo>+</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Character
+</div>
+
+
+
+<p>Certain characters are available by name.
+This is the blank character.
+</p>
+
+
+
+
+<div id="spadComm9-126" class="spadComm" >
+<form id="formComm9-126" action="javascript:makeRequest('9-126');" >
+<input id="comm9-126" type="text" class="command" style="width: 5em;" value="space()" />
+</form>
+<span id="commSav9-126" class="commSav" >space()</span>
+<div id="mathAns9-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mspace width="0.5 em" /></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Character
+</div>
+
+
+
+<p>This is the quote that is used in strings.
+</p>
+
+
+
+
+<div id="spadComm9-127" class="spadComm" >
+<form id="formComm9-127" action="javascript:makeRequest('9-127');" >
+<input id="comm9-127" type="text" class="command" style="width: 5em;" value="quote()" />
+</form>
+<span id="commSav9-127" class="commSav" >quote()</span>
+<div id="mathAns9-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Character
+</div>
+
+
+
+<p>This is the escape character that allows quotes and other characters
+within strings.
+</p>
+
+
+
+
+<div id="spadComm9-128" class="spadComm" >
+<form id="formComm9-128" action="javascript:makeRequest('9-128');" >
+<input id="comm9-128" type="text" class="command" style="width: 6em;" value="escape()" />
+</form>
+<span id="commSav9-128" class="commSav" >escape()</span>
+<div id="mathAns9-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mo>_</mo></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Character
+</div>
+
+
+
+<p>Characters are represented as integers in a machine-dependent way.
+The integer value can be obtained using the
+<span class="spadfunFrom" >ord</span><span class="index">ord</span><a name="chapter-9-47"/><span class="index">Character</span><a name="chapter-9-48"/> operation.  It is always true that <span class="teletype">char(ord c) = c</span> and <span class="teletype">ord(char i) = i</span>, provided that <span class="teletype">i</span> is
+in the range <span class="teletype">0..size()$Character-1</span>.
+</p>
+
+
+
+
+<div id="spadComm9-129" class="spadComm" >
+<form id="formComm9-129" action="javascript:makeRequest('9-129');" >
+<input id="comm9-129" type="text" class="command" style="width: 15em;" value="[ord c for c in chars]" />
+</form>
+<span id="commSav9-129" class="commSav" >[ord c for c in chars]</span>
+<div id="mathAns9-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>97</mn><mo>,</mo><mn>65</mn><mo>,</mo><mn>88</mn><mo>,</mo><mn>56</mn><mo>,</mo><mn>43</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+<p> 
+The <span class="spadfunFrom" >lowerCase</span><span class="index">lowerCase</span><a name="chapter-9-49"/><span class="index">Character</span><a name="chapter-9-50"/> operation converts an upper
+case letter to the corresponding lower case letter.  If the argument
+is not an upper case letter, then it is returned unchanged.
+</p>
+
+
+
+
+<div id="spadComm9-130" class="spadComm" >
+<form id="formComm9-130" action="javascript:makeRequest('9-130');" >
+<input id="comm9-130" type="text" class="command" style="width: 19em;" value="[upperCase c for c in chars]" />
+</form>
+<span id="commSav9-130" class="commSav" >[upperCase c for c in chars]</span>
+<div id="mathAns9-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>A</mi><mo>,</mo><mi>A</mi><mo>,</mo><mi>X</mi><mo>,</mo><mn>8</mn><mo>,</mo><mo>+</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Character
+</div>
+
+
+
+<p>Likewise, the <span class="spadfunFrom" >upperCase</span><span class="index">upperCase</span><a name="chapter-9-51"/><span class="index">Character</span><a name="chapter-9-52"/> operation converts lower
+case letters to upper case.
+</p>
+
+
+
+
+<div id="spadComm9-131" class="spadComm" >
+<form id="formComm9-131" action="javascript:makeRequest('9-131');" >
+<input id="comm9-131" type="text" class="command" style="width: 20em;" value="[lowerCase c for c in chars] " />
+</form>
+<span id="commSav9-131" class="commSav" >[lowerCase c for c in chars] </span>
+<div id="mathAns9-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>a</mi><mo>,</mo><mi>a</mi><mo>,</mo><mi>x</mi><mo>,</mo><mn>8</mn><mo>,</mo><mo>+</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Character
+</div>
+
+
+
+<p>A number of tests are available to determine whether characters
+belong to certain families.
+</p>
+
+
+
+
+<div id="spadComm9-132" class="spadComm" >
+<form id="formComm9-132" action="javascript:makeRequest('9-132');" >
+<input id="comm9-132" type="text" class="command" style="width: 21em;" value="[alphabetic? c for c in chars] " />
+</form>
+<span id="commSav9-132" class="commSav" >[alphabetic? c for c in chars] </span>
+<div id="mathAns9-132" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-133" class="spadComm" >
+<form id="formComm9-133" action="javascript:makeRequest('9-133');" >
+<input id="comm9-133" type="text" class="command" style="width: 20em;" value="[upperCase? c for c in chars] " />
+</form>
+<span id="commSav9-133" class="commSav" >[upperCase? c for c in chars] </span>
+<div id="mathAns9-133" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-134" class="spadComm" >
+<form id="formComm9-134" action="javascript:makeRequest('9-134');" >
+<input id="comm9-134" type="text" class="command" style="width: 20em;" value="[lowerCase? c for c in chars] " />
+</form>
+<span id="commSav9-134" class="commSav" >[lowerCase? c for c in chars] </span>
+<div id="mathAns9-134" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-135" class="spadComm" >
+<form id="formComm9-135" action="javascript:makeRequest('9-135');" >
+<input id="comm9-135" type="text" class="command" style="width: 18em;" value="[digit? c for c in chars] " />
+</form>
+<span id="commSav9-135" class="commSav" >[digit? c for c in chars] </span>
+<div id="mathAns9-135" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-136" class="spadComm" >
+<form id="formComm9-136" action="javascript:makeRequest('9-136');" >
+<input id="comm9-136" type="text" class="command" style="width: 20em;" value="[hexDigit? c for c in chars] " />
+</form>
+<span id="commSav9-136" class="commSav" >[hexDigit? c for c in chars] </span>
+<div id="mathAns9-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-137" class="spadComm" >
+<form id="formComm9-137" action="javascript:makeRequest('9-137');" >
+<input id="comm9-137" type="text" class="command" style="width: 22em;" value="[alphanumeric? c for c in chars] " />
+</form>
+<span id="commSav9-137" class="commSav" >[alphanumeric? c for c in chars] </span>
+<div id="mathAns9-137" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>true</mtext></mrow><mo>,</mo><mrow><mtext mathvariant='monospace'>false</mtext></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Boolean
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.7.xhtml" style="margin-right: 10px;">Previous Section 9.7 CartesianTensor</a><a href="section-9.9.xhtml" style="margin-right: 10px;">Next Section 9.9 CharacterClass</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.80.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.80.xhtml
new file mode 100644
index 0000000..7888cd6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.80.xhtml
@@ -0,0 +1,663 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.80</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.79.xhtml" style="margin-right: 10px;">Previous Section 9.79 Symbol</a><a href="section-9.81.xhtml" style="margin-right: 10px;">Next Section 9.81 TextFile</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.80">
+<h2 class="sectiontitle">9.80  Table</h2>
+
+
+<a name="TableXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">Table</span> constructor provides a general structure for
+associative storage.  This type provides hash tables in which data
+objects can be saved according to keys of any type.  For a given
+table, specific types must be chosen for the keys and entries.
+</p>
+
+
+<p>In this example the keys to the table are polynomials with integer
+coefficients.  The entries in the table are strings.
+</p>
+
+
+
+
+<div id="spadComm9-157" class="spadComm" >
+<form id="formComm9-157" action="javascript:makeRequest('9-157');" >
+<input id="comm9-157" type="text" class="command" style="width: 32em;" value="t: Table(Polynomial Integer, String) := table() " />
+</form>
+<span id="commSav9-157" class="commSav" >t: Table(Polynomial Integer, String) := table() </span>
+<div id="mathAns9-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>table</mi><mo>(</mo><mo>)</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Table(Polynomial Integer,String)
+</div>
+
+
+
+<p>To save an entry in the table, the <span class="spadfunFrom" >setelt</span><span class="index">setelt</span><a name="chapter-9-92"/><span class="index">Table</span><a name="chapter-9-93"/>
+operation is used.  This can be called directly, giving the table a
+key and an entry.
+</p>
+
+
+
+
+<div id="spadComm9-158" class="spadComm" >
+<form id="formComm9-158" action="javascript:makeRequest('9-158');" >
+<input id="comm9-158" type="text" class="command" style="width: 26em;" value='setelt(t, x**2 - 1, "Easy to factor") ' />
+</form>
+<span id="commSav9-158" class="commSav" >setelt(t, x**2 - 1, "Easy to factor") </span>
+<div id="mathAns9-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Easy<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Alternatively, you can use assignment syntax.
+</p>
+
+
+
+
+<div id="spadComm9-159" class="spadComm" >
+<form id="formComm9-159" action="javascript:makeRequest('9-159');" >
+<input id="comm9-159" type="text" class="command" style="width: 23em;" value='t(x**3 + 1) := "Harder to factor" ' />
+</form>
+<span id="commSav9-159" class="commSav" >t(x**3 + 1) := "Harder to factor" </span>
+<div id="mathAns9-159" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Harder<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-160" class="spadComm" >
+<form id="formComm9-160" action="javascript:makeRequest('9-160');" >
+<input id="comm9-160" type="text" class="command" style="width: 22em;" value='t(x) := "The easiest to factor" ' />
+</form>
+<span id="commSav9-160" class="commSav" >t(x) := "The easiest to factor" </span>
+<div id="mathAns9-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>The<mspace width="0.5em"/>easiest<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Entries are retrieved from the table by calling the
+<span class="spadfunFrom" >elt</span><span class="index">elt</span><a name="chapter-9-94"/><span class="index">Table</span><a name="chapter-9-95"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-161" class="spadComm" >
+<form id="formComm9-161" action="javascript:makeRequest('9-161');" >
+<input id="comm9-161" type="text" class="command" style="width: 7em;" value="elt(t, x) " />
+</form>
+<span id="commSav9-161" class="commSav" >elt(t, x) </span>
+<div id="mathAns9-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>The<mspace width="0.5em"/>easiest<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>This operation is called when a table is ``applied'' to a key using
+this or the following syntax.
+</p>
+
+
+
+
+<div id="spadComm9-162" class="spadComm" >
+<form id="formComm9-162" action="javascript:makeRequest('9-162');" >
+<input id="comm9-162" type="text" class="command" style="width: 3em;" value="t.x " />
+</form>
+<span id="commSav9-162" class="commSav" >t.x </span>
+<div id="mathAns9-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>The<mspace width="0.5em"/>easiest<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-163" class="spadComm" >
+<form id="formComm9-163" action="javascript:makeRequest('9-163');" >
+<input id="comm9-163" type="text" class="command" style="width: 3em;" value="t x " />
+</form>
+<span id="commSav9-163" class="commSav" >t x </span>
+<div id="mathAns9-163" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>The<mspace width="0.5em"/>easiest<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Parentheses are used only for grouping.  They are needed if the key is
+an infixed expression.
+</p>
+
+
+
+
+<div id="spadComm9-164" class="spadComm" >
+<form id="formComm9-164" action="javascript:makeRequest('9-164');" >
+<input id="comm9-164" type="text" class="command" style="width: 9em;" value="t.(x**2 - 1) " />
+</form>
+<span id="commSav9-164" class="commSav" >t.(x**2 - 1) </span>
+<div id="mathAns9-164" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Easy<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Note that the <span class="spadfunFrom" >elt</span><span class="index">elt</span><a name="chapter-9-96"/><span class="index">Table</span><a name="chapter-9-97"/> operation is used only when the
+key is known to be in the table---otherwise an error is generated.
+</p>
+
+
+
+
+<div id="spadComm9-165" class="spadComm" >
+<form id="formComm9-165" action="javascript:makeRequest('9-165');" >
+<input id="comm9-165" type="text" class="command" style="width: 9em;" value="t (x**3 + 1) " />
+</form>
+<span id="commSav9-165" class="commSav" >t (x**3 + 1) </span>
+<div id="mathAns9-165" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Harder<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>You can get a list of all the keys to a table using the
+<span class="spadfunFrom" >keys</span><span class="index">keys</span><a name="chapter-9-98"/><span class="index">Table</span><a name="chapter-9-99"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-166" class="spadComm" >
+<form id="formComm9-166" action="javascript:makeRequest('9-166');" >
+<input id="comm9-166" type="text" class="command" style="width: 5em;" value="keys t " />
+</form>
+<span id="commSav9-166" class="commSav" >keys t </span>
+<div id="mathAns9-166" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+<p>If you wish to test whether a key is in a table, the
+<span class="spadfunFrom" >search</span><span class="index">search</span><a name="chapter-9-100"/><span class="index">Table</span><a name="chapter-9-101"/> operation is used.  This operation returns
+either an entry or <span class="teletype">"failed"</span>.
+</p>
+
+
+
+
+<div id="spadComm9-167" class="spadComm" >
+<form id="formComm9-167" action="javascript:makeRequest('9-167');" >
+<input id="comm9-167" type="text" class="command" style="width: 9em;" value="search(x, t) " />
+</form>
+<span id="commSav9-167" class="commSav" >search(x, t) </span>
+<div id="mathAns9-167" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>The<mspace width="0.5em"/>easiest<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(String,...)
+</div>
+
+
+
+
+
+<div id="spadComm9-168" class="spadComm" >
+<form id="formComm9-168" action="javascript:makeRequest('9-168');" >
+<input id="comm9-168" type="text" class="command" style="width: 11em;" value="search(x**2, t) " />
+</form>
+<span id="commSav9-168" class="commSav" >search(x**2, t) </span>
+<div id="mathAns9-168" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>failed<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>The return type is a union so the success of the search can be tested
+using <span class="teletype">case</span>.  
+</p>
+
+
+
+
+<div id="spadComm9-169" class="spadComm" >
+<form id="formComm9-169" action="javascript:makeRequest('9-169');" >
+<input id="comm9-169" type="text" class="command" style="width: 20em;" value='search(x**2, t) case "failed" ' />
+</form>
+<span id="commSav9-169" class="commSav" >search(x**2, t) case "failed" </span>
+<div id="mathAns9-169" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>The <span class="spadfunFrom" >remove</span><span class="index">remove</span><a name="chapter-9-102"/><span class="index">Table</span><a name="chapter-9-103"/> operation is used to delete values from a
+table.
+</p>
+
+
+
+
+<div id="spadComm9-170" class="spadComm" >
+<form id="formComm9-170" action="javascript:makeRequest('9-170');" >
+<input id="comm9-170" type="text" class="command" style="width: 14em;" value="remove!(x**2-1, t)  " />
+</form>
+<span id="commSav9-170" class="commSav" >remove!(x**2-1, t)  </span>
+<div id="mathAns9-170" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Easy<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union(String,...)
+</div>
+
+
+
+<p>If an entry exists under the key, then it is returned.  Otherwise
+<span class="spadfunFrom" >remove</span><span class="index">remove</span><a name="chapter-9-104"/><span class="index">Table</span><a name="chapter-9-105"/> returns <span class="teletype">"failed"</span>.
+</p>
+
+
+
+
+<div id="spadComm9-171" class="spadComm" >
+<form id="formComm9-171" action="javascript:makeRequest('9-171');" >
+<input id="comm9-171" type="text" class="command" style="width: 11em;" value="remove!(x-1, t) " />
+</form>
+<span id="commSav9-171" class="commSav" >remove!(x-1, t) </span>
+<div id="mathAns9-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>failed<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Union("failed",...)
+</div>
+
+
+
+<p>The number of key-entry pairs can be found using the
+<span class="spadfunFrom" > #</span><span class="index"> #</span><a name="chapter-9-106"/><span class="index">Table</span><a name="chapter-9-107"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-172" class="spadComm" >
+<form id="formComm9-172" action="javascript:makeRequest('9-172');" >
+<input id="comm9-172" type="text" class="command" style="width: 3em;" value=" #t " />
+</form>
+<span id="commSav9-172" class="commSav" > #t </span>
+<div id="mathAns9-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Just as <span class="spadfunFrom" >keys</span><span class="index">keys</span><a name="chapter-9-108"/><span class="index">Table</span><a name="chapter-9-109"/> returns a list of keys to the table,
+a list of all the entries can be obtained using the
+<span class="spadfunFrom" >members</span><span class="index">members</span><a name="chapter-9-110"/><span class="index">Table</span><a name="chapter-9-111"/> operation.
+</p>
+
+
+
+
+<div id="spadComm9-173" class="spadComm" >
+<form id="formComm9-173" action="javascript:makeRequest('9-173');" >
+<input id="comm9-173" type="text" class="command" style="width: 7em;" value="members t " />
+</form>
+<span id="commSav9-173" class="commSav" >members t </span>
+<div id="mathAns9-173" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>The<mspace width="0.5em"/>easiest<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>,</mo><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>Harder<mspace width="0.5em"/>to<mspace width="0.5em"/>factor<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List String
+</div>
+
+
+
+<p>A number of useful operations take functions and map them on to the
+table to compute the result.  Here we count the entries which
+have ``<span class="teletype">Hard</span>'' as a prefix.
+</p>
+
+
+
+
+<div id="spadComm9-174" class="spadComm" >
+<form id="formComm9-174" action="javascript:makeRequest('9-174');" >
+<input id="comm9-174" type="text" class="command" style="width: 29em;" value='count(s: String +-> prefix?("Hard", s), t) ' />
+</form>
+<span id="commSav9-174" class="commSav" >count(s: String +-> prefix?("Hard", s), t) </span>
+<div id="mathAns9-174" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Other table types are provided to support various needs.
+\indent
+</p>
+
+
+
+<div class="beginlist">
+<div class="item">
+ <span class="teletype">AssociationList</span> gives a list with a table view.
+This allows new entries to be appended onto the front of the list
+to cover up old entries.
+This is useful when table entries need to be stacked or when
+frequent list traversals are required.
+See <a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >AssociationListXmpPage</a>  
+for more information.
+</div>
+<div class="item"> <span class="teletype">EqTable</span> gives tables in which keys are considered
+equal only when they are in fact the same instance of a structure.
+See <a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >EqTableXmpPage</a>  for more information.
+</div>
+<div class="item"> <span class="teletype">StringTable</span> should be used when the keys are known to
+be strings.
+See <a href="section-9.78.xhtml#StringTableXmpPage" class="ref" >StringTableXmpPage</a>  
+for more information.
+</div>
+<div class="item"> <span class="teletype">SparseTable</span> provides tables with default
+entries, so
+lookup never fails.  The <span class="teletype">GeneralSparseTable</span> constructor
+can be used to make any table type behave this way.
+See <a href="section-9.30.xhtml#GeneralSparseTableXmpPage" class="ref" >SparseTableXmpPage</a>  
+for more information.
+</div>
+<div class="item"> <span class="teletype">KeyedAccessFile</span> allows values to be saved in a file,
+accessed as a table.
+See <a href="section-9.38.xhtml#KeyedAccessFileXmpPage" class="ref" >KeyedAccessFileXmpPage</a>  
+for more information.
+</div>
+</div>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.79.xhtml" style="margin-right: 10px;">Previous Section 9.79 Symbol</a><a href="section-9.81.xhtml" style="margin-right: 10px;">Next Section 9.81 TextFile</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.81.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.81.xhtml
new file mode 100644
index 0000000..2df5d9e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.81.xhtml
@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.81</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.80.xhtml" style="margin-right: 10px;">Previous Section 9.80 Table</a><a href="section-9.82.xhtml" style="margin-right: 10px;">Next Section 9.82 TwoDimensionalArray</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.81">
+<h2 class="sectiontitle">9.81  TextFile</h2>
+
+
+<a name="TextFileXmpPage" class="label"/>
+
+
+<p>The domain <span class="teletype">TextFile</span> allows Axiom to read and write
+character data and exchange text with other programs.
+This type behaves in Axiom much like a <span class="teletype">File</span> of strings,
+with additional operations to cause new lines.
+We give an example of how to produce an upper case copy of a file.
+</p>
+
+
+<p>This is the file from which we read the text.
+</p>
+
+
+
+
+<div id="spadComm9-175" class="spadComm" >
+<form id="formComm9-175" action="javascript:makeRequest('9-175');" >
+<input id="comm9-175" type="text" class="command" style="width: 31em;" value='f1: TextFile := open("/etc/group", "input")   ' />
+</form>
+<span id="commSav9-175" class="commSav" >f1: TextFile := open("/etc/group", "input")   </span>
+<div id="mathAns9-175" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>/<mspace width="0.5em"/>etc<mspace width="0.5em"/>/<mspace width="0.5em"/>group<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TextFile
+</div>
+
+
+
+<p>This is the file to which we write the text.
+</p>
+
+
+
+
+<div id="spadComm9-176" class="spadComm" >
+<form id="formComm9-176" action="javascript:makeRequest('9-176');" >
+<input id="comm9-176" type="text" class="command" style="width: 30em;" value='f2: TextFile := open("/tmp/MOTD", "output")  ' />
+</form>
+<span id="commSav9-176" class="commSav" >f2: TextFile := open("/tmp/MOTD", "output")  </span>
+<div id="mathAns9-176" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>/<mspace width="0.5em"/>tmp<mspace width="0.5em"/>/<mspace width="0.5em"/>MOTD<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TextFile
+</div>
+
+
+
+<p>Entire lines are handled using the <span class="spadfunFrom" >readLine</span><span class="index">readLine</span><a name="chapter-9-112"/><span class="index">TextFile</span><a name="chapter-9-113"/> and
+<span class="spadfunFrom" >writeLine</span><span class="index">writeLine</span><a name="chapter-9-114"/><span class="index">TextFile</span><a name="chapter-9-115"/> operations.
+</p>
+
+
+
+
+<div id="spadComm9-177" class="spadComm" >
+<form id="formComm9-177" action="javascript:makeRequest('9-177');" >
+<input id="comm9-177" type="text" class="command" style="width: 12em;" value="l := readLine! f1 " />
+</form>
+<span id="commSav9-177" class="commSav" >l := readLine! f1 </span>
+<div id="mathAns9-177" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>root<mspace width="0.5em"/>:<mspace width="0.5em"/>x<mspace width="0.5em"/>:<mspace width="0.5em"/>0<mspace width="0.5em"/>:<mspace width="0.5em"/>root<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-178" class="spadComm" >
+<form id="formComm9-178" action="javascript:makeRequest('9-178');" >
+<input id="comm9-178" type="text" class="command" style="width: 19em;" value="writeLine!(f2, upperCase l) " />
+</form>
+<span id="commSav9-178" class="commSav" >writeLine!(f2, upperCase l) </span>
+<div id="mathAns9-178" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>ROOT<mspace width="0.5em"/>:<mspace width="0.5em"/>X<mspace width="0.5em"/>:<mspace width="0.5em"/>0<mspace width="0.5em"/>:<mspace width="0.5em"/>ROOT<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>Use the <span class="spadfunFrom" >endOfFile?</span><span class="index">endOfFile?</span><a name="chapter-9-116"/><span class="index">TextFile</span><a name="chapter-9-117"/> operation to check if you
+have reached the end of the file.
+</p>
+
+
+
+
+<div class="verbatim"><br />
+while&nbsp;not&nbsp;endOfFile?&nbsp;f1&nbsp;repeat<br />
+&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;:=&nbsp;readLine!&nbsp;f1<br />
+&nbsp;&nbsp;&nbsp;&nbsp;writeLine!(f2,&nbsp;upperCase&nbsp;s)<br />
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>The file <span class="teletype">f1</span> is exhausted and should be closed.
+</p>
+
+
+
+
+<div id="spadComm9-179" class="spadComm" >
+<form id="formComm9-179" action="javascript:makeRequest('9-179');" >
+<input id="comm9-179" type="text" class="command" style="width: 8em;" value="close! f1  " />
+</form>
+<span id="commSav9-179" class="commSav" >close! f1  </span>
+<div id="mathAns9-179" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>/<mspace width="0.5em"/>etc<mspace width="0.5em"/>/<mspace width="0.5em"/>group<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TextFile
+</div>
+
+
+
+<p>It is sometimes useful to write lines a bit at a time.  The
+<span class="spadfunFrom" >write</span><span class="index">write</span><a name="chapter-9-118"/><span class="index">TextFile</span><a name="chapter-9-119"/> operation allows this.
+</p>
+
+
+
+
+<div id="spadComm9-180" class="spadComm" >
+<form id="formComm9-180" action="javascript:makeRequest('9-180');" >
+<input id="comm9-180" type="text" class="command" style="width: 14em;" value='write!(f2, "-The-")  ' />
+</form>
+<span id="commSav9-180" class="commSav" >write!(f2, "-The-")  </span>
+<div id="mathAns9-180" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>-<mspace width="0.5em"/>The<mspace width="0.5em"/>-<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-181" class="spadComm" >
+<form id="formComm9-181" action="javascript:makeRequest('9-181');" >
+<input id="comm9-181" type="text" class="command" style="width: 14em;" value='write!(f2, "-End-")  ' />
+</form>
+<span id="commSav9-181" class="commSav" >write!(f2, "-End-")  </span>
+<div id="mathAns9-181" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>-<mspace width="0.5em"/>End<mspace width="0.5em"/>-<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+<p>This ends the line.  This is done in a machine-dependent manner.
+</p>
+
+
+
+
+<div id="spadComm9-182" class="spadComm" >
+<form id="formComm9-182" action="javascript:makeRequest('9-182');" >
+<input id="comm9-182" type="text" class="command" style="width: 9em;" value="writeLine! f2" />
+</form>
+<span id="commSav9-182" class="commSav" >writeLine! f2</span>
+<div id="mathAns9-182" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: String
+</div>
+
+
+
+
+
+<div id="spadComm9-183" class="spadComm" >
+<form id="formComm9-183" action="javascript:makeRequest('9-183');" >
+<input id="comm9-183" type="text" class="command" style="width: 6em;" value="close! f2" />
+</form>
+<span id="commSav9-183" class="commSav" >close! f2</span>
+<div id="mathAns9-183" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>/<mspace width="0.5em"/>tmp<mspace width="0.5em"/>/<mspace width="0.5em"/>MOTD<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TextFile
+</div>
+
+
+
+<p>Finally, clean up.
+</p>
+
+
+
+
+<div id="spadComm9-184" class="spadComm" >
+<form id="formComm9-184" action="javascript:makeRequest('9-184');" >
+<input id="comm9-184" type="text" class="command" style="width: 14em;" value=")system rm /tmp/MOTD" />
+</form>
+<span id="commSav9-184" class="commSav" >)system rm /tmp/MOTD</span>
+<div id="mathAns9-184" ></div>
+</div>
+
+
+
+<p>For more information on related topics,  see
+<a href="section-9.24.xhtml#FileXmpPage" class="ref" >FileXmpPage</a> ,
+<a href="section-9.38.xhtml#KeyedAccessFileXmpPage" class="ref" >KeyedAccessFileXmpPage</a> , and
+<a href="section-9.41.xhtml#LibraryXmpPage" class="ref" >LibraryXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.80.xhtml" style="margin-right: 10px;">Previous Section 9.80 Table</a><a href="section-9.82.xhtml" style="margin-right: 10px;">Next Section 9.82 TwoDimensionalArray</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.82.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.82.xhtml
new file mode 100644
index 0000000..abe9f38
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.82.xhtml
@@ -0,0 +1,706 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.82</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.81.xhtml" style="margin-right: 10px;">Previous Section 9.81 TextFile</a><a href="section-9.83.xhtml" style="margin-right: 10px;">Next Section 9.83  UnivariatePolynomial</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.82">
+<h2 class="sectiontitle">9.82  TwoDimensionalArray</h2>
+
+
+<a name="TwoDimensionalArrayXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">TwoDimensionalArray</span> domain is used for storing data in a
+two dimensional data structure indexed by row and by column.  Such an array
+is a homogeneous data structure in that all the entries of the array
+must belong to the same Axiom domain (although see
+<a href="ugTypesAnyNonePage" class="ref" >ugTypesAnyNonePage</a>  in Section 
+<a href="ugTypesAnyNoneNumber" class="ref" >ugTypesAnyNoneNumber</a> ).  Each
+array has a fixed number of rows and columns specified by the user and
+arrays are not extensible.  In Axiom, the indexing of two-dimensional
+arrays is one-based.  This means that both the ``first'' row of an
+array and the ``first'' column of an array are given the index 
+<span class="teletype">1</span>.  Thus, the entry in the upper left corner of an array is in
+position <span class="teletype">(1,1)</span>.
+</p>
+
+
+<p>The operation <span class="spadfunFrom" >new</span><span class="index">new</span><a name="chapter-9-120"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-121"/> creates an array
+with a specified number of rows and columns and fills the components
+of that array with a specified entry.  The arguments of this operation
+specify the number of rows, the number of columns, and the entry.
+</p>
+
+
+<p>This creates a five-by-four array of integers, all of whose entries are
+zero.
+</p>
+
+
+
+
+<div id="spadComm9-185" class="spadComm" >
+<form id="formComm9-185" action="javascript:makeRequest('9-185');" >
+<input id="comm9-185" type="text" class="command" style="width: 21em;" value="arr : ARRAY2 INT := new(5,4,0) " />
+</form>
+<span id="commSav9-185" class="commSav" >arr : ARRAY2 INT := new(5,4,0) </span>
+<div id="mathAns9-185" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TwoDimensionalArray Integer
+</div>
+
+
+
+<p>The entries of this array can be set to other integers using the
+operation <span class="spadfunFrom" >setelt</span><span class="index">setelt</span><a name="chapter-9-122"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-123"/>.
+</p>
+
+
+<p>Issue this to set the element in the upper left corner of this array to
+<span class="teletype">17</span>.
+</p>
+
+
+
+
+<div id="spadComm9-186" class="spadComm" >
+<form id="formComm9-186" action="javascript:makeRequest('9-186');" >
+<input id="comm9-186" type="text" class="command" style="width: 13em;" value="setelt(arr,1,1,17) " />
+</form>
+<span id="commSav9-186" class="commSav" >setelt(arr,1,1,17) </span>
+<div id="mathAns9-186" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>17</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Now the first element of the array is <span class="teletype">17.</span>
+</p>
+
+
+
+
+<div id="spadComm9-187" class="spadComm" >
+<form id="formComm9-187" action="javascript:makeRequest('9-187');" >
+<input id="comm9-187" type="text" class="command" style="width: 3em;" value="arr " />
+</form>
+<span id="commSav9-187" class="commSav" >arr </span>
+<div id="mathAns9-187" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>17</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TwoDimensionalArray Integer
+</div>
+
+
+
+<p>Likewise, elements of an array are extracted using the operation
+<span class="spadfunFrom" >elt</span><span class="index">elt</span><a name="chapter-9-124"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-125"/>.
+</p>
+
+
+
+
+<div id="spadComm9-188" class="spadComm" >
+<form id="formComm9-188" action="javascript:makeRequest('9-188');" >
+<input id="comm9-188" type="text" class="command" style="width: 9em;" value="elt(arr,1,1) " />
+</form>
+<span id="commSav9-188" class="commSav" >elt(arr,1,1) </span>
+<div id="mathAns9-188" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>17</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Another way to use these two operations is as follows.  This sets the
+element in position <span class="teletype">(3,2)</span> of the array to <span class="teletype">15</span>.
+</p>
+
+
+
+
+<div id="spadComm9-189" class="spadComm" >
+<form id="formComm9-189" action="javascript:makeRequest('9-189');" >
+<input id="comm9-189" type="text" class="command" style="width: 10em;" value="arr(3,2) := 15 " />
+</form>
+<span id="commSav9-189" class="commSav" >arr(3,2) := 15 </span>
+<div id="mathAns9-189" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>15</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This extracts the element in position <span class="teletype">(3,2)</span> of the array.
+</p>
+
+
+
+
+<div id="spadComm9-190" class="spadComm" >
+<form id="formComm9-190" action="javascript:makeRequest('9-190');" >
+<input id="comm9-190" type="text" class="command" style="width: 6em;" value="arr(3,2) " />
+</form>
+<span id="commSav9-190" class="commSav" >arr(3,2) </span>
+<div id="mathAns9-190" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>15</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operations <span class="spadfunFrom" >elt</span><span class="index">elt</span><a name="chapter-9-126"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-127"/> and
+<span class="spadfunFrom" >setelt</span><span class="index">setelt</span><a name="chapter-9-128"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-129"/> come equipped with an error
+check which verifies that the indices are in the proper ranges.  For
+example, the above array has five rows and four columns, so if you ask
+for the entry in position <span class="teletype">(6,2)</span> with <span class="teletype">arr(6,2)</span> Axiom
+displays an error message.  If there is no need for an error check,
+you can call the operations <span class="spadfunFrom" >qelt</span><span class="index">qelt</span><a name="chapter-9-130"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-131"/>
+and <span class="spadfunFrom" >qsetelt</span><span class="index">qsetelt</span><a name="chapter-9-132"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-133"/> which provide the same
+functionality but without the error check.  Typically, these
+operations are called in well-tested programs.
+</p>
+
+
+<p>The operations <span class="spadfunFrom" >row</span><span class="index">row</span><a name="chapter-9-134"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-135"/> and
+<span class="spadfunFrom" >column</span><span class="index">column</span><a name="chapter-9-136"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-137"/> extract rows and columns,
+respectively, and return objects of <span class="teletype">OneDimensionalArray</span> with the
+same underlying element type.
+</p>
+
+
+
+
+<div id="spadComm9-191" class="spadComm" >
+<form id="formComm9-191" action="javascript:makeRequest('9-191');" >
+<input id="comm9-191" type="text" class="command" style="width: 8em;" value="row(arr,1) " />
+</form>
+<span id="commSav9-191" class="commSav" >row(arr,1) </span>
+<div id="mathAns9-191" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>17</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-192" class="spadComm" >
+<form id="formComm9-192" action="javascript:makeRequest('9-192');" >
+<input id="comm9-192" type="text" class="command" style="width: 10em;" value="column(arr,1) " />
+</form>
+<span id="commSav9-192" class="commSav" >column(arr,1) </span>
+<div id="mathAns9-192" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>17</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OneDimensionalArray Integer
+</div>
+
+
+
+<p>You can determine the dimensions of an array by calling the operations
+<span class="spadfunFrom" >nrows</span><span class="index">nrows</span><a name="chapter-9-138"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-139"/> and
+<span class="spadfunFrom" >ncols</span><span class="index">ncols</span><a name="chapter-9-140"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-141"/>, which return the number of
+rows and columns, respectively.
+</p>
+
+
+
+
+<div id="spadComm9-193" class="spadComm" >
+<form id="formComm9-193" action="javascript:makeRequest('9-193');" >
+<input id="comm9-193" type="text" class="command" style="width: 8em;" value="nrows(arr) " />
+</form>
+<span id="commSav9-193" class="commSav" >nrows(arr) </span>
+<div id="mathAns9-193" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-194" class="spadComm" >
+<form id="formComm9-194" action="javascript:makeRequest('9-194');" >
+<input id="comm9-194" type="text" class="command" style="width: 8em;" value="ncols(arr) " />
+</form>
+<span id="commSav9-194" class="commSav" >ncols(arr) </span>
+<div id="mathAns9-194" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>4</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>To apply an operation to every element of an array, use
+<span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-142"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-143"/>.  This creates a new array.
+This expression negates every element.
+</p>
+
+
+
+
+<div id="spadComm9-195" class="spadComm" >
+<form id="formComm9-195" action="javascript:makeRequest('9-195');" >
+<input id="comm9-195" type="text" class="command" style="width: 8em;" value="map(-,arr) " />
+</form>
+<span id="commSav9-195" class="commSav" >map(-,arr) </span>
+<div id="mathAns9-195" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mn>17</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mn>15</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TwoDimensionalArray Integer
+</div>
+
+
+
+<p>This creates an array where all the elements are doubled.
+</p>
+
+
+
+
+<div id="spadComm9-196" class="spadComm" >
+<form id="formComm9-196" action="javascript:makeRequest('9-196');" >
+<input id="comm9-196" type="text" class="command" style="width: 16em;" value="map((x +-> x + x),arr) " />
+</form>
+<span id="commSav9-196" class="commSav" >map((x +-> x + x),arr) </span>
+<div id="mathAns9-196" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>34</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>30</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TwoDimensionalArray Integer
+</div>
+
+
+
+<p>To change the array destructively, use
+<span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-144"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-145"/> instead of
+<span class="spadfunFrom" >map</span><span class="index">map</span><a name="chapter-9-146"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-147"/>.  If you need to make a copy of
+any array, use <span class="spadfunFrom" >copy</span><span class="index">copy</span><a name="chapter-9-148"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-149"/>.
+</p>
+
+
+
+
+<div id="spadComm9-197" class="spadComm" >
+<form id="formComm9-197" action="javascript:makeRequest('9-197');" >
+<input id="comm9-197" type="text" class="command" style="width: 12em;" value="arrc := copy(arr) " />
+</form>
+<span id="commSav9-197" class="commSav" >arrc := copy(arr) </span>
+<div id="mathAns9-197" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>17</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>15</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TwoDimensionalArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-198" class="spadComm" >
+<form id="formComm9-198" action="javascript:makeRequest('9-198');" >
+<input id="comm9-198" type="text" class="command" style="width: 9em;" value="map!(-,arrc) " />
+</form>
+<span id="commSav9-198" class="commSav" >map!(-,arrc) </span>
+<div id="mathAns9-198" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mn>17</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mn>15</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TwoDimensionalArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-199" class="spadComm" >
+<form id="formComm9-199" action="javascript:makeRequest('9-199');" >
+<input id="comm9-199" type="text" class="command" style="width: 4em;" value="arrc " />
+</form>
+<span id="commSav9-199" class="commSav" >arrc </span>
+<div id="mathAns9-199" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mn>17</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mn>15</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TwoDimensionalArray Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-200" class="spadComm" >
+<form id="formComm9-200" action="javascript:makeRequest('9-200');" >
+<input id="comm9-200" type="text" class="command" style="width: 4em;" value="arr  " />
+</form>
+<span id="commSav9-200" class="commSav" >arr  </span>
+<div id="mathAns9-200" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>17</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>15</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: TwoDimensionalArray Integer
+</div>
+
+
+
+<p>Use <span class="spadfunFrom" >member?</span><span class="index">member?</span><a name="chapter-9-150"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-151"/> to see if a given element
+is in an array.
+</p>
+
+
+
+
+<div id="spadComm9-201" class="spadComm" >
+<form id="formComm9-201" action="javascript:makeRequest('9-201');" >
+<input id="comm9-201" type="text" class="command" style="width: 11em;" value="member?(17,arr) " />
+</form>
+<span id="commSav9-201" class="commSav" >member?(17,arr) </span>
+<div id="mathAns9-201" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-202" class="spadComm" >
+<form id="formComm9-202" action="javascript:makeRequest('9-202');" >
+<input id="comm9-202" type="text" class="command" style="width: 13em;" value="member?(10317,arr) " />
+</form>
+<span id="commSav9-202" class="commSav" >member?(10317,arr) </span>
+<div id="mathAns9-202" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>To see how many times an element appears in an array, use
+<span class="spadfunFrom" >count</span><span class="index">count</span><a name="chapter-9-152"/><span class="index">TwoDimensionalArray</span><a name="chapter-9-153"/>.
+</p>
+
+
+
+
+<div id="spadComm9-203" class="spadComm" >
+<form id="formComm9-203" action="javascript:makeRequest('9-203');" >
+<input id="comm9-203" type="text" class="command" style="width: 10em;" value="count(17,arr) " />
+</form>
+<span id="commSav9-203" class="commSav" >count(17,arr) </span>
+<div id="mathAns9-203" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-204" class="spadComm" >
+<form id="formComm9-204" action="javascript:makeRequest('9-204');" >
+<input id="comm9-204" type="text" class="command" style="width: 9em;" value="count(0,arr) " />
+</form>
+<span id="commSav9-204" class="commSav" >count(0,arr) </span>
+<div id="mathAns9-204" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>18</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>For more information about the operations available for <span class="teletype">TwoDimensionalArray</span>, issue <span class="teletype">)show TwoDimensionalArray</span>.  For
+information on related topics, see 
+<a href="section-9.52.xhtml#MatrixXmpPage" class="ref" >MatrixXmpPage</a>  and
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.81.xhtml" style="margin-right: 10px;">Previous Section 9.81 TextFile</a><a href="section-9.83.xhtml" style="margin-right: 10px;">Next Section 9.83  UnivariatePolynomial</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.83.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.83.xhtml
new file mode 100644
index 0000000..c264c06
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.83.xhtml
@@ -0,0 +1,1221 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.83</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.82.xhtml" style="margin-right: 10px;">Previous Section 9.82  TwoDimensionalArray</a><a href="section-9.84.xhtml" style="margin-right: 10px;">Next Section 9.84 UniversalSegment</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.83">
+<h2 class="sectiontitle">9.83  UnivariatePolynomial</h2>
+
+
+<a name="UnivariatePolynomialXmpPage" class="label"/>
+
+
+<p>The domain constructor <span class="teletype">UnivariatePolynomial</span> (abbreviated <span class="teletype">UP</span>) creates domains of univariate polynomials in a specified
+variable.  For example, the domain <span class="teletype">UP(a1,POLY FRAC INT)</span> provides
+polynomials in the single variable <span class="teletype">a1</span> whose coefficients are
+general polynomials with rational number coefficients.
+</p>
+
+
+
+
+<div class="boxed2">
+
+
+<div class="boxed">
+
+
+
+<p> <span style="font-weight: bold;"> Restriction:</span>
+</p>
+
+
+
+<div class="quote" >
+
+
+<p>Axiom does not allow you to create types where
+<span class="teletype">UnivariatePolynomial</span> is contained in the coefficient type of
+<span class="teletype">Polynomial</span>. Therefore,
+<span class="teletype">UP(x,POLY INT)</span> is legal but <span class="teletype">POLY UP(x,INT)</span> is not.
+</p>
+
+
+
+</div>
+
+
+<p>.
+</p>
+
+
+
+</div>
+</div>
+
+
+
+<p><span class="teletype">UP(x,INT)</span> is the domain of polynomials in the single
+variable <span class="teletype">x</span> with integer coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-1" class="spadComm" >
+<form id="formComm9-1" action="javascript:makeRequest('9-1');" >
+<input id="comm9-1" type="text" class="command" style="width: 12em;" value="(p,q) : UP(x,INT) " />
+</form>
+<span id="commSav9-1" class="commSav" >(p,q) : UP(x,INT) </span>
+<div id="mathAns9-1" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-2" class="spadComm" >
+<form id="formComm9-2" action="javascript:makeRequest('9-2');" >
+<input id="comm9-2" type="text" class="command" style="width: 19em;" value="p := (3*x-1)**2 * (2*x + 8) " />
+</form>
+<span id="commSav9-2" class="commSav" >p := (3*x-1)**2 * (2*x + 8) </span>
+<div id="mathAns9-2" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>60</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>46</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>8</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-3" class="spadComm" >
+<form id="formComm9-3" action="javascript:makeRequest('9-3');" >
+<input id="comm9-3" type="text" class="command" style="width: 18em;" value="q := (1 - 6*x + 9*x**2)**2 " />
+</form>
+<span id="commSav9-3" class="commSav" >q := (1 - 6*x + 9*x**2)**2 </span>
+<div id="mathAns9-3" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>81</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>108</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>The usual arithmetic operations are available for univariate polynomials.
+</p>
+
+
+
+
+<div id="spadComm9-4" class="spadComm" >
+<form id="formComm9-4" action="javascript:makeRequest('9-4');" >
+<input id="comm9-4" type="text" class="command" style="width: 8em;" value="p**2 + p*q  " />
+</form>
+<span id="commSav9-4" class="commSav" >p**2 + p*q  </span>
+<div id="mathAns9-4" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>1458</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3240</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7074</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10584</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9282</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4120</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>878</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>72</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >leadingCoefficient</span><span class="index">leadingCoefficient</span><a name="chapter-9-0"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-1"/>
+extracts the coefficient of the term of highest degree.
+</p>
+
+
+
+
+<div id="spadComm9-5" class="spadComm" >
+<form id="formComm9-5" action="javascript:makeRequest('9-5');" >
+<input id="comm9-5" type="text" class="command" style="width: 14em;" value="leadingCoefficient p " />
+</form>
+<span id="commSav9-5" class="commSav" >leadingCoefficient p </span>
+<div id="mathAns9-5" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>18</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >degree</span><span class="index">degree</span><a name="chapter-9-2"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-3"/> returns
+the degree of the polynomial.
+Since the polynomial has only one variable, the variable is not supplied
+to operations like <span class="spadfunFrom" >degree</span><span class="index">degree</span><a name="chapter-9-4"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-5"/>.
+</p>
+
+
+
+
+<div id="spadComm9-6" class="spadComm" >
+<form id="formComm9-6" action="javascript:makeRequest('9-6');" >
+<input id="comm9-6" type="text" class="command" style="width: 6em;" value="degree p " />
+</form>
+<span id="commSav9-6" class="commSav" >degree p </span>
+<div id="mathAns9-6" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>3</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The reductum of the polynomial, the polynomial obtained by subtracting
+the term of highest order, is returned by
+<span class="spadfunFrom" >reductum</span><span class="index">reductum</span><a name="chapter-9-6"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-7"/>.
+</p>
+
+
+
+
+<div id="spadComm9-7" class="spadComm" >
+<form id="formComm9-7" action="javascript:makeRequest('9-7');" >
+<input id="comm9-7" type="text" class="command" style="width: 8em;" value="reductum p " />
+</form>
+<span id="commSav9-7" class="commSav" >reductum p </span>
+<div id="mathAns9-7" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>60</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>46</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>8</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >gcd</span><span class="index">gcd</span><a name="chapter-9-8"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-9"/> computes the
+greatest common divisor of two polynomials.
+</p>
+
+
+
+
+<div id="spadComm9-8" class="spadComm" >
+<form id="formComm9-8" action="javascript:makeRequest('9-8');" >
+<input id="comm9-8" type="text" class="command" style="width: 6em;" value="gcd(p,q) " />
+</form>
+<span id="commSav9-8" class="commSav" >gcd(p,q) </span>
+<div id="mathAns9-8" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >lcm</span><span class="index">lcm</span><a name="chapter-9-10"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-11"/> computes the
+least common multiple.
+</p>
+
+
+
+
+<div id="spadComm9-9" class="spadComm" >
+<form id="formComm9-9" action="javascript:makeRequest('9-9');" >
+<input id="comm9-9" type="text" class="command" style="width: 6em;" value="lcm(p,q) " />
+</form>
+<span id="commSav9-9" class="commSav" >lcm(p,q) </span>
+<div id="mathAns9-9" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>162</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>432</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>756</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>408</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>94</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>8</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >resultant</span><span class="index">resultant</span><a name="chapter-9-12"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-13"/> computes
+the resultant of two univariate polynomials.  In the case of <span class="teletype">p</span>
+and <span class="teletype">q</span>, the resultant is <span class="teletype">0</span> because they share a common
+root.
+</p>
+
+
+
+
+<div id="spadComm9-10" class="spadComm" >
+<form id="formComm9-10" action="javascript:makeRequest('9-10');" >
+<input id="comm9-10" type="text" class="command" style="width: 10em;" value="resultant(p,q) " />
+</form>
+<span id="commSav9-10" class="commSav" >resultant(p,q) </span>
+<div id="mathAns9-10" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: NonNegativeInteger
+</div>
+
+
+
+<p>To compute the derivative of a univariate polynomial with respect to its
+variable, use <span class="spadfunFrom" >D</span><span class="index">D</span><a name="chapter-9-14"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-15"/>.
+</p>
+
+
+
+
+<div id="spadComm9-11" class="spadComm" >
+<form id="formComm9-11" action="javascript:makeRequest('9-11');" >
+<input id="comm9-11" type="text" class="command" style="width: 3em;" value="D p " />
+</form>
+<span id="commSav9-11" class="commSav" >D p </span>
+<div id="mathAns9-11" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>120</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mn>46</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>Univariate polynomials can also be used as if they were functions.  To
+evaluate a univariate polynomial at some point, apply the polynomial
+to the point.
+</p>
+
+
+
+
+<div id="spadComm9-12" class="spadComm" >
+<form id="formComm9-12" action="javascript:makeRequest('9-12');" >
+<input id="comm9-12" type="text" class="command" style="width: 4em;" value="p(2) " />
+</form>
+<span id="commSav9-12" class="commSav" >p(2) </span>
+<div id="mathAns9-12" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>300</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>The same syntax is used for composing two univariate polynomials, i.e.
+substituting one polynomial for the variable in another.  This
+substitutes <span class="teletype">q</span> for the variable in <span class="teletype">p</span>.
+</p>
+
+
+
+
+<div id="spadComm9-13" class="spadComm" >
+<form id="formComm9-13" action="javascript:makeRequest('9-13');" >
+<input id="comm9-13" type="text" class="command" style="width: 4em;" value="p(q) " />
+</form>
+<span id="commSav9-13" class="commSav" >p(q) </span>
+<div id="mathAns9-13" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mn>9565938</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>38263752</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>70150212</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>77944680</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>58852170</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>32227632</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>13349448</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4280688</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1058184</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>192672</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>23328</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1536</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>40</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>This substitutes <span class="teletype">p</span> for the variable in <span class="teletype">q</span>.
+</p>
+
+
+
+
+<div id="spadComm9-14" class="spadComm" >
+<form id="formComm9-14" action="javascript:makeRequest('9-14');" >
+<input id="comm9-14" type="text" class="command" style="width: 4em;" value="q(p) " />
+</form>
+<span id="commSav9-14" class="commSav" >q(p) </span>
+<div id="mathAns9-14" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mn>8503056</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>113374080</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>479950272</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>404997408</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>1369516896</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>626146848</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2939858712</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2780728704</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>1364312160</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>396838872</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>69205896</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6716184</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>279841</mn></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>To obtain a list of coefficients of the polynomial, use
+<span class="spadfunFrom" >coefficients</span><span class="index">coefficients</span><a name="chapter-9-16"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-17"/>.
+</p>
+
+
+
+
+<div id="spadComm9-15" class="spadComm" >
+<form id="formComm9-15" action="javascript:makeRequest('9-15');" >
+<input id="comm9-15" type="text" class="command" style="width: 14em;" value="l := coefficients p " />
+</form>
+<span id="commSav9-15" class="commSav" >l := coefficients p </span>
+<div id="mathAns9-15" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>18</mn><mo>,</mo><mn>60</mn><mo>,</mo><mo>-</mo><mn>46</mn><mo>,</mo><mn>8</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Integer
+</div>
+
+
+
+<p>From this you can use <span class="spadfunFrom" >gcd</span><span class="index">gcd</span><a name="chapter-9-18"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-19"/> and
+<span class="spadfunFrom" >reduce</span><span class="index">reduce</span><a name="chapter-9-20"/><span class="index">List</span><a name="chapter-9-21"/> to compute the content of the polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-16" class="spadComm" >
+<form id="formComm9-16" action="javascript:makeRequest('9-16');" >
+<input id="comm9-16" type="text" class="command" style="width: 10em;" value="reduce(gcd,l) " />
+</form>
+<span id="commSav9-16" class="commSav" >reduce(gcd,l) </span>
+<div id="mathAns9-16" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Alternatively (and more easily), you can just call
+<span class="spadfunFrom" >content</span><span class="index">content</span><a name="chapter-9-22"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-23"/>.
+</p>
+
+
+
+
+<div id="spadComm9-17" class="spadComm" >
+<form id="formComm9-17" action="javascript:makeRequest('9-17');" >
+<input id="comm9-17" type="text" class="command" style="width: 7em;" value="content p " />
+</form>
+<span id="commSav9-17" class="commSav" >content p </span>
+<div id="mathAns9-17" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Note that the operation
+<span class="spadfunFrom" >coefficients</span><span class="index">coefficients</span><a name="chapter-9-24"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-25"/> omits the zero
+coefficients from the list.  Sometimes it is useful to convert a
+univariate polynomial to a vector whose  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>i</mi></mstyle></math>-th position contains the
+degree <span class="teletype">i-1</span> coefficient of the polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-18" class="spadComm" >
+<form id="formComm9-18" action="javascript:makeRequest('9-18');" >
+<input id="comm9-18" type="text" class="command" style="width: 20em;" value="ux := (x**4+2*x+3)::UP(x,INT) " />
+</form>
+<span id="commSav9-18" class="commSav" >ux := (x**4+2*x+3)::UP(x,INT) </span>
+<div id="mathAns9-18" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>3</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>To get a complete vector of coefficients, use the operation
+<span class="spadfunFrom" >vectorise</span><span class="index">vectorise</span><a name="chapter-9-26"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-27"/>, which takes a
+univariate polynomial and an integer denoting the length of the
+desired vector.
+</p>
+
+
+
+
+<div id="spadComm9-19" class="spadComm" >
+<form id="formComm9-19" action="javascript:makeRequest('9-19');" >
+<input id="comm9-19" type="text" class="command" style="width: 11em;" value="vectorise(ux,5) " />
+</form>
+<span id="commSav9-19" class="commSav" >vectorise(ux,5) </span>
+<div id="mathAns9-19" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+<p>It is common to want to do something to every term of a polynomial,
+creating a new polynomial in the process.
+</p>
+
+
+<p>This is a function for iterating across the terms of a polynomial,
+squaring each term.
+</p>
+
+
+
+
+<div id="spadComm9-20" class="spadComm" >
+<form id="formComm9-20" action="javascript:makeRequest('9-20');" >
+<input id="comm9-20" type="text" class="command" style="width: 38em;" value="squareTerms(p) ==   reduce(+,[t**2 for t in monomials p])" />
+</form>
+<span id="commSav9-20" class="commSav" >squareTerms(p) ==   reduce(+,[t**2 for t in monomials p])</span>
+<div id="mathAns9-20" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>Recall what <span class="teletype">p</span> looked like.
+</p>
+
+
+
+
+<div id="spadComm9-21" class="spadComm" >
+<form id="formComm9-21" action="javascript:makeRequest('9-21');" >
+<input id="comm9-21" type="text" class="command" style="width: 2em;" value="p " />
+</form>
+<span id="commSav9-21" class="commSav" >p </span>
+<div id="mathAns9-21" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>60</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>46</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>8</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>We can demonstrate <span class="teletype">squareTerms</span> on <span class="teletype">p</span>.
+</p>
+
+
+
+
+<div id="spadComm9-22" class="spadComm" >
+<form id="formComm9-22" action="javascript:makeRequest('9-22');" >
+<input id="comm9-22" type="text" class="command" style="width: 10em;" value="squareTerms p " />
+</form>
+<span id="commSav9-22" class="commSav" >squareTerms p </span>
+<div id="mathAns9-22" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Compiling&nbsp;function&nbsp;squareTerms&nbsp;with&nbsp;type&nbsp;<br />
+&nbsp;&nbsp;UnivariatePolynomial(x,Integer)&nbsp;-&gt;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;UnivariatePolynomial(x,Integer)&nbsp;<br />
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>324</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3600</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2116</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>64</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(x,Integer)
+</div>
+
+
+
+<p>When the coefficients of the univariate polynomial belong to a
+field,<span class="footnote">For example, when the coefficients are rational
+numbers, as opposed to integers.  The important property of a field is
+that non-zero elements can be divided and produce another element. The
+quotient of the integers 2 and 3 is not another integer.</span>  it is
+possible to compute quotients and remainders.
+</p>
+
+
+
+
+<div id="spadComm9-23" class="spadComm" >
+<form id="formComm9-23" action="javascript:makeRequest('9-23');" >
+<input id="comm9-23" type="text" class="command" style="width: 16em;" value="(r,s) : UP(a1,FRAC INT) " />
+</form>
+<span id="commSav9-23" class="commSav" >(r,s) : UP(a1,FRAC INT) </span>
+<div id="mathAns9-23" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+
+
+<div id="spadComm9-24" class="spadComm" >
+<form id="formComm9-24" action="javascript:makeRequest('9-24');" >
+<input id="comm9-24" type="text" class="command" style="width: 12em;" value="r := a1**2 - 2/3  " />
+</form>
+<span id="commSav9-24" class="commSav" >r := a1**2 - 2/3  </span>
+<div id="mathAns9-24" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>a1</mi><mn>2</mn></msup></mrow><mo>-</mo><mfrac><mn>2</mn><mn>3</mn></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(a1,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-25" class="spadComm" >
+<form id="formComm9-25" action="javascript:makeRequest('9-25');" >
+<input id="comm9-25" type="text" class="command" style="width: 8em;" value="s := a1 + 4" />
+</form>
+<span id="commSav9-25" class="commSav" >s := a1 + 4</span>
+<div id="mathAns9-25" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>a1</mi><mo>+</mo><mn>4</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(a1,Fraction Integer)
+</div>
+
+
+
+<p>When the coefficients are rational numbers or rational expressions, the
+operation <span class="spadfunFrom" >quo</span><span class="index">quo</span><a name="chapter-9-28"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-29"/> computes the quotient
+of two polynomials.
+</p>
+
+
+
+
+<div id="spadComm9-26" class="spadComm" >
+<form id="formComm9-26" action="javascript:makeRequest('9-26');" >
+<input id="comm9-26" type="text" class="command" style="width: 6em;" value="r quo s " />
+</form>
+<span id="commSav9-26" class="commSav" >r quo s </span>
+<div id="mathAns9-26" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>a1</mi><mo>-</mo><mn>4</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(a1,Fraction Integer)
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >rem</span><span class="index">rem</span><a name="chapter-9-30"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-31"/> computes the
+remainder.
+</p>
+
+
+
+
+<div id="spadComm9-27" class="spadComm" >
+<form id="formComm9-27" action="javascript:makeRequest('9-27');" >
+<input id="comm9-27" type="text" class="command" style="width: 6em;" value="r rem s " />
+</form>
+<span id="commSav9-27" class="commSav" >r rem s </span>
+<div id="mathAns9-27" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mn>46</mn><mn>3</mn></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(a1,Fraction Integer)
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >divide</span><span class="index">divide</span><a name="chapter-9-32"/><span class="index">UnivariatePolynomial</span><a name="chapter-9-33"/> can be used to
+return a record of both components.
+</p>
+
+
+
+
+<div id="spadComm9-28" class="spadComm" >
+<form id="formComm9-28" action="javascript:makeRequest('9-28');" >
+<input id="comm9-28" type="text" class="command" style="width: 12em;" value="d := divide(r, s) " />
+</form>
+<span id="commSav9-28" class="commSav" >d := divide(r, s) </span>
+<div id="mathAns9-28" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>quotient</mi><mo>=</mo><mrow><mi>a1</mi><mo>-</mo><mn>4</mn></mrow></mrow><mo>,</mo><mrow><mi>remainder</mi><mo>=</mo><mfrac><mn>46</mn><mn>3</mn></mfrac></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Record(
+quotient: UnivariatePolynomial(a1,Fraction Integer),
+remainder: UnivariatePolynomial(a1,Fraction Integer))
+</div>
+
+
+
+<p>Now we check the arithmetic!
+</p>
+
+
+
+
+<div id="spadComm9-29" class="spadComm" >
+<form id="formComm9-29" action="javascript:makeRequest('9-29');" >
+<input id="comm9-29" type="text" class="command" style="width: 24em;" value="r - (d.quotient * s + d.remainder) " />
+</form>
+<span id="commSav9-29" class="commSav" >r - (d.quotient * s + d.remainder) </span>
+<div id="mathAns9-29" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(a1,Fraction Integer)
+</div>
+
+
+
+<p>It is also possible to integrate univariate polynomials when the
+coefficients belong to a field.
+</p>
+
+
+
+
+<div id="spadComm9-30" class="spadComm" >
+<form id="formComm9-30" action="javascript:makeRequest('9-30');" >
+<input id="comm9-30" type="text" class="command" style="width: 8em;" value="integrate r " />
+</form>
+<span id="commSav9-30" class="commSav" >integrate r </span>
+<div id="mathAns9-30" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>a1</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>a1</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(a1,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-31" class="spadComm" >
+<form id="formComm9-31" action="javascript:makeRequest('9-31');" >
+<input id="comm9-31" type="text" class="command" style="width: 8em;" value="integrate s " />
+</form>
+<span id="commSav9-31" class="commSav" >integrate s </span>
+<div id="mathAns9-31" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>a1</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>a1</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(a1,Fraction Integer)
+</div>
+
+
+
+<p>One application of univariate polynomials is to see expressions in terms
+of a specific variable.
+</p>
+
+
+<p>We start with a polynomial in <span class="teletype">a1</span> whose coefficients
+are quotients of polynomials in <span class="teletype">b1</span> and <span class="teletype">b2</span>.
+</p>
+
+
+
+
+<div id="spadComm9-32" class="spadComm" >
+<form id="formComm9-32" action="javascript:makeRequest('9-32');" >
+<input id="comm9-32" type="text" class="command" style="width: 17em;" value="t : UP(a1,FRAC POLY INT) " />
+</form>
+<span id="commSav9-32" class="commSav" >t : UP(a1,FRAC POLY INT) </span>
+<div id="mathAns9-32" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>Since in this case we are not talking about using multivariate
+polynomials in only two variables, we use <span class="teletype">Polynomial</span>.
+We also use <span class="teletype">Fraction</span> because we want fractions.
+</p>
+
+
+
+
+<div id="spadComm9-33" class="spadComm" >
+<form id="formComm9-33" action="javascript:makeRequest('9-33');" >
+<input id="comm9-33" type="text" class="command" style="width: 26em;" value="t := a1**2 - a1/b2 + (b1**2-b1)/(b2+3) " />
+</form>
+<span id="commSav9-33" class="commSav" >t := a1**2 - a1/b2 + (b1**2-b1)/(b2+3) </span>
+<div id="mathAns9-33" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>a1</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mi>b2</mi></mfrac><mspace width="0.5 em" /><mi>a1</mi></mrow><mo>+</mo><mfrac><mrow><mrow><msup><mi>b1</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>b1</mi></mrow><mrow><mi>b2</mi><mo>+</mo><mn>3</mn></mrow></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(a1,Fraction Polynomial Integer)
+</div>
+
+
+
+<p>We push all the variables into a single quotient of polynomials.
+</p>
+
+
+
+
+<div id="spadComm9-34" class="spadComm" >
+<form id="formComm9-34" action="javascript:makeRequest('9-34');" >
+<input id="comm9-34" type="text" class="command" style="width: 16em;" value="u : FRAC POLY INT := t " />
+</form>
+<span id="commSav9-34" class="commSav" >u : FRAC POLY INT := t </span>
+<div id="mathAns9-34" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mfrac><mrow><mrow><mrow><msup><mi>a1</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b2</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>b1</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>b1</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>a1</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>a1</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>b2</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a1</mi></mrow></mrow><mrow><mrow><msup><mi>b2</mi><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b2</mi></mrow></mrow></mfrac></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Fraction Polynomial Integer
+</div>
+
+
+
+<p>Alternatively, we can view this as a polynomial in the variable
+This is a <span class="italic">mode-directed</span> conversion: you indicate
+as much of the structure as you care about and let Axiom
+decide on the full type and how to do the transformation.
+</p>
+
+
+
+
+<div id="spadComm9-35" class="spadComm" >
+<form id="formComm9-35" action="javascript:makeRequest('9-35');" >
+<input id="comm9-35" type="text" class="command" style="width: 10em;" value="u :: UP(b1,?) " />
+</form>
+<span id="commSav9-35" class="commSav" >u :: UP(b1,?) </span>
+<div id="mathAns9-35" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mfrac><mn>1</mn><mrow><mi>b2</mi><mo>+</mo><mn>3</mn></mrow></mfrac><mspace width="0.5 em" /><mrow><msup><mi>b1</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mrow><mi>b2</mi><mo>+</mo><mn>3</mn></mrow></mfrac><mspace width="0.5 em" /><mi>b1</mi></mrow><mo>+</mo><mfrac><mrow><mrow><mrow><msup><mi>a1</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b2</mi></mrow><mo>-</mo><mi>a1</mi></mrow><mi>b2</mi></mfrac></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UnivariatePolynomial(b1,Fraction Polynomial Integer)
+</div>
+
+
+
+<p>See <a href="ugProblemFactorPage" class="ref" >ugProblemFactorPage</a>  in Section
+<a href="ugProblemFactorNumber" class="ref" >ugProblemFactorNumber</a> 
+for a discussion of the factorization facilities
+in Axiom for univariate polynomials.
+For more information on related topics, see
+<a href="ugIntroVariablesPage" class="ref" >ugIntroVariablesPage</a>  in Section 
+<a href="ugIntroVariablesNumber" class="ref" >ugIntroVariablesNumber</a> ,
+<a href="ugTypesConvertPage" class="ref" >ugTypesConvertPage</a>  in Section 
+<a href="ugTypesConvertNumber" class="ref" >ugTypesConvertNumber</a> ,
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >PolynomialXmpPage</a> ,
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >MultivariatePolynomialXmpPage</a> , and
+<a href="section-9.16.xhtml#DistributedMultivariatePolynomialXmpPage" class="ref" >DistributedMultivariatePolynomialXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.82.xhtml" style="margin-right: 10px;">Previous Section 9.82  TwoDimensionalArray</a><a href="section-9.84.xhtml" style="margin-right: 10px;">Next Section 9.84 UniversalSegment</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.84.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.84.xhtml
new file mode 100644
index 0000000..0811ac0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.84.xhtml
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.84</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.83.xhtml" style="margin-right: 10px;">Previous Section 9.83 UnivariatePolynomial</a><a href="section-9.85.xhtml" style="margin-right: 10px;">Next Section 9.85 Vector</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.84">
+<h2 class="sectiontitle">9.84  UniversalSegment</h2>
+
+
+<a name="UniversalSegmentXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">UniversalSegment</span> domain generalizes <span class="teletype">Segment</span>
+by allowing segments without a ``hi'' end point.
+</p>
+
+
+
+
+<div id="spadComm9-36" class="spadComm" >
+<form id="formComm9-36" action="javascript:makeRequest('9-36');" >
+<input id="comm9-36" type="text" class="command" style="width: 8em;" value="pints := 1.." />
+</form>
+<span id="commSav9-36" class="commSav" >pints := 1..</span>
+<div id="mathAns9-36" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>.</mo><mo>.</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UniversalSegment PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-37" class="spadComm" >
+<form id="formComm9-37" action="javascript:makeRequest('9-37');" >
+<input id="comm9-37" type="text" class="command" style="width: 15em;" value="nevens := (0..) by -2 " />
+</form>
+<span id="commSav9-37" class="commSav" >nevens := (0..) by -2 </span>
+<div id="mathAns9-37" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mn>0</mn><mo>.</mo><mo>.</mo></mrow><mtext><mrow><mtext>by&nbsp;</mtext></mrow></mtext><mo>-</mo><mn>2</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UniversalSegment NonNegativeInteger
+</div>
+
+
+
+<p>Values of type <span class="teletype">Segment</span> are automatically converted to
+type <span class="teletype">UniversalSegment</span> when appropriate.
+</p>
+
+
+
+
+<div id="spadComm9-38" class="spadComm" >
+<form id="formComm9-38" action="javascript:makeRequest('9-38');" >
+<input id="comm9-38" type="text" class="command" style="width: 28em;" value="useg: UniversalSegment(Integer) := 3..10 " />
+</form>
+<span id="commSav9-38" class="commSav" >useg: UniversalSegment(Integer) := 3..10 </span>
+<div id="mathAns9-38" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mo>.</mo><mo>.</mo><mn>10</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: UniversalSegment Integer
+</div>
+
+
+
+<p>The operation <span class="spadfunFrom" >hasHi</span><span class="index">hasHi</span><a name="chapter-9-34"/><span class="index">UniversalSegment</span><a name="chapter-9-35"/> is used to test
+whether a segment has a <span class="teletype">hi</span> end point.
+</p>
+
+
+
+
+<div id="spadComm9-39" class="spadComm" >
+<form id="formComm9-39" action="javascript:makeRequest('9-39');" >
+<input id="comm9-39" type="text" class="command" style="width: 9em;" value="hasHi pints  " />
+</form>
+<span id="commSav9-39" class="commSav" >hasHi pints  </span>
+<div id="mathAns9-39" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-40" class="spadComm" >
+<form id="formComm9-40" action="javascript:makeRequest('9-40');" >
+<input id="comm9-40" type="text" class="command" style="width: 9em;" value="hasHi nevens " />
+</form>
+<span id="commSav9-40" class="commSav" >hasHi nevens </span>
+<div id="mathAns9-40" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-41" class="spadComm" >
+<form id="formComm9-41" action="javascript:makeRequest('9-41');" >
+<input id="comm9-41" type="text" class="command" style="width: 9em;" value="hasHi useg   " />
+</form>
+<span id="commSav9-41" class="commSav" >hasHi useg   </span>
+<div id="mathAns9-41" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true<mspace width="0.5em"/></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>All operations available on type <span class="teletype">Segment</span> apply to <span class="teletype">UniversalSegment</span>, with the proviso that expansions produce streams
+rather than lists.  This is to accommodate infinite expansions.
+</p>
+
+
+
+
+<div id="spadComm9-42" class="spadComm" >
+<form id="formComm9-42" action="javascript:makeRequest('9-42');" >
+<input id="comm9-42" type="text" class="command" style="width: 9em;" value="expand pints " />
+</form>
+<span id="commSav9-42" class="commSav" >expand pints </span>
+<div id="mathAns9-42" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>,</mo><mn>7</mn><mo>,</mo><mn>8</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>10</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-43" class="spadComm" >
+<form id="formComm9-43" action="javascript:makeRequest('9-43');" >
+<input id="comm9-43" type="text" class="command" style="width: 10em;" value="expand nevens " />
+</form>
+<span id="commSav9-43" class="commSav" >expand nevens </span>
+<div id="mathAns9-43" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>0</mn><mo>,</mo><mo>-</mo><mn>2</mn><mo>,</mo><mo>-</mo><mn>4</mn><mo>,</mo><mo>-</mo><mn>6</mn><mo>,</mo><mo>-</mo><mn>8</mn><mo>,</mo><mo>-</mo><mn>10</mn><mo>,</mo><mo>-</mo><mn>12</mn><mo>,</mo><mo>-</mo><mn>14</mn><mo>,</mo><mo>-</mo><mn>16</mn><mo>,</mo><mo>-</mo><mn>18</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-44" class="spadComm" >
+<form id="formComm9-44" action="javascript:makeRequest('9-44');" >
+<input id="comm9-44" type="text" class="command" style="width: 19em;" value="expand [1, 3, 10..15, 100..]" />
+</form>
+<span id="commSav9-44" class="commSav" >expand [1, 3, 10..15, 100..]</span>
+<div id="mathAns9-44" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>11</mn><mo>,</mo><mn>12</mn><mo>,</mo><mn>13</mn><mo>,</mo><mn>14</mn><mo>,</mo><mn>15</mn><mo>,</mo><mn>100</mn><mo>,</mo><mn>101</mn><mo>,</mo><mo>&#x2026;</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Stream Integer
+</div>
+
+
+
+<p>For more information on related topics, see 
+<a href="section-9.69.xhtml#SegmentXmpPage" class="ref" >SegmentXmpPage</a> ,
+<a href="section-9.70.xhtml#SegmentBindingXmpPage" class="ref" >SegmentBindingXmpPage</a> , 
+<a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> , and
+<a href="section-9.76.xhtml#StreamXmpPage" class="ref" >StreamXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.83.xhtml" style="margin-right: 10px;">Previous Section 9.83 UnivariatePolynomial</a><a href="section-9.85.xhtml" style="margin-right: 10px;">Next Section 9.85 Vector</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.85.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.85.xhtml
new file mode 100644
index 0000000..ed4e1f2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.85.xhtml
@@ -0,0 +1,422 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.85</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.84.xhtml" style="margin-right: 10px;">Previous Section 9.84 UniversalSegment</a><a href="section-9.86.xhtml" style="margin-right: 10px;">Next Section 9.86 Void</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.85">
+<h2 class="sectiontitle">9.85  Vector</h2>
+
+
+<a name="VectorXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">Vector</span> domain is used for storing data in a one-dimensional
+indexed data structure.  A vector is a homogeneous data structure in
+that all the components of the vector must belong to the same Axiom
+domain.  Each vector has a fixed length specified by the user; vectors
+are not extensible.  This domain is similar to the 
+<span class="teletype">OneDimensionalArray</span> domain, except that when the components of a 
+<span class="teletype">Vector</span> belong to a <span class="teletype">Ring</span>, arithmetic operations are provided.
+For more examples of operations that are defined for both <span class="teletype">Vector</span>
+and <span class="teletype">OneDimensionalArray</span>, see 
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a> .
+</p>
+
+
+<p>As with the <span class="teletype">OneDimensionalArray</span> domain, a <span class="teletype">Vector</span> can
+be created by calling the operation <span class="spadfunFrom" >new</span><span class="index">new</span><a name="chapter-9-36"/><span class="index">Vector</span><a name="chapter-9-37"/>, its components
+can be accessed by calling the operations <span class="spadfunFrom" >elt</span><span class="index">elt</span><a name="chapter-9-38"/><span class="index">Vector</span><a name="chapter-9-39"/> and
+<span class="spadfunFrom" >qelt</span><span class="index">qelt</span><a name="chapter-9-40"/><span class="index">Vector</span><a name="chapter-9-41"/>, and its components can be reset by calling the
+operations <span class="spadfunFrom" >setelt</span><span class="index">setelt</span><a name="chapter-9-42"/><span class="index">Vector</span><a name="chapter-9-43"/> and
+<span class="spadfunFrom" >qsetelt</span><span class="index">qsetelt</span><a name="chapter-9-44"/><span class="index">Vector</span><a name="chapter-9-45"/>.
+</p>
+
+
+<p>This creates a vector of integers of length <span class="teletype">5</span> all of whose
+components are <span class="teletype">12</span>.
+</p>
+
+
+
+
+<div id="spadComm9-45" class="spadComm" >
+<form id="formComm9-45" action="javascript:makeRequest('9-45');" >
+<input id="comm9-45" type="text" class="command" style="width: 19em;" value="u : VECTOR INT := new(5,12) " />
+</form>
+<span id="commSav9-45" class="commSav" >u : VECTOR INT := new(5,12) </span>
+<div id="mathAns9-45" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>12</mn><mo>,</mo><mn>12</mn><mo>,</mo><mn>12</mn><mo>,</mo><mn>12</mn><mo>,</mo><mn>12</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+<p>This is how you create a vector from a list of its components.
+</p>
+
+
+
+
+<div id="spadComm9-46" class="spadComm" >
+<form id="formComm9-46" action="javascript:makeRequest('9-46');" >
+<input id="comm9-46" type="text" class="command" style="width: 26em;" value="v : VECTOR INT := vector([1,2,3,4,5]) " />
+</form>
+<span id="commSav9-46" class="commSav" >v : VECTOR INT := vector([1,2,3,4,5]) </span>
+<div id="mathAns9-46" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+<p>Indexing for vectors begins at <span class="teletype">1</span>.  The last element has index
+equal to the length of the vector, which is computed by
+<span class="spadopFrom" title="Vector"> #</span>.
+</p>
+
+
+
+
+<div id="spadComm9-47" class="spadComm" >
+<form id="formComm9-47" action="javascript:makeRequest('9-47');" >
+<input id="comm9-47" type="text" class="command" style="width: 4em;" value=" #(v) " />
+</form>
+<span id="commSav9-47" class="commSav" > #(v) </span>
+<div id="mathAns9-47" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>5</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is the standard way to use <span class="spadfunFrom" >elt</span><span class="index">elt</span><a name="chapter-9-46"/><span class="index">Vector</span><a name="chapter-9-47"/> to extract
+an element.  Functionally, it is the same as if you had typed <span class="teletype">elt(v,2)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-48" class="spadComm" >
+<form id="formComm9-48" action="javascript:makeRequest('9-48');" >
+<input id="comm9-48" type="text" class="command" style="width: 3em;" value="v.2 " />
+</form>
+<span id="commSav9-48" class="commSav" >v.2 </span>
+<div id="mathAns9-48" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>This is the standard way to use <span class="spadfunFrom" >setelt</span><span class="index">setelt</span><a name="chapter-9-48"/><span class="index">Vector</span><a name="chapter-9-49"/> to change
+an element.  It is the same as if you had typed <span class="teletype">setelt(v,3,99)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-49" class="spadComm" >
+<form id="formComm9-49" action="javascript:makeRequest('9-49');" >
+<input id="comm9-49" type="text" class="command" style="width: 7em;" value="v.3 := 99 " />
+</form>
+<span id="commSav9-49" class="commSav" >v.3 := 99 </span>
+<div id="mathAns9-49" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>99</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Now look at <span class="teletype">v</span> to see the change.  You can use
+<span class="spadfunFrom" >qelt</span><span class="index">qelt</span><a name="chapter-9-50"/><span class="index">Vector</span><a name="chapter-9-51"/> and <span class="spadfunFrom" >qsetelt</span><span class="index">qsetelt</span><a name="chapter-9-52"/><span class="index">Vector</span><a name="chapter-9-53"/> (instead
+of <span class="spadfunFrom" >elt</span><span class="index">elt</span><a name="chapter-9-54"/><span class="index">Vector</span><a name="chapter-9-55"/> and <span class="spadfunFrom" >setelt</span><span class="index">setelt</span><a name="chapter-9-56"/><span class="index">Vector</span><a name="chapter-9-57"/>,
+respectively) but <span class="italic">only</span> when you know that the index is within
+the valid range.
+</p>
+
+
+
+
+<div id="spadComm9-50" class="spadComm" >
+<form id="formComm9-50" action="javascript:makeRequest('9-50');" >
+<input id="comm9-50" type="text" class="command" style="width: 2em;" value="v " />
+</form>
+<span id="commSav9-50" class="commSav" >v </span>
+<div id="mathAns9-50" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>99</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+<p>When the components belong to a <span class="teletype">Ring</span>, Axiom provides arithmetic
+operations for <span class="teletype">Vector</span>.  These include left and right scalar
+multiplication.
+</p>
+
+
+
+
+<div id="spadComm9-51" class="spadComm" >
+<form id="formComm9-51" action="javascript:makeRequest('9-51');" >
+<input id="comm9-51" type="text" class="command" style="width: 4em;" value="5 * v " />
+</form>
+<span id="commSav9-51" class="commSav" >5 * v </span>
+<div id="mathAns9-51" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>5</mn><mo>,</mo><mn>10</mn><mo>,</mo><mn>495</mn><mo>,</mo><mn>20</mn><mo>,</mo><mn>25</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-52" class="spadComm" >
+<form id="formComm9-52" action="javascript:makeRequest('9-52');" >
+<input id="comm9-52" type="text" class="command" style="width: 4em;" value="v * 7 " />
+</form>
+<span id="commSav9-52" class="commSav" >v * 7 </span>
+<div id="mathAns9-52" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>7</mn><mo>,</mo><mn>14</mn><mo>,</mo><mn>693</mn><mo>,</mo><mn>28</mn><mo>,</mo><mn>35</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-53" class="spadComm" >
+<form id="formComm9-53" action="javascript:makeRequest('9-53');" >
+<input id="comm9-53" type="text" class="command" style="width: 26em;" value="w : VECTOR INT := vector([2,3,4,5,6]) " />
+</form>
+<span id="commSav9-53" class="commSav" >w : VECTOR INT := vector([2,3,4,5,6]) </span>
+<div id="mathAns9-53" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>6</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+<p>Addition and subtraction are also available.
+</p>
+
+
+
+
+<div id="spadComm9-54" class="spadComm" >
+<form id="formComm9-54" action="javascript:makeRequest('9-54');" >
+<input id="comm9-54" type="text" class="command" style="width: 4em;" value="v + w " />
+</form>
+<span id="commSav9-54" class="commSav" >v + w </span>
+<div id="mathAns9-54" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>3</mn><mo>,</mo><mn>5</mn><mo>,</mo><mn>103</mn><mo>,</mo><mn>9</mn><mo>,</mo><mn>11</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+<p>Of course, when adding or subtracting, the two vectors must have the same
+length or an error message is displayed.
+</p>
+
+
+
+
+<div id="spadComm9-55" class="spadComm" >
+<form id="formComm9-55" action="javascript:makeRequest('9-55');" >
+<input id="comm9-55" type="text" class="command" style="width: 4em;" value="v - w " />
+</form>
+<span id="commSav9-55" class="commSav" >v - w </span>
+<div id="mathAns9-55" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>-</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>95</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>,</mo><mo>-</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Vector Integer
+</div>
+
+
+
+<p>For more information about other aggregate domains, see the following:
+<a href="section-9.1.xhtml#AssociationListXmpPage" class="ref" >ListXmpPage</a> , 
+<a href="section-9.52.xhtml#MatrixXmpPage" class="ref" >MatrixXmpPage</a> ,
+<a href="section-9.57.xhtml#OneDimensionalArrayXmpPage" class="ref" >OneDimensionalArrayXmpPage</a> ,
+<a href="section-9.53.xhtml#MultiSetXmpPage" class="ref" >SetXmpPage</a> ,
+<a href="section-9.18.xhtml#EqTableXmpPage" class="ref" >TableXmpPage</a> , and 
+<a href="section-9.82.xhtml#TwoDimensionalArrayXmpPage" class="ref" >TwoDimensionalArrayXmpPage</a> .
+Issue the system command <span class="teletype">)show Vector</span> to display the full list of
+operations defined by <span class="teletype">Vector</span>.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.84.xhtml" style="margin-right: 10px;">Previous Section 9.84 UniversalSegment</a><a href="section-9.86.xhtml" style="margin-right: 10px;">Next Section 9.86 Void</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.86.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.86.xhtml
new file mode 100644
index 0000000..e0f1ced
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.86.xhtml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.86</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.85.xhtml" style="margin-right: 10px;">Previous Section 9.85 Vector</a><a href="section-9.87.xhtml" style="margin-right: 10px;">Next Section 9.87 WuWenTsunTriangularSet</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.86">
+<h2 class="sectiontitle">9.86  Void</h2>
+
+
+<a name="VoidXmpPage" class="label"/>
+
+
+<p>When an expression is not in a value context, it is given type 
+<span class="teletype">Void</span>.  For example, in the expression 
+</p>
+
+
+
+<div class="verbatim">&nbsp;<br />
+&nbsp;&nbsp;r&nbsp;:=&nbsp;(a;&nbsp;b;&nbsp;if&nbsp;c&nbsp;then&nbsp;d&nbsp;else&nbsp;e;&nbsp;f)&nbsp;<br />
+</div>
+
+<p> 
+values are used only from the
+subexpressions <span class="teletype">c</span> and <span class="teletype">f</span>: all others are thrown away.  The
+subexpressions <span class="teletype">a</span>, <span class="teletype">b</span>, <span class="teletype">d</span> and <span class="teletype">e</span> are evaluated for
+side-effects only and have type <span class="teletype">Void</span>.  There is a unique value
+of type <span class="teletype">Void</span>.
+</p>
+
+
+<p>You will most often see results of type <span class="teletype">Void</span> when you
+declare a variable.
+</p>
+
+
+
+
+<div id="spadComm9-56" class="spadComm" >
+<form id="formComm9-56" action="javascript:makeRequest('9-56');" >
+<input id="comm9-56" type="text" class="command" style="width: 8em;" value="a : Integer" />
+</form>
+<span id="commSav9-56" class="commSav" >a : Integer</span>
+<div id="mathAns9-56" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>Usually no output is displayed for <span class="teletype">Void</span> results.
+You can force the display of a rather ugly object by issuing
+<span class="teletype">)set message void on</span>.
+</p>
+
+
+
+
+<div id="spadComm9-57" class="spadComm" >
+<form id="formComm9-57" action="javascript:makeRequest('9-57');" >
+<input id="comm9-57" type="text" class="command" style="width: 14em;" value=")set message void on" />
+</form>
+<span id="commSav9-57" class="commSav" >)set message void on</span>
+<div id="mathAns9-57" ></div>
+</div>
+
+
+
+
+
+<div id="spadComm9-58" class="spadComm" >
+<form id="formComm9-58" action="javascript:makeRequest('9-58');" >
+<input id="comm9-58" type="text" class="command" style="width: 14em;" value="b : Fraction Integer" />
+</form>
+<span id="commSav9-58" class="commSav" >b : Fraction Integer</span>
+<div id="mathAns9-58" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"<mspace width="0.5em"/>(<mspace width="0.5em"/>)<mspace width="0.5em"/>"<mspace width="0.5em"/></mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Void
+</div>
+
+
+
+
+
+<div id="spadComm9-59" class="spadComm" >
+<form id="formComm9-59" action="javascript:makeRequest('9-59');" >
+<input id="comm9-59" type="text" class="command" style="width: 14em;" value=")set message void off" />
+</form>
+<span id="commSav9-59" class="commSav" >)set message void off</span>
+<div id="mathAns9-59" ></div>
+</div>
+
+
+
+<p>All values can be converted to type <span class="teletype">Void</span>.
+</p>
+
+
+
+
+<div id="spadComm9-60" class="spadComm" >
+<form id="formComm9-60" action="javascript:makeRequest('9-60');" >
+<input id="comm9-60" type="text" class="command" style="width: 6em;" value="3::Void " />
+</form>
+<span id="commSav9-60" class="commSav" >3::Void </span>
+<div id="mathAns9-60" ></div>
+</div>
+
+
+
+
+<div class="returnType">
+Void
+</div>
+
+
+
+<p>Once a value has been converted to <span class="teletype">Void</span>, it cannot be recovered.
+</p>
+
+
+
+
+<div id="spadComm9-61" class="spadComm" >
+<form id="formComm9-61" action="javascript:makeRequest('9-61');" >
+<input id="comm9-61" type="text" class="command" style="width: 15em;" value="% :: PositiveInteger " />
+</form>
+<span id="commSav9-61" class="commSav" >% :: PositiveInteger </span>
+<div id="mathAns9-61" ></div>
+</div>
+
+
+
+
+<div class="verbatim"><br />
+Cannot&nbsp;convert&nbsp;from&nbsp;type&nbsp;Void&nbsp;to&nbsp;PositiveInteger&nbsp;for&nbsp;value&nbsp;"()"<br />
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.85.xhtml" style="margin-right: 10px;">Previous Section 9.85 Vector</a><a href="section-9.87.xhtml" style="margin-right: 10px;">Next Section 9.87 WuWenTsunTriangularSet</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.87.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.87.xhtml
new file mode 100644
index 0000000..e640095
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.87.xhtml
@@ -0,0 +1,587 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.87</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.86.xhtml" style="margin-right: 10px;">Previous Section 9.86 Void</a><a href="section-9.88.xhtml" style="margin-right: 10px;">Next Section 9.88 XPBWPolynomial</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.87">
+<h2 class="sectiontitle">9.87  WuWenTsunTriangularSet</h2>
+
+
+<a name="WuWenTsunTriangularSetXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">WuWenTsunTriangularSet</span> domain constructor implements the
+characteristic set method of Wu Wen Tsun.  This algorithm computes a
+list of triangular sets from a list of polynomials such that the
+algebraic variety defined by the given list of polynomials decomposes
+into the union of the regular-zero sets of the computed triangular
+sets.  The constructor takes four arguments.  The first one, <span style="font-weight: bold;"> R</span>,
+is the coefficient ring of the polynomials; it must belong to the
+category <span class="teletype">IntegralDomain</span>.  The second one, <span style="font-weight: bold;"> E</span>, is the
+exponent monoid of the polynomials; it must belong to the category
+<span class="teletype">OrderedAbelianMonoidSup</span>.  The third one, <span style="font-weight: bold;"> V</span>, is the ordered
+set of variables; it must belong to the category <span class="teletype">OrderedSet</span>.
+The last one is the polynomial ring; it must belong to the category
+<span class="teletype">RecursivePolynomialCategory(R,E,V)</span>.  The abbreviation for 
+<span class="teletype">WuWenTsunTriangularSet</span> is <span class="teletype">WUTSET</span>.
+</p>
+
+
+<p>Let us illustrate the facilities by an example.
+</p>
+
+
+<p>Define the coefficient ring.
+</p>
+
+
+
+
+<div id="spadComm9-62" class="spadComm" >
+<form id="formComm9-62" action="javascript:makeRequest('9-62');" >
+<input id="comm9-62" type="text" class="command" style="width: 9em;" value="R := Integer " />
+</form>
+<span id="commSav9-62" class="commSav" >R := Integer </span>
+<div id="mathAns9-62" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>Integer</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the list of variables,
+</p>
+
+
+
+
+<div id="spadComm9-63" class="spadComm" >
+<form id="formComm9-63" action="javascript:makeRequest('9-63');" >
+<input id="comm9-63" type="text" class="command" style="width: 20em;" value="ls : List Symbol := [x,y,z,t] " />
+</form>
+<span id="commSav9-63" class="commSav" >ls : List Symbol := [x,y,z,t] </span>
+<div id="mathAns9-63" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>t</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>and make it an ordered set;
+</p>
+
+
+
+
+<div id="spadComm9-64" class="spadComm" >
+<form id="formComm9-64" action="javascript:makeRequest('9-64');" >
+<input id="comm9-64" type="text" class="command" style="width: 9em;" value="V := OVAR(ls)" />
+</form>
+<span id="commSav9-64" class="commSav" >V := OVAR(ls)</span>
+<div id="mathAns9-64" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedVariableList[x,y,z,t]</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>then define the exponent monoid.
+</p>
+
+
+
+
+<div id="spadComm9-65" class="spadComm" >
+<form id="formComm9-65" action="javascript:makeRequest('9-65');" >
+<input id="comm9-65" type="text" class="command" style="width: 16em;" value="E := IndexedExponents V" />
+</form>
+<span id="commSav9-65" class="commSav" >E := IndexedExponents V</span>
+<div id="mathAns9-65" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>IndexedExponentsOrderedVariableList[x,y,z,t]</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the polynomial ring.
+</p>
+
+
+
+
+<div id="spadComm9-66" class="spadComm" >
+<form id="formComm9-66" action="javascript:makeRequest('9-66');" >
+<input id="comm9-66" type="text" class="command" style="width: 10em;" value="P := NSMP(R, V)" />
+</form>
+<span id="commSav9-66" class="commSav" >P := NSMP(R, V)</span>
+<div id="mathAns9-66" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>NewSparseMultivariatePolynomial(Integer,OrderedVariableList[x,y,z,t])</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Let the variables be polynomial.
+</p>
+
+
+
+
+<div id="spadComm9-67" class="spadComm" >
+<form id="formComm9-67" action="javascript:makeRequest('9-67');" >
+<input id="comm9-67" type="text" class="command" style="width: 7em;" value="x: P := 'x" />
+</form>
+<span id="commSav9-67" class="commSav" >x: P := 'x</span>
+<div id="mathAns9-67" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>x</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-68" class="spadComm" >
+<form id="formComm9-68" action="javascript:makeRequest('9-68');" >
+<input id="comm9-68" type="text" class="command" style="width: 7em;" value="y: P := 'y" />
+</form>
+<span id="commSav9-68" class="commSav" >y: P := 'y</span>
+<div id="mathAns9-68" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>y</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-69" class="spadComm" >
+<form id="formComm9-69" action="javascript:makeRequest('9-69');" >
+<input id="comm9-69" type="text" class="command" style="width: 7em;" value="z: P := 'z" />
+</form>
+<span id="commSav9-69" class="commSav" >z: P := 'z</span>
+<div id="mathAns9-69" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>z</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-70" class="spadComm" >
+<form id="formComm9-70" action="javascript:makeRequest('9-70');" >
+<input id="comm9-70" type="text" class="command" style="width: 7em;" value="t: P := 't" />
+</form>
+<span id="commSav9-70" class="commSav" >t: P := 't</span>
+<div id="mathAns9-70" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>t</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+<p>Now call the <span class="teletype">WuWenTsunTriangularSet</span> domain constructor.
+</p>
+
+
+
+
+<div id="spadComm9-71" class="spadComm" >
+<form id="formComm9-71" action="javascript:makeRequest('9-71');" >
+<input id="comm9-71" type="text" class="command" style="width: 14em;" value="T := WUTSET(R,E,V,P)" />
+</form>
+<span id="commSav9-71" class="commSav" >T := WUTSET(R,E,V,P)</span>
+<div id="mathAns9-71" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>WuWenTsunTriangularSet(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;IndexedExponentsOrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[x,y,z,t],</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;NewSparseMultivariatePolynomial(Integer,</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedVariableList[x,y,z,t]))</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define a polynomial system.
+</p>
+
+
+
+
+<div id="spadComm9-72" class="spadComm" >
+<form id="formComm9-72" action="javascript:makeRequest('9-72');" >
+<input id="comm9-72" type="text" class="command" style="width: 20em;" value="p1 := x ** 31 - x ** 6 - x - y" />
+</form>
+<span id="commSav9-72" class="commSav" >p1 := x ** 31 - x ** 6 - x - y</span>
+<div id="mathAns9-72" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>31</mn></msup></mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>-</mo><mi>x</mi><mo>-</mo><mi>y</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-73" class="spadComm" >
+<form id="formComm9-73" action="javascript:makeRequest('9-73');" >
+<input id="comm9-73" type="text" class="command" style="width: 12em;" value="p2 := x ** 8  - z" />
+</form>
+<span id="commSav9-73" class="commSav" >p2 := x ** 8  - z</span>
+<div id="mathAns9-73" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>-</mo><mi>z</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-74" class="spadComm" >
+<form id="formComm9-74" action="javascript:makeRequest('9-74');" >
+<input id="comm9-74" type="text" class="command" style="width: 12em;" value="p3 := x ** 10 - t" />
+</form>
+<span id="commSav9-74" class="commSav" >p3 := x ** 10 - t</span>
+<div id="mathAns9-74" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-75" class="spadComm" >
+<form id="formComm9-75" action="javascript:makeRequest('9-75');" >
+<input id="comm9-75" type="text" class="command" style="width: 12em;" value="lp := [p1, p2, p3]" />
+</form>
+<span id="commSav9-75" class="commSav" >lp := [p1, p2, p3]</span>
+<div id="mathAns9-75" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mrow><msup><mi>x</mi><mn>31</mn></msup></mrow><mo>-</mo><mrow><msup><mi>x</mi><mn>6</mn></msup></mrow><mo>-</mo><mi>x</mi><mo>-</mo><mi>y</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>8</mn></msup></mrow><mo>-</mo><mi>z</mi></mrow><mo>,</mo><mrow><mrow><msup><mi>x</mi><mn>10</mn></msup></mrow><mo>-</mo><mi>t</mi></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+</div>
+
+
+
+<p>Compute a characteristic set of the system.
+</p>
+
+
+
+
+<div id="spadComm9-76" class="spadComm" >
+<form id="formComm9-76" action="javascript:makeRequest('9-76');" >
+<input id="comm9-76" type="text" class="command" style="width: 16em;" value="characteristicSet(lp)$T" />
+</form>
+<span id="commSav9-76" class="commSav" >characteristicSet(lp)$T</span>
+<div id="mathAns9-76" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>{</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mi>t</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>x</mi><mo>-</mo><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>}</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Union(
+WuWenTsunTriangularSet(Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t])),...)
+</div>
+
+
+
+<p>Solve the system.
+</p>
+
+
+
+
+<div id="spadComm9-77" class="spadComm" >
+<form id="formComm9-77" action="javascript:makeRequest('9-77');" >
+<input id="comm9-77" type="text" class="command" style="width: 12em;" value="zeroSetSplit(lp)$T" />
+</form>
+<span id="commSav9-77" class="commSav" >zeroSetSplit(lp)$T</span>
+<div id="mathAns9-77" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>{</mo><mi>t</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>}</mo></mrow><mo>,</mo><mrow><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mi>t</mi></mrow><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>{</mo><mrow><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>,</mo><mrow><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mo>(</mo><mo>-</mo><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mi>t</mi><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>6</mn></msup></mrow><mo>+</mo><mrow><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>x</mi><mo>-</mo><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>}</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List WuWenTsunTriangularSet(Integer,
+IndexedExponents OrderedVariableList [x,y,z,t],
+OrderedVariableList [x,y,z,t],
+NewSparseMultivariatePolynomial(Integer,
+OrderedVariableList [x,y,z,t]))
+</div>
+
+
+
+<p>The <span class="teletype">RegularTriangularSet</span> and
+<span class="teletype">SquareFreeRegularTriangularSet</span> domain constructors, the 
+<span class="teletype">LazardSetSolvingPackage</span> package constructors as well as, 
+<span class="teletype">SquareFreeRegularTriangularSet</span> and
+<span class="teletype">ZeroDimensionalSolvePackage</span> package constructors also provide
+operations to compute triangular decompositions of algebraic
+varieties.  These five constructor use a special kind of
+characteristic sets, called regular triangular sets.  These special
+characteristic sets have better properties than the general ones.
+Regular triangular sets and their related concepts are presented in
+the paper ``On the Theories of Triangular sets'' By P. Aubry, D. Lazard
+and M. Moreno Maza (to appear in the Journal of Symbolic Computation).
+The decomposition algorithm (due to the third author) available in the
+four above constructors provide generally better timings than the
+characteristic set method.  In fact, the <span class="teletype">WUTSET</span> constructor
+remains interesting for the purpose of manipulating characteristic
+sets whereas the other constructors are more convenient for solving
+polynomial systems.
+</p>
+
+
+<p>Note that the way of understanding triangular decompositions 
+is detailed in the example of the <span class="teletype">RegularTriangularSet</span>
+constructor.
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.86.xhtml" style="margin-right: 10px;">Previous Section 9.86 Void</a><a href="section-9.88.xhtml" style="margin-right: 10px;">Next Section 9.88 XPBWPolynomial</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.88.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.88.xhtml
new file mode 100644
index 0000000..6bdb451
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.88.xhtml
@@ -0,0 +1,1150 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.88</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.87.xhtml" style="margin-right: 10px;">Previous Section 9.87 WuWenTsunTriangularSet</a><a href="section-9.89.xhtml" style="margin-right: 10px;">Next Section 9.89 XPolynomial</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.88">
+<h2 class="sectiontitle">9.88  XPBWPolynomial</h2>
+
+
+<a name="XPBWPolynomialXmpPage" class="label"/>
+
+
+<p>Initialisations
+</p>
+
+
+
+
+<div id="spadComm9-78" class="spadComm" >
+<form id="formComm9-78" action="javascript:makeRequest('9-78');" >
+<input id="comm9-78" type="text" class="command" style="width: 10em;" value="a:Symbol := 'a " />
+</form>
+<span id="commSav9-78" class="commSav" >a:Symbol := 'a </span>
+<div id="mathAns9-78" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>a</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-79" class="spadComm" >
+<form id="formComm9-79" action="javascript:makeRequest('9-79');" >
+<input id="comm9-79" type="text" class="command" style="width: 10em;" value="b:Symbol := 'b " />
+</form>
+<span id="commSav9-79" class="commSav" >b:Symbol := 'b </span>
+<div id="mathAns9-79" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>b</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-80" class="spadComm" >
+<form id="formComm9-80" action="javascript:makeRequest('9-80');" >
+<input id="comm9-80" type="text" class="command" style="width: 16em;" value="RN := Fraction(Integer) " />
+</form>
+<span id="commSav9-80" class="commSav" >RN := Fraction(Integer) </span>
+<div id="mathAns9-80" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>FractionInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-81" class="spadComm" >
+<form id="formComm9-81" action="javascript:makeRequest('9-81');" >
+<input id="comm9-81" type="text" class="command" style="width: 24em;" value="word   := OrderedFreeMonoid Symbol " />
+</form>
+<span id="commSav9-81" class="commSav" >word   := OrderedFreeMonoid Symbol </span>
+<div id="mathAns9-81" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedFreeMonoidSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-82" class="spadComm" >
+<form id="formComm9-82" action="javascript:makeRequest('9-82');" >
+<input id="comm9-82" type="text" class="command" style="width: 19em;" value="lword := LyndonWord(Symbol) " />
+</form>
+<span id="commSav9-82" class="commSav" >lword := LyndonWord(Symbol) </span>
+<div id="mathAns9-82" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>LyndonWordSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-83" class="spadComm" >
+<form id="formComm9-83" action="javascript:makeRequest('9-83');" >
+<input id="comm9-83" type="text" class="command" style="width: 32em;" value="base  := PoincareBirkhoffWittLyndonBasis Symbol " />
+</form>
+<span id="commSav9-83" class="commSav" >base  := PoincareBirkhoffWittLyndonBasis Symbol </span>
+<div id="mathAns9-83" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>PoincareBirkhoffWittLyndonBasisSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-84" class="spadComm" >
+<form id="formComm9-84" action="javascript:makeRequest('9-84');" >
+<input id="comm9-84" type="text" class="command" style="width: 30em;" value="dpoly := XDistributedPolynomial(Symbol, RN)  " />
+</form>
+<span id="commSav9-84" class="commSav" >dpoly := XDistributedPolynomial(Symbol, RN)  </span>
+<div id="mathAns9-84" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>XDistributedPolynomial(Symbol,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-85" class="spadComm" >
+<form id="formComm9-85" action="javascript:makeRequest('9-85');" >
+<input id="comm9-85" type="text" class="command" style="width: 29em;" value="rpoly := XRecursivePolynomial(Symbol, RN)  " />
+</form>
+<span id="commSav9-85" class="commSav" >rpoly := XRecursivePolynomial(Symbol, RN)  </span>
+<div id="mathAns9-85" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>XRecursivePolynomial(Symbol,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-86" class="spadComm" >
+<form id="formComm9-86" action="javascript:makeRequest('9-86');" >
+<input id="comm9-86" type="text" class="command" style="width: 24em;" value="lpoly := LiePolynomial(Symbol, RN)  " />
+</form>
+<span id="commSav9-86" class="commSav" >lpoly := LiePolynomial(Symbol, RN)  </span>
+<div id="mathAns9-86" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>LiePolynomial(Symbol,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-87" class="spadComm" >
+<form id="formComm9-87" action="javascript:makeRequest('9-87');" >
+<input id="comm9-87" type="text" class="command" style="width: 25em;" value="poly  := XPBWPolynomial(Symbol, RN)  " />
+</form>
+<span id="commSav9-87" class="commSav" >poly  := XPBWPolynomial(Symbol, RN)  </span>
+<div id="mathAns9-87" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>XPBWPolynomial(Symbol,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+
+
+<div id="spadComm9-88" class="spadComm" >
+<form id="formComm9-88" action="javascript:makeRequest('9-88');" >
+<input id="comm9-88" type="text" class="command" style="width: 33em;" value="liste : List lword := LyndonWordsList([a,b], 6)  " />
+</form>
+<span id="commSav9-88" class="commSav" >liste : List lword := LyndonWordsList([a,b], 6)  </span>
+<div id="mathAns9-88" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>4</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>5</mn></msup></mrow><mo>]</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List LyndonWord Symbol
+</div>
+
+
+
+<p>Let's make some polynomials
+</p>
+
+
+
+
+<div id="spadComm9-89" class="spadComm" >
+<form id="formComm9-89" action="javascript:makeRequest('9-89');" >
+<input id="comm9-89" type="text" class="command" style="width: 5em;" value="0$poly " />
+</form>
+<span id="commSav9-89" class="commSav" >0$poly </span>
+<div id="mathAns9-89" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-90" class="spadComm" >
+<form id="formComm9-90" action="javascript:makeRequest('9-90');" >
+<input id="comm9-90" type="text" class="command" style="width: 5em;" value="1$poly " />
+</form>
+<span id="commSav9-90" class="commSav" >1$poly </span>
+<div id="mathAns9-90" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>1</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-91" class="spadComm" >
+<form id="formComm9-91" action="javascript:makeRequest('9-91');" >
+<input id="comm9-91" type="text" class="command" style="width: 10em;" value="p : poly := a  " />
+</form>
+<span id="commSav9-91" class="commSav" >p : poly := a  </span>
+<div id="mathAns9-91" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-92" class="spadComm" >
+<form id="formComm9-92" action="javascript:makeRequest('9-92');" >
+<input id="comm9-92" type="text" class="command" style="width: 10em;" value="q : poly := b  " />
+</form>
+<span id="commSav9-92" class="commSav" >q : poly := b  </span>
+<div id="mathAns9-92" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-93" class="spadComm" >
+<form id="formComm9-93" action="javascript:makeRequest('9-93');" >
+<input id="comm9-93" type="text" class="command" style="width: 12em;" value="pq: poly := p*q  " />
+</form>
+<span id="commSav9-93" class="commSav" >pq: poly := p*q  </span>
+<div id="mathAns9-93" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+<p>Coerce to distributed polynomial
+</p>
+
+
+
+
+<div id="spadComm9-94" class="spadComm" >
+<form id="formComm9-94" action="javascript:makeRequest('9-94');" >
+<input id="comm9-94" type="text" class="command" style="width: 8em;" value="pq :: dpoly " />
+</form>
+<span id="commSav9-94" class="commSav" >pq :: dpoly </span>
+<div id="mathAns9-94" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XDistributedPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+<p>Check some polynomial operations
+</p>
+
+
+
+
+<div id="spadComm9-95" class="spadComm" >
+<form id="formComm9-95" action="javascript:makeRequest('9-95');" >
+<input id="comm9-95" type="text" class="command" style="width: 7em;" value="mirror pq " />
+</form>
+<span id="commSav9-95" class="commSav" >mirror pq </span>
+<div id="mathAns9-95" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-96" class="spadComm" >
+<form id="formComm9-96" action="javascript:makeRequest('9-96');" >
+<input id="comm9-96" type="text" class="command" style="width: 10em;" value="ListOfTerms pq " />
+</form>
+<span id="commSav9-96" class="commSav" >ListOfTerms pq </span>
+<div id="mathAns9-96" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mi>k</mi><mo>=</mo><mrow><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow></mrow></mrow><mo>,</mo><mrow><mi>c</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mrow><mi>k</mi><mo>=</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow></mrow><mo>,</mo><mrow><mi>c</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List Record(k: PoincareBirkhoffWittLyndonBasis Symbol,c: Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-97" class="spadComm" >
+<form id="formComm9-97" action="javascript:makeRequest('9-97');" >
+<input id="comm9-97" type="text" class="command" style="width: 8em;" value="reductum pq " />
+</form>
+<span id="commSav9-97" class="commSav" >reductum pq </span>
+<div id="mathAns9-97" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-98" class="spadComm" >
+<form id="formComm9-98" action="javascript:makeRequest('9-98');" >
+<input id="comm9-98" type="text" class="command" style="width: 13em;" value="leadingMonomial pq " />
+</form>
+<span id="commSav9-98" class="commSav" >leadingMonomial pq </span>
+<div id="mathAns9-98" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PoincareBirkhoffWittLyndonBasis Symbol
+</div>
+
+
+
+
+
+<div id="spadComm9-99" class="spadComm" >
+<form id="formComm9-99" action="javascript:makeRequest('9-99');" >
+<input id="comm9-99" type="text" class="command" style="width: 11em;" value="coefficients pq " />
+</form>
+<span id="commSav9-99" class="commSav" >coefficients pq </span>
+<div id="mathAns9-99" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Fraction Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-100" class="spadComm" >
+<form id="formComm9-100" action="javascript:makeRequest('9-100');" >
+<input id="comm9-100" type="text" class="command" style="width: 10em;" value="leadingTerm pq " />
+</form>
+<span id="commSav9-100" class="commSav" >leadingTerm pq </span>
+<div id="mathAns9-100" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mi>k</mi><mo>=</mo><mrow><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow></mrow></mrow><mo>,</mo><mrow><mi>c</mi><mo>=</mo><mn>1</mn></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+Record(k: PoincareBirkhoffWittLyndonBasis Symbol,c: Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-101" class="spadComm" >
+<form id="formComm9-101" action="javascript:makeRequest('9-101');" >
+<input id="comm9-101" type="text" class="command" style="width: 7em;" value="degree pq " />
+</form>
+<span id="commSav9-101" class="commSav" >degree pq </span>
+<div id="mathAns9-101" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>2</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+
+
+<div id="spadComm9-102" class="spadComm" >
+<form id="formComm9-102" action="javascript:makeRequest('9-102');" >
+<input id="comm9-102" type="text" class="command" style="width: 11em;" value="pq4:=exp(pq,4)  " />
+</form>
+<span id="commSav9-102" class="commSav" >pq4:=exp(pq,4)  </span>
+<div id="mathAns9-102" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mn>1</mn><mo>+</mo><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>3</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mi>a</mi><mo>]</mo></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-103" class="spadComm" >
+<form id="formComm9-103" action="javascript:makeRequest('9-103');" >
+<input id="comm9-103" type="text" class="command" style="width: 12em;" value="log(pq4,4) - pq  " />
+</form>
+<span id="commSav9-103" class="commSav" >log(pq4,4) - pq  </span>
+<div id="mathAns9-103" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+<p>Calculations with verification in <span class="teletype">XDistributedPolynomial</span>.
+</p>
+
+
+
+
+<div id="spadComm9-104" class="spadComm" >
+<form id="formComm9-104" action="javascript:makeRequest('9-104');" >
+<input id="comm9-104" type="text" class="command" style="width: 22em;" value="lp1 :lpoly := LiePoly liste.10  " />
+</form>
+<span id="commSav9-104" class="commSav" >lp1 :lpoly := LiePoly liste.10  </span>
+<div id="mathAns9-104" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-105" class="spadComm" >
+<form id="formComm9-105" action="javascript:makeRequest('9-105');" >
+<input id="comm9-105" type="text" class="command" style="width: 22em;" value="lp2 :lpoly := LiePoly liste.11  " />
+</form>
+<span id="commSav9-105" class="commSav" >lp2 :lpoly := LiePoly liste.11  </span>
+<div id="mathAns9-105" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-106" class="spadComm" >
+<form id="formComm9-106" action="javascript:makeRequest('9-106');" >
+<input id="comm9-106" type="text" class="command" style="width: 18em;" value="lp  :lpoly := [lp1, lp2]  " />
+</form>
+<span id="commSav9-106" class="commSav" >lp  :lpoly := [lp1, lp2]  </span>
+<div id="mathAns9-106" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: LiePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-107" class="spadComm" >
+<form id="formComm9-107" action="javascript:makeRequest('9-107');" >
+<input id="comm9-107" type="text" class="command" style="width: 14em;" value="lpd1: dpoly := lp1  " />
+</form>
+<span id="commSav9-107" class="commSav" >lpd1: dpoly := lp1  </span>
+<div id="mathAns9-107" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XDistributedPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-108" class="spadComm" >
+<form id="formComm9-108" action="javascript:makeRequest('9-108');" >
+<input id="comm9-108" type="text" class="command" style="width: 14em;" value="lpd2: dpoly := lp2  " />
+</form>
+<span id="commSav9-108" class="commSav" >lpd2: dpoly := lp2  </span>
+<div id="mathAns9-108" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XDistributedPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-109" class="spadComm" >
+<form id="formComm9-109" action="javascript:makeRequest('9-109');" >
+<input id="comm9-109" type="text" class="command" style="width: 28em;" value="lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1  " />
+</form>
+<span id="commSav9-109" class="commSav" >lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1  </span>
+<div id="mathAns9-109" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>6</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>6</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>12</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>12</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>8</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>4</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>5</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>-</mo><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>4</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi></mrow><mo>+</mo><mrow><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XDistributedPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-110" class="spadComm" >
+<form id="formComm9-110" action="javascript:makeRequest('9-110');" >
+<input id="comm9-110" type="text" class="command" style="width: 12em;" value="lp :: dpoly - lpd " />
+</form>
+<span id="commSav9-110" class="commSav" >lp :: dpoly - lpd </span>
+<div id="mathAns9-110" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XDistributedPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+<p>Calculations with verification in <span class="teletype">XRecursivePolynomial</span>.
+</p>
+
+
+
+
+<div id="spadComm9-111" class="spadComm" >
+<form id="formComm9-111" action="javascript:makeRequest('9-111');" >
+<input id="comm9-111" type="text" class="command" style="width: 9em;" value="p := 3 * lp  " />
+</form>
+<span id="commSav9-111" class="commSav" >p := 3 * lp  </span>
+<div id="mathAns9-111" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-112" class="spadComm" >
+<form id="formComm9-112" action="javascript:makeRequest('9-112');" >
+<input id="comm9-112" type="text" class="command" style="width: 7em;" value="q := lp1  " />
+</form>
+<span id="commSav9-112" class="commSav" >q := lp1  </span>
+<div id="mathAns9-112" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-113" class="spadComm" >
+<form id="formComm9-113" action="javascript:makeRequest('9-113');" >
+<input id="comm9-113" type="text" class="command" style="width: 8em;" value="pq:= p * q  " />
+</form>
+<span id="commSav9-113" class="commSav" >pq:= p * q  </span>
+<div id="mathAns9-113" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>a</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><msup><mi>a</mi><mn>3</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>b</mi><mn>2</mn></msup></mrow><mo>]</mo></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPBWPolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-114" class="spadComm" >
+<form id="formComm9-114" action="javascript:makeRequest('9-114');" >
+<input id="comm9-114" type="text" class="command" style="width: 16em;" value="pr:rpoly := p :: rpoly  " />
+</form>
+<span id="commSav9-114" class="commSav" >pr:rpoly := p :: rpoly  </span>
+<div id="mathAns9-114" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>3</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>3</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>12</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>3</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>6</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>3</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>3</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>9</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>18</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>36</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>9</mn></mtd></mtr><mtr><mtd><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>12</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>18</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>3</mn><mo>)</mo><mo>)</mo></mtd></mtr><mtr><mtd><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>3</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>9</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>6</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>9</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>3</mn><mo>)</mo><mo>)</mo></mtd></mtr><mtr><mtd><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>9</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>18</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>36</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mn>18</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>9</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>12</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>36</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mn>36</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>24</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>36</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>36</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mn>12</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>3</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo></mtd></mtr><mtr><mtd><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>9</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>6</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>9</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo></mtd></mtr><mtr><mtd><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>3</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>6</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>12</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>6</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>24</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>6</mn><mo>)</mo></mtd></mtr><mtr><mtd><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>12</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>6</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>9</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>18</mn></mtd></mtr><mtr><mtd><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>36</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mn>18</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>9</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>3</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>9</mn></mtd></mtr><mtr><mtd><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>18</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>36</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>9</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mn>12</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>18</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>3</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>3</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>3</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>12</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /></mtd></mtr><mtr><mtd><mo>(</mo><mo>-</mo><mn>3</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>6</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>9</mn><mo>)</mo><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>3</mn><mo>)</mo><mo>)</mo><mo>)</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XRecursivePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-115" class="spadComm" >
+<form id="formComm9-115" action="javascript:makeRequest('9-115');" >
+<input id="comm9-115" type="text" class="command" style="width: 16em;" value="qr:rpoly := q :: rpoly  " />
+</form>
+<span id="commSav9-115" class="commSav" >qr:rpoly := q :: rpoly  </span>
+<div id="mathAns9-115" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mn>1</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>2</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>4</mn><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo><mo>)</mo><mo>)</mo><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mi>b</mi><mspace width="0.5 em" /><mo>(</mo><mi>a</mi><mspace width="0.5 em" /><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mo>(</mo><mo>-</mo><mn>2</mn><mo>)</mo><mo>+</mo><mi>b</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mi>a</mi><mspace width="0.5 em" /><mn>1</mn><mo>)</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XRecursivePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-116" class="spadComm" >
+<form id="formComm9-116" action="javascript:makeRequest('9-116');" >
+<input id="comm9-116" type="text" class="command" style="width: 14em;" value="pq :: rpoly - pr*qr  " />
+</form>
+<span id="commSav9-116" class="commSav" >pq :: rpoly - pr*qr  </span>
+<div id="mathAns9-116" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XRecursivePolynomial(Symbol,Fraction Integer)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.87.xhtml" style="margin-right: 10px;">Previous Section 9.87 WuWenTsunTriangularSet</a><a href="section-9.89.xhtml" style="margin-right: 10px;">Next Section 9.89 XPolynomial</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.89.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.89.xhtml
new file mode 100644
index 0000000..41c6b6a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.89.xhtml
@@ -0,0 +1,501 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.89</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.88.xhtml" style="margin-right: 10px;">Previous Section 9.88 XPBWPolynomial</a><a href="section-9.90.xhtml" style="margin-right: 10px;">Next Section 9.90 XPolynomialRing</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.89">
+<h2 class="sectiontitle">9.89  XPolynomial</h2>
+
+
+<a name="XPolynomialXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">XPolynomial</span> domain constructor implements multivariate
+polynomials whose set of variables is <span class="teletype">Symbol</span>.  These variables
+do not commute.  The only parameter of this construtor is the
+coefficient ring which may be non-commutative.  However, coefficients
+and variables commute.  The representation of the polynomials is
+recursive.  The abbreviation for <span class="teletype">XPolynomial</span> is <span class="teletype">XPOLY</span>.
+</p>
+
+
+<p>Other constructors like <span class="teletype">XPolynomialRing</span>, 
+<span class="teletype">XRecursivePolynomial</span> as well as <span class="teletype">XDistributedPolynomial</span>, 
+<span class="teletype">LiePolynomial</span> and <span class="teletype">XPBWPolynomial</span> implement multivariate
+polynomials in non-commutative variables.
+</p>
+
+
+<p>We illustrate now some of the facilities of the 
+<span class="teletype">XPOLY</span> domain constructor.
+</p>
+
+
+<p>Define a polynomial ring over the integers.
+</p>
+
+
+
+
+<div id="spadComm9-117" class="spadComm" >
+<form id="formComm9-117" action="javascript:makeRequest('9-117');" >
+<input id="comm9-117" type="text" class="command" style="width: 20em;" value="poly := XPolynomial(Integer) " />
+</form>
+<span id="commSav9-117" class="commSav" >poly := XPolynomial(Integer) </span>
+<div id="mathAns9-117" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>XPolynomialInteger</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define a first polynomial,
+</p>
+
+
+
+
+<div id="spadComm9-118" class="spadComm" >
+<form id="formComm9-118" action="javascript:makeRequest('9-118');" >
+<input id="comm9-118" type="text" class="command" style="width: 18em;" value="pr: poly := 2*x + 3*y-5   " />
+</form>
+<span id="commSav9-118" class="commSav" >pr: poly := 2*x + 3*y-5   </span>
+<div id="mathAns9-118" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>5</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mn>2</mn></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mn>3</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomial Integer
+</div>
+
+
+
+<p>and a second one.
+</p>
+
+
+
+
+<div id="spadComm9-119" class="spadComm" >
+<form id="formComm9-119" action="javascript:makeRequest('9-119');" >
+<input id="comm9-119" type="text" class="command" style="width: 14em;" value="pr2: poly := pr*pr   " />
+</form>
+<span id="commSav9-119" class="commSav" >pr2: poly := pr*pr   </span>
+<div id="mathAns9-119" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>25</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>20</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mn>4</mn></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mn>6</mn></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>30</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mn>6</mn></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mn>9</mn></mrow><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomial Integer
+</div>
+
+
+
+<p>Rewrite <span style="font-weight: bold;"> pr</span> in a distributive way,
+</p>
+
+
+
+
+<div id="spadComm9-120" class="spadComm" >
+<form id="formComm9-120" action="javascript:makeRequest('9-120');" >
+<input id="comm9-120" type="text" class="command" style="width: 11em;" value="pd  := expand pr" />
+</form>
+<span id="commSav9-120" class="commSav" >pd  := expand pr</span>
+<div id="mathAns9-120" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>5</mn><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>y</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XDistributedPolynomial(Symbol,Integer)
+</div>
+
+
+
+<p>compute its square,
+</p>
+
+
+
+
+<div id="spadComm9-121" class="spadComm" >
+<form id="formComm9-121" action="javascript:makeRequest('9-121');" >
+<input id="comm9-121" type="text" class="command" style="width: 11em;" value="pd2 := pd*pd    " />
+</form>
+<span id="commSav9-121" class="commSav" >pd2 := pd*pd    </span>
+<div id="mathAns9-121" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>25</mn><mo>-</mo><mrow><mn>20</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XDistributedPolynomial(Symbol,Integer)
+</div>
+
+
+
+<p>and checks that:
+</p>
+
+
+
+
+<div id="spadComm9-122" class="spadComm" >
+<form id="formComm9-122" action="javascript:makeRequest('9-122');" >
+<input id="comm9-122" type="text" class="command" style="width: 13em;" value="expand(pr2) - pd2  " />
+</form>
+<span id="commSav9-122" class="commSav" >expand(pr2) - pd2  </span>
+<div id="mathAns9-122" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>0</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XDistributedPolynomial(Symbol,Integer)
+</div>
+
+
+
+<p>We define:
+</p>
+
+
+
+
+<div id="spadComm9-123" class="spadComm" >
+<form id="formComm9-123" action="javascript:makeRequest('9-123');" >
+<input id="comm9-123" type="text" class="command" style="width: 10em;" value="qr :=  pr**3  " />
+</form>
+<span id="commSav9-123" class="commSav" >qr :=  pr**3  </span>
+<div id="mathAns9-123" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>-</mo><mn>125</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mn>150</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>60</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mn>8</mn></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mn>12</mn></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>90</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mn>12</mn></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mn>18</mn></mrow><mo>)</mo></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mn>225</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>90</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mn>12</mn></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mn>18</mn></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>135</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mn>18</mn></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mn>27</mn></mrow><mo>)</mo></mrow></mrow><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomial Integer
+</div>
+
+
+
+<p>and:
+</p>
+
+
+
+
+<div id="spadComm9-124" class="spadComm" >
+<form id="formComm9-124" action="javascript:makeRequest('9-124');" >
+<input id="comm9-124" type="text" class="command" style="width: 10em;" value="qd :=  pd**3  " />
+</form>
+<span id="commSav9-124" class="commSav" >qd :=  pd**3  </span>
+<div id="mathAns9-124" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>-</mo><mn>125</mn><mo>+</mo><mrow><mn>150</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>225</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>60</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>90</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>90</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>135</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>12</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XDistributedPolynomial(Symbol,Integer)
+</div>
+
+
+
+<p>We truncate <span style="font-weight: bold;"> qd</span> at degree <span style="font-weight: bold;"> 3</span>:
+</p>
+
+
+
+
+<div id="spadComm9-125" class="spadComm" >
+<form id="formComm9-125" action="javascript:makeRequest('9-125');" >
+<input id="comm9-125" type="text" class="command" style="width: 9em;" value=" trunc(qd,2) " />
+</form>
+<span id="commSav9-125" class="commSav" > trunc(qd,2) </span>
+<div id="mathAns9-125" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>125</mn><mo>+</mo><mrow><mn>150</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>225</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>60</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>90</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>90</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>135</mn><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XDistributedPolynomial(Symbol,Integer)
+</div>
+
+
+
+<p>The same for <span style="font-weight: bold;"> qr</span>:
+</p>
+
+
+
+
+<div id="spadComm9-126" class="spadComm" >
+<form id="formComm9-126" action="javascript:makeRequest('9-126');" >
+<input id="comm9-126" type="text" class="command" style="width: 8em;" value="trunc(qr,2) " />
+</form>
+<span id="commSav9-126" class="commSav" >trunc(qr,2) </span>
+<div id="mathAns9-126" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mn>125</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mn>150</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>60</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>90</mn><mo>)</mo></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mn>225</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>90</mn><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>135</mn><mo>)</mo></mrow></mrow><mo>)</mo></mrow></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomial Integer
+</div>
+
+
+
+<p>We define:
+</p>
+
+
+
+
+<div id="spadComm9-127" class="spadComm" >
+<form id="formComm9-127" action="javascript:makeRequest('9-127');" >
+<input id="comm9-127" type="text" class="command" style="width: 22em;" value="Word := OrderedFreeMonoid Symbol " />
+</form>
+<span id="commSav9-127" class="commSav" >Word := OrderedFreeMonoid Symbol </span>
+<div id="mathAns9-127" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedFreeMonoidSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>and:
+</p>
+
+
+
+
+<div id="spadComm9-128" class="spadComm" >
+<form id="formComm9-128" action="javascript:makeRequest('9-128');" >
+<input id="comm9-128" type="text" class="command" style="width: 13em;" value="w: Word := x*y**2  " />
+</form>
+<span id="commSav9-128" class="commSav" >w: Word := x*y**2  </span>
+<div id="mathAns9-128" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: OrderedFreeMonoid Symbol
+</div>
+
+
+
+<p>The we can compute the right-quotient of <span style="font-weight: bold;"> qr</span> by <span style="font-weight: bold;"> r</span>:
+</p>
+
+
+
+
+<div id="spadComm9-129" class="spadComm" >
+<form id="formComm9-129" action="javascript:makeRequest('9-129');" >
+<input id="comm9-129" type="text" class="command" style="width: 8em;" value="rquo(qr,w)  " />
+</form>
+<span id="commSav9-129" class="commSav" >rquo(qr,w)  </span>
+<div id="mathAns9-129" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>18</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomial Integer
+</div>
+
+
+
+<p>and the shuffle-product of <span style="font-weight: bold;"> pr</span> by <span style="font-weight: bold;"> r</span>:
+</p>
+
+
+
+
+<div id="spadComm9-130" class="spadComm" >
+<form id="formComm9-130" action="javascript:makeRequest('9-130');" >
+<input id="comm9-130" type="text" class="command" style="width: 11em;" value="sh(pr,w::poly)  " />
+</form>
+<span id="commSav9-130" class="commSav" >sh(pr,w::poly)  </span>
+<div id="mathAns9-130" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mn>4</mn></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mn>2</mn></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><mo>(</mo><mo>-</mo><mn>5</mn><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mn>2</mn></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mn>9</mn></mrow><mo>)</mo></mrow></mrow><mo>)</mo></mrow></mrow><mo>)</mo></mrow></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mn>3</mn></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomial Integer
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.88.xhtml" style="margin-right: 10px;">Previous Section 9.88 XPBWPolynomial</a><a href="section-9.90.xhtml" style="margin-right: 10px;">Next Section 9.90 XPolynomialRing</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.9.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.9.xhtml
new file mode 100644
index 0000000..c6160d3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.9.xhtml
@@ -0,0 +1,510 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.9</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.8.xhtml" style="margin-right: 10px;">Previous Section 9.8 Character</a><a href="section-9.10.xhtml" style="margin-right: 10px;">Next Section 9.10 CliffordAlgebra</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.9">
+<h2 class="sectiontitle">9.9  CharacterClass</h2>
+
+
+<a name="CharacterClassXmpPage" class="label"/>
+
+<p>The <span class="teletype">CharacterClass</span> domain allows classes of characters to be
+defined and manipulated efficiently.
+ 
+Character classes can be created by giving either a string or a list
+of characters.
+</p>
+
+
+
+
+<div id="spadComm9-138" class="spadComm" >
+<form id="formComm9-138" action="javascript:makeRequest('9-138');" >
+<input id="comm9-138" type="text" class="command" style="width: 52em;" value='cl1 := charClass [char "a", char "e", char "i", char "o", char "u", char "y"] ' />
+</form>
+<span id="commSav9-138" class="commSav" >cl1 := charClass [char "a", char "e", char "i", char "o", char "u", char "y"] </span>
+<div id="mathAns9-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"aeiouy"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-139" class="spadComm" >
+<form id="formComm9-139" action="javascript:makeRequest('9-139');" >
+<input id="comm9-139" type="text" class="command" style="width: 28em;" value='cl2 := charClass "bcdfghjklmnpqrstvwxyz" ' />
+</form>
+<span id="commSav9-139" class="commSav" >cl2 := charClass "bcdfghjklmnpqrstvwxyz" </span>
+<div id="mathAns9-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"bcdfghjklmnpqrstvwxyz"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+<p>A number of character classes are predefined for convenience.
+</p>
+
+
+
+
+<div id="spadComm9-140" class="spadComm" >
+<form id="formComm9-140" action="javascript:makeRequest('9-140');" >
+<input id="comm9-140" type="text" class="command" style="width: 5em;" value="digit()" />
+</form>
+<span id="commSav9-140" class="commSav" >digit()</span>
+<div id="mathAns9-140" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"0123456789"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-141" class="spadComm" >
+<form id="formComm9-141" action="javascript:makeRequest('9-141');" >
+<input id="comm9-141" type="text" class="command" style="width: 7em;" value="hexDigit()" />
+</form>
+<span id="commSav9-141" class="commSav" >hexDigit()</span>
+<div id="mathAns9-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"0123456789ABCDEFabcdef"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-142" class="spadComm" >
+<form id="formComm9-142" action="javascript:makeRequest('9-142');" >
+<input id="comm9-142" type="text" class="command" style="width: 8em;" value="upperCase()" />
+</form>
+<span id="commSav9-142" class="commSav" >upperCase()</span>
+<div id="mathAns9-142" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"ABCDEFGHIJKLMNOPQRSTUVWXYZ"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-143" class="spadComm" >
+<form id="formComm9-143" action="javascript:makeRequest('9-143');" >
+<input id="comm9-143" type="text" class="command" style="width: 8em;" value="lowerCase()" />
+</form>
+<span id="commSav9-143" class="commSav" >lowerCase()</span>
+<div id="mathAns9-143" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"abcdefghijklmnopqrstuvwxyz"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-144" class="spadComm" >
+<form id="formComm9-144" action="javascript:makeRequest('9-144');" >
+<input id="comm9-144" type="text" class="command" style="width: 8em;" value="alphabetic()" />
+</form>
+<span id="commSav9-144" class="commSav" >alphabetic()</span>
+<div id="mathAns9-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-145" class="spadComm" >
+<form id="formComm9-145" action="javascript:makeRequest('9-145');" >
+<input id="comm9-145" type="text" class="command" style="width: 10em;" value="alphanumeric()" />
+</form>
+<span id="commSav9-145" class="commSav" >alphanumeric()</span>
+<div id="mathAns9-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+<p>You can quickly test whether a character belongs to a class.
+</p>
+
+
+
+
+<div id="spadComm9-146" class="spadComm" >
+<form id="formComm9-146" action="javascript:makeRequest('9-146');" >
+<input id="comm9-146" type="text" class="command" style="width: 16em;" value='member?(char "a", cl1) ' />
+</form>
+<span id="commSav9-146" class="commSav" >member?(char "a", cl1) </span>
+<div id="mathAns9-146" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>true</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+
+
+<div id="spadComm9-147" class="spadComm" >
+<form id="formComm9-147" action="javascript:makeRequest('9-147');" >
+<input id="comm9-147" type="text" class="command" style="width: 16em;" value='member?(char "a", cl2) ' />
+</form>
+<span id="commSav9-147" class="commSav" >member?(char "a", cl2) </span>
+<div id="mathAns9-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext mathvariant='monospace'>false</mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Boolean
+</div>
+
+
+
+<p>Classes have the usual set operations because the <span class="teletype">CharacterClass</span>
+domain belongs to the category <span class="teletype">FiniteSetAggregate(Character)</span>.
+</p>
+
+
+
+
+<div id="spadComm9-148" class="spadComm" >
+<form id="formComm9-148" action="javascript:makeRequest('9-148');" >
+<input id="comm9-148" type="text" class="command" style="width: 14em;" value="intersect(cl1, cl2)  " />
+</form>
+<span id="commSav9-148" class="commSav" >intersect(cl1, cl2)  </span>
+<div id="mathAns9-148" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"y"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-149" class="spadComm" >
+<form id="formComm9-149" action="javascript:makeRequest('9-149');" >
+<input id="comm9-149" type="text" class="command" style="width: 14em;" value="union(cl1,cl2)       " />
+</form>
+<span id="commSav9-149" class="commSav" >union(cl1,cl2)       </span>
+<div id="mathAns9-149" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"abcdefghijklmnopqrstuvwxyz"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-150" class="spadComm" >
+<form id="formComm9-150" action="javascript:makeRequest('9-150');" >
+<input id="comm9-150" type="text" class="command" style="width: 14em;" value="difference(cl1,cl2)  " />
+</form>
+<span id="commSav9-150" class="commSav" >difference(cl1,cl2)  </span>
+<div id="mathAns9-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"aeiou"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-151" class="spadComm" >
+<form id="formComm9-151" action="javascript:makeRequest('9-151');" >
+<input id="comm9-151" type="text" class="command" style="width: 22em;" value="intersect(complement(cl1),cl2)  " />
+</form>
+<span id="commSav9-151" class="commSav" >intersect(complement(cl1),cl2)  </span>
+<div id="mathAns9-151" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"bcdfghjklmnpqrstvwxz"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+<p>You can modify character classes by adding or removing characters.
+</p>
+
+
+
+
+<div id="spadComm9-152" class="spadComm" >
+<form id="formComm9-152" action="javascript:makeRequest('9-152');" >
+<input id="comm9-152" type="text" class="command" style="width: 16em;" value='insert!(char "a", cl2) ' />
+</form>
+<span id="commSav9-152" class="commSav" >insert!(char "a", cl2) </span>
+<div id="mathAns9-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"abcdfghjklmnpqrstvwxyz"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+
+
+
+<div id="spadComm9-153" class="spadComm" >
+<form id="formComm9-153" action="javascript:makeRequest('9-153');" >
+<input id="comm9-153" type="text" class="command" style="width: 16em;" value='remove!(char "b", cl2) ' />
+</form>
+<span id="commSav9-153" class="commSav" >remove!(char "b", cl2) </span>
+<div id="mathAns9-153" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext mathvariant='monospace'>"acdfghjklmnpqrstvwxyz"</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: CharacterClass
+</div>
+
+
+<p> 
+For more information on related topics, see 
+<a href="section-9.8.xhtml#CharacterXmpPage" class="ref" >CharacterXmpPage</a>  and
+<a href="section-9.77.xhtml#StringXmpPage" class="ref" >StringXmpPage</a> .
+</p>
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.8.xhtml" style="margin-right: 10px;">Previous Section 9.8 Character</a><a href="section-9.10.xhtml" style="margin-right: 10px;">Next Section 9.10 CliffordAlgebra</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.90.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.90.xhtml
new file mode 100644
index 0000000..13b4b50
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.90.xhtml
@@ -0,0 +1,543 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.90</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.89.xhtml" style="margin-right: 10px;">Previous Section 9.89 XPolynomial</a><a href="section-9.91.xhtml" style="margin-right: 10px;">Next Section 9.91 ZeroDimensionalSolvePackage</a>
+<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.90">
+<h2 class="sectiontitle">9.90  XPolynomialRing</h2>
+
+
+<a name="XPolynomialRingXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">XPolynomialRing</span> domain constructor implements generalized
+polynomials with coefficients from an arbitrary <span class="teletype">Ring</span> (not
+necessarily commutative) and whose exponents are words from an
+arbitrary <span class="teletype">OrderedMonoid</span> (not necessarily commutative too).  Thus
+these polynomials are (finite) linear combinations of words.
+</p>
+
+
+<p>This constructor takes two arguments.  The first one is a <span class="teletype">Ring</span>
+and the second is an <span class="teletype">OrderedMonoid</span>.  The abbreviation for 
+<span class="teletype">XPolynomialRing</span> is <span class="teletype">XPR</span>.
+</p>
+
+
+<p>Other constructors like <span class="teletype">XPolynomial</span>, <span class="teletype">XRecursivePolynomial</span>
+<span class="teletype">XDistributedPolynomial</span>, <span class="teletype">LiePolynomial</span> and 
+<span class="teletype">XPBWPolynomial</span> implement multivariate polynomials in non-commutative
+variables.
+</p>
+
+
+<p>We illustrate now some of the facilities of the <span class="teletype">XPR</span> domain constructor.
+</p>
+
+
+<p>Define the free ordered monoid generated by the symbols.
+</p>
+
+
+
+
+<div id="spadComm9-131" class="spadComm" >
+<form id="formComm9-131" action="javascript:makeRequest('9-131');" >
+<input id="comm9-131" type="text" class="command" style="width: 23em;" value="Word := OrderedFreeMonoid(Symbol) " />
+</form>
+<span id="commSav9-131" class="commSav" >Word := OrderedFreeMonoid(Symbol) </span>
+<div id="mathAns9-131" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>OrderedFreeMonoidSymbol</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the linear combinations of these words with integer coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-132" class="spadComm" >
+<form id="formComm9-132" action="javascript:makeRequest('9-132');" >
+<input id="comm9-132" type="text" class="command" style="width: 18em;" value="poly:= XPR(Integer,Word)  " />
+</form>
+<span id="commSav9-132" class="commSav" >poly:= XPR(Integer,Word)  </span>
+<div id="mathAns9-132" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>XPolynomialRing(Integer,OrderedFreeMonoidSymbol)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Then we define a first element from <span style="font-weight: bold;"> poly</span>.
+</p>
+
+
+
+
+<div id="spadComm9-133" class="spadComm" >
+<form id="formComm9-133" action="javascript:makeRequest('9-133');" >
+<input id="comm9-133" type="text" class="command" style="width: 20em;" value="p:poly := 2 * x - 3 * y + 1  " />
+</form>
+<span id="commSav9-133" class="commSav" >p:poly := 2 * x - 3 * y + 1  </span>
+<div id="mathAns9-133" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>y</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+</div>
+
+
+
+<p>And a second one.
+</p>
+
+
+
+
+<div id="spadComm9-134" class="spadComm" >
+<form id="formComm9-134" action="javascript:makeRequest('9-134');" >
+<input id="comm9-134" type="text" class="command" style="width: 14em;" value="q:poly := 2 * x + 1  " />
+</form>
+<span id="commSav9-134" class="commSav" >q:poly := 2 * x + 1  </span>
+<div id="mathAns9-134" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+</div>
+
+
+
+<p>We compute their sum,
+</p>
+
+
+
+
+<div id="spadComm9-135" class="spadComm" >
+<form id="formComm9-135" action="javascript:makeRequest('9-135');" >
+<input id="comm9-135" type="text" class="command" style="width: 4em;" value="p + q" />
+</form>
+<span id="commSav9-135" class="commSav" >p + q</span>
+<div id="mathAns9-135" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>2</mn><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>y</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+</div>
+
+
+
+<p>their product,
+</p>
+
+
+
+
+<div id="spadComm9-136" class="spadComm" >
+<form id="formComm9-136" action="javascript:makeRequest('9-136');" >
+<input id="comm9-136" type="text" class="command" style="width: 4em;" value="p * q" />
+</form>
+<span id="commSav9-136" class="commSav" >p * q</span>
+<div id="mathAns9-136" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mn>1</mn><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>x</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+</div>
+
+
+
+<p>and see that variables do not commute.
+</p>
+
+
+
+
+<div id="spadComm9-137" class="spadComm" >
+<form id="formComm9-137" action="javascript:makeRequest('9-137');" >
+<input id="comm9-137" type="text" class="command" style="width: 16em;" value="(p+q)**2-p**2-q**2-2*p*q" />
+</form>
+<span id="commSav9-137" class="commSav" >(p+q)**2-p**2-q**2-2*p*q</span>
+<div id="mathAns9-137" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>x</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+</div>
+
+
+
+<p>Now we define a ring of square matrices,
+</p>
+
+
+
+
+<div id="spadComm9-138" class="spadComm" >
+<form id="formComm9-138" action="javascript:makeRequest('9-138');" >
+<input id="comm9-138" type="text" class="command" style="width: 26em;" value="M := SquareMatrix(2,Fraction Integer)  " />
+</form>
+<span id="commSav9-138" class="commSav" >M := SquareMatrix(2,Fraction Integer)  </span>
+<div id="mathAns9-138" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtext><mrow><mtext>SquareMatrix(2,FractionInteger)</mtext></mrow></mtext></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>and the linear combinations of words with these  matrices as coefficients.
+</p>
+
+
+
+
+<div id="spadComm9-139" class="spadComm" >
+<form id="formComm9-139" action="javascript:makeRequest('9-139');" >
+<input id="comm9-139" type="text" class="command" style="width: 15em;" value="poly1:= XPR(M,Word)   " />
+</form>
+<span id="commSav9-139" class="commSav" >poly1:= XPR(M,Word)   </span>
+<div id="mathAns9-139" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mtext>XPolynomialRing(SquareMatrix(2,FractionInteger),</mtext></mrow></mtd></mtr><mtr><mtd><mrow><mtext>&nbsp;&nbsp;OrderedFreeMonoidSymbol)</mtext></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define a first matrix,
+</p>
+
+
+
+
+<div id="spadComm9-140" class="spadComm" >
+<form id="formComm9-140" action="javascript:makeRequest('9-140');" >
+<input id="comm9-140" type="text" class="command" style="width: 38em;" value="m1:M := matrix [ [i*j**2 for i in 1..2] for j in 1..2]  " />
+</form>
+<span id="commSav9-140" class="commSav" >m1:M := matrix [ [i*j**2 for i in 1..2] for j in 1..2]  </span>
+<div id="mathAns9-140" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>8</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Fraction Integer)
+</div>
+
+
+
+<p>a second one,
+</p>
+
+
+
+
+<div id="spadComm9-141" class="spadComm" >
+<form id="formComm9-141" action="javascript:makeRequest('9-141');" >
+<input id="comm9-141" type="text" class="command" style="width: 13em;" value="m2:M := m1 - 5/4   " />
+</form>
+<span id="commSav9-141" class="commSav" >m2:M := m1 - 5/4   </span>
+<div id="mathAns9-141" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mfrac><mn>27</mn><mn>4</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Fraction Integer)
+</div>
+
+
+
+<p>and a third one.
+</p>
+
+
+
+
+<div id="spadComm9-142" class="spadComm" >
+<form id="formComm9-142" action="javascript:makeRequest('9-142');" >
+<input id="comm9-142" type="text" class="command" style="width: 12em;" value="m3: M := m2**2   " />
+</form>
+<span id="commSav9-142" class="commSav" >m3: M := m2**2   </span>
+<div id="mathAns9-142" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>129</mn><mn>16</mn></mfrac></mtd><mtd><mn>13</mn></mtd></mtr><mtr><mtd><mn>26</mn></mtd><mtd><mfrac><mn>857</mn><mn>16</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: SquareMatrix(2,Fraction Integer)
+</div>
+
+
+
+<p>Define a polynomial,
+</p>
+
+
+
+
+<div id="spadComm9-143" class="spadComm" >
+<form id="formComm9-143" action="javascript:makeRequest('9-143');" >
+<input id="comm9-143" type="text" class="command" style="width: 29em;" value="pm:poly1   := m1*x + m2*y + m3*z - 2/3     " />
+</form>
+<span id="commSav9-143" class="commSav" >pm:poly1   := m1*x + m2*y + m3*z - 2/3     </span>
+<div id="mathAns9-143" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>2</mn><mn>3</mn></mfrac></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mfrac><mn>2</mn><mn>3</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>8</mn></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mfrac><mn>27</mn><mn>4</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>129</mn><mn>16</mn></mfrac></mtd><mtd><mn>13</mn></mtd></mtr><mtr><mtd><mn>26</mn></mtd><mtd><mfrac><mn>857</mn><mn>16</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+XPolynomialRing(
+SquareMatrix(2,Fraction Integer),
+OrderedFreeMonoid Symbol)
+</div>
+
+
+
+<p>a second one,
+</p>
+
+
+
+
+<div id="spadComm9-144" class="spadComm" >
+<form id="formComm9-144" action="javascript:makeRequest('9-144');" >
+<input id="comm9-144" type="text" class="command" style="width: 16em;" value="qm:poly1 := pm - m1*x   " />
+</form>
+<span id="commSav9-144" class="commSav" >qm:poly1 := pm - m1*x   </span>
+<div id="mathAns9-144" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>2</mn><mn>3</mn></mfrac></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mfrac><mn>2</mn><mn>3</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mfrac><mn>27</mn><mn>4</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>129</mn><mn>16</mn></mfrac></mtd><mtd><mn>13</mn></mtd></mtr><mtr><mtd><mn>26</mn></mtd><mtd><mfrac><mn>857</mn><mn>16</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+XPolynomialRing(
+SquareMatrix(2,Fraction Integer),
+OrderedFreeMonoid Symbol)
+</div>
+
+
+
+<p>and the following power.
+</p>
+
+
+
+
+<div id="spadComm9-145" class="spadComm" >
+<form id="formComm9-145" action="javascript:makeRequest('9-145');" >
+<input id="comm9-145" type="text" class="command" style="width: 4em;" value="qm**3 " />
+</form>
+<span id="commSav9-145" class="commSav" >qm**3 </span>
+<div id="mathAns9-145" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>8</mn><mn>27</mn></mfrac></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mfrac><mn>8</mn><mn>27</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>16</mn><mn>3</mn></mfrac></mtd><mtd><mn>9</mn></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>43</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>52</mn><mn>3</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>104</mn><mn>3</mn></mfrac></mtd><mtd><mfrac><mn>857</mn><mn>12</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>129</mn><mn>8</mn></mfrac></mtd><mtd><mo>-</mo><mn>26</mn></mtd></mtr><mtr><mtd><mo>-</mo><mn>52</mn></mtd><mtd><mo>-</mo><mfrac><mn>857</mn><mn>8</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>3199</mn><mn>32</mn></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>831</mn><mn>4</mn></mfrac></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>831</mn><mn>2</mn></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>26467</mn><mn>32</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>3199</mn><mn>32</mn></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>831</mn><mn>4</mn></mfrac></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>831</mn><mn>2</mn></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>26467</mn><mn>32</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mo>-</mo><mfrac><mn>103169</mn><mn>128</mn></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>6409</mn><mn>4</mn></mfrac></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>6409</mn><mn>2</mn></mfrac></mtd><mtd><mo>-</mo><mfrac><mn>820977</mn><mn>128</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>3199</mn><mn>64</mn></mfrac></mtd><mtd><mfrac><mn>831</mn><mn>8</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>831</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>26467</mn><mn>64</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>103169</mn><mn>256</mn></mfrac></mtd><mtd><mfrac><mn>6409</mn><mn>8</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>6409</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>820977</mn><mn>256</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>103169</mn><mn>256</mn></mfrac></mtd><mtd><mfrac><mn>6409</mn><mn>8</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>6409</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>820977</mn><mn>256</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>3178239</mn><mn>1024</mn></mfrac></mtd><mtd><mfrac><mn>795341</mn><mn>128</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>795341</mn><mn>64</mn></mfrac></mtd><mtd><mfrac><mn>25447787</mn><mn>1024</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>103169</mn><mn>256</mn></mfrac></mtd><mtd><mfrac><mn>6409</mn><mn>8</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>6409</mn><mn>4</mn></mfrac></mtd><mtd><mfrac><mn>820977</mn><mn>256</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>3178239</mn><mn>1024</mn></mfrac></mtd><mtd><mfrac><mn>795341</mn><mn>128</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>795341</mn><mn>64</mn></mfrac></mtd><mtd><mfrac><mn>25447787</mn><mn>1024</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mi>z</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>3178239</mn><mn>1024</mn></mfrac></mtd><mtd><mfrac><mn>795341</mn><mn>128</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>795341</mn><mn>64</mn></mfrac></mtd><mtd><mfrac><mn>25447787</mn><mn>1024</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>[</mo><mtable><mtr><mtd><mfrac><mn>98625409</mn><mn>4096</mn></mfrac></mtd><mtd><mfrac><mn>12326223</mn><mn>256</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>12326223</mn><mn>128</mn></mfrac></mtd><mtd><mfrac><mn>788893897</mn><mn>4096</mn></mfrac></mtd></mtr></mtable><mo>]</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid Symbol)
+</div>
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.89.xhtml" style="margin-right: 10px;">Previous Section 9.89 XPolynomial</a><a href="section-9.91.xhtml" style="margin-right: 10px;">Next Section 9.91 ZeroDimensionalSolvePackage</a>
+<a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/section-9.91.xhtml b/src/axiom-website/hyperdoc/axbook/section-9.91.xhtml
new file mode 100644
index 0000000..43a7508
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/section-9.91.xhtml
@@ -0,0 +1,1099 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
+<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xlink="http://www.w3.org/1999/xlink" >
+
+
+  <head>
+    <title>Section9.91</title>
+    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
+    <script type="text/javascript" src="bookax1.js" />
+  </head>
+
+  <body>
+<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.90.xhtml" style="margin-right: 10px;">Previous Section 9.90 XPolynomialRing</a><a href="section-10.0.xhtml" style="margin-right: 10px;">Next Section 10.0 Interactive Programming</a><a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.91">
+<h2 class="sectiontitle">9.91  ZeroDimensionalSolvePackage</h2>
+
+
+<a name="ZeroDimensionalSolvePackageXmpPage" class="label"/>
+
+
+<p>The <span class="teletype">ZeroDimensionalSolvePackage</span> package constructor provides
+operations for computing symbolically the complex or real roots of
+zero-dimensional algebraic systems.
+</p>
+
+
+<p>The package provides <span style="font-weight: bold;"> no</span> multiplicity information (i.e. some
+returned roots may be double or higher) but only distinct roots are
+returned.
+</p>
+
+
+<p>Complex roots are given by means of univariate representations of
+irreducible regular chains.  These representations are computed by the
+<span class="spadfunFrom" >univariateSolve</span><span class="index">univariateSolve</span><a name="chapter-9-58"/><span class="index">ZeroDimensionalSolvePackage</span><a name="chapter-9-59"/> operation
+(by calling the <span class="teletype">InternalRationalUnivariateRepresentationPackage</span>
+package constructor which does the job).
+</p>
+
+
+<p>Real roots are given by means of tuples of coordinates lying in the
+<span class="teletype">RealClosure</span> of the coefficient ring.  They are computed by the
+<span class="spadfunFrom" >realSolve</span><span class="index">realSolve</span><a name="chapter-9-60"/><span class="index">ZeroDimensionalSolvePackage</span><a name="chapter-9-61"/> and
+<span class="spadfunFrom" >positiveSolve</span><span class="index">positiveSolve</span><a name="chapter-9-62"/><span class="index">ZeroDimensionalSolvePackage</span><a name="chapter-9-63"/> operations.
+The former computes all the solutions of the input system with real
+coordinates whereas the later concentrate on the solutions with
+(strictly) positive coordinates.  In both cases, the computations are
+performed by the <span class="teletype">RealClosure</span> constructor.
+</p>
+
+
+<p>Both computations of complex roots and real roots rely on triangular
+decompositions.  These decompositions can be computed in two different
+ways.  First, by a applying the
+<span class="spadfunFrom" >zeroSetSplit</span><span class="index">zeroSetSplit</span><a name="chapter-9-64"/><span class="index">RegularTriangularSet</span><a name="chapter-9-65"/> operation from the
+<span class="teletype">REGSET</span> domain constructor.  In that case, no Groebner bases are
+computed.  This strategy is used by default.  Secondly, by applying
+the <span class="spadfunFrom" >zeroSetSplit</span><span class="index">zeroSetSplit</span><a name="chapter-9-66"/><span class="index">LexTriangularPackage</span><a name="chapter-9-67"/> from 
+<span class="teletype">LEXTRIPK</span>.  To use this later strategy with the operations
+<span class="spadfunFrom" >univariateSolve</span><span class="index">univariateSolve</span><a name="chapter-9-68"/><span class="index">ZeroDimensionalSolvePackage</span><a name="chapter-9-69"/>,
+<span class="spadfunFrom" >realSolve</span><span class="index">realSolve</span><a name="chapter-9-70"/><span class="index">ZeroDimensionalSolvePackage</span><a name="chapter-9-71"/> and
+<span class="spadfunFrom" >positiveSolve</span><span class="index">positiveSolve</span><a name="chapter-9-72"/><span class="index">ZeroDimensionalSolvePackage</span><a name="chapter-9-73"/> one just
+needs to use an extra boolean argument.
+</p>
+
+
+<p>Note that the way of understanding triangular decompositions 
+is detailed in the example of the <span class="teletype">RegularTriangularSet</span>
+constructor.
+</p>
+
+
+<p>The <span class="teletype">ZeroDimensionalSolvePackage</span> constructor takes three
+arguments.  The first one <span style="font-weight: bold;"> R</span> is the coefficient ring; it must
+belong to the categories <span class="teletype">OrderedRing</span>, <span class="teletype">EuclideanDomain</span>,
+<span class="teletype">CharacteristicZero</span> and <span class="teletype">RealConstant</span>.  This means
+essentially that <span style="font-weight: bold;"> R</span> is <span class="teletype">Integer</span> or <span class="teletype">Fraction(Integer)</span>.
+The second argument <span style="font-weight: bold;"> ls</span> is the list of variables involved in the
+systems to solve.  The third one MUST BE <span style="font-weight: bold;"> concat(ls,s)</span> where 
+<span style="font-weight: bold;"> s</span> is an additional symbol used for the univariate representations.
+The abbreviation for <span class="teletype">ZeroDimensionalSolvePackage</span> is <span class="teletype">ZDSOLVE</span>.
+</p>
+
+
+<p>We illustrate now how to use the constructor <span class="teletype">ZDSOLVE</span> by two
+examples: the <span class="em">Arnborg and Lazard</span> system and the <span class="em">L-3</span> system
+(Aubry and Moreno Maza).  Note that the use of this package is also
+demonstrated in the example of the <span class="teletype">LexTriangularPackage</span>
+constructor.
+</p>
+
+
+<p>Define the coefficient ring.
+</p>
+
+
+
+
+<div id="spadComm9-146" class="spadComm" >
+<form id="formComm9-146" action="javascript:makeRequest('9-146');" >
+<input id="comm9-146" type="text" class="command" style="width: 9em;" value="R := Integer " />
+</form>
+<span id="commSav9-146" class="commSav" >R := Integer </span>
+<div id="mathAns9-146" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mi>Integer</mi></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define the lists of variables:
+</p>
+
+
+
+
+<div id="spadComm9-147" class="spadComm" >
+<form id="formComm9-147" action="javascript:makeRequest('9-147');" >
+<input id="comm9-147" type="text" class="command" style="width: 20em;" value="ls : List Symbol := [x,y,z,t] " />
+</form>
+<span id="commSav9-147" class="commSav" >ls : List Symbol := [x,y,z,t] </span>
+<div id="mathAns9-147" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>t</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>and:
+</p>
+
+
+
+
+<div id="spadComm9-148" class="spadComm" >
+<form id="formComm9-148" action="javascript:makeRequest('9-148');" >
+<input id="comm9-148" type="text" class="command" style="width: 30em;" value="ls2 : List Symbol := [x,y,z,t,new()$Symbol] " />
+</form>
+<span id="commSav9-148" class="commSav" >ls2 : List Symbol := [x,y,z,t,new()$Symbol] </span>
+<div id="mathAns9-148" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>t</mi><mo>,</mo><mo>%</mo><mi>A</mi><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Symbol
+</div>
+
+
+
+<p>Call the package:
+</p>
+
+
+
+
+<div id="spadComm9-149" class="spadComm" >
+<form id="formComm9-149" action="javascript:makeRequest('9-149');" >
+<input id="comm9-149" type="text" class="command" style="width: 17em;" value="pack := ZDSOLVE(R,ls,ls2)" />
+</form>
+<span id="commSav9-149" class="commSav" >pack := ZDSOLVE(R,ls,ls2)</span>
+<div id="mathAns9-149" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle>failed to identify token in skiptok
+<mrow><mi>ZeroDimensionalSolvePackage</mi><mo>(</mo><mi>Integer</mi><mo>,</mo><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>t</mi><mo>]</mo><mo>,</mo><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>t</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Domain
+</div>
+
+
+
+<p>Define a polynomial system (Arnborg-Lazard)
+</p>
+
+
+
+
+<div id="spadComm9-150" class="spadComm" >
+<form id="formComm9-150" action="javascript:makeRequest('9-150');" >
+<input id="comm9-150" type="text" class="command" style="width: 42em;" value="p1 := x**2*y*z + x*y**2*z + x*y*z**2 + x*y*z + x*y + x*z + y*z " />
+</form>
+<span id="commSav9-150" class="commSav" >p1 := x**2*y*z + x*y**2*z + x*y*z**2 + x*y*z + x*y + x*z + y*z </span>
+<div id="mathAns9-150" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-151" class="spadComm" >
+<form id="formComm9-151" action="javascript:makeRequest('9-151');" >
+<input id="comm9-151" type="text" class="command" style="width: 44em;" value="p2 := x**2*y**2*z + x*y**2*z**2 + x**2*y*z + x*y*z + y*z + x + z " />
+</form>
+<span id="commSav9-151" class="commSav" >p2 := x**2*y**2*z + x*y**2*z**2 + x**2*y*z + x*y*z + y*z + x + z </span>
+<div id="mathAns9-151" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mi>x</mi></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-152" class="spadComm" >
+<form id="formComm9-152" action="javascript:makeRequest('9-152');" >
+<input id="comm9-152" type="text" class="command" style="width: 46em;" value="p3 := x**2*y**2*z**2 + x**2*y**2*z + x*y**2*z + x*y*z + x*z + z + 1 " />
+</form>
+<span id="commSav9-152" class="commSav" >p3 := x**2*y**2*z**2 + x**2*y**2*z + x*y**2*z + x*y*z + x*z + z + 1 </span>
+<div id="mathAns9-152" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-153" class="spadComm" >
+<form id="formComm9-153" action="javascript:makeRequest('9-153');" >
+<input id="comm9-153" type="text" class="command" style="width: 12em;" value="lp := [p1, p2, p3]" />
+</form>
+<span id="commSav9-153" class="commSav" >lp := [p1, p2, p3]</span>
+<div id="mathAns9-153" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mi>x</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>x</mi><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+<p>Note that these polynomials do not involve the variable <span style="font-weight: bold;"> t</span>;
+we will use it in the second example.
+</p>
+
+
+<p>First compute a decomposition into regular chains (i.e. regular
+triangular sets).
+</p>
+
+
+
+
+<div id="spadComm9-154" class="spadComm" >
+<form id="formComm9-154" action="javascript:makeRequest('9-154');" >
+<input id="comm9-154" type="text" class="command" style="width: 15em;" value="triangSolve(lp)$pack  " />
+</form>
+<span id="commSav9-154" class="commSav" >triangSolve(lp)$pack  </span>
+<div id="mathAns9-154" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mo>{</mo><mrow><msup><mi>z</mi><mn>20</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>41</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>71</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>106</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>16</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>92</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>197</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>145</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>257</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>278</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>201</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>278</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>257</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>145</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>197</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>92</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>106</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>71</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>41</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mn>1</mn><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mrow><mn>14745844</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>50357474</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>130948857</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>185261586</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>180077775</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>338007307</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>275379623</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>453190404</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>474597456</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>366147695</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>481433567</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>430613166</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>261878358</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>326073537</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>163008796</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>177213227</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>104356755</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>65241699</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9237732</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>1567348</mn><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>1917314</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6508991</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16973165</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>24000259</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>23349192</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>43786426</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>35696474</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>58724172</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>61480792</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>47452440</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>62378085</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>55776527</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>33940618</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>42233406</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>21122875</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>22958177</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>13504569</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8448317</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1195888</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>202934</mn><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mo>(</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>(</mo><mo>-</mo><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mn>1</mn><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>-</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mi>z</mi><mo>+</mo><mn>1</mn><mo>)</mo><mspace width="0.5 em" /><mi>x</mi><mo>+</mo><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn><mo>}</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List RegularChain(Integer,[x,y,z,t])
+</div>
+
+
+
+<p>We can see easily from this decomposition (consisting of a single
+regular chain) that the input system has 20 complex roots.
+</p>
+
+
+<p>Then we compute a univariate representation of this regular chain.
+</p>
+
+
+
+
+<div id="spadComm9-155" class="spadComm" >
+<form id="formComm9-155" action="javascript:makeRequest('9-155');" >
+<input id="comm9-155" type="text" class="command" style="width: 16em;" value="univariateSolve(lp)$pack" />
+</form>
+<span id="commSav9-155" class="commSav" >univariateSolve(lp)$pack</span>
+<div id="mathAns9-155" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mo>[</mo><mi>complexRoots</mi><mo>=</mo><mrow><msup><mo>?</mo><mn>12</mn></msup></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>7</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>21</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>1</mn><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mn>63</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>62</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>721</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1220</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>705</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>285</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>1512</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>735</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1401</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>21</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>215</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1577</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>142</mn><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mn>63</mn><mspace width="0.5 em" /><mi>y</mi><mo>-</mo><mrow><mn>75</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>890</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1682</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>516</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>588</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1953</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>1323</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1815</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>426</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>243</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1801</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>679</mn><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mi>z</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>[</mo><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mo>?</mo><mo>+</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo></mrow></mrow><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>1</mn></mrow></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List Record(
+complexRoots: SparseUnivariatePolynomial Integer,
+coordinates: List Polynomial Integer)
+</div>
+
+
+
+<p>We see that the zeros of our regular chain are split into three components.
+This is due to the use of univariate polynomial factorization.
+</p>
+
+
+<p>Each of these components consist of two parts.  The first one is an
+irreducible univariate polynomial <span style="font-weight: bold;"> p(?)</span> which defines a simple
+algebraic extension of the field of fractions of <span style="font-weight: bold;"> R</span>.  The second
+one consists of multivariate polynomials <span style="font-weight: bold;"> pol1(x,%A)</span>, 
+<span style="font-weight: bold;"> pol2(y,%A)</span> and <span style="font-weight: bold;"> pol3(z,%A)</span>.  Each of these polynomials involve
+two variables: one is an indeterminate <span style="font-weight: bold;"> x</span>, <span style="font-weight: bold;"> y</span> or <span style="font-weight: bold;"> z</span> of
+the input system <span style="font-weight: bold;"> lp</span> and the other is <span style="font-weight: bold;"> %A</span> which represents
+any root of <span style="font-weight: bold;"> p(?)</span>.  Recall that this <span style="font-weight: bold;"> %A</span> is the last
+element of the third parameter of <span class="teletype">ZDSOLVE</span>.  Thus any complex
+root <span style="font-weight: bold;"> ?</span> of <span style="font-weight: bold;"> p(?)</span> leads to a solution of the input system
+<span style="font-weight: bold;"> lp</span> by replacing <span style="font-weight: bold;"> %A</span> by this <span style="font-weight: bold;"> ?</span> in <span style="font-weight: bold;"> pol1(x,%A)</span>,
+<span style="font-weight: bold;"> pol2(y,%A)</span> and <span style="font-weight: bold;"> pol3(z,%A)</span>.  Note that the polynomials
+<span style="font-weight: bold;"> pol1(x,%A)</span>, <span style="font-weight: bold;"> pol2(y,%A)</span> and <span style="font-weight: bold;"> pol3(z,%A)</span> have degree
+one w.r.t. <span style="font-weight: bold;"> x</span>, <span style="font-weight: bold;"> y</span> or <span style="font-weight: bold;"> z</span> respectively.  This is always
+the case for all univariate representations.  Hence the operation 
+<span style="font-weight: bold;"> univariateSolve</span> replaces a system of multivariate polynomials by a
+list of univariate polynomials, what justifies its name.  Another
+example of univariate representations illustrates the 
+<span class="teletype">LexTriangularPackage</span> package constructor.
+</p>
+
+
+<p>We now compute the solutions with real coordinates:
+</p>
+
+
+
+
+<div id="spadComm9-156" class="spadComm" >
+<form id="formComm9-156" action="javascript:makeRequest('9-156');" >
+<input id="comm9-156" type="text" class="command" style="width: 18em;" value="lr := realSolve(lp)$pack   " />
+</form>
+<span id="commSav9-156" class="commSav" >lr := realSolve(lp)$pack   </span>
+<div id="mathAns9-156" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mo>[</mo><mrow><mo>%</mo><mi>B1</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1184459</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2335702</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>5460230</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>79900378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>43953929</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13420192</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>553986</mn><mn>3731</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>193381378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>35978916</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>358660781</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>271667666</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>118784873</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>337505020</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1389370</mn><mn>11193</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>688291</mn><mn>4459</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3378002</mn><mn>42189</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>140671876</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>32325724</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>8270</mn><mn>343</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B1</mi></mrow></mrow><mo>-</mo><mfrac><mn>9741532</mn><mn>1645371</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>91729</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>487915</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>4114333</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1276987</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>13243117</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>16292173</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26536060</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>722714</mn><mn>18081</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>5382578</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15449995</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>14279770</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6603890</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>409930</mn><mn>6027</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>37340389</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>34893715</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26686318</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>801511</mn><mn>26117</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>17206178</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B1</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4406102</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B1</mi></mrow></mrow><mo>+</mo><mfrac><mn>377534</mn><mn>705159</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+<p><math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B2</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1184459</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2335702</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>5460230</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>79900378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>43953929</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13420192</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>553986</mn><mn>3731</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>193381378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>35978916</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>358660781</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>271667666</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>118784873</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>337505020</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1389370</mn><mn>11193</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>688291</mn><mn>4459</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3378002</mn><mn>42189</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>140671876</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>32325724</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>8270</mn><mn>343</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B2</mi></mrow></mrow><mo>-</mo><mfrac><mn>9741532</mn><mn>1645371</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>91729</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>487915</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>4114333</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1276987</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>13243117</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>16292173</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26536060</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>722714</mn><mn>18081</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>5382578</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15449995</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>14279770</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6603890</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>409930</mn><mn>6027</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>37340389</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>34893715</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26686318</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>801511</mn><mn>26117</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>17206178</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B2</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4406102</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B2</mi></mrow></mrow><mo>+</mo><mfrac><mn>377534</mn><mn>705159</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B3</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1184459</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2335702</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>5460230</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>79900378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>43953929</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13420192</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>553986</mn><mn>3731</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>193381378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>35978916</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>358660781</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>271667666</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>118784873</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>337505020</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1389370</mn><mn>11193</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>688291</mn><mn>4459</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3378002</mn><mn>42189</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>140671876</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>32325724</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>8270</mn><mn>343</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B3</mi></mrow></mrow><mo>-</mo><mfrac><mn>9741532</mn><mn>1645371</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>91729</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>487915</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>4114333</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1276987</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>13243117</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>16292173</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26536060</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>722714</mn><mn>18081</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>5382578</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15449995</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>14279770</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6603890</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>409930</mn><mn>6027</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>37340389</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>34893715</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26686318</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>801511</mn><mn>26117</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>17206178</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B3</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4406102</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B3</mi></mrow></mrow><mo>+</mo><mfrac><mn>377534</mn><mn>705159</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B4</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1184459</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2335702</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>5460230</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>79900378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>43953929</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13420192</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>553986</mn><mn>3731</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>193381378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>35978916</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>358660781</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>271667666</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>118784873</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>337505020</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1389370</mn><mn>11193</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>688291</mn><mn>4459</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3378002</mn><mn>42189</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>140671876</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>32325724</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>8270</mn><mn>343</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B4</mi></mrow></mrow><mo>-</mo><mfrac><mn>9741532</mn><mn>1645371</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>91729</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>487915</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>4114333</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1276987</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>13243117</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>16292173</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26536060</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>722714</mn><mn>18081</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>5382578</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15449995</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>14279770</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6603890</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>409930</mn><mn>6027</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>37340389</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>34893715</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26686318</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>801511</mn><mn>26117</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>17206178</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B4</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4406102</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B4</mi></mrow></mrow><mo>+</mo><mfrac><mn>377534</mn><mn>705159</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B5</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1184459</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2335702</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>5460230</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>79900378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>43953929</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13420192</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>553986</mn><mn>3731</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>193381378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>35978916</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>358660781</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>271667666</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>118784873</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>337505020</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1389370</mn><mn>11193</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>688291</mn><mn>4459</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3378002</mn><mn>42189</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>140671876</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>32325724</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>8270</mn><mn>343</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B5</mi></mrow></mrow><mo>-</mo><mfrac><mn>9741532</mn><mn>1645371</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>91729</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>487915</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>4114333</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1276987</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>13243117</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>16292173</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26536060</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>722714</mn><mn>18081</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>5382578</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15449995</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>14279770</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6603890</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>409930</mn><mn>6027</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>37340389</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>34893715</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26686318</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>801511</mn><mn>26117</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>17206178</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B5</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4406102</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B5</mi></mrow></mrow><mo>+</mo><mfrac><mn>377534</mn><mn>705159</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B6</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1184459</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2335702</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>5460230</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>79900378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>43953929</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13420192</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>553986</mn><mn>3731</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>193381378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>35978916</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>358660781</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>271667666</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>118784873</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>337505020</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1389370</mn><mn>11193</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>688291</mn><mn>4459</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3378002</mn><mn>42189</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>140671876</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>32325724</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>8270</mn><mn>343</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B6</mi></mrow></mrow><mo>-</mo><mfrac><mn>9741532</mn><mn>1645371</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>91729</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>487915</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>4114333</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1276987</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>13243117</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>16292173</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26536060</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>722714</mn><mn>18081</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>5382578</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15449995</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>14279770</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6603890</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>409930</mn><mn>6027</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>37340389</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>34893715</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26686318</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>801511</mn><mn>26117</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>17206178</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B6</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4406102</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B6</mi></mrow></mrow><mo>+</mo><mfrac><mn>377534</mn><mn>705159</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B7</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1184459</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2335702</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>5460230</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>79900378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>43953929</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13420192</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>553986</mn><mn>3731</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>193381378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>35978916</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>358660781</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>271667666</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>118784873</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>337505020</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1389370</mn><mn>11193</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>688291</mn><mn>4459</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3378002</mn><mn>42189</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>140671876</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>32325724</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>8270</mn><mn>343</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B7</mi></mrow></mrow><mo>-</mo><mfrac><mn>9741532</mn><mn>1645371</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>91729</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>487915</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>4114333</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1276987</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>13243117</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>16292173</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26536060</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>722714</mn><mn>18081</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>5382578</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15449995</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>14279770</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6603890</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>409930</mn><mn>6027</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>37340389</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>34893715</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26686318</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>801511</mn><mn>26117</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>17206178</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B7</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4406102</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B7</mi></mrow></mrow><mo>+</mo><mfrac><mn>377534</mn><mn>705159</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B8</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1184459</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2335702</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>5460230</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>79900378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>43953929</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>13420192</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>553986</mn><mn>3731</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>193381378</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>35978916</mn><mn>182819</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>358660781</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>271667666</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>118784873</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>337505020</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1389370</mn><mn>11193</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>688291</mn><mn>4459</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>3378002</mn><mn>42189</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>140671876</mn><mn>1645371</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>32325724</mn><mn>548457</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>8270</mn><mn>343</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B8</mi></mrow></mrow><mo>-</mo><mfrac><mn>9741532</mn><mn>1645371</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>-</mo><mrow><mfrac><mn>91729</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>487915</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>18</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>4114333</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>17</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1276987</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>16</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>13243117</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>16292173</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26536060</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>722714</mn><mn>18081</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>5382578</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>15449995</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>14279770</mn><mn>235053</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>6603890</mn><mn>100737</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>409930</mn><mn>6027</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>37340389</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>34893715</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>26686318</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mfrac><mn>801511</mn><mn>26117</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>17206178</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B8</mi></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4406102</mn><mn>705159</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B8</mi></mrow></mrow><mo>+</mo><mfrac><mn>377534</mn><mn>705159</mn></mfrac><mo>]</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: List List RealClosure Fraction Integer
+</div>
+
+
+<p>The number of real solutions for the input system is:
+</p>
+
+
+
+
+<div id="spadComm9-157" class="spadComm" >
+<form id="formComm9-157" action="javascript:makeRequest('9-157');" >
+<input id="comm9-157" type="text" class="command" style="width: 4em;" value=" # lr " />
+</form>
+<span id="commSav9-157" class="commSav" > # lr </span>
+<div id="mathAns9-157" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>8</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Each of these real solutions is given by a list of elements in 
+<span class="teletype">RealClosure(R)</span>.  In these 8 lists, the first element is a value of
+<span style="font-weight: bold;"> z</span>, the second of <span style="font-weight: bold;"> y</span> and the last of <span style="font-weight: bold;"> x</span>.  This is
+logical since by setting the list of variables of the package to 
+<span style="font-weight: bold;"> [x,y,z,t]</span> we mean that the elimination ordering on the variables is
+<span style="font-weight: bold;"> t &lt; z &lt; y &lt; x </span>.  Note that each system treated by the 
+<span class="teletype">ZDSOLVE</span> package constructor needs only to be zero-dimensional
+w.r.t. the variables involved in the system it-self and not
+necessarily w.r.t. all the variables used to define the package.
+</p>
+
+
+<p>We can approximate these real numbers as follows. 
+This computation takes between 30 sec. and 5 min, depending on your machine.
+</p>
+
+
+
+
+<div id="spadComm9-158" class="spadComm" >
+<form id="formComm9-158" action="javascript:makeRequest('9-158');" >
+<input id="comm9-158" type="text" class="command" style="width: 41em;" value="[ [approximate(r,1/1000000) for r in point] for point in lr] " />
+</form>
+<span id="commSav9-158" class="commSav" >[ [approximate(r,1/1000000) for r in point] for point in lr] </span>
+<div id="mathAns9-158" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mo>[</mo><mo>-</mo><mfrac><mn>10048059</mn><mn>2097152</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mn>450305731698538794352439791383896641459673197621176821933588120838</mn></mtd></mtr><mtr><mtd><mn>551631405892456717609142362969577740309983336076104889822891657813</mn></mtd></mtr><mtr><mtd><mn>709430983859733113720258484693913237615701950676035760116591745498</mn></mtd></mtr><mtr><mtd><mn>681538209878909485152342039281129312614132985654697714546466149548</mn></mtd></mtr><mtr><mtd><mn>782591994118844704172244049192156726354215802806143775884436463441</mn></mtd></mtr><mtr><mtd><mn>0045253024786561923163288214175</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>450305728302524548851651180698582663508310069375732046528055470686</mn></mtd></mtr><mtr><mtd><mn>564494957750991686720188943809040835481793171859386279762455151898</mn></mtd></mtr><mtr><mtd><mn>357079304877442429148870882984032418920030143612331486020082144373</mn></mtd></mtr><mtr><mtd><mn>379075531124363291986489542170422894957129001611949880795702366386</mn></mtd></mtr><mtr><mtd><mn>544306939202714897968826671232335604349152343406892427528041733857</mn></mtd></mtr><mtr><mtd><mn>4817381189277066143312396681216</mn><mo>,</mo></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+<p><math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mn>210626076882347507389479868048601659624960714869068553876368371502</mn></mtd></mtr><mtr><mtd><mn>063968085864965079005588950564689330944709709993780218732909532589</mn></mtd></mtr><mtr><mtd><mn>878524724902071750498366048207515661873872451468533306001120296463</mn></mtd></mtr><mtr><mtd><mn>516638135154325598220025030528398108683711061484230702609121129792</mn></mtd></mtr><mtr><mtd><mn>987689628568183047905476005638076266490561846205530604781619178201</mn></mtd></mtr><mtr><mtd><mn>15887037891389881895</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>210626060949846419247211380481647417534196295329643410241390314236</mn></mtd></mtr><mtr><mtd><mn>875796768527388858559097596521177886218987288195394364024629735706</mn></mtd></mtr><mtr><mtd><mn>195981232610365979902512686325867656720234210687703171018424748418</mn></mtd></mtr><mtr><mtd><mn>142328892183768123706270847029570621848592886740077193782849920092</mn></mtd></mtr><mtr><mtd><mn>376059331416890100066637389634759811822855673103707202647449677622</mn></mtd></mtr><mtr><mtd><mn>83837629939232800768</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mo>-</mo><mfrac><mn>2563013</mn><mn>2097152</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mn>261134617679192778969861769323775771923825996306354178192275233</mn></mtd></mtr><mtr><mtd><mn>044018989966807292833849076862359320744212592598673381593224350480</mn></mtd></mtr><mtr><mtd><mn>9294837523030237337236806668167446173001727271353311571242897</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>11652254005052225305839819160045891437572266102768589900087901348</mn></mtd></mtr><mtr><mtd><mn>199149409224137539839713940195234333204081399281531888294957554551</mn></mtd></mtr><mtr><mtd><mn>63963417619308395977544797140231469234269034921938055593984</mn><mo>,</mo></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mn>3572594550275917221096588729615788272998517054675603239578198141</mn></mtd></mtr><mtr><mtd><mn>006034091735282826590621902304466963941971038923304526273329316373</mn></mtd></mtr><mtr><mtd><mn>7574500619789892286110976997087250466235373</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>10395482693455989368770712448340260558008145511201705922005223665</mn></mtd></mtr><mtr><mtd><mn>917594096594864423391410294529502651799899601048118758225302053465</mn></mtd></mtr><mtr><mtd><mn>051315812439017247289173865014702966308864</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mo>-</mo><mfrac><mn>1715967</mn><mn>2097152</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mn>421309353378430352108483951797708239037726150396958622482899843</mn></mtd></mtr><mtr><mtd><mn>660603065607635937456481377349837660312126782256580143620693951995</mn></mtd></mtr><mtr><mtd><mn>146518222580524697287410022543952491</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>94418141441853744586496920343492240524365974709662536639306419607</mn></mtd></mtr><mtr><mtd><mn>958058825854931998401916999176594432648246411351873835838881478673</mn></mtd></mtr><mtr><mtd><mn>4019307857605820364195856822304768</mn><mo>,</mo></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mn>7635833347112644222515625424410831225347475669008589338834162172</mn></mtd></mtr><mtr><mtd><mn>501904994376346730876809042845208919919925302105720971453918982731</mn></mtd></mtr><mtr><mtd><mn>3890725914035</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>26241887640860971997842976104780666339342304678958516022785809785</mn></mtd></mtr><mtr><mtd><mn>037845492057884990196406022669660268915801035435676250390186298871</mn></mtd></mtr><mtr><mtd><mn>4128491675648</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mo>-</mo><mfrac><mn>437701</mn><mn>2097152</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mn>1683106908638349588322172332654225913562986313181951031452750161</mn></mtd></mtr><mtr><mtd><mn>441497473455328150721364868355579646781603507777199075077835213366</mn></mtd></mtr><mtr><mtd><mn>48453365491383623741304759</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>16831068680952133890017099827059136389630776687312261111677851880</mn></mtd></mtr><mtr><mtd><mn>049074252262986803258878109626141402985973669842648879989083770687</mn></mtd></mtr><mtr><mtd><mn>9999845423381649008099328</mn><mo>,</mo></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mn>4961550109835010186422681013422108735958714801003760639707968096</mn></mtd></mtr><mtr><mtd><mn>64691282670847283444311723917219104249213450966312411133</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>49615498727577383155091920782102090298528971186110971262363840408</mn></mtd></mtr><mtr><mtd><mn>2937659261914313170254867464792718363492160482442215424</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mfrac><mn>222801</mn><mn>2097152</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mn>899488488040242826510759512197069142713604569254197827557300186</mn></mtd></mtr><mtr><mtd><mn>521375992158813771669612634910165522019514299493229913718324170586</mn></mtd></mtr><mtr><mtd><mn>7672383477</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>11678899986650263721777651006918885827089699602299347696908357524</mn></mtd></mtr><mtr><mtd><mn>570777794164352094737678665077694058889427645877185424342556259924</mn></mtd></mtr><mtr><mtd><mn>56372224</mn><mo>,</mo></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mn>238970488813315687832080154437380839561277150920849101984745299</mn></mtd></mtr><mtr><mtd><mn>188550954651952546783901661359399969388664003628357055232115503787</mn></mtd></mtr><mtr><mtd><mn>1291458703265</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>53554872736450963260904032866899319059882254446854114332215938336</mn></mtd></mtr><mtr><mtd><mn>811929575628336714686542903407469936562859255991176021204461834431</mn></mtd></mtr><mtr><mtd><mn>45479421952</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mfrac><mn>765693</mn><mn>2097152</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mn>8558969219816716267873244761178198088724698958616670140213765754</mn></mtd></mtr><mtr><mtd><mn>322002303251685786118678330840203328837654339523418704917749518340</mn></mtd></mtr><mtr><mtd><mn>772512899000391009630373148561</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>29414424455330107909764284113763934998155802159458569179064525354</mn></mtd></mtr><mtr><mtd><mn>957230138568189417023302287798901412962367211381542319972389173221</mn></mtd></mtr><mtr><mtd><mn>567119652444639331719460159488</mn><mo>,</mo></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mn>205761823058257210124765032486024256111130258154358880884392366</mn></mtd></mtr><mtr><mtd><mn>276754938224165936271229077761280019292142057440894808519374368858</mn></mtd></mtr><mtr><mtd><mn>27622246433251878894899015</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>26715982033257355380979523535014502205763137598908350970917225206</mn></mtd></mtr><mtr><mtd><mn>427101987719026671839489062898637147596783602924839492046164715377</mn></mtd></mtr><mtr><mtd><mn>77775324180661095366656</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mfrac><mn>5743879</mn><mn>2097152</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mn>1076288816968906847955546394773570208171456724942618614023663123</mn></mtd></mtr><mtr><mtd><mn>574768960850434263971398072546592772662158833449797698617455397887</mn></mtd></mtr><mtr><mtd><mn>562900072984768000608343553189801693408727205047612559889232757563</mn></mtd></mtr><mtr><mtd><mn>830528688953535421809482771058917542602890060941949620874083007858</mn></mtd></mtr><mtr><mtd><mn>36666945350176624841488732463225</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>31317689570803179466484619400235520441903766134585849862285496319</mn></mtd></mtr><mtr><mtd><mn>161966016162197817656155325322947465296482764305838108940793745664</mn></mtd></mtr><mtr><mtd><mn>607578231468885811955560292085152188388832003186584074693994260632</mn></mtd></mtr><mtr><mtd><mn>605898286123092315966691297079864813198515719429272303406229340239</mn></mtd></mtr><mtr><mtd><mn>234867030420681530440845099008</mn><mo>,</mo></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mn>211328669918575091836412047556545843787017248986548599438982813</mn></mtd></mtr><mtr><mtd><mn>533526444466528455752649273493169173140787270143293550347334817207</mn></mtd></mtr><mtr><mtd><mn>609872054584900878007756416053431789468836611952973998050294416266</mn></mtd></mtr><mtr><mtd><mn>855009812796195049621022194287808935967492585059442776850225178975</mn></mtd></mtr><mtr><mtd><mn>8706752831632503615</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>16276155849379875802429066243471045808891444661684597180431538394</mn></mtd></mtr><mtr><mtd><mn>083725255333098080703636995855022160112110871032636095510260277694</mn></mtd></mtr><mtr><mtd><mn>140873911481262211681397816825874380753225914661319399754572005223</mn></mtd></mtr><mtr><mtd><mn>498385689642856344480185620382723787873544601061061415180109356172</mn></mtd></mtr><mtr><mtd><mn>051706396253618176</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mfrac><mn>19739877</mn><mn>2097152</mn></mfrac><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mn>299724993683270330379901580486152094921504038750070717770128576</mn></mtd></mtr><mtr><mtd><mn>672019253057942247895356602435986014310154780163808277161116037221</mn></mtd></mtr><mtr><mtd><mn>287484777803580987284314922548423836585801362934170532170258233335</mn></mtd></mtr><mtr><mtd><mn>091800960178993702398593530490046049338987383703085341034708990888</mn></mtd></mtr><mtr><mtd><mn>081485398113201846458245880061539477074169948729587596021075021589</mn></mtd></mtr><mtr><mtd><mn>194881447685487103153093129546733219013370267109820090228230051075</mn></mtd></mtr><mtr><mtd><mn>18607185928457030277807397796525813862762239286996106809728023675</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>23084332748522785907289100811918110239065041413214326461239367948</mn></mtd></mtr><mtr><mtd><mn>739333192706089607021381934176478983606202295191766329376317868514</mn></mtd></mtr><mtr><mtd><mn>550147660272062590222525055517418236888968838066366025744317604722</mn></mtd></mtr><mtr><mtd><mn>402920931967294751602472688341211418933188487286618444349272872851</mn></mtd></mtr><mtr><mtd><mn>128970807675528648950565858640331785659103870650061128015164035227</mn></mtd></mtr><mtr><mtd><mn>410373609905560544769495270592270708095930494912575195547088792595</mn></mtd></mtr><mtr><mtd><mn>9552929920110858560812556635485429471554031675979542656381353984</mn><mo>,</mo></mtd></mtr></mtable><mo>)</mo></mrow></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mfrac><mrow><mo>(</mo><mtable><mtr><mtd><mo>-</mo><mn>512818926354822848909627639786894008060093841066308045940796633</mn></mtd></mtr><mtr><mtd><mn>584500926410949052045982531625008472301004703502449743652303892581</mn></mtd></mtr><mtr><mtd><mn>895928931293158470135392762143543439867426304729390912285013385199</mn></mtd></mtr><mtr><mtd><mn>069649023156609437199433379507078262401172758774998929661127731837</mn></mtd></mtr><mtr><mtd><mn>229462420711653791043655457414608288470130554391262041935488541073</mn></mtd></mtr><mtr><mtd><mn>594015777589660282236457586461183151294397397471516692046506185060</mn></mtd></mtr><mtr><mtd><mn>376287516256195847052412587282839139194642913955</mn></mtd></mtr></mtable><mo>)</mo></mrow><mrow><mo>(</mo><mtable><mtr><mtd><mn>22882819397784393305312087931812904711836310924553689903863908242</mn></mtd></mtr><mtr><mtd><mn>435094636442362497730806474389877391449216077946826538517411890917</mn></mtd></mtr><mtr><mtd><mn>117418681451149783372841918224976758683587294866447308566225526872</mn></mtd></mtr><mtr><mtd><mn>092037244118004814057028371983106422912756761957746144438159967135</mn></mtd></mtr><mtr><mtd><mn>026293917497835900414708601277523729964886277426724876224800632688</mn></mtd></mtr><mtr><mtd><mn>088893248918508424949343473376030759399802682084829048596781777514</mn></mtd></mtr><mtr><mtd><mn>4465749979827872616963053217673201717237252096</mn></mtd></mtr></mtable><mo>)</mo></mrow></mfrac><mo>]</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: List List Fraction Integer
+</div>
+
+
+
+<p>We can also concentrate on the solutions with real (strictly) positive
+coordinates:
+</p>
+
+
+
+
+<div id="spadComm9-159" class="spadComm" >
+<form id="formComm9-159" action="javascript:makeRequest('9-159');" >
+<input id="comm9-159" type="text" class="command" style="width: 22em;" value="lpr := positiveSolve(lp)$pack   " />
+</form>
+<span id="commSav9-159" class="commSav" >lpr := positiveSolve(lp)$pack   </span>
+<div id="mathAns9-159" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List RealClosure Fraction Integer
+</div>
+
+
+
+<p>Thus we have checked that the input system has no solution with
+strictly positive coordinates.
+</p>
+
+
+<p>Let us define another polynomial system (<span class="em">L-3</span>).
+</p>
+
+
+
+
+<div id="spadComm9-160" class="spadComm" >
+<form id="formComm9-160" action="javascript:makeRequest('9-160');" >
+<input id="comm9-160" type="text" class="command" style="width: 18em;" value="f0 := x**3 + y + z + t- 1 " />
+</form>
+<span id="commSav9-160" class="commSav" >f0 := x**3 + y + z + t- 1 </span>
+<div id="mathAns9-160" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>z</mi><mo>+</mo><mi>y</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mi>t</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-161" class="spadComm" >
+<form id="formComm9-161" action="javascript:makeRequest('9-161');" >
+<input id="comm9-161" type="text" class="command" style="width: 18em;" value="f1 := x + y**3 + z + t -1 " />
+</form>
+<span id="commSav9-161" class="commSav" >f1 := x + y**3 + z + t -1 </span>
+<div id="mathAns9-161" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>z</mi><mo>+</mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mo>+</mo><mi>x</mi><mo>+</mo><mi>t</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-162" class="spadComm" >
+<form id="formComm9-162" action="javascript:makeRequest('9-162');" >
+<input id="comm9-162" type="text" class="command" style="width: 17em;" value="f2 := x + y + z**3 + t-1 " />
+</form>
+<span id="commSav9-162" class="commSav" >f2 := x + y + z**3 + t-1 </span>
+<div id="mathAns9-162" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mi>y</mi><mo>+</mo><mi>x</mi><mo>+</mo><mi>t</mi><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-163" class="spadComm" >
+<form id="formComm9-163" action="javascript:makeRequest('9-163');" >
+<input id="comm9-163" type="text" class="command" style="width: 18em;" value="f3 := x + y + z + t**3 -1 " />
+</form>
+<span id="commSav9-163" class="commSav" >f3 := x + y + z + t**3 -1 </span>
+<div id="mathAns9-163" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mi>z</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>x</mi><mo>+</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: Polynomial Integer
+</div>
+
+
+
+
+
+<div id="spadComm9-164" class="spadComm" >
+<form id="formComm9-164" action="javascript:makeRequest('9-164');" >
+<input id="comm9-164" type="text" class="command" style="width: 15em;" value="lf := [f0, f1, f2, f3]" />
+</form>
+<span id="commSav9-164" class="commSav" >lf := [f0, f1, f2, f3]</span>
+<div id="mathAns9-164" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mi>z</mi><mo>+</mo><mi>y</mi><mo>+</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>+</mo><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>+</mo><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow><mo>+</mo><mi>x</mi><mo>+</mo><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mi>y</mi><mo>+</mo><mi>x</mi><mo>+</mo><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>x</mi><mo>+</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Polynomial Integer
+</div>
+
+
+
+<p>First compute a decomposition into regular chains (i.e. regular
+triangular sets).
+</p>
+
+
+
+
+<div id="spadComm9-165" class="spadComm" >
+<form id="formComm9-165" action="javascript:makeRequest('9-165');" >
+<input id="comm9-165" type="text" class="command" style="width: 20em;" value="lts := triangSolve(lf)$pack   " />
+</form>
+<span id="commSav9-165" class="commSav" >lts := triangSolve(lf)$pack   </span>
+<div id="mathAns9-165" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>-</mo><mi>z</mi><mo>-</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>+</mo><mi>t</mi></mrow><mo>,</mo><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>3</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo>(</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>6</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>3</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><msup><mi>t</mi><mn>9</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>z</mi></mrow><mo>}</mo><mo>,</mo><mo>{</mo><mrow><msup><mi>t</mi><mn>16</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>27</mn><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+<p><math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mrow><mn>4907232</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>40893984</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>115013088</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>22805712</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>36330336</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>162959040</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>159859440</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>156802608</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>117168768</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>126282384</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>129351600</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>306646992</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>475302816</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1006837776</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>237269088</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mn>480716208</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>3</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo>(</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>6</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>+</mo><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>3</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo><mrow><msup><mi>t</mi><mn>9</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>,</mo><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>z</mi><mo>+</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>}</mo><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mi>t</mi><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>+</mo><mi>y</mi></mrow><mo>}</mo></mrow><mo>,</mo><mrow><mo>{</mo><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>+</mo><mi>y</mi></mrow><mo>}</mo></mrow><mo>,</mo><mrow><mo>{</mo><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mi>z</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>x</mi><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo>{</mo><mrow><msup><mi>t</mi><mn>16</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>27</mn><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mrow><mn>4907232</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>29</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>40893984</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>28</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>115013088</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>27</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1730448</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>26</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>168139584</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>25</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>738024480</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>24</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>195372288</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>23</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>315849456</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>22</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2567279232</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>21</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>937147968</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>20</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1026357696</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>19</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4780488240</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>18</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2893767696</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>17</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>5617160352</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>16</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3427651728</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5001100848</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>8720098416</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>13</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2331732960</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>499046544</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16243306272</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9748123200</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>9</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3927244320</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>25257280896</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10348032096</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>17128672128</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>14755488768</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>544086720</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>10848188736</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1423614528</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mn>2884297248</mn><mo>)</mo><mi>z</mi><mo>-</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mn>48</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>68</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1152</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>65</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>13560</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>62</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>360</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>60</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>103656</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>59</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7560</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>57</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>572820</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>56</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>71316</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>54</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2414556</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>53</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>2736</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>52</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>402876</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>51</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7985131</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>50</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>49248</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>49</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>1431133</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>48</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>20977409</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>47</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>521487</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>46</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2697635</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>45</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>43763654</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>44</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>3756573</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>43</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2093410</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>42</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>71546495</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>41</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>19699032</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>40</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>35025028</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>39</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>89623786</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>38</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>77798760</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>37</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>138654191</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>36</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>87596128</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>35</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>235642497</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>34</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>349607642</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>33</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>93299834</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>32</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>551563167</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>31</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>630995176</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>30</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>186818962</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>29</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>995427468</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>28</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>828416204</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>27</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>393919231</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>26</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>1076617485</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>25</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1609479791</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>24</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>595738126</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>23</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1198787136</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>22</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4342832069</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>21</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2075938757</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>20</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4390835799</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>19</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4822843033</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>18</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>6932747678</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>17</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6172196808</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>16</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>1141517740</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4981677585</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>14</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>9819815280</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>7404299976</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>157295760</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>11</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>29124027630</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>10</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>14856038208</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16184101410</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>26935440354</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3574164258</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>10271338974</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>11191425264</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>6869861262</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>9780477840</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd><mrow><mn>3586674168</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mn>2884297248</mn><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mrow><mn>2395770</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3934440</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3902067</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>10084164</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>1010448</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>32386932</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>22413225</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mn>10432368</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>-</mo><mrow><mn>463519</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3586833</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9494955</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8539305</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>33283098</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>35479377</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>46263256</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mn>17419896</mn><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mo>(</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>9</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>+</mo><mo>(</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>24</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>9</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>(</mo><mo>-</mo><mrow><mn>152</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>219</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mn>67</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>41</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>57</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>25</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>57</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mn>16</mn><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>3</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>9</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>181</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>270</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mn>89</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mrow><mo>(</mo><mo>-</mo><mrow><mn>92</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>135</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>49</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>135</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mn>43</mn><mo>)</mo></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>27</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>396</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>486</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mn>144</mn><mo>,</mo><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>z</mi><mo>+</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>}</mo><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mi>t</mi><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>}</mo></mrow><mo>,</mo><mrow><mo>{</mo><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>}</mo></mrow><mo>,</mo><mrow><mo>{</mo><mi>t</mi><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>}</mo></mrow><mo>,</mo><mrow><mo>{</mo><mi>t</mi><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>x</mi><mo>}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mo>{</mo><mi>t</mi><mo>,</mo><mi>z</mi><mo>,</mo><mi>y</mi><mo>,</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>}</mo></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: List RegularChain(Integer,[x,y,z,t])
+</div>
+
+
+
+<p>Then we compute a univariate representation.
+</p>
+
+
+
+
+<div id="spadComm9-166" class="spadComm" >
+<form id="formComm9-166" action="javascript:makeRequest('9-166');" >
+<input id="comm9-166" type="text" class="command" style="width: 18em;" value="univariateSolve(lf)$pack  " />
+</form>
+<span id="commSav9-166" class="commSav" >univariateSolve(lf)$pack  </span>
+<div id="mathAns9-166" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mo>?</mo></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mo>?</mo></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mo>?</mo><mo>-</mo><mn>1</mn></mrow></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mo>?</mo></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mo>?</mo></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mo>?</mo><mo>-</mo><mn>2</mn></mrow></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mo>?</mo></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mo>?</mo><mo>-</mo><mn>1</mn></mrow></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>t</mi><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mo>?</mo><mo>+</mo><mn>1</mn></mrow></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>t</mi><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexroots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>3</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>-</mo><mn>3</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>y</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>z</mi><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mi>x</mi><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>y</mi><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mo>?</mo><mo>+</mo><mn>1</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>z</mi><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mn>3</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>y</mi><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>6</mn></msup></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>20</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>45</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>42</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>-</mo><mn>953</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mrow><mn>12609</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>23</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>49</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>46</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>362</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5015</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>8239</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>25218</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mn>23</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>49</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>46</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>362</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7594</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>8239</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>25218</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>23</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>49</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>46</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>362</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>7594</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>8239</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>12609</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mn>23</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>49</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>46</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>362</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>5015</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>8239</mn></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow><mo>+</mo><mrow><mn>12</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>48</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>-</mo><mn>96</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>8</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>8</mn><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>3</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>1</mn><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>13</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>+</mo><mn>2</mn><mo>,</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>1</mn><mo>,</mo><mrow><mn>9</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>5</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>1</mn><mo>,</mo><mrow><mrow><mn>9</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>1</mn></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>11</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>37</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>7</mn></mrow><mo>,</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>3</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>7</mn><mo>,</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>+</mo><mn>7</mn></mrow><mo>,</mo><mrow><mrow><mn>6</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>7</mn></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mo>?</mo><mo>+</mo><mn>1</mn></mrow></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>y</mi><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mo>?</mo><mo>+</mo><mn>2</mn></mrow></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mo>?</mo><mo>-</mo><mn>2</mn></mrow></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mo>?</mo></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mi>x</mi><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mo>?</mo><mo>-</mo><mn>2</mn></mrow></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mi>y</mi><mo>,</mo><mrow><mi>z</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mo>?</mo></mrow><mo>,</mo><mrow><mi>coordinates</mi><mo>=</mo><mrow><mo>[</mo><mrow><mi>x</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mi>y</mi><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>57</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mrow><mn>151</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mn>15</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>104</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>93</mn><mo>,</mo><mrow><mrow><mn>151</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>62</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>151</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>85</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>31</mn></mrow><mo>,</mo><mrow><mrow><mn>151</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>85</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>31</mn></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>y</mi><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>48</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>8</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mrow><mn>8</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>8</mn></mrow><mo>,</mo><mrow><mrow><mn>8</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>8</mn></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>5</mn></msup></mrow><mo>+</mo><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>8</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><mn>3</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>-</mo><mn>1</mn></mrow></mrow><mo>,</mo><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>y</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>z</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>t</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>]</mo><mo>]</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: 
+List Record(
+complexRoots: SparseUnivariatePolynomial Integer,
+coordinates: List Polynomial Integer)
+</div>
+
+
+
+<p>Note that this computation is made from the input system <span style="font-weight: bold;"> lf</span>.
+</p>
+
+
+<p>However it is possible to reuse a pre-computed regular chain as follows:
+</p>
+
+
+
+
+<div id="spadComm9-167" class="spadComm" >
+<form id="formComm9-167" action="javascript:makeRequest('9-167');" >
+<input id="comm9-167" type="text" class="command" style="width: 9em;" value="ts := lts.1  " />
+</form>
+<span id="commSav9-167" class="commSav" >ts := lts.1  </span>
+<div id="mathAns9-167" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>{</mo><mrow><mrow><msup><mi>t</mi><mn>2</mn></msup></mrow><mo>+</mo><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow><mo>-</mo><mi>z</mi><mo>-</mo><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow><mo>+</mo><mi>t</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>3</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mo>(</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>6</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn><mo>)</mo><mspace width="0.5 em" /><mi>y</mi><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mn>3</mn><mo>)</mo><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>+</mo><mo>(</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>6</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn><mo>)</mo><mspace width="0.5 em" /><mi>z</mi><mo>+</mo><mrow><msup><mi>t</mi><mn>9</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mi>t</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>3</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>,</mo><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>+</mo><mi>z</mi></mrow><mo>}</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: RegularChain(Integer,[x,y,z,t])
+</div>
+
+
+
+
+
+<div id="spadComm9-168" class="spadComm" >
+<form id="formComm9-168" action="javascript:makeRequest('9-168');" >
+<input id="comm9-168" type="text" class="command" style="width: 18em;" value="univariateSolve(ts)$pack  " />
+</form>
+<span id="commSav9-168" class="commSav" >univariateSolve(ts)$pack  </span>
+<div id="mathAns9-168" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>16</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>30</mn><mspace width="0.5 em" /><mo>?</mo></mrow><mo>+</mo><mn>57</mn></mrow></mrow><mo>,</mo><mi>p</mi></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mrow><mn>151</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mn>15</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>54</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mn>104</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>93</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>151</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mn>10</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>36</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>19</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>62</mn><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>151</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>85</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>31</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>151</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mn>5</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>18</mn><mspace width="0.5 em" /><mrow><mo>%</mo><msup><mi>A</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>85</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>31</mn></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>-</mo><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>3</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>,</mo><mrow><mi>y</mi><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mi>z</mi><mo>-</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo><mrow><mi>t</mi><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mo>%</mo><mi>A</mi><mo>-</mo><mn>1</mn></mrow><mo>]</mo><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mi>complexRoots</mi><mo>=</mo><mrow><mrow><msup><mo>?</mo><mn>4</mn></msup></mrow><mo>+</mo><mrow><mn>2</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>3</mn></msup></mrow></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mrow><msup><mo>?</mo><mn>2</mn></msup></mrow></mrow><mo>+</mo><mn>48</mn></mrow></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mi>coordinates</mi><mo>=</mo><mo>[</mo><mrow><mrow><mn>8</mn><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>8</mn></mrow><mo>,</mo><mrow><mrow><mn>2</mn><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mo>%</mo><mi>A</mi></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mrow><mn>8</mn><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>-</mo><mrow><mn>8</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>+</mo><mn>8</mn></mrow><mo>,</mo><mrow><mrow><mn>8</mn><mspace width="0.5 em" /><mi>t</mi></mrow><mo>-</mo><mrow><mo>%</mo><msup><mi>A</mi><mn>3</mn></msup></mrow><mo>+</mo><mrow><mn>4</mn><mspace width="0.5 em" /><mo>%</mo><mi>A</mi></mrow><mo>-</mo><mn>8</mn></mrow><mo>]</mo><mo>]</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Record(
+complexRoots: SparseUnivariatePolynomial Integer,
+coordinates: List Polynomial Integer)
+</div>
+
+
+
+
+
+<div id="spadComm9-169" class="spadComm" >
+<form id="formComm9-169" action="javascript:makeRequest('9-169');" >
+<input id="comm9-169" type="text" class="command" style="width: 14em;" value="realSolve(ts)$pack   " />
+</form>
+<span id="commSav9-169" class="commSav" >realSolve(ts)$pack   </span>
+<div id="mathAns9-169" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List RealClosure Fraction Integer
+</div>
+
+
+
+<p>We compute now the full set of points with real coordinates:
+</p>
+
+
+
+
+<div id="spadComm9-170" class="spadComm" >
+<form id="formComm9-170" action="javascript:makeRequest('9-170');" >
+<input id="comm9-170" type="text" class="command" style="width: 20em;" value="lr2 := realSolve(lf)$pack    " />
+</form>
+<span id="commSav9-170" class="commSav" >lr2 := realSolve(lf)$pack    </span>
+<div id="mathAns9-170" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+<p><math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mo>,</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>4</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>14</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>3</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>4</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>32</mn></mrow><mo>-</mo><mn>2</mn><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mo>,</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>4</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>14</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>3</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>4</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>33</mn></mrow><mo>-</mo><mn>2</mn><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mo>,</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>4</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>4</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>14</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>3</mn></msup></mrow><mo>+</mo><mrow><mfrac><mn>4</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>34</mn></mrow><mo>-</mo><mn>2</mn><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mo>-</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mo>,</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>3</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow></mrow><mo>+</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mo>,</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>3</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow></mrow><mo>+</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>%</mo><mi>B</mi><mn>31</mn></mrow><mo>,</mo><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>31</mn></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>23</mn></mrow></mrow><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mo>,</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>3</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow></mrow><mo>+</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>%</mo><mi>B</mi><mn>28</mn></mrow><mo>,</mo><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>28</mn></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow></mrow><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mo>,</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>3</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow></mrow><mo>+</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow><mo>,</mo><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>29</mn></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>24</mn></mrow></mrow><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mo>,</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>3</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow></mrow><mo>+</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>%</mo><mi>B</mi><mn>26</mn></mrow><mo>,</mo><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>26</mn></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow></mrow><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mo>,</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>-</mo><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>3</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow></mrow><mo>+</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>%</mo><mi>B</mi><mn>27</mn></mrow><mo>,</mo><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>27</mn></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>15</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>14</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>13</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>12</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>11</mn></msup></mrow></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>2</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>10</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>9</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>7</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>8</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>54</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>7</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>6</mn></msup></mrow></mrow><mo>+</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>1</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>5</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>1</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>4</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>2</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mrow><mo>%</mo><mi>B</mi><mn>25</mn></mrow></mrow><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr></mtable></mrow></mstyle></math>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>21</mn></mrow><mo>,</mo><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>21</mn></mrow><mo>,</mo><mn>0</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>22</mn></mrow><mo>,</mo><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>22</mn></mrow><mo>,</mo><mn>0</mn><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>19</mn></mrow><mo>,</mo><mn>0</mn><mo>,</mo><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>19</mn></mrow><mo>]</mo></mrow><mo>,</mo><mrow><mo>[</mo><mn>1</mn><mo>,</mo><mrow><mo>%</mo><mi>B</mi><mn>20</mn></mrow><mo>,</mo><mn>0</mn><mo>,</mo><mo>-</mo><mrow><mo>%</mo><mi>B</mi><mn>20</mn></mrow><mo>]</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>17</mn></mrow><mo>,</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>17</mn></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac><mo>,</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>17</mn></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac><mo>,</mo><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>17</mn></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac><mo>]</mo><mo>,</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>18</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>18</mn></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>18</mn></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>18</mn></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow><mo>]</mo><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</p>
+
+
+
+<div class="returnType">
+Type: List List RealClosure Fraction Integer
+</div>
+
+
+
+<p>The number of real solutions for the input system is:
+</p>
+
+
+
+
+<div id="spadComm9-171" class="spadComm" >
+<form id="formComm9-171" action="javascript:makeRequest('9-171');" >
+<input id="comm9-171" type="text" class="command" style="width: 4em;" value=" #lr2 " />
+</form>
+<span id="commSav9-171" class="commSav" > #lr2 </span>
+<div id="mathAns9-171" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mn>27</mn></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: PositiveInteger
+</div>
+
+
+
+<p>Another example of computation of real solutions illustrates the 
+<span class="teletype">LexTriangularPackage</span> package constructor.
+</p>
+
+
+<p>We concentrate now on the solutions with real (strictly) positive
+coordinates:
+</p>
+
+
+
+
+<div id="spadComm9-172" class="spadComm" >
+<form id="formComm9-172" action="javascript:makeRequest('9-172');" >
+<input id="comm9-172" type="text" class="command" style="width: 22em;" value="lpr2 := positiveSolve(lf)$pack   " />
+</form>
+<span id="commSav9-172" class="commSav" >lpr2 := positiveSolve(lf)$pack   </span>
+<div id="mathAns9-172" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mo>%</mo><mi>B</mi><mn>40</mn></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>40</mn></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>40</mn></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mrow><mo>%</mo><mi>B</mi><mn>40</mn></mrow><mn>3</mn></msup></mrow></mrow><mo>+</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List List RealClosure Fraction Integer
+</div>
+
+
+
+<p>Finally, we approximate the coordinates of this point with 20 exact digits:
+</p>
+
+
+
+
+<div id="spadComm9-173" class="spadComm" >
+<form id="formComm9-173" action="javascript:makeRequest('9-173');" >
+<input id="comm9-173" type="text" class="command" style="width: 33em;" value="[approximate(r,1/10**21)::Float for r in lpr2.1] " />
+</form>
+<span id="commSav9-173" class="commSav" >[approximate(r,1/10**21)::Float for r in lpr2.1] </span>
+<div id="mathAns9-173" ></div>
+</div>
+
+
+<div class="math">
+<table>
+<tr><td>
+<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>[</mo><mrow><mn>0</mn><mo>.</mo><mn>3221853546</mn><mspace width="0.5 em" /><mn>2608559291</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>3221853546</mn><mspace width="0.5 em" /><mn>2608559291</mn></mrow><mo>,</mo></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>.</mo><mn>3221853546</mn><mspace width="0.5 em" /><mn>2608559291</mn></mrow><mo>,</mo><mrow><mn>0</mn><mo>.</mo><mn>3221853546</mn><mn>2608559291</mn></mrow><mo>]</mo></mtd></mtr></mtable></mrow></mstyle></math>
+</td></tr>
+</table>
+</div>
+
+
+
+
+<div class="returnType">
+Type: List Float
+</div>
+
+
+
+
+
+
+</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
+<a href="section-9.90.xhtml" style="margin-right: 10px;">Previous Section 9.90 XPolynomialRing</a><a href="section-10.0.xhtml" style="margin-right: 10px;">Next Section 10.0 Interactive Programming</a><a href="book-index.xhtml">Book Index</a></body>
+</html>
\ No newline at end of file
diff --git a/src/axiom-website/hyperdoc/axbook/sections-list.txt b/src/axiom-website/hyperdoc/axbook/sections-list.txt
new file mode 100644
index 0000000..fd81911
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axbook/sections-list.txt
@@ -0,0 +1,298 @@
+section-0.1.xhtml
+section-0.2.xhtml
+section-0.3.xhtml
+section-0.4.xhtml
+section-0.5.xhtml
+section-0.6.xhtml
+section-0.7.xhtml
+section-1.0.xhtml
+section-1.1.xhtml
+section-1.2.xhtml
+section-1.3.xhtml
+section-1.4.xhtml
+section-1.5.xhtml
+section-1.6.xhtml
+section-1.7.xhtml
+section-1.8.xhtml
+section-1.9.xhtml
+section-1.10.xhtml
+section-1.11.xhtml
+section-1.12.xhtml
+section-1.13.xhtml
+section-1.14.xhtml
+section-1.15.xhtml
+section-1.16.xhtml
+section-2.0.xhtml
+section-2.1.xhtml
+section-2.2.xhtml
+section-2.3.xhtml
+section-2.4.xhtml
+section-2.5.xhtml
+section-2.6.xhtml
+section-2.7.xhtml
+section-2.8.xhtml
+section-2.9.xhtml
+section-2.10.xhtml
+section-2.11.xhtml
+section-2.12.xhtml
+section-3.0.xhtml
+section-3.1.xhtml
+section-3.2.xhtml
+section-3.3.xhtml
+section-3.4.xhtml
+section-3.5.xhtml
+section-3.6.xhtml
+section-3.7.xhtml
+section-3.8.xhtml
+section-4.0.xhtml
+section-4.1.xhtml
+section-4.2.xhtml
+section-4.3.xhtml
+section-4.4.xhtml
+section-4.5.xhtml
+section-4.6.xhtml
+section-4.7.xhtml
+section-5.0.xhtml
+section-5.1.xhtml
+section-5.2.xhtml
+section-5.3.xhtml
+section-5.4.xhtml
+section-5.5.xhtml
+section-5.6.xhtml
+section-6.0.xhtml
+section-6.1.xhtml
+section-6.2.xhtml
+section-6.3.xhtml
+section-6.4.xhtml
+section-6.5.xhtml
+section-6.6.xhtml
+section-6.7.xhtml
+section-6.8.xhtml
+section-6.9.xhtml
+section-6.10.xhtml
+section-6.11.xhtml
+section-6.12.xhtml
+section-6.13.xhtml
+section-6.14.xhtml
+section-6.15.xhtml
+section-6.16.xhtml
+section-6.17.xhtml
+section-6.18.xhtml
+section-6.19.xhtml
+section-6.20.xhtml
+section-6.21.xhtml
+section-7.0.xhtml
+section-7.1.xhtml
+section-7.2.xhtml
+section-8.0.xhtml
+section-8.1.xhtml
+section-8.2.xhtml
+section-8.3.xhtml
+section-8.4.xhtml
+section-8.5.xhtml
+section-8.6.xhtml
+section-8.7.xhtml
+section-8.8.xhtml
+section-8.9.xhtml
+section-8.10.xhtml
+section-8.11.xhtml
+section-8.12.xhtml
+section-8.13.xhtml
+section-8.14.xhtml
+section-9.1.xhtml
+section-9.2.xhtml
+section-9.3.xhtml
+section-9.4.xhtml
+section-9.5.xhtml
+section-9.6.xhtml
+section-9.7.xhtml
+section-9.8.xhtml
+section-9.9.xhtml
+section-9.10.xhtml
+section-9.11.xhtml
+section-9.12.xhtml
+section-9.13.xhtml
+section-9.14.xhtml
+section-9.15.xhtml
+section-9.16.xhtml
+section-9.17.xhtml
+section-9.18.xhtml
+section-9.19.xhtml
+section-9.20.xhtml
+section-9.21.xhtml
+section-9.22.xhtml
+section-9.23.xhtml
+section-9.24.xhtml
+section-9.25.xhtml
+section-9.26.xhtml
+section-9.27.xhtml
+section-9.28.xhtml
+section-9.29.xhtml
+section-9.30.xhtml
+section-9.31.xhtml
+section-9.32.xhtml
+section-9.33.xhtml
+section-9.34.xhtml
+section-9.35.xhtml
+section-9.36.xhtml
+section-9.37.xhtml
+section-9.38.xhtml
+section-9.39.xhtml
+section-9.40.xhtml
+section-9.41.xhtml
+section-9.42.xhtml
+section-9.43.xhtml
+section-9.44.xhtml
+section-9.45.xhtml
+section-9.46.xhtml
+section-9.47.xhtml
+section-9.48.xhtml
+section-9.49.xhtml
+section-9.50.xhtml
+section-9.51.xhtml
+section-9.52.xhtml
+section-9.53.xhtml
+section-9.54.xhtml
+section-9.55.xhtml
+section-9.56.xhtml
+section-9.57.xhtml
+section-9.58.xhtml
+section-9.59.xhtml
+section-9.60.xhtml
+section-9.61.xhtml
+section-9.62.xhtml
+section-9.63.xhtml
+section-9.64.xhtml
+section-9.65.xhtml
+section-9.66.xhtml
+section-9.67.xhtml
+section-9.68.xhtml
+section-9.69.xhtml
+section-9.70.xhtml
+section-9.71.xhtml
+section-9.72.xhtml
+section-9.73.xhtml
+section-9.74.xhtml
+section-9.75.xhtml
+section-9.76.xhtml
+section-9.77.xhtml
+section-9.78.xhtml
+section-9.79.xhtml
+section-9.80.xhtml
+section-9.81.xhtml
+section-9.82.xhtml
+section-9.83.xhtml
+section-9.84.xhtml
+section-9.85.xhtml
+section-9.86.xhtml
+section-9.87.xhtml
+section-9.88.xhtml
+section-9.89.xhtml
+section-9.90.xhtml
+section-9.91.xhtml
+section-10.0.xhtml
+section-10.1.xhtml
+section-10.2.xhtml
+section-10.3.xhtml
+section-10.4.xhtml
+section-10.5.xhtml
+section-10.6.xhtml
+section-10.7.xhtml
+section-10.8.xhtml
+section-10.9.xhtml
+section-10.10.xhtml
+section-11.0.xhtml
+section-11.1.xhtml
+section-11.2.xhtml
+section-11.3.xhtml
+section-11.4.xhtml
+section-11.5.xhtml
+section-11.6.xhtml
+section-11.7.xhtml
+section-11.8.xhtml
+section-11.9.xhtml
+section-11.10.xhtml
+section-12.0.xhtml
+section-12.1.xhtml
+section-12.2.xhtml
+section-12.3.xhtml
+section-12.4.xhtml
+section-12.5.xhtml
+section-12.6.xhtml
+section-12.7.xhtml
+section-12.8.xhtml
+section-12.9.xhtml
+section-12.10.xhtml
+section-12.11.xhtml
+section-12.12.xhtml
+section-13.0.xhtml
+section-13.1.xhtml
+section-13.2.xhtml
+section-13.3.xhtml
+section-13.4.xhtml
+section-13.5.xhtml
+section-13.6.xhtml
+section-13.7.xhtml
+section-13.8.xhtml
+section-13.9.xhtml
+section-13.10.xhtml
+section-13.11.xhtml
+section-13.12.xhtml
+section-13.13.xhtml
+section-14.0.xhtml
+section-14.1.xhtml
+section-14.2.xhtml
+section-14.3.xhtml
+section-15.0.xhtml
+section-15.1.xhtml
+section-15.2.xhtml
+section-15.3.xhtml
+section-15.4.xhtml
+section-15.5.xhtml
+section-15.6.xhtml
+section-15.7.xhtml
+section-16.1.xhtml
+section-16.2.xhtml
+section-16.3.xhtml
+section-16.4.xhtml
+section-16.5.xhtml
+section-16.6.xhtml
+section-16.7.xhtml
+section-16.8.xhtml
+section-16.9.xhtml
+section-16.10.xhtml
+section-16.11.xhtml
+section-16.12.xhtml
+section-16.13.xhtml
+section-16.14.xhtml
+section-16.15.xhtml
+section-16.16.xhtml
+section-16.17.xhtml
+section-16.18.xhtml
+section-16.19.xhtml
+section-16.20.xhtml
+section-16.21.xhtml
+section-16.22.xhtml
+section-16.23.xhtml
+section-16.24.xhtml
+section-16.25.xhtml
+section-16.26.xhtml
+section-16.27.xhtml
+section-16.28.xhtml
+section-17.1.xhtml
+section-18.1.xhtml
+section-19.1.xhtml
+section-21.1.xhtml
+section-21.2.xhtml
+section-21.3.xhtml
+section-21.4.xhtml
+section-21.5.xhtml
+section-21.6.xhtml
+section-21.7.xhtml
+section-21.8.xhtml
+section-21.9.xhtml
+section-21.10.xhtml
+section-21.11.xhtml
+section-21.12.xhtml
+section-21.13.xhtml
+section-21.14.xhtml
diff --git a/src/axiom-website/hyperdoc/axiomfonts.xhtml b/src/axiom-website/hyperdoc/axiomfonts.xhtml
new file mode 100644
index 0000000..3040493
--- /dev/null
+++ b/src/axiom-website/hyperdoc/axiomfonts.xhtml
@@ -0,0 +1,2393 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Special Font Characters</div>
+  <hr/>
+<table>
+ <tr valign="top">
+  <th width="80" align="left">Character</th>
+  <th width="80" align="left">Decimal</th>
+  <th width="80" align="left">Hex</th>
+  <th width="80" align="left">Entity</th>
+  <th align="left">Name</th>
+ </tr>
+ <tr valign="top">
+  <td>&#x00391;</td>
+  <td>913</td>
+  <td>00391</td>
+  <td>&amp;Alpha;</td>
+  <td>greek capital letter alpha</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00392;</td>
+  <td>914</td>
+  <td>00392</td>
+  <td>&amp;Beta;</td>
+  <td>greek capital letter beta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00393;</td>
+  <td>915</td>
+  <td>00393</td>
+  <td>&amp;Gamma;</td>
+  <td>greek capital letter gamma</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00394;</td>
+  <td>916</td>
+  <td>00394</td>
+  <td>&amp;Delta;</td>
+  <td>greek capital letter delta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00395;</td>
+  <td>917</td>
+  <td>00395</td>
+  <td>&amp;Epsilon;</td>
+  <td>greek capital letter epsilon</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00396;</td>
+  <td>918</td>
+  <td>00396</td>
+  <td>&amp;Zeta;</td>
+  <td>greek capital letter zeta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00397;</td>
+  <td>919</td>
+  <td>00397</td>
+  <td>&amp;Eta;</td>
+  <td>greek capital letter eta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00398;</td>
+  <td>920</td>
+  <td>00398</td>
+  <td>&amp;Theta;</td>
+  <td>greek capital letter theta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00399;</td>
+  <td>921</td>
+  <td>00399</td>
+  <td>&amp;Iota;</td>
+  <td>greek capital letter iota</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039A;</td>
+  <td>922</td>
+  <td>0039A</td>
+  <td>&amp;Kappa;</td>
+  <td>greek capital letter kappa</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039B;</td>
+  <td>923</td>
+  <td>0039B</td>
+  <td>&amp;Lambda;</td>
+  <td>greek capital letter lambda</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039C;</td>
+  <td>924</td>
+  <td>0039C</td>
+  <td>&amp;Mu;</td>
+  <td>greek capital letter mu</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039D;</td>
+  <td>925</td>
+  <td>0039D</td>
+  <td>&amp;Nu;</td>
+  <td>greek capital letter nu</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039E;</td>
+  <td>926</td>
+  <td>0039E</td>
+  <td>&amp;Xi;</td>
+  <td>greek capital letter xi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039F;</td>
+  <td>927</td>
+  <td>0039F</td>
+  <td>&amp;Omicron;</td>
+  <td>greek capital letter omicron</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A0;</td>
+  <td>928</td>
+  <td>003A0</td>
+  <td>&amp;Pi;</td>
+  <td>greek capital letter pi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A1;</td>
+  <td>929</td>
+  <td>003A1</td>
+  <td>&amp;Rho;</td>
+  <td>greek capital letter rho</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A3;</td>
+  <td>931</td>
+  <td>003A3</td>
+  <td>&amp;Sigma;</td>
+  <td>greek capital letter sigma</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A4;</td>
+  <td>932</td>
+  <td>003A4</td>
+  <td>&amp;Tau;</td>
+  <td>greek capital letter tau</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A5;</td>
+  <td>933</td>
+  <td>003A5</td>
+  <td>&amp;Upsilon;</td>
+  <td>greek capital letter upsilon</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A6;</td>
+  <td>934</td>
+  <td>003A6</td>
+  <td>&amp;Phi;</td>
+  <td>greek capital letter phi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A7;</td>
+  <td>935</td>
+  <td>003A7</td>
+  <td>&amp;Chi;</td>
+  <td>greek capital letter chi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A8;</td>
+  <td>936</td>
+  <td>003A8</td>
+  <td>&amp;Psi;</td>
+  <td>greek capital letter psi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A9;</td>
+  <td>937</td>
+  <td>003A9</td>
+  <td>&amp;Omega;</td>
+  <td>greek capital letter omega</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B1;</td>
+  <td>945</td>
+  <td>003B1</td>
+  <td>&amp;alpha;</td>
+  <td>greek small letter alpha</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B2;</td>
+  <td>946</td>
+  <td>003B2</td>
+  <td>&amp;beta;</td>
+  <td>greek small letter beta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B3;</td>
+  <td>947</td>
+  <td>003B3</td>
+  <td>&amp;gamma;</td>
+  <td>greek small letter gamma</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B4;</td>
+  <td>948</td>
+  <td>003B4</td>
+  <td>&amp;delta;</td>
+  <td>greek small letter delta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B5;</td>
+  <td>949</td>
+  <td>003B5</td>
+  <td>&amp;epsilon;</td>
+  <td>greek small letter epsilon</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B6;</td>
+  <td>950</td>
+  <td>003B6</td>
+  <td>&amp;zeta;</td>
+  <td>greek small letter zeta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B7;</td>
+  <td>951</td>
+  <td>003B7</td>
+  <td>&amp;eta;</td>
+  <td>greek small letter eta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B8;</td>
+  <td>952</td>
+  <td>003B8</td>
+  <td>&amp;theta;</td>
+  <td>greek small letter theta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B9;</td>
+  <td>953</td>
+  <td>003B9</td>
+  <td>&amp;iota;</td>
+  <td>greek small letter iota</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BA;</td>
+  <td>954</td>
+  <td>003BA</td>
+  <td>&amp;kappa;</td>
+  <td>greek small letter kappa</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BB;</td>
+  <td>955</td>
+  <td>003BB</td>
+  <td>&amp;lambda;</td>
+  <td>greek small letter lambda</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BC;</td>
+  <td>956</td>
+  <td>003BC</td>
+  <td>&amp;mu;</td>
+  <td>greek small letter mu</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BD;</td>
+  <td>957</td>
+  <td>003BD</td>
+  <td>&amp;nu;</td>
+  <td>greek small letter nu</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BE;</td>
+  <td>958</td>
+  <td>003BE</td>
+  <td>&amp;xi;</td>
+  <td>greek small letter xi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BF;</td>
+  <td>959</td>
+  <td>003BF</td>
+  <td>&amp;omicron;</td>
+  <td>greek small letter omicron</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C0;</td>
+  <td>960</td>
+  <td>003C0</td>
+  <td>&amp;pi;</td>
+  <td>greek small letter pi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C1;</td>
+  <td>961</td>
+  <td>003C1</td>
+  <td>&amp;rho;</td>
+  <td>greek small letter rho</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C2;</td>
+  <td>962</td>
+  <td>003C2</td>
+  <td>&amp;sigmaf;</td>
+  <td>greek small letter final sigma</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C3;</td>
+  <td>963</td>
+  <td>003C3</td>
+  <td>&amp;sigma;</td>
+  <td>greek small letter sigma</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C4;</td>
+  <td>964</td>
+  <td>003C4</td>
+  <td>&amp;tau;</td>
+  <td>greek small letter tau</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C5;</td>
+  <td>965</td>
+  <td>003C5</td>
+  <td>&amp;upsilon;</td>
+  <td>greek small letter upsilon</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C6;</td>
+  <td>966</td>
+  <td>003C6</td>
+  <td>&amp;phi;</td>
+  <td>greek small letter phi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C7;</td>
+  <td>967</td>
+  <td>003C7</td>
+  <td>&amp;chi;</td>
+  <td>greek small letter chi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C8;</td>
+  <td>968</td>
+  <td>003C8</td>
+  <td>&amp;psi;</td>
+  <td>greek small letter psi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C9;</td>
+  <td>969</td>
+  <td>003C9</td>
+  <td>&amp;omega;</td>
+  <td>greek small letter omega</td>
+ </tr>
+ <tr><td>----</td><td>----</td><td>----</td><td>----</td><td>----</td></tr>
+ <tr valign="top">
+  <td>&#x000AF;</td>
+  <td>175</td>
+  <td>000AF</td>
+  <td>&amp;macr;</td>
+  <td>macron</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x000B1;</td>
+  <td>177</td>
+  <td>000B1</td>
+  <td>&amp;plusmn;</td>
+  <td>plus-or-minus sign</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x000D7;</td>
+  <td>215</td>
+  <td>000D7</td>
+  <td></td>
+  <td>multiplication sign</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x000E8;</td>
+  <td>232</td>
+  <td>000E8</td>
+  <td>&amp;egrave;</td>
+  <td>latin small letter e with grave</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C0;</td>
+  <td>960</td>
+  <td>003C0</td>
+  <td>&amp;pi;</td>
+  <td>greek small letter pi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003D5;</td>
+  <td>981</td>
+  <td>003D5</td>
+  <td></td>
+  <td>greek phi symbol</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02026;</td>
+  <td>8230</td>
+  <td>02026</td>
+  <td>&amp;hellip;</td>
+  <td>horizontal ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x022EF;</td>
+  <td>8943</td>
+  <td>022EF</td>
+  <td></td>
+  <td>midline horizontal ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02032;</td>
+  <td>8242</td>
+  <td>02032</td>
+  <td>&amp;prime;</td>
+  <td>prime</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02061;</td>
+  <td>8289</td>
+  <td>02061</td>
+  <td></td>
+  <td>function application</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02062;</td>
+  <td>8290</td>
+  <td>02062</td>
+  <td></td>
+  <td>invisible times</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02102;</td>
+  <td>8450</td>
+  <td>02102</td>
+  <td></td>
+  <td>doube-struck captial c</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0210D;</td>
+  <td>8461</td>
+  <td>0210D</td>
+  <td></td>
+  <td>double-struck captial h</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02111;</td>
+  <td>8465</td>
+  <td>02111</td>
+  <td>&amp;image;</td>
+  <td>black-letter captial i</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02113;</td>
+  <td>8467</td>
+  <td>02113</td>
+  <td></td>
+  <td>script small l</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02115;</td>
+  <td>8469</td>
+  <td>02115</td>
+  <td></td>
+  <td>double-struck captial n</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02119;</td>
+  <td>8473</td>
+  <td>02119</td>
+  <td></td>
+  <td>double-struck captial p</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0211A;</td>
+  <td>8474</td>
+  <td>0211A</td>
+  <td></td>
+  <td>double-struck captial q</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0211C;</td>
+  <td>8476</td>
+  <td>0211C</td>
+  <td>&amp;real;</td>
+  <td>black-letter captial r</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0211D;</td>
+  <td>8477</td>
+  <td>0211D</td>
+  <td></td>
+  <td>double-struck captial r</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02124;</td>
+  <td>8484</td>
+  <td>02124</td>
+  <td></td>
+  <td>double-struck captial z</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02145;</td>
+  <td>8517</td>
+  <td>02145</td>
+  <td></td>
+  <td>doube-struck captial d</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02146;</td>
+  <td>8518</td>
+  <td>02146</td>
+  <td></td>
+  <td>double-struck italic small d</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02147;</td>
+  <td>8519</td>
+  <td>02147</td>
+  <td></td>
+  <td>double-struck italic small e</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02148;</td>
+  <td>8520</td>
+  <td>02148</td>
+  <td></td>
+  <td>double-struck italic small i</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02192;</td>
+  <td>8594</td>
+  <td>02192</td>
+  <td>&amp;rarr;</td>
+  <td>rightwards arrow</td>
+ </tr>
+ <tr><td>----</td><td>----</td><td>----</td><td>----</td><td>----</td></tr>
+ <tr valign="top">
+  <td>&#8704;</td>
+  <td>8704</td>
+  <td>2200</td>
+  <td>&amp;forall;</td>
+  <td>for all</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8705;</td>
+  <td>8705</td>
+  <td>2201</td>
+  <td></td>
+  <td>complement</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8706;</td>
+  <td>8706</td>
+  <td>2202</td>
+  <td>&amp;part;</td>
+  <td>partial differential</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8707;</td>
+  <td>8707</td>
+  <td>2203</td>
+  <td>&amp;exist;</td>
+  <td>there exists</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8708;</td>
+  <td>8708</td>
+  <td>2204</td>
+  <td></td>
+  <td>there does not exist</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8709;</td>
+  <td>8709</td>
+  <td>2205</td>
+  <td>&amp;empty;</td>
+  <td>empty set</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8710;</td>
+  <td>8710</td>
+  <td>2206</td>
+  <td></td>
+  <td>increment</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8711;</td>
+  <td>8711</td>
+  <td>2207</td>
+  <td>&amp;nabla;</td>
+  <td>nabla</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8712;</td>
+  <td>8712</td>
+  <td>2208</td>
+  <td>&amp;isin;</td>
+  <td>element of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8713;</td>
+  <td>8713</td>
+  <td>2209</td>
+  <td>&amp;notin;</td>
+  <td>not an element of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8714;</td>
+  <td>8714</td>
+  <td>220A</td>
+  <td></td>
+  <td>small element of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8715;</td>
+  <td>8715</td>
+  <td>220B</td>
+  <td>&amp;ni;</td>
+  <td>contains as member</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8716;</td>
+  <td>8716</td>
+  <td>220C</td>
+  <td></td>
+  <td>does not contain as member</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8717;</td>
+  <td>8717</td>
+  <td>220D</td>
+  <td></td>
+  <td>small contains as member</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8718;</td>
+  <td>8718</td>
+  <td>220E</td>
+  <td></td>
+  <td>end of proof</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8719;</td>
+  <td>8719</td>
+  <td>220F</td>
+  <td>&amp;prod;</td>
+  <td>n-ary product</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8720;</td>
+  <td>8720</td>
+  <td>2210</td>
+  <td></td>
+  <td>n-ary coproduct</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8721;</td>
+  <td>8721</td>
+  <td>2211</td>
+  <td>&amp;sum;</td>
+  <td>n-ary summation</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8722;</td>
+  <td>8722</td>
+  <td>2212</td>
+  <td>&amp;minus;</td>
+  <td>minus sign</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8723;</td>
+  <td>8723</td>
+  <td>2213</td>
+  <td></td>
+  <td>minus-or-plus sign</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8724;</td>
+  <td>8724</td>
+  <td>2214</td>
+  <td></td>
+  <td>dot plus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8725;</td>
+  <td>8725</td>
+  <td>2215</td>
+  <td></td>
+  <td>division slash</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8726;</td>
+  <td>8726</td>
+  <td>2216</td>
+  <td></td>
+  <td>set minus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8727;</td>
+  <td>8727</td>
+  <td>2217</td>
+  <td>&amp;lowast;</td>
+  <td>asterisk operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8728;</td>
+  <td>8728</td>
+  <td>2218</td>
+  <td></td>
+  <td>ring operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8729;</td>
+  <td>8729</td>
+  <td>2219</td>
+  <td></td>
+  <td>bullet operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8730;</td>
+  <td>8730</td>
+  <td>221A</td>
+  <td>&amp;radic;</td>
+  <td>square root</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8731;</td>
+  <td>8731</td>
+  <td>221B</td>
+  <td></td>
+  <td>cube root</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8732;</td>
+  <td>8732</td>
+  <td>221C</td>
+  <td></td>
+  <td>fourth root</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8733;</td>
+  <td>8733</td>
+  <td>221D</td>
+  <td>&amp;prop;</td>
+  <td>proportional to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8734;</td>
+  <td>8734</td>
+  <td>221E</td>
+  <td>&amp;infin;</td>
+  <td>infinity</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8735;</td>
+  <td>8735</td>
+  <td>221F</td>
+  <td></td>
+  <td>right angle</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8736;</td>
+  <td>8736</td>
+  <td>2220</td>
+  <td>&amp;ang;</td>
+  <td>angle</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8737;</td>
+  <td>8737</td>
+  <td>2221</td>
+  <td></td>
+  <td>measured angle</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8738;</td>
+  <td>8738</td>
+  <td>2222</td>
+  <td></td>
+  <td>spherical angle</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8739;</td>
+  <td>8739</td>
+  <td>2223</td>
+  <td></td>
+  <td>divides</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8740;</td>
+  <td>8740</td>
+  <td>2224</td>
+  <td></td>
+  <td>does not divide</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8741;</td>
+  <td>8741</td>
+  <td>2225</td>
+  <td></td>
+  <td>parallel to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8742;</td>
+  <td>8742</td>
+  <td>2226</td>
+  <td></td>
+  <td>not parallel to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8743;</td>
+  <td>8743</td>
+  <td>2227</td>
+  <td>&amp;and;</td>
+  <td>logical and</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8744;</td>
+  <td>8744</td>
+  <td>2228</td>
+  <td>&amp;or;</td>
+  <td>logical or</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8745;</td>
+  <td>8745</td>
+  <td>2229</td>
+  <td>&amp;cap;</td>
+  <td>intersection</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8746;</td>
+  <td>8746</td>
+  <td>222A</td>
+  <td>&amp;cup;</td>
+  <td>union</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8747;</td>
+  <td>8747</td>
+  <td>222B</td>
+  <td>&amp;int;</td>
+  <td>integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8748;</td>
+  <td>8748</td>
+  <td>222C</td>
+  <td></td>
+  <td>double integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8749;</td>
+  <td>8749</td>
+  <td>222D</td>
+  <td></td>
+  <td>triple integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8750;</td>
+  <td>8750</td>
+  <td>222E</td>
+  <td></td>
+  <td>contour integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8751;</td>
+  <td>8751</td>
+  <td>222F</td>
+  <td></td>
+  <td>surface integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8752;</td>
+  <td>8752</td>
+  <td>2230</td>
+  <td></td>
+  <td>volume integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8753;</td>
+  <td>8753</td>
+  <td>2231</td>
+  <td></td>
+  <td>clockwise integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8754;</td>
+  <td>8754</td>
+  <td>2232</td>
+  <td></td>
+  <td>clockwise contour integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8755;</td>
+  <td>8755</td>
+  <td>2233</td>
+  <td></td>
+  <td>anticlockwise contour integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8756;</td>
+  <td>8756</td>
+  <td>2234</td>
+  <td>&amp;there4;</td>
+  <td>therefore</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8757;</td>
+  <td>8757</td>
+  <td>2235</td>
+  <td></td>
+  <td>because</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8758;</td>
+  <td>8758</td>
+  <td>2236</td>
+  <td></td>
+  <td>ratio</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8759;</td>
+  <td>8759</td>
+  <td>2237</td>
+  <td></td>
+  <td>proportion</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8760;</td>
+  <td>8760</td>
+  <td>2238</td>
+  <td></td>
+  <td>dot minus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8761;</td>
+  <td>8761</td>
+  <td>2239</td>
+  <td></td>
+  <td>excess</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8762;</td>
+  <td>8762</td>
+  <td>223A</td>
+  <td></td>
+  <td>geometric proportion</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8763;</td>
+  <td>8763</td>
+  <td>223B</td>
+  <td></td>
+  <td>homothetic</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8764;</td>
+  <td>8764</td>
+  <td>223C</td>
+  <td>&amp;sim;</td>
+  <td>tilde operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8765;</td>
+  <td>8765</td>
+  <td>223D</td>
+  <td></td>
+  <td>reversed tilde</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8766;</td>
+  <td>8766</td>
+  <td>223E</td>
+  <td></td>
+  <td>inverted lazy S</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8767;</td>
+  <td>8767</td>
+  <td>223F</td>
+  <td></td>
+  <td>sine wave</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8768;</td>
+  <td>8768</td>
+  <td>2240</td>
+  <td></td>
+  <td>wreath products</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8769;</td>
+  <td>8769</td>
+  <td>2241</td>
+  <td></td>
+  <td>not tilde</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8770;</td>
+  <td>8770</td>
+  <td>2242</td>
+  <td></td>
+  <td>minus tilde</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8771;</td>
+  <td>8771</td>
+  <td>2243</td>
+  <td></td>
+  <td>asymptotically equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8772;</td>
+  <td>8772</td>
+  <td>2244</td>
+  <td></td>
+  <td>not asymptotically equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8773;</td>
+  <td>8773</td>
+  <td>2245</td>
+  <td>&amp;cong;</td>
+  <td>approximately equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8774;</td>
+  <td>8774</td>
+  <td>2246</td>
+  <td></td>
+  <td>approximately but not actually equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8775;</td>
+  <td>8775</td>
+  <td>2247</td>
+  <td></td>
+  <td>neither approximately nor actually equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8776;</td>
+  <td>8776</td>
+  <td>2248</td>
+  <td>&amp;asymp;</td>
+  <td>almost equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8777;</td>
+  <td>8777</td>
+  <td>2249</td>
+  <td></td>
+  <td>not almost equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8778;</td>
+  <td>8778</td>
+  <td>224A</td>
+  <td></td>
+  <td>almost equal or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8779;</td>
+  <td>8779</td>
+  <td>224B</td>
+  <td></td>
+  <td>triple tilde</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8780;</td>
+  <td>8780</td>
+  <td>224C</td>
+  <td></td>
+  <td>all equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8781;</td>
+  <td>8781</td>
+  <td>224D</td>
+  <td></td>
+  <td>equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8782;</td>
+  <td>8782</td>
+  <td>224E</td>
+  <td></td>
+  <td>geometrically equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8783;</td>
+  <td>8783</td>
+  <td>224F</td>
+  <td></td>
+  <td>difference between</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8784;</td>
+  <td>8784</td>
+  <td>2250</td>
+  <td></td>
+  <td>approaches the limit</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8785;</td>
+  <td>8785</td>
+  <td>2251</td>
+  <td></td>
+  <td>geometrically equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8786;</td>
+  <td>8786</td>
+  <td>2252</td>
+  <td></td>
+  <td>approximately equal to or the image of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8787;</td>
+  <td>8787</td>
+  <td>2253</td>
+  <td></td>
+  <td>image of or approximately equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8788;</td>
+  <td>8788</td>
+  <td>2254</td>
+  <td></td>
+  <td>colon equals</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8789;</td>
+  <td>8789</td>
+  <td>2255</td>
+  <td></td>
+  <td>equals colon</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8790;</td>
+  <td>8790</td>
+  <td>2256</td>
+  <td></td>
+  <td>ring in equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8791;</td>
+  <td>8791</td>
+  <td>2257</td>
+  <td></td>
+  <td>ring equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8792;</td>
+  <td>8792</td>
+  <td>2258</td>
+  <td></td>
+  <td>corresponds to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8793;</td>
+  <td>8793</td>
+  <td>2259</td>
+  <td></td>
+  <td>estimates</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8794;</td>
+  <td>8794</td>
+  <td>225A</td>
+  <td></td>
+  <td>equiangular to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8795;</td>
+  <td>8795</td>
+  <td>225B</td>
+  <td></td>
+  <td>star equals</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8796;</td>
+  <td>8796</td>
+  <td>225C</td>
+  <td></td>
+  <td>delta equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8797;</td>
+  <td>8797</td>
+  <td>225D</td>
+  <td></td>
+  <td>equal to by definition</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8798;</td>
+  <td>8798</td>
+  <td>225E</td>
+  <td></td>
+  <td>measured by</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8799;</td>
+  <td>8799</td>
+  <td>225F</td>
+  <td></td>
+  <td>questioned equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8800;</td>
+  <td>8800</td>
+  <td>2260</td>
+  <td>&amp;ne;</td>
+  <td>not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8801;</td>
+  <td>8801</td>
+  <td>2261</td>
+  <td>&amp;equiv;</td>
+  <td>identical to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8802;</td>
+  <td>8802</td>
+  <td>2262</td>
+  <td></td>
+  <td>not identical to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8803;</td>
+  <td>8803</td>
+  <td>2263</td>
+  <td></td>
+  <td>strictly equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8804;</td>
+  <td>8804</td>
+  <td>2264</td>
+  <td>&amp;le;</td>
+  <td>less-than or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8805;</td>
+  <td>8805</td>
+  <td>2265</td>
+  <td>&amp;ge;</td>
+  <td>greater-than or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8806;</td>
+  <td>8806</td>
+  <td>2266</td>
+  <td></td>
+  <td>less-than over equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8807;</td>
+  <td>8807</td>
+  <td>2267</td>
+  <td></td>
+  <td>greater-than over equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8808;</td>
+  <td>8808</td>
+  <td>2268</td>
+  <td></td>
+  <td>less-than but not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8809;</td>
+  <td>8809</td>
+  <td>2269</td>
+  <td></td>
+  <td>greater-than but not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8810;</td>
+  <td>8810</td>
+  <td>226A</td>
+  <td></td>
+  <td>much less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8811;</td>
+  <td>8811</td>
+  <td>226B</td>
+  <td></td>
+  <td>much greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8812;</td>
+  <td>8812</td>
+  <td>226C</td>
+  <td></td>
+  <td>between</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8813;</td>
+  <td>8813</td>
+  <td>226D</td>
+  <td></td>
+  <td>not equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8814;</td>
+  <td>8814</td>
+  <td>226E</td>
+  <td></td>
+  <td>not less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8815;</td>
+  <td>8815</td>
+  <td>226F</td>
+  <td></td>
+  <td>not greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8816;</td>
+  <td>8816</td>
+  <td>2270</td>
+  <td></td>
+  <td>neither less-than nor equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8817;</td>
+  <td>8817</td>
+  <td>2271</td>
+  <td></td>
+  <td>neither greater-than nor equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8818;</td>
+  <td>8818</td>
+  <td>2272</td>
+  <td></td>
+  <td>less-than or equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8819;</td>
+  <td>8819</td>
+  <td>2273</td>
+  <td></td>
+  <td>greater-than or equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8820;</td>
+  <td>8820</td>
+  <td>2274</td>
+  <td></td>
+  <td>neither less-than nor equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8821;</td>
+  <td>8821</td>
+  <td>2275</td>
+  <td></td>
+  <td>neither greater-than nor equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8822;</td>
+  <td>8822</td>
+  <td>2276</td>
+  <td></td>
+  <td>less-than or greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8823;</td>
+  <td>8823</td>
+  <td>2277</td>
+  <td></td>
+  <td>greater-than or less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8824;</td>
+  <td>8824</td>
+  <td>2278</td>
+  <td></td>
+  <td>neither less-than nor greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8825;</td>
+  <td>8825</td>
+  <td>2279</td>
+  <td></td>
+  <td>neither greater-than nor less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8826;</td>
+  <td>8826</td>
+  <td>227A</td>
+  <td></td>
+  <td>precedes</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8827;</td>
+  <td>8827</td>
+  <td>227B</td>
+  <td></td>
+  <td>succeeds</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8828;</td>
+  <td>8828</td>
+  <td>227C</td>
+  <td></td>
+  <td>precedes or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8829;</td>
+  <td>8829</td>
+  <td>227D</td>
+  <td></td>
+  <td>succeeds or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8830;</td>
+  <td>8830</td>
+  <td>227E</td>
+  <td></td>
+  <td>precedes or equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8831;</td>
+  <td>8831</td>
+  <td>227F</td>
+  <td></td>
+  <td>succeeds or equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8832;</td>
+  <td>8832</td>
+  <td>2280</td>
+  <td></td>
+  <td>does not precede</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8833;</td>
+  <td>8833</td>
+  <td>2281</td>
+  <td></td>
+  <td>does not succeed</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8834;</td>
+  <td>8834</td>
+  <td>2282</td>
+  <td>&amp;sub;</td>
+  <td>subset of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8835;</td>
+  <td>8835</td>
+  <td>2283</td>
+  <td>&amp;sup;</td>
+  <td>superset of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8836;</td>
+  <td>8836</td>
+  <td>2284</td>
+  <td>&amp;nsub;</td>
+  <td>not a subset of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8837;</td>
+  <td>8837</td>
+  <td>2285</td>
+  <td></td>
+  <td>not a superset of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8838;</td>
+  <td>8838</td>
+  <td>2286</td>
+  <td>&amp;sube;</td>
+  <td>subset of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8839;</td>
+  <td>8839</td>
+  <td>2287</td>
+  <td>&amp;supe;</td>
+  <td>superset of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8840;</td>
+  <td>8840</td>
+  <td>2288</td>
+  <td></td>
+  <td>neither a subset of nor equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8841;</td>
+  <td>8841</td>
+  <td>2289</td>
+  <td></td>
+  <td>neither a superset of nor equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8842;</td>
+  <td>8842</td>
+  <td>228A</td>
+  <td></td>
+  <td>subset of with not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8843;</td>
+  <td>8843</td>
+  <td>228B</td>
+  <td></td>
+  <td>superset of with not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8844;</td>
+  <td>8844</td>
+  <td>228C</td>
+  <td></td>
+  <td>multiset</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8845;</td>
+  <td>8845</td>
+  <td>228D</td>
+  <td></td>
+  <td>multiset multiplication</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8846;</td>
+  <td>8846</td>
+  <td>228E</td>
+  <td></td>
+  <td>multiset union</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8847;</td>
+  <td>8847</td>
+  <td>228F</td>
+  <td></td>
+  <td>square image of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8848;</td>
+  <td>8848</td>
+  <td>2290</td>
+  <td></td>
+  <td>square original of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8849;</td>
+  <td>8849</td>
+  <td>2291</td>
+  <td></td>
+  <td>square image of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8850;</td>
+  <td>8850</td>
+  <td>2292</td>
+  <td></td>
+  <td>square original of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8851;</td>
+  <td>8851</td>
+  <td>2293</td>
+  <td></td>
+  <td>square cap</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8852;</td>
+  <td>8852</td>
+  <td>2294</td>
+  <td></td>
+  <td>square cup</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8853;</td>
+  <td>8853</td>
+  <td>2295</td>
+  <td>&amp;oplus;</td>
+  <td>circled plus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8854;</td>
+  <td>8854</td>
+  <td>2296</td>
+  <td></td>
+  <td>circled minus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8855;</td>
+  <td>8855</td>
+  <td>2297</td>
+  <td>&amp;otimes;</td>
+  <td>circled times</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8856;</td>
+  <td>8856</td>
+  <td>2298</td>
+  <td></td>
+  <td>circled division slash</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8857;</td>
+  <td>8857</td>
+  <td>2299</td>
+  <td></td>
+  <td>circled dot operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8858;</td>
+  <td>8858</td>
+  <td>229A</td>
+  <td></td>
+  <td>circled ring operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8859;</td>
+  <td>8859</td>
+  <td>229B</td>
+  <td></td>
+  <td>circled asterisk operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8860;</td>
+  <td>8860</td>
+  <td>229C</td>
+  <td></td>
+  <td>circled equals</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8861;</td>
+  <td>8861</td>
+  <td>229D</td>
+  <td></td>
+  <td>circled dash</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8862;</td>
+  <td>8862</td>
+  <td>229E</td>
+  <td></td>
+  <td>squared plus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8863;</td>
+  <td>8863</td>
+  <td>229F</td>
+  <td></td>
+  <td>squared minus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8864;</td>
+  <td>8864</td>
+  <td>22A0</td>
+  <td></td>
+  <td>squared times</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8865;</td>
+  <td>8865</td>
+  <td>22A1</td>
+  <td></td>
+  <td>squared dot operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8866;</td>
+  <td>8866</td>
+  <td>22A2</td>
+  <td></td>
+  <td>right tack</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8867;</td>
+  <td>8867</td>
+  <td>22A3</td>
+  <td></td>
+  <td>left tack</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8868;</td>
+  <td>8868</td>
+  <td>22A4</td>
+  <td></td>
+  <td>down tack</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8869;</td>
+  <td>8869</td>
+  <td>22A5</td>
+  <td>&amp;perp;</td>
+  <td>up tack</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8870;</td>
+  <td>8870</td>
+  <td>22A6</td>
+  <td></td>
+  <td>assertion</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8871;</td>
+  <td>8871</td>
+  <td>22A7</td>
+  <td></td>
+  <td>models</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8872;</td>
+  <td>8872</td>
+  <td>22A8</td>
+  <td></td>
+  <td>true</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8873;</td>
+  <td>8873</td>
+  <td>22A9</td>
+  <td></td>
+  <td>forces</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8874;</td>
+  <td>8874</td>
+  <td>22AA</td>
+  <td></td>
+  <td>triple vertical bar right turnstile</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8875;</td>
+  <td>8875</td>
+  <td>22AB</td>
+  <td></td>
+  <td>double vertical bar double right turnstile</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8876;</td>
+  <td>8876</td>
+  <td>22AC</td>
+  <td></td>
+  <td>does not prove</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8877;</td>
+  <td>8877</td>
+  <td>22AD</td>
+  <td></td>
+  <td>not true</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8878;</td>
+  <td>8878</td>
+  <td>22AE</td>
+  <td></td>
+  <td>does not force</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8879;</td>
+  <td>8879</td>
+  <td>22AF</td>
+  <td></td>
+  <td>negated double vertical bar double right turnstile</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8880;</td>
+  <td>8880</td>
+  <td>22B0</td>
+  <td></td>
+  <td>precedes under relation</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8881;</td>
+  <td>8881</td>
+  <td>22B1</td>
+  <td></td>
+  <td>succeeds under relation</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8882;</td>
+  <td>8882</td>
+  <td>22B2</td>
+  <td></td>
+  <td>normal subgroup of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8883;</td>
+  <td>8883</td>
+  <td>22B3</td>
+  <td></td>
+  <td>contains as normal subgroup</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8884;</td>
+  <td>8884</td>
+  <td>22B4</td>
+  <td></td>
+  <td>normal subgroup of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8885;</td>
+  <td>8885</td>
+  <td>22B5</td>
+  <td></td>
+  <td>contains as normal subgroup or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8886;</td>
+  <td>8886</td>
+  <td>22B6</td>
+  <td></td>
+  <td>original of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8887;</td>
+  <td>8887</td>
+  <td>22B7</td>
+  <td></td>
+  <td>image of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8888;</td>
+  <td>8888</td>
+  <td>22B8</td>
+  <td></td>
+  <td>multimap</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8889;</td>
+  <td>8889</td>
+  <td>22B9</td>
+  <td></td>
+  <td>hermitian conjugate matrix</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8890;</td>
+  <td>8890</td>
+  <td>22BA</td>
+  <td></td>
+  <td>intercalate</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8891;</td>
+  <td>8891</td>
+  <td>22BB</td>
+  <td></td>
+  <td>xor</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8892;</td>
+  <td>8892</td>
+  <td>22BC</td>
+  <td></td>
+  <td>nand</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8893;</td>
+  <td>8893</td>
+  <td>22BD</td>
+  <td></td>
+  <td>nor</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8894;</td>
+  <td>8894</td>
+  <td>22BE</td>
+  <td></td>
+  <td>right angle with arc</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8895;</td>
+  <td>8895</td>
+  <td>22BF</td>
+  <td></td>
+  <td>right triangle</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8896;</td>
+  <td>8896</td>
+  <td>22C0</td>
+  <td></td>
+  <td>n-ary logical and</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8897;</td>
+  <td>8897</td>
+  <td>22C1</td>
+  <td></td>
+  <td>n-ary logical or</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8898;</td>
+  <td>8898</td>
+  <td>22C2</td>
+  <td></td>
+  <td>n-ary intersection</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8899;</td>
+  <td>8899</td>
+  <td>22C3</td>
+  <td></td>
+  <td>n-ary union</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8900;</td>
+  <td>8900</td>
+  <td>22C4</td>
+  <td></td>
+  <td>diamond operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8901;</td>
+  <td>8901</td>
+  <td>22C5</td>
+  <td>&amp;sdot;</td>
+  <td>dot operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8902;</td>
+  <td>8902</td>
+  <td>22C6</td>
+  <td></td>
+  <td>star operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8903;</td>
+  <td>8903</td>
+  <td>22C7</td>
+  <td></td>
+  <td>division times</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8904;</td>
+  <td>8904</td>
+  <td>22C8</td>
+  <td></td>
+  <td>bowtie</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8905;</td>
+  <td>8905</td>
+  <td>22C9</td>
+  <td></td>
+  <td>left normal factor semidirect product</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8906;</td>
+  <td>8906</td>
+  <td>22CA</td>
+  <td></td>
+  <td>right normal factor semidirect product</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8907;</td>
+  <td>8907</td>
+  <td>22CB</td>
+  <td></td>
+  <td>left semidirect product</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8908;</td>
+  <td>8908</td>
+  <td>22CC</td>
+  <td></td>
+  <td>right semidirect product</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8909;</td>
+  <td>8909</td>
+  <td>22CD</td>
+  <td></td>
+  <td>reversed tilde equals</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8910;</td>
+  <td>8910</td>
+  <td>22CE</td>
+  <td></td>
+  <td>curly logical or</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8911;</td>
+  <td>8911</td>
+  <td>22CF</td>
+  <td></td>
+  <td>curly logical and</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8912;</td>
+  <td>8912</td>
+  <td>22D0</td>
+  <td></td>
+  <td>double subset</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8913;</td>
+  <td>8913</td>
+  <td>22D1</td>
+  <td></td>
+  <td>double superset</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8914;</td>
+  <td>8914</td>
+  <td>22D2</td>
+  <td></td>
+  <td>double intersection</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8915;</td>
+  <td>8915</td>
+  <td>22D3</td>
+  <td></td>
+  <td>double union</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8916;</td>
+  <td>8916</td>
+  <td>22D4</td>
+  <td></td>
+  <td>pitchfork</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8917;</td>
+  <td>8917</td>
+  <td>22D5</td>
+  <td></td>
+  <td>equal and parallel to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8918;</td>
+  <td>8918</td>
+  <td>22D6</td>
+  <td></td>
+  <td>less-than with dot</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8919;</td>
+  <td>8919</td>
+  <td>22D7</td>
+  <td></td>
+  <td>greater-than with dot</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8920;</td>
+  <td>8920</td>
+  <td>22D8</td>
+  <td></td>
+  <td>very much less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8921;</td>
+  <td>8921</td>
+  <td>22D9</td>
+  <td></td>
+  <td>very much greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8922;</td>
+  <td>8922</td>
+  <td>22DA</td>
+  <td></td>
+  <td>less-than equal to or greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8923;</td>
+  <td>8923</td>
+  <td>22DB</td>
+  <td></td>
+  <td>greater-than equal to or less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8924;</td>
+  <td>8924</td>
+  <td>22DC</td>
+  <td></td>
+  <td>equal to or less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8925;</td>
+  <td>8925</td>
+  <td>22DD</td>
+  <td></td>
+  <td>equal to or greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8926;</td>
+  <td>8926</td>
+  <td>22DE</td>
+  <td></td>
+  <td>equal to or precedes</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8927;</td>
+  <td>8927</td>
+  <td>22DF</td>
+  <td></td>
+  <td>equal to or succeeds</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8928;</td>
+  <td>8928</td>
+  <td>22E0</td>
+  <td></td>
+  <td>does not precede or equal</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8929;</td>
+  <td>8929</td>
+  <td>22E1</td>
+  <td></td>
+  <td>does not succeed or equal</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8930;</td>
+  <td>8930</td>
+  <td>22E2</td>
+  <td></td>
+  <td>not square image of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8931;</td>
+  <td>8931</td>
+  <td>22E3</td>
+  <td></td>
+  <td>not square original of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8932;</td>
+  <td>8932</td>
+  <td>22E4</td>
+  <td></td>
+  <td>square image of or not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8933;</td>
+  <td>8933</td>
+  <td>22E5</td>
+  <td></td>
+  <td>square original of or not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8934;</td>
+  <td>8934</td>
+  <td>22E6</td>
+  <td></td>
+  <td>less-than but not equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8935;</td>
+  <td>8935</td>
+  <td>22E7</td>
+  <td></td>
+  <td>greater-than but not equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8936;</td>
+  <td>8936</td>
+  <td>22E8</td>
+  <td></td>
+  <td>precedes but not equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8937;</td>
+  <td>8937</td>
+  <td>22E9</td>
+  <td></td>
+  <td>succeeds but not equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8938;</td>
+  <td>8938</td>
+  <td>22EA</td>
+  <td></td>
+  <td>not normal subgroup of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8939;</td>
+  <td>8939</td>
+  <td>22EB</td>
+  <td></td>
+  <td>does not contain as normal subgroup</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8940;</td>
+  <td>8940</td>
+  <td>22EC</td>
+  <td></td>
+  <td>not normal subgroup of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8941;</td>
+  <td>8941</td>
+  <td>22ED</td>
+  <td></td>
+  <td>does not contain as normal subgroup or equal</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8942;</td>
+  <td>8942</td>
+  <td>22EE</td>
+  <td></td>
+  <td>vertical ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8943;</td>
+  <td>8943</td>
+  <td>22EF</td>
+  <td></td>
+  <td>midline horizontal ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8944;</td>
+  <td>8944</td>
+  <td>22F0</td>
+  <td></td>
+  <td>up right diagonal ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8945;</td>
+  <td>8945</td>
+  <td>22F1</td>
+  <td></td>
+  <td>down right diagonal ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8946;</td>
+  <td>8946</td>
+  <td>22F2</td>
+  <td></td>
+  <td>element of with long horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8947;</td>
+  <td>8947</td>
+  <td>22F3</td>
+  <td></td>
+  <td>element of with vertical bar at end of horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8948;</td>
+  <td>8948</td>
+  <td>22F4</td>
+  <td></td>
+  <td>small element of with vertical bar at end of horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8949;</td>
+  <td>8949</td>
+  <td>22F5</td>
+  <td></td>
+  <td>element of with dot above</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8950;</td>
+  <td>8950</td>
+  <td>22F6</td>
+  <td></td>
+  <td>element of with overbar</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8951;</td>
+  <td>8951</td>
+  <td>22F7</td>
+  <td></td>
+  <td>small element of with overbar</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8952;</td>
+  <td>8952</td>
+  <td>22F8</td>
+  <td></td>
+  <td>element of with underbar</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8953;</td>
+  <td>8953</td>
+  <td>22F9</td>
+  <td></td>
+  <td>element of with two horizontal strokes</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8954;</td>
+  <td>8954</td>
+  <td>22FA</td>
+  <td></td>
+  <td>contains with long horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8955;</td>
+  <td>8955</td>
+  <td>22FB</td>
+  <td></td>
+  <td>contains with vertical bar at end of horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8956;</td>
+  <td>8956</td>
+  <td>22FC</td>
+  <td></td>
+  <td>small contains with vertical bar at end of horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8957;</td>
+  <td>8957</td>
+  <td>22FD</td>
+  <td></td>
+  <td>contains with overbar</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8958;</td>
+  <td>8958</td>
+  <td>22FE</td>
+  <td></td>
+  <td>small contains with overbar</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8959;</td>
+  <td>8959</td>
+  <td>22FF</td>
+  <td></td>
+  <td>z notation bag membership</td>
+ </tr>
+</table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/basiccommand.xhtml b/src/axiom-website/hyperdoc/basiccommand.xhtml
new file mode 100644
index 0000000..e170c37
--- /dev/null
+++ b/src/axiom-website/hyperdoc/basiccommand.xhtml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td>
+     <a href="calculus.xhtml">
+      <b>Calculus</b>
+     </a>
+    </td>
+    <td>Compute integrals, derivatives, or limits</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="bcmatrix.xhtml">
+      <b>Matrix</b>
+     </a>
+    </td>
+    <td>Create a matrix</td>
+   </tr>
+   <tr>
+    <td><a href="bcexpand.xhtml"><b>Operations</b></a></td>
+    <td>Expand, factor, simplify, substitute, etc.</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="draw.xhtml">
+      <b>Draw</b>
+     </a>
+    </td>
+    <td>Create 2D or 3D plots.</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="series.xhtml">
+      <b>Series</b>
+     </a>
+    </td>
+    <td>Create a power series</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="solve.xhtml">
+      <b>Solve</b>
+     </a>
+    </td>
+    <td>Solve an equation or system of equations</td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/basiclimit.xhtml b/src/axiom-website/hyperdoc/basiclimit.xhtml
new file mode 100644
index 0000000..59d0f81
--- /dev/null
+++ b/src/axiom-website/hyperdoc/basiclimit.xhtml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+   What kind of limit do you want to compute?:<br/>
+   <a href="reallimit.xhtml">
+    <b>A real limit</b>
+   </a><br/>
+   The limit as the variable approaches a real value along the real axis
+   <br/><br/>
+   <a href="complexlimit.xhtml">
+    <b>A complex limit</b>
+   </a><br/>
+   The limit as the variable approaches a complex value along any path in
+   the complex plane.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/bcexpand.xhtml b/src/axiom-website/hyperdoc/bcexpand.xhtml
new file mode 100644
index 0000000..8da6e83
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bcexpand.xhtml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+Simplification
+<ul>
+<li>Simplify Expressions</li>
+<li>Simplify Radicals</li>
+<li>Factor Expressions</li>
+<li>Factor Complex</li>
+<li>Expand Expressions</li>
+<li>Expand Logarithms</li>
+<li>Contract Logarithms</li>
+<li>Simpify Trigonometrics</li>
+<li>Reduce Trigonometrics</li>
+<li>Expand Trigonometrics</li>
+<li>Canonical Trigonometrics</li>
+<li>Complex to rectangular</li>
+<li>Complex to polar</li>
+<li>Complex to exponentials</li>
+<li>Exponentials to complex</li>
+</ul>
+Calculus
+<ul>
+<li>Integrate</li>
+<li>Risch Integrate</li>
+<li>Change Variable</li>
+<li>Differentiate</li>
+<li>Find Limit</li>
+<li>Get Series</li>
+<li>Pade Approximation</li>
+<li>Calculate Sum</li>
+<li>Calculate Product</li>
+<li>Laplace Transform</li>
+<li>Inverse Laplace Transform</li>
+<li>Greatest Common Divisor</li>
+<li>Least Common Multiple</li>
+<li>Divide Polynomials</li>
+<li>Partial Fractions</li>
+<li>Continued Fractions</li>
+</ul>
+Algebra
+<ul>
+<li>Generate Matrix</li>
+<li>Enter Matrix</li>
+<li>Invert Matrix</li>
+<li>Characteristic Polynomial</li>
+<li>Determinant</li>
+<li>Eigenvalues</li>
+<li>Eigenvectors</li>
+<li>Adjoint Matrix</li>
+<li>Transpose Matrix</li>
+</ul>
+Equations
+<ul>
+<li>Solve</li>
+<li>Solve Numerically</li>
+<li>Roots of Polynomials</li>
+<li>Real Roots of Polynomials</li>
+<li>Solve Linear Systems</li>
+<li>Solve Algebraic System</li>
+<li>Eliminate Variable</li>
+</ul>
+Ordinary Differential Equations
+<ul>
+<li>Solve ODE</li>
+<li>Solve Initial Value Problem</li>
+<li>Solve Boundary Value Problem</li>
+<li>Solve ODE with Laplace</li>
+</ul>
+Data Structures
+<ul>
+<li>Record</li>
+<li>List</li>
+<li>Set</li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/bcmatrix.xhtml b/src/axiom-website/hyperdoc/bcmatrix.xhtml
new file mode 100644
index 0000000..20d5690
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bcmatrix.xhtml
@@ -0,0 +1,366 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+   function byformula() {
+      // find out how many rows and columns, must be positive and nonzero
+    var rcnt = parseInt(document.getElementById('rowcnt').value);
+     if (rcnt <= 0) {
+      alert("Rows must be positive and non-zero -- defaulting to 1");
+      rcnt = 1;
+      document.getElementById('rowcnt').value=1;
+      return(false);
+     }
+    var ccnt = parseInt(document.getElementById('colcnt').value);
+     if (ccnt <= 0) {
+      alert("Columns must be positive and non-zero -- defaulting to 1");
+      ccnt = 1;
+      document.getElementById('colcnt').value=1;
+      return(false);
+     }
+      // remove the question and the buttons
+    var quest = document.getElementById('question');
+    var clicks = document.getElementById('clicks');
+    quest.removeChild(clicks);
+    var tbl = document.getElementById('form2');
+    var tblsize = tbl.rows.length;
+      // make the row variable question
+      // row variable left cell
+    var row = tbl.insertRow(tblsize);
+    var cell = row.insertCell(0);
+    var tnode = document.createTextNode("Enter the row variable");
+    cell.appendChild(tnode);
+      // row variable right cell
+    cell = row.insertCell(1);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'rowvar';
+    tnode.id = 'rowvar';
+    tnode.size=10;
+    tnode.value='i';
+    tnode.tabindex=21;
+    cell.appendChild(tnode);
+      // make the column variable question
+      // column variable left cell
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the column variable");
+    cell.appendChild(tnode);
+      // column variable right cell
+    cell = row.insertCell(1);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'colvar';
+    tnode.id = 'colvar';
+    tnode.size=10;
+    tnode.tabindex=22;
+    tnode.value='j';
+    cell.appendChild(tnode);
+      // make the formula question
+      // column variable left cell
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the formulas for the elements");
+    cell.appendChild(tnode);
+      // formula input field
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'formula1';
+    tnode.id = 'formula1';
+    tnode.size=50;
+    tnode.value = '1/(x-i-j-1)';
+    tnode.tabindex=23;
+    cell.appendChild(tnode);
+      // insert the continue button
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'button';
+    tnode.id = 'contbutton';
+    tnode.value = 'Continue';
+    tnode.setAttribute("onclick","makeRequest('formula');");
+    tnode.tabindex=24;
+    cell.appendChild(tnode);
+    return(false);
+   }
+   function byelement() {
+      // find out how many rows and columns, must be positive and nonzero
+    var rcnt = parseInt(document.getElementById('rowcnt').value);
+     if (rcnt <= 0) {
+      alert("Rows must be positive and non-zero -- defaulting to 1");
+      rcnt = 1;
+      document.getElementById('rowcnt').value=1;
+      return(false);
+     }
+    var ccnt = parseInt(document.getElementById('colcnt').value);
+     if (ccnt <= 0) {
+      alert("Columns must be positive and non-zero -- defaulting to 1");
+      ccnt = 1;
+      document.getElementById('colcnt').value=1;
+      return(false);
+     }
+      // remove the question and the buttons
+    var quest = document.getElementById('question');
+    var clicks = document.getElementById('clicks');
+    quest.removeChild(clicks);
+      // write "Elements"
+    var tbl = document.getElementById('form2');
+    var tblsize = tbl.rows.length;
+    var row = tbl.insertRow(tblsize);
+    var thecell = row.insertCell(0);
+    var tnode = document.createTextNode("Elements");
+    thecell.appendChild(tnode);
+      // create input boxes for the matrix values
+    tblsize = tblsize + 1;
+    for (var i = 0 ; i < rcnt ; i++) {
+     row = tbl.insertRow(tblsize);
+     for (var j = 0 ; j < ccnt ; j++) {
+      thecell = row.insertCell(j);
+      tnode = document.createElement('input');
+      tnode.type = 'text';
+      tnode.name = 'a'+i+'c'+j;
+      tnode.id = 'a'+i+'c'+j;
+      tnode.size=10;
+      tnode.tabindex=20+(i*10)+j;
+      thecell.appendChild(tnode);
+     }
+     tblsize = tblsize + 1;
+    }
+      // insert the continue button
+    row = tbl.insertRow(tblsize);
+    thecell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'button';
+    tnode.id = 'contbutton';
+    tnode.value = 'Continue';
+    tnode.setAttribute("onclick","makeRequest('element');");
+    thecell.appendChild(tnode);
+    return(false);
+   }
+   function commandline(arg) {
+    if (arg == 'element') {
+     var rcnt = parseInt(document.getElementById('rowcnt').value);
+     var ccnt = parseInt(document.getElementById('colcnt').value);
+     var cmdhead = 'matrix([';
+     var cmdtail = '])';
+      for (var i = 0 ; i < rcnt ; i++) {
+      var listbody = '[';
+      for (var j = 0 ; j < ccnt ; j++) {
+       var aij = document.getElementById('a'+i+'c'+j).value;
+       listbody = listbody+aij;
+       if (j != (ccnt - 1)) {
+        listbody = listbody+',';
+       }
+      }
+      listbody = listbody+']';
+      if (i != (rcnt - 1)) {
+       listbody = listbody+',';
+      }
+      cmdhead = cmdhead+listbody;
+     }
+     cmd = cmdhead+cmdtail;
+     return(cmd);
+    } else {
+     var rcnt = parseInt(document.getElementById('rowcnt').value);
+     var ccnt = parseInt(document.getElementById('colcnt').value);
+     var cmdhead = 'matrix([[';
+     var cmdtail = '])';
+     var formula = document.getElementById('formula1').value;
+     var rowv = document.getElementById('rowvar').value;
+     var colv = document.getElementById('colvar').value;
+     var cmd = cmdhead+formula+' for '+colv+' in 1..'+ccnt+']'+
+                               ' for '+rowv+' in 1..'+rcnt+cmdtail;
+     return(cmd);
+    }
+   }
+]]>
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+Enter the size of the matrix:
+<table id="form2">
+ <tr>
+  <td size="10">Rows</td>
+  <td><input type="text" id="rowcnt" tabindex="10" size="10" value="2"/></td>
+ </tr>
+ <tr>
+  <td>Columns</td>
+  <td><input type="text" id="colcnt" tabindex="20" size="10" value="3"/></td>
+ </tr>
+</table>
+<div id="question">
+ <div id="clicks">
+  How would you like to enter the matrix elements?
+  <center>
+   <input type="button" value="By Formula" onclick="byformula();"/>
+   <input type="button" value="By Element" onclick="byelement();"/>
+  </center>
+ </div>
+</div>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/bigbayou.png b/src/axiom-website/hyperdoc/bigbayou.png
new file mode 100644
index 0000000..14a7e2a
Binary files /dev/null and b/src/axiom-website/hyperdoc/bigbayou.png differ
diff --git a/src/axiom-website/hyperdoc/bitmaps/ai.bitmap b/src/axiom-website/hyperdoc/bitmaps/ai.bitmap
new file mode 100644
index 0000000..b278d66
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ai.bitmap
@@ -0,0 +1,7 @@
+#define ai_width 20
+#define ai_height 16
+static char ai_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x03, 0x00, 0x18, 0x03, 0x00, 0x18, 0x83, 0x01, 0x0c, 0x83, 0x00,
+   0x8c, 0x01, 0x00, 0x8c, 0x61, 0x00, 0x8c, 0xe5, 0x00, 0xcc, 0xd5, 0x00,
+   0xf8, 0x43, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xa0, 0x00, 0x00, 0xe0, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/al.bitmap b/src/axiom-website/hyperdoc/bitmaps/al.bitmap
new file mode 100644
index 0000000..c727239
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/al.bitmap
@@ -0,0 +1,9 @@
+#define al_width 30
+#define al_height 16
+static char al_bits[] = {
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
+   0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00,
+   0x80, 0x0c, 0xf0, 0x01, 0xc0, 0x0c, 0x60, 0x00, 0x40, 0x0c, 0x60, 0x00,
+   0xe0, 0x0f, 0x30, 0x00, 0x20, 0x18, 0x30, 0x00, 0x10, 0x18, 0x30, 0x00,
+   0x18, 0x18, 0x30, 0x04, 0x08, 0x18, 0x18, 0x04, 0x1f, 0x7e, 0x18, 0x02,
+   0x00, 0x00, 0xfe, 0x03};
diff --git a/src/axiom-website/hyperdoc/bitmaps/aleph.bitmap b/src/axiom-website/hyperdoc/bitmaps/aleph.bitmap
new file mode 100644
index 0000000..dc7bc36
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/aleph.bitmap
@@ -0,0 +1,8 @@
+#define aleph_width 16
+#define aleph_height 16
+#define aleph_x_hot -1
+#define aleph_y_hot -1
+static char aleph_bits[] = {
+   0x38, 0x78, 0x38, 0x30, 0x38, 0x10, 0x24, 0x08, 0x24, 0x08, 0x44, 0x08,
+   0x84, 0x10, 0x88, 0x20, 0x10, 0x21, 0x10, 0x21, 0x10, 0x22, 0x08, 0x1c,
+   0x0c, 0x1c, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/alpha.bitmap b/src/axiom-website/hyperdoc/bitmaps/alpha.bitmap
new file mode 100644
index 0000000..4f10f02
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/alpha.bitmap
@@ -0,0 +1,8 @@
+#define alpha_width 16
+#define alpha_height 16
+#define alpha_x_hot -1
+#define alpha_y_hot -1
+static char alpha_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xf0, 0x21, 0x98, 0x33, 0x0c, 0x1b,
+   0x0c, 0x1e, 0x0e, 0x0e, 0x06, 0x06, 0x06, 0x07, 0xce, 0x37, 0xfc, 0x3e,
+   0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/alpha.xbm b/src/axiom-website/hyperdoc/bitmaps/alpha.xbm
new file mode 100644
index 0000000..b45f58c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/alpha.xbm
@@ -0,0 +1,7 @@
+#define alpha_width 15
+#define alpha_height 20
+static char alpha_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x21,
+   0x18, 0x13, 0x08, 0x0b, 0x0c, 0x07, 0x0c, 0x03, 0x8c, 0x03, 0x4c, 0x17,
+   0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/alphaj.bitmap b/src/axiom-website/hyperdoc/bitmaps/alphaj.bitmap
new file mode 100644
index 0000000..71f6d52
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/alphaj.bitmap
@@ -0,0 +1,9 @@
+#define alphaj_width 25
+#define alphaj_height 16
+static char alphaj_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0xc0, 0x03, 0x10, 0x00, 0x70, 0x26, 0x00, 0x00,
+   0x30, 0x26, 0x0c, 0x00, 0x18, 0x1e, 0x1c, 0x00, 0x18, 0x1c, 0x1a, 0x00,
+   0x18, 0x0c, 0x18, 0x00, 0x18, 0x0c, 0x08, 0x00, 0x18, 0x2f, 0x08, 0x00,
+   0xf0, 0x1d, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x80, 0x05, 0x00,
+   0x00, 0x80, 0x07, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/angle.bitmap b/src/axiom-website/hyperdoc/bitmaps/angle.bitmap
new file mode 100644
index 0000000..77c9e81
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/angle.bitmap
@@ -0,0 +1,6 @@
+#define angle_width 16
+#define angle_height 16
+static char angle_bits[] = {
+   0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01,
+   0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00,
+   0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0xfe, 0x1f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/anna.xbm.tiny b/src/axiom-website/hyperdoc/bitmaps/anna.xbm.tiny
new file mode 100644
index 0000000..1205255
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/anna.xbm.tiny
@@ -0,0 +1,12 @@
+#define anna_width 50
+#define anna_height 15
+static unsigned char anna_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0xc0, 0x5f, 0x85, 0x18, 0x55, 0x0d, 0xfc, 0x40, 0xd5, 0x8f,
+   0x1d, 0xdf, 0x0f, 0xfc, 0xe0, 0x9f, 0x0a, 0x15, 0x8a, 0x1a, 0xfc, 0xa0,
+   0xca, 0x8f, 0x3d, 0xdf, 0x17, 0xfc, 0xf0, 0x5b, 0x9d, 0x28, 0x55, 0x35,
+   0xfc, 0x50, 0xd1, 0x97, 0x2d, 0xdf, 0x27, 0xfc, 0xf8, 0x99, 0x12, 0x65,
+   0x8a, 0x62, 0xfc, 0xa8, 0xc8, 0xb7, 0x4d, 0xdf, 0x47, 0xfc, 0xfc, 0x58,
+   0xa5, 0x48, 0x55, 0xc5, 0xfc, 0xd4, 0xdf, 0xa7, 0xcd, 0xdf, 0xff, 0xfc,
+   0x7e, 0x98, 0x62, 0x85, 0x8a, 0x82, 0xfd, 0x2a, 0xc8, 0xc7, 0x8d, 0xdf,
+   0x07, 0xfd, 0x1f, 0x58, 0xc5, 0x88, 0x55, 0x05, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/anna_logo.xbm b/src/axiom-website/hyperdoc/bitmaps/anna_logo.xbm
new file mode 100644
index 0000000..0bb535b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/anna_logo.xbm
@@ -0,0 +1,165 @@
+#define anna_logo_width 192
+#define anna_logo_height 81
+static char anna_logo_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xd0, 0xd2, 0x83, 0xd6, 0xfe, 0x00, 0x00, 0xe0,
+   0xe1, 0x01, 0x00, 0xa0, 0x6a, 0x3d, 0xfc, 0xbd, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xa8, 0xfd, 0x06, 0xfd, 0xb7, 0x00, 0x00, 0xe0,
+   0xa0, 0x01, 0x00, 0x40, 0x95, 0x2a, 0xdc, 0xfd, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xb4, 0xa6, 0x02, 0xa5, 0xfd, 0x01, 0x00, 0xa0,
+   0x61, 0x03, 0x00, 0xe0, 0x6a, 0x3f, 0xf4, 0xff, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xd8, 0x7f, 0x87, 0x75, 0xed, 0x01, 0x00, 0xe0,
+   0xe1, 0x01, 0x00, 0x00, 0xe9, 0x1a, 0xbc, 0xff, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x28, 0xed, 0x84, 0xd5, 0x7f, 0x01, 0x00, 0xa0,
+   0x41, 0x03, 0x00, 0xa0, 0x69, 0x37, 0xfc, 0xf6, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xb4, 0x56, 0x07, 0x3b, 0xdb, 0x03, 0x00, 0xe0,
+   0xe1, 0x07, 0x00, 0x20, 0xa6, 0x12, 0xec, 0xff, 0x1b, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x13, 0x95, 0x83, 0xea, 0x7e, 0x03, 0x00, 0xa0,
+   0xa1, 0x05, 0x00, 0x40, 0xaa, 0x1b, 0xf8, 0x7f, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe8, 0x72, 0x87, 0x9e, 0xd5, 0x05, 0x00, 0xe0,
+   0xa0, 0x0a, 0x00, 0x80, 0x66, 0x2f, 0xfc, 0xd7, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x95, 0xea, 0x85, 0x75, 0xea, 0x07, 0x00, 0xe0,
+   0xe1, 0x05, 0x00, 0x60, 0x8b, 0x3d, 0x7c, 0xff, 0x3b, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0xb7, 0x96, 0x82, 0x6a, 0xaf, 0x07, 0x00, 0x60,
+   0xa1, 0x0e, 0x00, 0x40, 0xf5, 0x1b, 0xec, 0xf7, 0x5e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x4a, 0x35, 0x05, 0x5b, 0xdd, 0x0b, 0x00, 0xe0,
+   0xc1, 0x18, 0x00, 0x20, 0x6e, 0x3d, 0xfc, 0x3f, 0x37, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x35, 0x41, 0x87, 0xd6, 0x7d, 0x0f, 0x00, 0xa0,
+   0xe1, 0x1e, 0x00, 0x00, 0xf4, 0x3b, 0xfc, 0xee, 0x37, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x6a, 0x55, 0x82, 0xdb, 0xfa, 0x0e, 0x00, 0xe0,
+   0x60, 0x18, 0x00, 0xc0, 0x37, 0x33, 0xdc, 0xef, 0xb3, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x0e, 0xb5, 0x05, 0x7b, 0xef, 0x1f, 0x00, 0xe0,
+   0xe1, 0x34, 0x00, 0x00, 0xe9, 0x3c, 0xd8, 0x7f, 0x47, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x50, 0xd5, 0x05, 0x86, 0xaf, 0xb5, 0x16, 0x00, 0xe0,
+   0xa1, 0x28, 0x00, 0x00, 0xa7, 0x2e, 0xfc, 0xae, 0x63, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0xae, 0x9a, 0x02, 0x59, 0xeb, 0x1a, 0x00, 0xe0,
+   0x61, 0x58, 0x00, 0xe0, 0xf4, 0x3f, 0xfc, 0x7a, 0xa3, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x48, 0x6b, 0x0a, 0x06, 0xdf, 0xb5, 0x3e, 0x00, 0x60,
+   0xe1, 0x78, 0x00, 0xc0, 0xd7, 0x39, 0xd4, 0xef, 0x45, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0xd6, 0x8b, 0x80, 0xba, 0x3b, 0x34, 0x00, 0xe0,
+   0x61, 0x38, 0x00, 0x20, 0x7a, 0x2f, 0xfc, 0x7b, 0x47, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xb4, 0x3d, 0x0d, 0x82, 0x6d, 0xe5, 0x3c, 0x00, 0xe0,
+   0xa0, 0x60, 0x00, 0x40, 0xe3, 0x2f, 0xbc, 0xdd, 0x82, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0xab, 0x0a, 0x01, 0xba, 0xbd, 0x3c, 0x00, 0xa0,
+   0xe1, 0xb0, 0x00, 0xa0, 0x55, 0x3d, 0xfc, 0xff, 0x07, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x74, 0xef, 0x82, 0x84, 0x6f, 0xc9, 0x68, 0x00, 0xe0,
+   0xc1, 0xd0, 0x01, 0xa0, 0xf6, 0x1e, 0xbc, 0x76, 0x82, 0x05, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xda, 0xdd, 0x03, 0x83, 0xb8, 0x76, 0xf8, 0x00, 0xa0,
+   0xe1, 0xa0, 0x01, 0x80, 0xdc, 0x3b, 0xec, 0xb3, 0x05, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0x77, 0x03, 0x05, 0x6f, 0xab, 0xc0, 0x00, 0xe0,
+   0x61, 0xa0, 0x01, 0xa0, 0xb3, 0x3e, 0x54, 0x6f, 0x03, 0x0e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xd6, 0xfe, 0x01, 0x85, 0xba, 0xb7, 0xf0, 0x00, 0xe0,
+   0xe1, 0x40, 0x01, 0x80, 0xfa, 0x1f, 0xf8, 0x59, 0x05, 0x0a, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x7b, 0x5f, 0x81, 0x01, 0xd3, 0xbc, 0xd0, 0x01, 0x60,
+   0xc1, 0xc0, 0x02, 0x60, 0x6d, 0x3b, 0x5c, 0x5e, 0x07, 0x16, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0xfe, 0xff, 0x00, 0x03, 0xbe, 0x55, 0x60, 0x01, 0xe0,
+   0x61, 0xc0, 0x03, 0x60, 0xf5, 0x2e, 0xfc, 0xd5, 0x04, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0xb4, 0xbb, 0x80, 0x80, 0x68, 0xaf, 0xe0, 0x03, 0x60,
+   0xa1, 0x80, 0x02, 0x40, 0xaf, 0x3b, 0xb4, 0xba, 0x05, 0x28, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfd, 0xfd, 0x80, 0x07, 0x53, 0x68, 0xc0, 0x03, 0xe0,
+   0xe1, 0x80, 0x05, 0x40, 0xf5, 0x3e, 0xec, 0x56, 0x02, 0x1c, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x6f, 0x7f, 0x00, 0x84, 0x76, 0x97, 0x40, 0x01, 0xe0,
+   0xa1, 0x00, 0x09, 0xa0, 0xbf, 0x3d, 0xbc, 0x97, 0x07, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0xfd, 0x3f, 0x80, 0x05, 0xcc, 0xbb, 0xc0, 0x03, 0x60,
+   0x81, 0x00, 0x06, 0x20, 0xeb, 0x37, 0xa8, 0xb6, 0x02, 0x50, 0x00, 0x00,
+   0x00, 0x00, 0xb0, 0xaa, 0x35, 0x00, 0x87, 0x71, 0xf7, 0xc0, 0x07, 0xe0,
+   0xe1, 0x00, 0x0b, 0xc0, 0xfb, 0x3e, 0x7c, 0x62, 0x05, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xda, 0x3f, 0x80, 0x86, 0x46, 0x5b, 0x80, 0x07, 0x60,
+   0x41, 0x00, 0x04, 0x40, 0xd5, 0x1f, 0xa4, 0xdb, 0x07, 0xb0, 0x00, 0x00,
+   0x00, 0x00, 0x68, 0xd3, 0x2a, 0x80, 0x03, 0x5c, 0xef, 0x80, 0x0d, 0xe0,
+   0xe1, 0x00, 0x1a, 0xa0, 0xff, 0x3b, 0x6c, 0xd5, 0x02, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x90, 0x3c, 0x1c, 0x80, 0x85, 0x51, 0xba, 0x80, 0x0f, 0xe0,
+   0xc1, 0x00, 0x14, 0x60, 0xf6, 0x2f, 0xd8, 0x9a, 0x05, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x50, 0xeb, 0x1d, 0x80, 0x02, 0x9b, 0x6d, 0x00, 0x1d, 0x60,
+   0xe1, 0x00, 0x0c, 0x80, 0x95, 0x3f, 0x9c, 0x75, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x54, 0xca, 0x0a, 0x80, 0x87, 0x6a, 0xdb, 0x00, 0x1f, 0xe0,
+   0xa1, 0x00, 0x38, 0x60, 0x7e, 0x2f, 0xf4, 0x8c, 0x07, 0x40, 0x01, 0x00,
+   0x00, 0x00, 0x90, 0xbd, 0x04, 0x80, 0x02, 0x0a, 0x37, 0x00, 0x1e, 0x60,
+   0xe1, 0x00, 0x50, 0xa0, 0xe7, 0x3b, 0x2c, 0xb6, 0x02, 0x40, 0x01, 0x00,
+   0x00, 0x00, 0x04, 0x09, 0x05, 0x80, 0x05, 0x6b, 0xf9, 0x00, 0x3e, 0xe0,
+   0xa1, 0x00, 0x48, 0xc0, 0xfe, 0x3f, 0xd4, 0xea, 0x05, 0xc0, 0x02, 0x00,
+   0x00, 0x00, 0xa0, 0xda, 0x06, 0x00, 0x83, 0x74, 0x2f, 0x00, 0x3a, 0xa0,
+   0xe1, 0x00, 0x70, 0xa0, 0x7b, 0x2d, 0x78, 0xb5, 0x06, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x88, 0x14, 0xf9, 0xff, 0x85, 0x56, 0xda, 0x00, 0x3c, 0xe0,
+   0x61, 0x00, 0x40, 0xe0, 0xee, 0x3d, 0xd4, 0x76, 0x4b, 0x4d, 0x05, 0x00,
+   0x00, 0x00, 0x05, 0xd5, 0xca, 0xed, 0x86, 0xaa, 0xaa, 0x00, 0x74, 0xa0,
+   0xc1, 0x00, 0xb0, 0x40, 0x74, 0x3f, 0x2c, 0xdd, 0x9f, 0xda, 0x02, 0x00,
+   0x00, 0x80, 0x50, 0x42, 0x01, 0x80, 0x87, 0x8f, 0x6a, 0x00, 0x7c, 0xe0,
+   0xa1, 0x00, 0x80, 0x80, 0xb6, 0x0f, 0x98, 0x52, 0x05, 0x00, 0x0f, 0x00,
+   0x00, 0x80, 0x12, 0x36, 0x01, 0x00, 0x05, 0xb5, 0xba, 0x00, 0xf8, 0xe0,
+   0xe1, 0x00, 0x20, 0xe0, 0xf6, 0x33, 0x64, 0xbd, 0x01, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x05, 0x81, 0x00, 0x80, 0x87, 0x6b, 0xd3, 0x00, 0xe8, 0x60,
+   0xa1, 0x00, 0x80, 0xa1, 0xdd, 0x3b, 0xb4, 0x34, 0x07, 0x00, 0x1c, 0x00,
+   0x00, 0x40, 0x02, 0xa8, 0x00, 0x00, 0x05, 0xad, 0xaa, 0x00, 0xf0, 0xe1,
+   0xe0, 0x00, 0x40, 0xa1, 0xf6, 0x2b, 0x4c, 0xdf, 0x04, 0x00, 0x0a, 0x00,
+   0x00, 0x20, 0x68, 0x1a, 0x00, 0x80, 0x86, 0x92, 0x52, 0x00, 0xf0, 0xe1,
+   0xa1, 0x00, 0x40, 0xe3, 0xfa, 0x2e, 0xe8, 0xb4, 0x01, 0x00, 0x1c, 0x00,
+   0x00, 0x80, 0x4f, 0x40, 0x00, 0x80, 0x87, 0x4f, 0xd9, 0x00, 0xf0, 0xa1,
+   0x61, 0x00, 0x80, 0xa1, 0xf6, 0x3f, 0xdc, 0x6a, 0x02, 0x00, 0x28, 0x00,
+   0x00, 0x40, 0x94, 0x24, 0x00, 0x80, 0x01, 0x35, 0xa5, 0x00, 0x60, 0xe3,
+   0xc1, 0x00, 0x80, 0xc4, 0xfe, 0x1b, 0xb0, 0x5f, 0x05, 0x00, 0x28, 0x00,
+   0x00, 0x50, 0x55, 0x0a, 0x00, 0x80, 0x87, 0xd7, 0x48, 0x00, 0xe0, 0xe3,
+   0xe0, 0x00, 0x80, 0x24, 0xff, 0x1e, 0x68, 0x56, 0x05, 0x00, 0x58, 0x00,
+   0x00, 0x30, 0x89, 0x08, 0x00, 0x00, 0x83, 0x9b, 0x5a, 0x00, 0xe0, 0xe3,
+   0xa1, 0x00, 0x00, 0xa3, 0xbf, 0x2b, 0x94, 0xb5, 0x02, 0x00, 0x28, 0x00,
+   0x00, 0x5c, 0x10, 0x01, 0x00, 0x80, 0x85, 0x56, 0xd5, 0x00, 0xc0, 0xc7,
+   0x61, 0x00, 0x00, 0x6f, 0xfb, 0x0f, 0xdc, 0x8a, 0x02, 0x00, 0x70, 0x00,
+   0x00, 0xf4, 0x74, 0x01, 0x00, 0x80, 0x86, 0xbb, 0x68, 0x00, 0xc0, 0xe3,
+   0xa1, 0x00, 0x00, 0xa8, 0xff, 0x36, 0xe8, 0xb7, 0x00, 0x00, 0xf0, 0x00,
+   0x00, 0x54, 0x85, 0x04, 0x00, 0x80, 0x87, 0xaa, 0xd3, 0x00, 0x80, 0xe7,
+   0xe0, 0x00, 0x00, 0xd6, 0x33, 0x29, 0xa4, 0x5a, 0x02, 0x00, 0xd0, 0x00,
+   0x00, 0x64, 0xa9, 0x02, 0x00, 0x80, 0x85, 0x2b, 0x55, 0x00, 0x80, 0xef,
+   0xa1, 0x00, 0x00, 0xf2, 0xff, 0x1f, 0x78, 0x27, 0x07, 0x00, 0x60, 0x01,
+   0x00, 0xec, 0x95, 0x04, 0x00, 0x00, 0x87, 0x77, 0xd4, 0x00, 0x80, 0xae,
+   0xa1, 0x00, 0x00, 0xb6, 0xfd, 0x14, 0x50, 0x49, 0x04, 0x00, 0xa0, 0x01,
+   0x00, 0x77, 0xb5, 0x02, 0x00, 0x80, 0x05, 0xd5, 0x09, 0x00, 0x00, 0xef,
+   0xe1, 0x00, 0x00, 0xd4, 0x5d, 0x19, 0xdc, 0xa4, 0x05, 0x00, 0x60, 0x03,
+   0x00, 0xdd, 0x49, 0x01, 0x00, 0x00, 0x86, 0x2b, 0xd5, 0x00, 0x00, 0x7f,
+   0x21, 0x00, 0x00, 0x6c, 0xff, 0x37, 0x48, 0x5b, 0x02, 0x00, 0x40, 0x03,
+   0x00, 0xf3, 0x16, 0x02, 0x00, 0x00, 0x83, 0x8f, 0x32, 0x00, 0x00, 0xfe,
+   0xe1, 0x00, 0x00, 0xd4, 0x67, 0x15, 0xbc, 0xa9, 0x00, 0x00, 0xc0, 0x02,
+   0x00, 0xbe, 0x39, 0x01, 0x00, 0x80, 0x85, 0xea, 0x68, 0x00, 0x00, 0x6e,
+   0xa1, 0x00, 0x00, 0x98, 0xfd, 0x0b, 0x34, 0xa5, 0x06, 0x00, 0x80, 0x05,
+   0x80, 0x6c, 0x47, 0x00, 0x00, 0x80, 0x85, 0x6f, 0xb3, 0x00, 0x00, 0xfe,
+   0x60, 0x00, 0x00, 0xe0, 0xff, 0x2e, 0xa4, 0x2a, 0x05, 0x00, 0x00, 0x07,
+   0x00, 0x6e, 0x9b, 0x00, 0x00, 0x80, 0x86, 0xba, 0x26, 0x00, 0x00, 0xec,
+   0xe1, 0x00, 0x00, 0xb0, 0x65, 0x35, 0xdc, 0xe2, 0x04, 0x00, 0x80, 0x0d,
+   0x40, 0xd9, 0x3b, 0x00, 0x00, 0x00, 0x85, 0x5d, 0xed, 0x00, 0x00, 0x7c,
+   0xa1, 0x00, 0x00, 0xd0, 0xff, 0x0b, 0x18, 0xd9, 0x02, 0x00, 0x00, 0x06,
+   0x70, 0x52, 0x4d, 0x00, 0x00, 0x80, 0x03, 0xf7, 0x93, 0x00, 0x00, 0xfc,
+   0x61, 0x00, 0x00, 0xf0, 0x5e, 0x35, 0x74, 0x0f, 0x05, 0x00, 0x00, 0x1d,
+   0x30, 0xb9, 0x7f, 0x00, 0x00, 0x00, 0x85, 0xaf, 0x26, 0x00, 0x00, 0xec,
+   0xa1, 0x00, 0x00, 0x80, 0xeb, 0x2d, 0xec, 0xe4, 0x02, 0x00, 0x00, 0x0e,
+   0xe0, 0xe5, 0x1e, 0x00, 0x00, 0x00, 0x85, 0x7e, 0xdd, 0x00, 0x00, 0xf0,
+   0x20, 0x00, 0x00, 0x60, 0xbf, 0x2b, 0xac, 0xaa, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0xce, 0x1e, 0x67, 0x30, 0x68, 0x0c, 0xc1, 0x01, 0xc3, 0x66, 0x82,
+   0x7d, 0x3e, 0x8e, 0x83, 0x70, 0x00, 0xc2, 0x30, 0xc2, 0x39, 0x66, 0x7c,
+   0x30, 0x2c, 0x8c, 0xc8, 0x18, 0xe4, 0x84, 0x21, 0x02, 0x46, 0x22, 0xc6,
+   0x88, 0x44, 0x44, 0x84, 0x20, 0x00, 0x83, 0x11, 0x83, 0x30, 0x92, 0x92,
+   0x28, 0x18, 0xcc, 0xd8, 0x1c, 0xa4, 0x45, 0x31, 0x00, 0x4a, 0x22, 0xc6,
+   0x08, 0x44, 0x64, 0x40, 0x21, 0x00, 0x87, 0x12, 0x87, 0x60, 0x31, 0x10,
+   0x68, 0x18, 0xcc, 0x58, 0x15, 0x22, 0x45, 0x33, 0x00, 0x52, 0x22, 0xaa,
+   0x38, 0x3c, 0x64, 0x40, 0x21, 0x80, 0x84, 0x94, 0x84, 0xc0, 0xe0, 0x10,
+   0x7c, 0x24, 0xcc, 0x58, 0x15, 0x22, 0xe6, 0x33, 0x03, 0x52, 0x22, 0xaa,
+   0x08, 0x64, 0x64, 0xe0, 0x23, 0x80, 0x8f, 0x94, 0x8f, 0xc0, 0xc0, 0x10,
+   0x44, 0x66, 0x8c, 0x48, 0x12, 0x21, 0x26, 0x22, 0x02, 0x62, 0x22, 0x92,
+   0x88, 0x64, 0x44, 0x24, 0x22, 0x82, 0x88, 0x98, 0x88, 0xc4, 0x90, 0x10,
+   0xce, 0xe3, 0x1e, 0x67, 0x3a, 0x71, 0x74, 0xce, 0x03, 0x47, 0x1c, 0xd7,
+   0xfd, 0xce, 0x8e, 0x73, 0xf7, 0xc1, 0xdc, 0xd1, 0xdc, 0xe7, 0x61, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/atxequalb.bitmap b/src/axiom-website/hyperdoc/bitmaps/atxequalb.bitmap
new file mode 100644
index 0000000..862b041
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/atxequalb.bitmap
@@ -0,0 +1,21 @@
+#define atx=b_width 100
+#define atx=b_height 16
+static char atx=b_bits[] = {
+   0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x31, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
+   0x00, 0x00, 0x00, 0x00, 0x86, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x87, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x06, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x80, 0x06, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x40, 0x06, 0x30, 0x80,
+   0x3b, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x60, 0x06, 0x30,
+   0x40, 0x76, 0x00, 0xfc, 0xff, 0x00, 0x30, 0x03, 0x00, 0x00, 0x20, 0x06,
+   0xfc, 0x60, 0x36, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0xf0,
+   0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00,
+   0x10, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00,
+   0x00, 0x08, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03,
+   0x00, 0x00, 0x0c, 0x0c, 0x00, 0x60, 0x23, 0x00, 0xfc, 0xff, 0x00, 0x98,
+   0x01, 0x00, 0x00, 0x04, 0x0c, 0x00, 0xe0, 0x13, 0x00, 0x00, 0x00, 0x00,
+   0xd8, 0x00, 0x00, 0x80, 0x0f, 0x3f, 0x00, 0xe0, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/axiom.xbm b/src/axiom-website/hyperdoc/bitmaps/axiom.xbm
new file mode 100644
index 0000000..c1e9fb3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/axiom.xbm
@@ -0,0 +1,1049 @@
+#define axiom2_width 553
+#define axiom2_height 224
+static char axiom2_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xf0,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf8,0xef,0xf0,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xe1,0xf0,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0xe0,0xf9,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xc0,0xe0,0xf9,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x60,0xf9,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0x70,0xef,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xc0,0x60,0xef,0x00,0xfe,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0xf8,0x03,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x60,0xef,0x00,0xfe,
+ 0x00,0x00,0x00,0xf8,0x03,0x00,0x00,0xfe,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0x1f,0x00,0x00,0xc0,0x60,0xee,0x00,0xfe,0x00,0x00,0x00,0xfc,0x0f,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0x00,0xe0,0xff,0x3f,0x00,0x00,0xc0,0xff,0x00,
+ 0x00,0xe0,0x0f,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0xc0,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x07,
+ 0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x00,0x00,
+ 0xc0,0x60,0xee,0x00,0xfe,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x03,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0x01,0x00,0x00,0xfe,0x0f,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0x00,0x00,0xfc,0xff,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xf0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
+ 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x80,0xff,0x07,0x00,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xf8,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xe0,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xf8,0xff,0x07,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x3f,0xf8,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0xf8,0xff,0x07,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0x01,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf8,0xff,0xff,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x7f,0x00,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0x07,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf0,
+ 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfe,0xff,0xff,0xff,0x03,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x81,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,0xff,
+ 0xff,0x0f,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0xc0,0xff,0xff,0xff,0xff,0x03,0x00,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x83,0xff,0xff,0xff,0xff,0x03,0xf0,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x81,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xc0,
+ 0xff,0xff,0xff,0xff,0x03,0xc0,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x80,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0x1f,0x00,0xf0,0xff,0xff,0xff,0x07,0xe0,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0x7f,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xe0,0xff,0xff,0xff,0xff,0x03,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x0f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xfe,0xff,0xff,0x03,0x00,0x80,0xff,
+ 0xff,0xff,0x07,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
+ 0x1f,0xc0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x07,0xe0,0xff,0xff,0xff,0xff,0x03,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,0x00,0xfe,0xff,0xff,0x0f,0x00,0xff,
+ 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x07,0xc0,0xff,0xff,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
+ 0xff,0xff,0xff,0xff,0x01,0xfc,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xfe,0xff,
+ 0x1f,0x00,0x00,0x00,0xf8,0xff,0xff,0x0f,0x00,0xfe,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0xf0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xe0,0xff,0xff,0xff,0xff,0x01,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0xf0,
+ 0xff,0xff,0x0f,0x00,0xfc,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0x01,0x00,0x80,0xff,0xff,0xff,0x03,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0xc0,0xff,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x3f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0xfe,0xff,0x07,0x00,0x00,0x00,0xf0,0xff,0xff,0x1f,0x00,0xf8,
+ 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0x03,0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0xfe,0xff,0xff,0xff,0x3f,0x00,
+ 0xf8,0xff,0xff,0xff,0xc1,0xff,0x7f,0x80,0xff,0xff,0xff,0x7f,0xc0,0xff,0xff,
+ 0xe3,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0xe0,0xff,0xff,0x1f,0x00,0xf0,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0x00,0xc0,0xff,0x7f,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,0xe0,
+ 0xff,0x7f,0x00,0x00,0xf0,0xff,0xff,0xff,0x7f,0x00,0x80,0xff,0xff,0xff,0xe1,
+ 0xff,0x07,0x00,0xfc,0xff,0xff,0x7f,0xe0,0xff,0x0f,0x00,0xfe,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0xff,0x1f,0x00,0xf0,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xe0,0xff,0x1f,
+ 0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0x00,0xf0,0xff,0x0f,0x00,0x00,0x80,
+ 0xff,0xff,0xff,0xff,0x00,0x00,0xfe,0xff,0xff,0xf9,0xff,0x00,0x00,0xf0,0xff,
+ 0xff,0x7f,0xfc,0xff,0x01,0x00,0xf8,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0xff,0x3f,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x3f,0x00,0xe0,
+ 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xe0,0xff,0x1f,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0x03,0x00,0x00,0xf8,0xff,0x03,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0x3f,0x00,0x00,0xe0,0xff,0xff,0x7f,0xff,0x7f,0x00,
+ 0x00,0xf0,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x3f,0x00,0xc0,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0x00,0xfc,
+ 0xff,0x03,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x01,0x00,0xf8,0xff,0xff,0xff,
+ 0x1f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xe0,0xff,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xff,0x0f,0x00,0x00,0x00,0x00,0x80,
+ 0xff,0xff,0x3f,0x00,0x80,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0xff,0x07,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0x00,0xfe,0xff,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0x01,0x00,0xf8,0xff,0xff,0xff,0x0f,0x00,0x00,0x80,0xff,
+ 0xff,0xff,0xff,0x0f,0x00,0x00,0x80,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x80,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x3f,0x00,0x00,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf8,0xff,0x03,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0x00,0x00,0xff,0x7f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x03,
+ 0x00,0xf8,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x03,0x00,
+ 0x00,0x00,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x80,0xff,0x03,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x3f,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,
+ 0x00,0x00,0xf8,0xff,0x01,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0x80,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x03,0x00,0xf8,0xff,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xff,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x80,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0xfe,0xff,0xff,0x03,0x00,0x00,0x00,0xf8,0xff,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0xc0,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0x07,0x00,0xf8,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x80,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0xfc,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xff,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0x00,0xc0,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x07,
+ 0x00,0xf8,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x80,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,0xf8,0xff,0xff,0x07,0x00,
+ 0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0xe0,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x0f,0x00,0xf8,0xff,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xc0,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x7f,0x00,0x00,0xf0,0xff,0xff,0x0f,0x00,0x00,0x00,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0xf0,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0xff,0xff,0x0f,0x00,0xf8,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0xc0,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,
+ 0xe0,0xff,0xff,0x0f,0x00,0x00,0x00,0xff,0x1f,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0x00,0xf8,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x1f,
+ 0x00,0xf8,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xe0,0x3f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0xe0,0xff,0xff,0x1f,0x00,
+ 0x00,0x80,0xff,0x1f,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0xf8,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x1f,0x00,0xf8,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xe0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x7f,0x00,0x00,0xc0,0xff,0xff,0x3f,0x00,0x00,0x80,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0xfc,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0xf8,0xff,0xff,0x1f,0x00,0xf8,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,
+ 0x80,0xff,0xff,0x7f,0x00,0x00,0xc0,0xff,0x07,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0x00,0xfe,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x3f,
+ 0x00,0xf8,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x07,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xf0,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,0x00,0xff,0xff,0xff,0x00,
+ 0x00,0xe0,0xff,0x03,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x3f,0x00,0xf8,0xff,0xff,0x07,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xf0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0xff,0xff,0xff,0x00,0x00,0xe0,0xff,0x03,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0x3f,0x00,0xf8,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0x01,0x00,0xf0,0xff,0x01,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0x00,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x7f,
+ 0x00,0xf8,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,
+ 0x00,0xf8,0x7f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x80,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x7f,0x00,0xf8,0xff,0xff,0x03,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0xf8,0xff,0xff,0x07,0x00,0xfc,0x7f,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0x7f,0x00,0xf8,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,
+ 0x00,0xf8,0xff,0xff,0x07,0x00,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x7f,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0xf0,0xff,0xff,0x0f,
+ 0x00,0xfe,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xe0,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0xe0,0xff,0xff,0x1f,0x00,0xfe,0x1f,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xe0,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0x1f,0x80,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xf0,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0x3f,
+ 0x80,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xf0,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x80,0xff,0xff,0x7f,0xc0,0xff,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xf8,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0xff,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xf8,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0xe1,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xf8,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xf1,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xf8,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0xfb,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xf8,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfc,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfc,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0x03,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0xc0,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0x03,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0x03,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0x03,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0x0f,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x7f,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0x03,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x0f,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0xf8,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0x03,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0x01,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0xe0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xf0,0xff,0xff,0x3f,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x3f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0xf8,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
+ 0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xfc,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x80,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
+ 0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x80,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0xe0,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
+ 0x01,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xf0,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xff,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x01,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x80,0xff,0xef,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xfe,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xfc,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x80,0xff,0xc7,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xfc,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0xc0,0xff,0x83,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0xe0,0xff,0x03,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x7f,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xfe,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0xf0,0xff,0x01,
+ 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x7f,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0xf0,0xff,0x00,0xfe,0xff,0xff,0x03,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0x7f,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0x00,0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x7f,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0x80,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0xfc,0x7f,0x00,
+ 0xfc,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfe,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x80,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0x00,0xf8,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfc,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0x3f,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x80,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0xfe,0x3f,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xfc,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x1f,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0x80,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xff,0x1f,0x00,
+ 0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfc,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x1f,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x80,0xff,0x0f,0x00,0xe0,0xff,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xfc,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x1f,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0xc0,0xff,0x0f,0x00,0xc0,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xfc,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0x07,0x00,
+ 0x80,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xf8,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x80,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0xe0,0xff,0x03,0x00,0x80,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xf8,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x07,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0xf0,0xff,0x01,0x00,0x00,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xf8,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x07,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x3f,0x00,0x00,0x00,0xf8,0xff,0x01,0x00,
+ 0x00,0xfe,0xff,0xff,0x03,0x00,0x00,0x00,0xf0,0xff,0xff,0x01,0xf8,0xff,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x03,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xe0,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0xf8,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,0x07,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x01,0xf8,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0x01,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0xfc,0x7f,0x00,0x00,0x00,0xfc,0xff,0xff,0x07,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x3f,0x00,0x00,0x00,0xfe,0x7f,0x00,0x00,
+ 0x00,0xf8,0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xf0,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xf0,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0xfe,0x3f,0x00,0x00,0x00,0xf0,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xf0,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0x00,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0xc0,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0xff,0x3f,0x00,0x00,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x01,0xe0,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x7f,0x00,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x3f,0x00,0x00,0x80,0xff,0x1f,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0x3f,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xe0,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x3f,0x00,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x7f,0x00,0x00,0x80,0xff,0x0f,0x00,0x00,0x00,0xc0,0xff,0xff,0x7f,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xc0,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
+ 0x00,0xc0,0xff,0x1f,0x00,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0xc0,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x7f,0x00,0x00,
+ 0xe0,0xff,0x0f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0xc0,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xe0,0xff,0x0f,0x00,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0xe0,0xff,0x07,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0x01,0x00,0x00,0xf0,0xff,0xff,0x03,0x80,0xff,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0x00,0xe0,0xff,0x0f,0x00,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0x7f,0x00,0x00,0xf0,0xff,0x07,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
+ 0x01,0x00,0x00,0xf0,0xff,0xff,0x03,0x80,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0xf0,0xff,0x07,0x00,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0xc0,0xff,0xff,0xff,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0xf8,0xff,0x03,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x03,0x00,0x00,0xf0,0xff,
+ 0xff,0x03,0x00,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xf8,0xff,0x03,0x00,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xff,0xff,
+ 0x01,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x00,0x00,0xfc,0xff,0x03,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xff,0x01,0x00,0x00,0xf8,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x80,0xff,0xff,0xff,0x03,0x00,0x00,0xf0,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0xfe,0xff,0x01,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0x0f,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0x00,0x00,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x80,0xff,0xff,0xff,0x07,0x00,0x00,0xf8,0xff,0xfd,0xff,0xff,0x01,0x00,
+ 0xfe,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x00,0x00,0xf8,0xff,
+ 0xff,0x03,0x00,0xfe,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,
+ 0x00,0xfc,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0x00,0x80,0xff,0xff,0xff,
+ 0x0f,0x00,0x00,0xfc,0x7f,0xfc,0xff,0xff,0x03,0x00,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0x3f,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0xfc,0xff,
+ 0xff,0xff,0x01,0x00,0x00,0x80,0xff,0x7f,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0xff,0x3f,
+ 0xfc,0xff,0xff,0x07,0x80,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0x3f,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0x07,0x00,0x00,
+ 0xe0,0xff,0x3f,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0xc0,0xff,0x0f,0xf8,0xff,0xff,0x3f,0xf0,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0xfc,0xff,
+ 0xff,0x07,0x00,0xf8,0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0x00,0x00,0xfe,0xff,0xff,
+ 0xff,0x0f,0xfe,0xff,0x07,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0x01,0x00,0xfc,0xff,0xff,0x07,0x00,0xf0,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0xfe,0xff,0xff,0x03,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0xfe,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
+ 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0x03,0x00,0xfc,0xff,0xff,0x0f,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0x00,0x00,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfe,
+ 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x03,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xf8,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x03,0x00,0xfe,0xff,
+ 0xff,0x0f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x07,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfe,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0x0f,0x00,0xff,0xff,0xff,0x1f,0x00,0xc0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x07,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0xfe,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0xff,0x3f,0x80,0xff,0xff,0xff,0x7f,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x7f,0xc0,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xfe,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0x0f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0x07,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0xfe,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xf0,0xff,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x0f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xc0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xfe,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xe0,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0x01,0x00,0xfe,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0x03,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfe,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x07,0x80,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfe,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0xff,0x07,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x03,0x00,0x00,
+ 0x00,0xfc,0xff,0xff,0x03,0x00,0xf8,0x3f,0x00,0x00,0x00,0xff,0xff,0x1f,0xc0,
+ 0xff,0xff,0xff,0xff,0x1f,0xfe,0xff,0xff,0x03,0x00,0xf8,0xff,0xff,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0x7f,0x00,0x00,
+ 0x00,0x00,0x08,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,
+ 0x00,0x00,0xfc,0x01,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0x07,0x00,0x00,0xfc,0x7f,0x00,0x80,0xff,0x3f,0x00,0xe0,0xff,0x7f,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0x3f,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x80,0x3f,0x00,0x00,0x00,
+ 0xf0,0x3f,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x03,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x80,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x1f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe};
diff --git a/src/axiom-website/hyperdoc/bitmaps/axiom1.bitmap b/src/axiom-website/hyperdoc/bitmaps/axiom1.bitmap
new file mode 100644
index 0000000..6166b36
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/axiom1.bitmap
@@ -0,0 +1,287 @@
+#define axiom_width 270
+#define axiom_height 100
+static char axiom_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x3f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf2, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x92, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x02,
+   0x00, 0xe0, 0x01, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0xe0,
+   0x00, 0xc0, 0x7f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0xd2, 0x02, 0x00, 0xe0,
+   0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0x03,
+   0xe0, 0x07, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0x01, 0xf8,
+   0xff, 0x03, 0x00, 0xf8, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
+   0xff, 0x3f, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0x01, 0xf8, 0x07,
+   0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x01, 0xfe, 0xff, 0x07,
+   0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f,
+   0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xfd, 0xff, 0x07, 0x00, 0xe0,
+   0xff, 0xff, 0x7f, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x0f, 0x00, 0xff,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x8f, 0xff, 0xff, 0xe0, 0xff,
+   0x7f, 0x00, 0x80, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0x00, 0xf0, 0xff, 0xff,
+   0xff, 0x80, 0xff, 0xff, 0xc0, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x07,
+   0x00, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0xf0, 0xff, 0x81, 0xff, 0x3f, 0x00,
+   0x00, 0xff, 0x07, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xc3,
+   0xff, 0xff, 0xf0, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00,
+   0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x01, 0xff, 0x3f, 0x00, 0x00, 0xfe,
+   0x03, 0xe0, 0xff, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff,
+   0xf8, 0xff, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0,
+   0x0f, 0x00, 0xc0, 0xff, 0x01, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x01, 0xc0,
+   0xff, 0x03, 0x80, 0xff, 0x00, 0xfc, 0xff, 0x07, 0xf8, 0xff, 0xfc, 0x01,
+   0xff, 0x3f, 0xfe, 0x80, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00,
+   0xc0, 0xff, 0x03, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x80, 0xff, 0x03,
+   0xc0, 0x3f, 0x00, 0xe0, 0xff, 0x0f, 0xe0, 0xff, 0x3f, 0x00, 0xfe, 0xbf,
+   0x3f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x80, 0xff,
+   0x03, 0xf8, 0x3f, 0x00, 0x80, 0x7f, 0x00, 0x80, 0xff, 0x03, 0xe0, 0x0f,
+   0x00, 0x80, 0xff, 0x1f, 0xe0, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x0f, 0x00,
+   0xfc, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xff, 0x03, 0xf8,
+   0x7f, 0x00, 0x80, 0x3f, 0x00, 0x80, 0xff, 0x03, 0xf0, 0x0f, 0x00, 0x00,
+   0xff, 0x1f, 0xe0, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x07, 0x00, 0xfc, 0x1f,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xff, 0x03, 0xf0, 0xff, 0x00,
+   0xc0, 0x1f, 0x00, 0x80, 0xff, 0x03, 0xf8, 0x07, 0x00, 0x00, 0xfe, 0x3f,
+   0xe0, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf8, 0x3f, 0x00, 0x00,
+   0x00, 0x78, 0x00, 0x00, 0x00, 0xff, 0x03, 0xe0, 0xff, 0x00, 0xc0, 0x0f,
+   0x00, 0x80, 0xff, 0x03, 0xfc, 0x03, 0x00, 0x00, 0xfc, 0x3f, 0xe0, 0xff,
+   0x03, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0xff, 0x03, 0xc0, 0xff, 0x01, 0xe0, 0x0f, 0x00, 0x80,
+   0xff, 0x03, 0xfc, 0x03, 0x00, 0x00, 0xfc, 0x3f, 0xe0, 0xff, 0x01, 0x00,
+   0xf0, 0xff, 0x01, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
+   0x00, 0xff, 0x03, 0xc0, 0xff, 0x03, 0xf0, 0x07, 0x00, 0x80, 0xff, 0x03,
+   0xfe, 0x01, 0x00, 0x00, 0xf8, 0x7f, 0xe0, 0xff, 0x01, 0x00, 0xf0, 0xff,
+   0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+   0x03, 0x80, 0xff, 0x07, 0xf8, 0x01, 0x00, 0x80, 0xff, 0x03, 0xff, 0x01,
+   0x00, 0x00, 0xf8, 0x7f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00,
+   0xff, 0x0f, 0xf8, 0x01, 0x00, 0x80, 0xff, 0x03, 0xff, 0x01, 0x00, 0x00,
+   0xf0, 0x7f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xfe, 0x1f,
+   0xf8, 0x00, 0x00, 0x80, 0xff, 0x83, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff,
+   0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xfc, 0x3f, 0x7e, 0x00,
+   0x00, 0x80, 0xff, 0xc3, 0xff, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xe0, 0xff,
+   0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x7f, 0x3e, 0x00, 0x00, 0x80,
+   0xff, 0xc3, 0xff, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xe0, 0xff, 0x00, 0x00,
+   0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0x03, 0x00, 0xf8, 0x7f, 0x3f, 0x00, 0x00, 0x80, 0xff, 0xc3,
+   0xff, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f,
+   0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
+   0x03, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xff, 0xc3, 0xff, 0x00,
+   0x00, 0x00, 0xe0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00,
+   0xe0, 0xff, 0x0f, 0x00, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00,
+   0xc0, 0xff, 0xe1, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xc0, 0xff,
+   0x07, 0x00, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff,
+   0xe1, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0xff, 0x7f, 0xff, 0x03, 0x00, 0x80, 0xff, 0x07, 0x00,
+   0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe1, 0xff,
+   0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0x07, 0xff, 0x03, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x80,
+   0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe1, 0xff, 0x00, 0x00,
+   0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f,
+   0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x80, 0xff, 0xe3,
+   0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f,
+   0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x07, 0x00, 0xff,
+   0x03, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x00,
+   0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xff, 0x03, 0x00,
+   0x00, 0xfe, 0x1f, 0x00, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00,
+   0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f,
+   0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff,
+   0x3f, 0x00, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff,
+   0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00,
+   0x00, 0xf8, 0x3f, 0x00, 0x00, 0xff, 0x03, 0x00, 0x80, 0xff, 0x7f, 0x00,
+   0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff,
+   0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0xfc,
+   0x1f, 0x00, 0x00, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x80,
+   0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00,
+   0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00,
+   0x00, 0xff, 0x03, 0x00, 0xc0, 0xef, 0xff, 0x01, 0x00, 0x80, 0xff, 0xe3,
+   0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f,
+   0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff,
+   0x03, 0x00, 0xe0, 0xc7, 0xff, 0x01, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x01,
+   0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x1f, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00,
+   0xf0, 0x83, 0xff, 0x07, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x01, 0x00, 0x00,
+   0xc0, 0x7f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f,
+   0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x83,
+   0xff, 0x0f, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x01, 0x00, 0x00, 0xc0, 0x7f,
+   0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00,
+   0x80, 0xff, 0x07, 0x00, 0x80, 0xff, 0x03, 0x00, 0xf8, 0x01, 0xff, 0x0f,
+   0x00, 0x80, 0xff, 0xc3, 0xff, 0x01, 0x00, 0x00, 0xc0, 0x3f, 0xe0, 0xff,
+   0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff,
+   0x03, 0x00, 0x80, 0xff, 0x03, 0x00, 0xfc, 0x00, 0xfe, 0x1f, 0x00, 0x80,
+   0xff, 0xc3, 0xff, 0x03, 0x00, 0x00, 0xe0, 0x3f, 0xe0, 0xff, 0x00, 0x00,
+   0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00,
+   0x80, 0xff, 0x03, 0x00, 0xfe, 0x00, 0xfc, 0x3f, 0x00, 0x80, 0xff, 0xc3,
+   0xff, 0x03, 0x00, 0x00, 0xe0, 0x3f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f,
+   0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0xc0, 0xff,
+   0x03, 0x00, 0x7f, 0x00, 0xf8, 0x7f, 0x00, 0x80, 0xff, 0xc3, 0xff, 0x07,
+   0x00, 0x00, 0xe0, 0x1f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x03, 0x80,
+   0x3f, 0x00, 0xf8, 0x7f, 0x00, 0x80, 0xff, 0x83, 0xff, 0x07, 0x00, 0x00,
+   0xf0, 0x0f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f,
+   0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0xe0, 0xff, 0x03, 0x80, 0x1f, 0x00,
+   0xf0, 0xff, 0x00, 0x80, 0xff, 0x83, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0x0f,
+   0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00,
+   0x80, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x03, 0xc0, 0x1f, 0x00, 0xf0, 0xff,
+   0x01, 0x80, 0xff, 0x83, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0xe0, 0xff,
+   0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff,
+   0x07, 0x00, 0xf8, 0xff, 0x03, 0xe0, 0x0f, 0x00, 0xe0, 0xff, 0x03, 0x80,
+   0xff, 0x03, 0xff, 0x3f, 0x00, 0x00, 0xf8, 0x03, 0xe0, 0xff, 0x00, 0x00,
+   0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x0f, 0x00,
+   0xf8, 0xff, 0x03, 0xf0, 0x07, 0x00, 0xc0, 0xff, 0x07, 0x80, 0xff, 0x03,
+   0xfe, 0x7f, 0x00, 0x00, 0xfc, 0x01, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f,
+   0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x1f, 0x00, 0xfe, 0xff,
+   0x07, 0xf8, 0x07, 0x00, 0xc0, 0xff, 0x0f, 0x80, 0xff, 0x03, 0xfe, 0xff,
+   0x00, 0x00, 0xfe, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x3f, 0x00, 0x00, 0x80, 0xff, 0x1f, 0x00, 0x7f, 0xff, 0x0f, 0xf8,
+   0x07, 0x00, 0x80, 0xff, 0x1f, 0x80, 0xff, 0x03, 0xfc, 0xff, 0x01, 0x00,
+   0x7f, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0xf1, 0x1f, 0xfe, 0xff, 0xff, 0x03, 0x00,
+   0x80, 0xff, 0x3f, 0xc0, 0xff, 0x07, 0xf8, 0xff, 0x1f, 0xf0, 0x3f, 0x00,
+   0xf0, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00,
+   0x00, 0xfe, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff,
+   0x7f, 0xc0, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff,
+   0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xfc,
+   0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xe0,
+   0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x03, 0x00,
+   0xf8, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0x01, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xfb, 0xff, 0x3f,
+   0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfc, 0xff,
+   0x07, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0xfc,
+   0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff,
+   0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0x7f, 0x80,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0xff,
+   0x3f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0x3f,
+   0x00, 0xc0, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0x7f, 0xc0, 0xff, 0xff,
+   0x3f, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x00, 0x1f, 0x00,
+   0xfc, 0x0f, 0xfe, 0xff, 0xcf, 0xff, 0x03, 0xfc, 0xff, 0x0f, 0x00, 0xe0,
+   0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0x00, 0xf8, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/back.bitmap b/src/axiom-website/hyperdoc/bitmaps/back.bitmap
new file mode 100644
index 0000000..dc5a5be
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/back.bitmap
@@ -0,0 +1,23 @@
+#define back_width 60
+#define back_height 30
+static char back_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0x0f, 0xff, 0xdf,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0x0f, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0x0f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0x0f, 0xff, 0xc3,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0x0f, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0x0f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0x0f, 0x7f, 0xc0,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0x0f, 0x3f, 0x00, 0x00, 0x00, 0xff, 0xfb,
+   0xfd, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xfd, 0x0f, 0x0f, 0x00,
+   0x00, 0x00, 0xff, 0xfb, 0xfd, 0x0f, 0x07, 0x00, 0x00, 0x00, 0xff, 0xfb,
+   0xfd, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xfd, 0x0f, 0x1f, 0x00,
+   0x00, 0x00, 0xff, 0xfb, 0xfd, 0x0f, 0x3f, 0x00, 0x00, 0x00, 0xff, 0xfb,
+   0xfd, 0x0f, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xfd, 0x0f, 0xff, 0xc0,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0x0f, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0x0f, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0x0f, 0xff, 0xc7,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0x0f, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0x0f, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0x0f, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/backslash.bitmap b/src/axiom-website/hyperdoc/bitmaps/backslash.bitmap
new file mode 100644
index 0000000..8eb4984
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/backslash.bitmap
@@ -0,0 +1,6 @@
+#define backslash_width 16
+#define backslash_height 16
+static char backslash_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00,
+   0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x01,
+   0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10};
diff --git a/src/axiom-website/hyperdoc/bitmaps/beta.bitmap b/src/axiom-website/hyperdoc/bitmaps/beta.bitmap
new file mode 100644
index 0000000..b7a79ef
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/beta.bitmap
@@ -0,0 +1,8 @@
+#define beta_width 16
+#define beta_height 16
+#define beta_x_hot -1
+#define beta_y_hot -1
+static char beta_bits[] = {
+   0x00, 0x00, 0xc0, 0x01, 0xe0, 0x07, 0x70, 0x06, 0x30, 0x0c, 0x30, 0x0c,
+   0xf8, 0x07, 0xf8, 0x03, 0x18, 0x03, 0x1c, 0x06, 0x0c, 0x06, 0xfc, 0x07,
+   0xfe, 0x03, 0x0e, 0x00, 0x06, 0x00, 0x06, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/beta.xbm b/src/axiom-website/hyperdoc/bitmaps/beta.xbm
new file mode 100644
index 0000000..d3b9088
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/beta.xbm
@@ -0,0 +1,7 @@
+#define beta_width 15
+#define beta_height 20
+static char beta_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x18, 0x80, 0x18, 0x40, 0x18,
+   0x40, 0x08, 0x40, 0x07, 0x20, 0x0c, 0x20, 0x0c, 0x20, 0x0c, 0x10, 0x0c,
+   0x30, 0x06, 0xd0, 0x03, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/betaj.bitmap b/src/axiom-website/hyperdoc/bitmaps/betaj.bitmap
new file mode 100644
index 0000000..219ab7d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/betaj.bitmap
@@ -0,0 +1,9 @@
+#define betaj_width 25
+#define betaj_height 16
+static char betaj_bits[] = {
+   0x00, 0x38, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00,
+   0x80, 0x61, 0x60, 0x00, 0x80, 0x60, 0x20, 0x00, 0x80, 0x30, 0x00, 0x00,
+   0x40, 0x3e, 0x18, 0x00, 0x40, 0x3e, 0x38, 0x00, 0x40, 0x30, 0x34, 0x00,
+   0x40, 0x30, 0x30, 0x00, 0x20, 0x30, 0x10, 0x00, 0x30, 0x38, 0x10, 0x00,
+   0x30, 0x18, 0x18, 0x00, 0x70, 0x0c, 0x18, 0x00, 0xd0, 0x07, 0x0b, 0x00,
+   0x18, 0x00, 0x0f, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/bot.bitmap b/src/axiom-website/hyperdoc/bitmaps/bot.bitmap
new file mode 100644
index 0000000..4e58d7f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/bot.bitmap
@@ -0,0 +1,6 @@
+#define bot_width 16
+#define bot_height 16
+static char bot_bits[] = {
+   0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+   0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+   0x80, 0x01, 0x80, 0x01, 0xfc, 0x3f, 0xfc, 0x3f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/bullet.bitmap b/src/axiom-website/hyperdoc/bitmaps/bullet.bitmap
new file mode 100644
index 0000000..f4cd91f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/bullet.bitmap
@@ -0,0 +1,8 @@
+#define dot_width 16
+#define dot_height 16
+#define dot_x_hot -1
+#define dot_y_hot -1
+static char dot_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/c02aff.bitmap b/src/axiom-website/hyperdoc/bitmaps/c02aff.bitmap
new file mode 100644
index 0000000..1c57eb2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/c02aff.bitmap
@@ -0,0 +1,53 @@
+#define c02aff_width 290
+#define c02aff_height 16
+static char c02aff_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x0f, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x31, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x17, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xb0, 0x00, 0x00, 0x00, 0x21, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x12, 0x80, 0x00, 0x00, 0x00, 0x40, 0xe2, 0x47, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x01, 0x00, 0x80, 0x31, 0x01, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00, 0x40, 0x02, 0x40, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x80, 0x31, 0xc1, 0x42, 0xc0, 0x3f,
+   0xe0, 0x01, 0x58, 0x12, 0x80, 0x00, 0x3c, 0x00, 0x4b, 0x02, 0xe0, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x10, 0xc0, 0x03, 0x00, 0x00, 0x58, 0x00, 0x02,
+   0x78, 0x00, 0xe0, 0x1f, 0x18, 0x01, 0x00, 0x80, 0x0f, 0x01, 0x41, 0xc0,
+   0x3f, 0x90, 0x11, 0x20, 0x00, 0x80, 0x00, 0x32, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x20, 0x03, 0x00, 0x00, 0x20, 0x00,
+   0x02, 0x64, 0x00, 0xe0, 0x1f, 0x18, 0x01, 0x00, 0x80, 0x00, 0x01, 0x40,
+   0x00, 0x00, 0x90, 0x29, 0x00, 0x00, 0xf8, 0x0f, 0x32, 0x03, 0x00, 0x00,
+   0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x21, 0x03, 0x00, 0x30, 0x00,
+   0xe0, 0x3f, 0x64, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0xc0, 0x00, 0x01,
+   0x40, 0x00, 0x00, 0x98, 0x49, 0x00, 0x00, 0x80, 0x00, 0x33, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x30, 0x83, 0x00, 0x20,
+   0x00, 0x00, 0x02, 0x66, 0x10, 0x00, 0x00, 0x10, 0x01, 0x00, 0xc0, 0x00,
+   0x41, 0x40, 0xc0, 0x7f, 0x98, 0x4e, 0x08, 0x00, 0x80, 0x00, 0x53, 0x02,
+   0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x30, 0x75, 0x01,
+   0x20, 0x08, 0x00, 0x02, 0xa6, 0x2e, 0xe0, 0x3f, 0x10, 0x01, 0x00, 0xe0,
+   0x00, 0xe1, 0x41, 0x00, 0x00, 0xf0, 0x4d, 0x3c, 0x00, 0x80, 0x00, 0x3e,
+   0x82, 0x07, 0x00, 0x00, 0x00, 0x08, 0x30, 0x0c, 0x06, 0x10, 0xe0, 0x23,
+   0xf1, 0x23, 0x3c, 0x00, 0x02, 0x7c, 0x24, 0x00, 0x00, 0xb0, 0x00, 0x00,
+   0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x20, 0x01, 0x20, 0x00, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/c1.bitmap b/src/axiom-website/hyperdoc/bitmaps/c1.bitmap
new file mode 100644
index 0000000..7529fa7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/c1.bitmap
@@ -0,0 +1,9 @@
+#define 1_width 30
+#define 1_height 16
+static char 1_bits[] = {
+   0x00, 0x3c, 0xc2, 0x00, 0x00, 0x67, 0xf3, 0x00, 0xc0, 0x81, 0xc1, 0x00,
+   0xe0, 0x80, 0xc1, 0x00, 0x60, 0x00, 0xc1, 0x00, 0x30, 0x00, 0xc1, 0x00,
+   0x38, 0x00, 0xc0, 0x00, 0x38, 0x00, 0xc0, 0x00, 0x18, 0x00, 0xc0, 0x00,
+   0x18, 0x00, 0xf0, 0x03, 0x18, 0x40, 0x00, 0x00, 0x18, 0x40, 0x00, 0x00,
+   0x18, 0x60, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x60, 0x1c, 0x00, 0x00,
+   0x80, 0x07, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/chi.bitmap b/src/axiom-website/hyperdoc/bitmaps/chi.bitmap
new file mode 100644
index 0000000..5d1dfc4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/chi.bitmap
@@ -0,0 +1,8 @@
+#define chi_width 16
+#define chi_height 16
+#define chi_x_hot -1
+#define chi_y_hot -1
+static char chi_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3e, 0x06, 0x32, 0x03, 0x30, 0x03,
+   0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xb8, 0x01,
+   0x98, 0x03, 0x0c, 0x07, 0x06, 0x06, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ci.bitmap b/src/axiom-website/hyperdoc/bitmaps/ci.bitmap
new file mode 100644
index 0000000..69ece06
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ci.bitmap
@@ -0,0 +1,7 @@
+#define ci_width 20
+#define ci_height 16
+static char ci_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x03, 0x00, 0x70, 0x07, 0x00, 0x30, 0xc3, 0x00, 0x18, 0x40, 0x00,
+   0x18, 0x00, 0x00, 0x18, 0x30, 0x00, 0x18, 0x72, 0x00, 0x18, 0x6b, 0x00,
+   0xf0, 0x21, 0x00, 0x00, 0x70, 0x00, 0x00, 0x50, 0x00, 0x00, 0x70, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/clear.bitmap b/src/axiom-website/hyperdoc/bitmaps/clear.bitmap
new file mode 100644
index 0000000..bc2a383
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/clear.bitmap
@@ -0,0 +1,8 @@
+#define clear_width 16
+#define clear_height 16
+#define clear_x_hot -1
+#define clear_y_hot -1
+static char clear_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xff, 0xff, 0x81, 0xf9, 0x81, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
+   0xf9, 0x99, 0x81, 0x81, 0x81, 0x81, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/clearall.bitmap b/src/axiom-website/hyperdoc/bitmaps/clearall.bitmap
new file mode 100644
index 0000000..de7ea1e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/clearall.bitmap
@@ -0,0 +1,11 @@
+#define clearall1_width 45
+#define clearall1_height 15
+static char clearall1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x3c, 0xe2, 0x01, 0x11, 0x02,
+   0x29, 0x04, 0x25, 0x81, 0x12, 0x02, 0x21, 0x84, 0x28, 0x41, 0x14, 0x02,
+   0x21, 0x9c, 0xef, 0xc1, 0x17, 0x02, 0x21, 0x84, 0x68, 0x40, 0x14, 0x02,
+   0x29, 0x85, 0xa8, 0x40, 0x94, 0x12, 0xef, 0xbd, 0x28, 0x41, 0xf4, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/clicktoset.bitmap b/src/axiom-website/hyperdoc/bitmaps/clicktoset.bitmap
new file mode 100644
index 0000000..95dccb7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/clicktoset.bitmap
@@ -0,0 +1,78 @@
+#define ClickToSet.bitmap_width 240
+#define ClickToSet.bitmap_height 30
+static char ClickToSet.bitmap_bits[] = {
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x75,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0x51, 0x55, 0xd5, 0x57, 0x7f, 0xd5,
+   0x55, 0x55, 0x7d, 0x55, 0x55, 0xfd, 0x7f, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0xd5, 0x57, 0x55, 0x55, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xea, 0xaf, 0xba, 0xea, 0xab, 0xaa, 0xfa, 0xaa, 0xaa, 0xfa,
+   0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xba, 0xaa, 0xaa, 0xaa, 0xfa,
+   0xbf, 0xaa, 0xaa, 0xab, 0xaa, 0xea, 0x51, 0x55, 0x75, 0x5d, 0x7d, 0xd5,
+   0x57, 0x55, 0x75, 0x55, 0x55, 0x75, 0x5d, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x5d, 0x55, 0x55, 0x55, 0x7d, 0x5d, 0x55, 0xd5, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xba, 0xba, 0xba, 0xaa, 0xab, 0xaa, 0xfa, 0xaa, 0xaa, 0xfa,
+   0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbe, 0xaa, 0xaa, 0xaa, 0xba,
+   0xba, 0xaa, 0xea, 0xab, 0xaa, 0xea, 0x51, 0x55, 0x7d, 0x5d, 0x7d, 0x55,
+   0x55, 0x55, 0x75, 0x55, 0x55, 0x75, 0x5d, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x5d, 0x55, 0x55, 0x55, 0x7d, 0x55, 0x55, 0xd5, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xba, 0xaa, 0xba, 0xaa, 0xaa, 0xaa, 0xfa, 0xaa, 0xaa, 0xfa,
+   0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbe, 0xaa, 0xaa, 0xaa, 0xfa,
+   0xaa, 0xaa, 0xea, 0xab, 0xaa, 0xea, 0x51, 0x55, 0x7d, 0x55, 0x7d, 0xf5,
+   0x57, 0x7f, 0x75, 0x7d, 0x55, 0x75, 0x5d, 0x7f, 0x7d, 0x5d, 0x7f, 0x55,
+   0x55, 0xff, 0xf5, 0x57, 0x55, 0xf5, 0x55, 0x7f, 0xf5, 0x5f, 0x55, 0x75,
+   0xaa, 0xaa, 0xba, 0xaa, 0xba, 0xaa, 0xab, 0xff, 0xfa, 0xbe, 0xaa, 0xfa,
+   0xbf, 0xff, 0xfa, 0xbf, 0xff, 0xaa, 0xaa, 0xff, 0xfb, 0xaf, 0xaa, 0xea,
+   0xab, 0xff, 0xfa, 0xbf, 0xaa, 0xea, 0x51, 0x55, 0x7d, 0x55, 0x7d, 0xd5,
+   0x57, 0xd7, 0x75, 0x5f, 0x55, 0xf5, 0x5f, 0xd7, 0xf5, 0x7d, 0xd7, 0x55,
+   0x55, 0x5d, 0x75, 0x5f, 0x55, 0xd5, 0x57, 0xd7, 0xd5, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xba, 0xaa, 0xba, 0xaa, 0xab, 0xeb, 0xfb, 0xaf, 0xaa, 0xfa,
+   0xbe, 0xeb, 0xfb, 0xba, 0xeb, 0xab, 0xaa, 0xbe, 0xba, 0xbe, 0xaa, 0xaa,
+   0xaf, 0xeb, 0xeb, 0xab, 0xaa, 0xea, 0x51, 0x55, 0x7d, 0x55, 0x7d, 0xd5,
+   0xd7, 0x57, 0xf5, 0x57, 0x55, 0x75, 0xdd, 0xff, 0x75, 0xd5, 0xff, 0x55,
+   0x55, 0x5d, 0x7d, 0x5d, 0x55, 0x55, 0xdf, 0xff, 0xd5, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xba, 0xaa, 0xba, 0xaa, 0xab, 0xab, 0xfa, 0xab, 0xaa, 0xfa,
+   0xbe, 0xff, 0xfb, 0xaa, 0xff, 0xab, 0xaa, 0xbe, 0xba, 0xbe, 0xaa, 0xaa,
+   0xbe, 0xff, 0xeb, 0xab, 0xaa, 0xea, 0x51, 0x55, 0x7d, 0x55, 0x7d, 0xd5,
+   0xd7, 0x57, 0x75, 0x57, 0x55, 0x75, 0xdd, 0x57, 0x75, 0xd5, 0x57, 0x55,
+   0x55, 0x5d, 0x7d, 0x5d, 0x55, 0x5d, 0xdd, 0x57, 0xd5, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xba, 0xba, 0xba, 0xaa, 0xab, 0xab, 0xfa, 0xae, 0xaa, 0xfa,
+   0xbe, 0xab, 0xfa, 0xaa, 0xab, 0xaa, 0xaa, 0xbe, 0xba, 0xbe, 0xaa, 0xba,
+   0xbe, 0xab, 0xea, 0xab, 0xaa, 0xea, 0x51, 0x55, 0x75, 0x5d, 0x7d, 0xd5,
+   0x57, 0xd7, 0x75, 0x5d, 0x55, 0x75, 0x5d, 0xd7, 0x75, 0x55, 0xd7, 0x55,
+   0x55, 0x7d, 0x77, 0x5f, 0x55, 0x7d, 0x5f, 0xd7, 0xd5, 0x77, 0x55, 0x75,
+   0xaa, 0xaa, 0xea, 0xaf, 0xba, 0xaa, 0xab, 0xff, 0xfa, 0xbe, 0xaa, 0xfa,
+   0xbe, 0xff, 0xfa, 0xaa, 0xff, 0xaa, 0xaa, 0xfa, 0xfb, 0xaf, 0xaa, 0xfa,
+   0xaf, 0xff, 0xaa, 0xbf, 0xaa, 0xea, 0x51, 0x55, 0xd5, 0x57, 0xff, 0xf5,
+   0x5f, 0x7f, 0x7d, 0x7d, 0x55, 0xfd, 0x7f, 0x7f, 0xfd, 0x55, 0x7f, 0x55,
+   0x55, 0xf5, 0xf5, 0x57, 0x55, 0xfd, 0x57, 0x7f, 0x55, 0x5f, 0x55, 0x75,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
diff --git a/src/axiom-website/hyperdoc/bitmaps/continue.bitmap b/src/axiom-website/hyperdoc/bitmaps/continue.bitmap
new file mode 100644
index 0000000..62bd94f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/continue.bitmap
@@ -0,0 +1,41 @@
+#define Continue.bitmap_width 120
+#define Continue.bitmap_height 30
+static char Continue.bitmap_bits[] = {
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x51, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xea, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x75, 0xaa, 0xaa, 0xbf, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0x51, 0xd5, 0x7f,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x75,
+   0xaa, 0xea, 0xfb, 0xaa, 0xaa, 0xaa, 0xea, 0xaa, 0xaf, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xea, 0x51, 0xd5, 0x75, 0x55, 0x55, 0x55, 0x75, 0x55, 0x57,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x75, 0xaa, 0xea, 0xea, 0xaa, 0xaa, 0xaa,
+   0xfa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0x51, 0xf5, 0x55,
+   0x55, 0x55, 0x55, 0x75, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x75,
+   0xaa, 0xea, 0xaa, 0xfa, 0xeb, 0xbe, 0xfe, 0xaf, 0xaf, 0xee, 0xeb, 0xfb,
+   0xfa, 0xab, 0xea, 0x51, 0xf5, 0x55, 0xfd, 0xd7, 0x7f, 0xfd, 0x57, 0x5f,
+   0xfd, 0xd7, 0x75, 0xfd, 0x57, 0x75, 0xaa, 0xea, 0xaa, 0xbe, 0xeb, 0xfb,
+   0xfa, 0xaa, 0xae, 0xbe, 0xef, 0xfb, 0xbe, 0xaf, 0xea, 0x51, 0xf5, 0x55,
+   0x5f, 0xd7, 0x75, 0x75, 0x55, 0x5f, 0x5d, 0xd7, 0x75, 0x5f, 0x57, 0x75,
+   0xaa, 0xea, 0xaa, 0xae, 0xef, 0xfb, 0xfa, 0xaa, 0xae, 0xbe, 0xef, 0xfb,
+   0xfe, 0xaf, 0xea, 0x51, 0xf5, 0x55, 0x5f, 0xd7, 0x75, 0x75, 0x55, 0x5f,
+   0x5d, 0xd7, 0x75, 0xff, 0x57, 0x75, 0xaa, 0xea, 0xea, 0xae, 0xef, 0xfb,
+   0xfa, 0xaa, 0xae, 0xbe, 0xef, 0xfb, 0xae, 0xaa, 0xea, 0x51, 0xd5, 0x75,
+   0x5f, 0xd7, 0x75, 0x75, 0x55, 0x5f, 0x5d, 0xd7, 0x75, 0x5f, 0x55, 0x75,
+   0xaa, 0xea, 0xfb, 0xbe, 0xeb, 0xfb, 0xfa, 0xaa, 0xae, 0xbe, 0xef, 0xfb,
+   0xbe, 0xae, 0xea, 0x51, 0xd5, 0x7f, 0xfd, 0xd7, 0x75, 0xf5, 0x57, 0x5f,
+   0x5d, 0xd7, 0x7f, 0xfd, 0x57, 0x75, 0xaa, 0xaa, 0xbf, 0xfa, 0xeb, 0xfb,
+   0xea, 0xab, 0xbf, 0xbe, 0xaf, 0xef, 0xfa, 0xab, 0xea, 0x51, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x75,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xea, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x75, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0xf9, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ctb.bitmap b/src/axiom-website/hyperdoc/bitmaps/ctb.bitmap
new file mode 100644
index 0000000..84dd905
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ctb.bitmap
@@ -0,0 +1,13 @@
+#define ctb_width 50
+#define ctb_height 16
+static char ctb_bits[] = {
+   0x00, 0x1e, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x80, 0xb3, 0xc5, 0x08, 0x00,
+   0x00, 0x00, 0xe0, 0xc0, 0xc1, 0x08, 0xfc, 0x0f, 0x00, 0x70, 0xc0, 0xc1,
+   0x08, 0x30, 0x18, 0x00, 0x30, 0x80, 0xc0, 0x00, 0x30, 0x18, 0x00, 0x18,
+   0x80, 0xc0, 0x00, 0x18, 0x18, 0x00, 0x1c, 0x00, 0xc0, 0x00, 0x18, 0x1c,
+   0x00, 0x1c, 0x00, 0xc0, 0x00, 0x18, 0x0e, 0x00, 0x0c, 0x00, 0xc0, 0x00,
+   0xf8, 0x07, 0x00, 0x0c, 0x00, 0xf0, 0x03, 0x0c, 0x0e, 0x00, 0x0c, 0x20,
+   0x00, 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x20, 0x00, 0x00, 0x0c, 0x0c, 0x00,
+   0x0c, 0x30, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x18, 0x18, 0x00, 0x00, 0x06,
+   0x0e, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x06, 0x07, 0x00, 0xc0, 0x03, 0x00,
+   0x80, 0xff, 0x03, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d01aqf.xbm b/src/axiom-website/hyperdoc/bitmaps/d01aqf.xbm
new file mode 100644
index 0000000..f6cf98a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d01aqf.xbm
@@ -0,0 +1,71 @@
+#define d01aqf_width 139
+#define d01aqf_height 45
+static char d01aqf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x23, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x23, 0x00, 0x00, 0x20, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x33, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1f, 0x00, 0x00, 0x10, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0xf8, 0x13, 0x9c, 0x21, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xcc, 0x08, 0x98,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x00, 0x8c, 0x08, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xcc, 0x08, 0x60,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x30, 0x08, 0xd0, 0x40, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0c, 0x08, 0x88,
+   0x41, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0xf8, 0x11, 0x8c, 0x23, 0x00, 0x00, 0x03, 0x00, 0xf8,
+   0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x11, 0x00,
+   0x20, 0x00, 0x00, 0x02, 0x00, 0xf8, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x04, 0x11, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0xf8,
+   0x00, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x8c, 0x21, 0x00,
+   0x10, 0x00, 0x00, 0x02, 0x00, 0xf8, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x70, 0x20, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0xf8,
+   0x00, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0xe3, 0x0c, 0xf8, 0x00, 0x0e, 0xc0, 0xff, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc2, 0x04, 0xf8,
+   0x00, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff,
+   0xff, 0x0f, 0x18, 0x82, 0x03, 0xf8, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x03, 0xf8,
+   0x00, 0x0e, 0xc0, 0xff, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x82, 0x06, 0xf8, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x42, 0x0c, 0xf8,
+   0x00, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x67, 0x1c, 0xf8, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x1f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0xc0, 0x19, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00,
+   0x60, 0x06, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x1f,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x80, 0x18, 0x00, 0x00,
+   0x60, 0x04, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90,
+   0x0f, 0x00, 0xc0, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d01fcf.bitmap b/src/axiom-website/hyperdoc/bitmaps/d01fcf.bitmap
new file mode 100644
index 0000000..efd9185
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d01fcf.bitmap
@@ -0,0 +1,353 @@
+#define d01fcf_width 475
+#define d01fcf_height 70
+static char d01fcf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x16, 0x00, 0x00, 0x00, 0x3c, 0x2c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1a, 0x13, 0x04, 0x00, 0x00, 0x34, 0x26, 0x0e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x63, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1b, 0x13, 0x07, 0x00, 0x00, 0x36, 0x26, 0x19,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x63, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x19, 0x04, 0x00, 0x00, 0x06, 0x32, 0x11,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0xc3, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x04, 0x00, 0x00, 0x06, 0x12, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0xa1, 0x05, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x0f, 0x04, 0x00, 0x00, 0x03, 0x1e, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe0, 0xc1, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x16,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x0e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x03, 0x00, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x0e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x02,
+   0xdc, 0x01, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xb8, 0x03, 0x00, 0x30, 0xc0, 0x0f, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xe1, 0x0e, 0x00, 0xc0, 0x0f, 0xee, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x03, 0x03,
+   0xb2, 0x03, 0x00, 0x80, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x64, 0x07, 0x00, 0x30, 0x60, 0x0c, 0xd9, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x8c, 0x91, 0x1d, 0x00, 0x60, 0x0c, 0xd9, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x01, 0x03,
+   0xb3, 0xc1, 0x00, 0xc0, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x66, 0x03, 0x00, 0x30, 0x60, 0x8c, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x8c, 0x99, 0x0d, 0x07, 0x60, 0x8c, 0xd9, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x01, 0x03,
+   0x30, 0xf0, 0x00, 0x00, 0x0c, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x30, 0x30, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x86, 0x81, 0x81, 0x19, 0x30, 0x0c, 0x18, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x01, 0x03,
+   0x18, 0xc0, 0x00, 0x00, 0x06, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x30, 0x30, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc6, 0xc0, 0x80, 0x19, 0x30, 0x06, 0x0c, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x01, 0x03,
+   0x18, 0xc0, 0x00, 0x00, 0x06, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x60, 0x07, 0x30, 0x30, 0x06, 0x0c, 0xd8, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0xc6, 0xc0, 0x80, 0x19, 0x30, 0x06, 0x0c, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x03,
+   0x1b, 0xc1, 0x00, 0xc0, 0x46, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x36, 0xe2, 0x0d, 0x30, 0x30, 0x96, 0x8d, 0x78, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0xc6, 0xda, 0x08, 0x18, 0x30, 0x96, 0x8d, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+   0xc0, 0x80, 0x01, 0x03, 0x80, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x02,
+   0x9f, 0xc0, 0xc0, 0xc0, 0x27, 0x60, 0x30, 0x60, 0x80, 0x01, 0x03, 0x06,
+   0x3e, 0xd1, 0x0c, 0x30, 0x30, 0x97, 0x4f, 0x34, 0x03, 0x0c, 0x30, 0x60,
+   0x00, 0xe6, 0xfa, 0x04, 0x0c, 0x30, 0x97, 0x4f, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+   0xc0, 0x80, 0x01, 0x03, 0x80, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06,
+   0xf7, 0xc0, 0xc0, 0xc0, 0x3d, 0x60, 0x30, 0x60, 0x80, 0x01, 0x03, 0x06,
+   0xee, 0x41, 0x0c, 0x30, 0xe0, 0x8f, 0x7b, 0x10, 0x03, 0x0c, 0x30, 0x60,
+   0x00, 0xfc, 0xb9, 0x07, 0x0c, 0xe0, 0x8f, 0x7b, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06,
+   0x00, 0xc0, 0x80, 0x00, 0x00, 0x90, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x00, 0x60, 0x14, 0x10, 0x00, 0x00, 0x00, 0x18, 0x05, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x04,
+   0x00, 0xc0, 0x80, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x00, 0x60, 0x16, 0x18, 0x00, 0x00, 0x00, 0x98, 0x05, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x0c,
+   0x00, 0xf0, 0x83, 0x00, 0x00, 0xfc, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x00, 0x20, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x88, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08,
+   0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x3c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x1b, 0x00, 0x00, 0x00, 0x03, 0x36, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x98, 0x81, 0x19, 0x04, 0x00, 0x30, 0x03, 0x33, 0x1c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x33, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xd8, 0x80, 0x19, 0x07, 0x00, 0xb0, 0x01, 0x33, 0x32, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1b, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x80, 0x28, 0x04, 0x00, 0xf0, 0x00, 0x51, 0x22, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0f, 0x10, 0xc5, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x2c, 0x04, 0x00, 0x00, 0x00, 0x59, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xa5, 0x05, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x1f, 0x04, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc3, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d01gaf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/d01gaf1.bitmap
new file mode 100644
index 0000000..f9e8380
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d01gaf1.bitmap
@@ -0,0 +1,47 @@
+#define d01gaf1_width 115
+#define d01gaf1_height 35
+static char d01gaf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0xc7, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x4c, 0x1b, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04,
+   0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x09, 0x1e, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x78,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x09, 0x2d, 0x00, 0x00, 0x10, 0x00,
+   0xc0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0x07, 0x36, 0x00,
+   0x00, 0x18, 0x00, 0x80, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x76, 0x00, 0x00, 0x08, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x72, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80,
+   0x63, 0x04, 0xb8, 0x03, 0x83, 0x1f, 0xdc, 0x01, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x40, 0x63, 0x06, 0x64, 0x07, 0xc3, 0x18, 0xb2, 0x03, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x63, 0x06, 0x66, 0x03, 0xc3, 0x18,
+   0xb3, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x63, 0x06, 0x60,
+   0x00, 0x63, 0x18, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80,
+   0x31, 0x06, 0x30, 0x00, 0x63, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x80, 0x31, 0x06, 0x30, 0x00, 0x63, 0x0c, 0x18, 0x00, 0x00,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x80, 0x31, 0x06, 0x36, 0x02, 0x63, 0x2c,
+   0x1b, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x80, 0x39, 0x04, 0x3e,
+   0x01, 0x63, 0x2e, 0x9f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x1f, 0x0c, 0xee, 0x01, 0xc3, 0x1f, 0xf7, 0x00, 0x00, 0x00, 0x30, 0xd8,
+   0x01, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0xfc, 0x01, 0x00, 0xc0, 0x18, 0x08, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x31, 0xb4, 0x21, 0x00, 0xc0, 0x0c, 0x18, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x30, 0x38, 0x00, 0xc0,
+   0x07, 0x10, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x90,
+   0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x96, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d01gaf2.bitmap b/src/axiom-website/hyperdoc/bitmaps/d01gaf2.bitmap
new file mode 100644
index 0000000..a8d8e7f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d01gaf2.bitmap
@@ -0,0 +1,48 @@
+#define d01gaf2_width 140
+#define d01gaf2_height 30
+static char d01gaf2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x1d, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3b, 0x00, 0x00, 0x90, 0x1d,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xec, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x1b, 0x0c, 0x00, 0x98, 0x0d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x00, 0x80, 0x81,
+   0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x0c, 0x00, 0xc0, 0x80, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0xc0, 0x80,
+   0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xec, 0x00, 0x00, 0x00,
+   0xb0, 0x11, 0x0c, 0x00, 0xd8, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x46, 0xbc, 0x01, 0x00, 0x00, 0xf0, 0x09, 0x0c, 0x0c, 0xf8, 0x04,
+   0x0c, 0x06, 0x0c, 0x18, 0x60, 0xc0, 0xc0, 0x27, 0x9a, 0xc1, 0x00, 0x00,
+   0x70, 0x0f, 0x0c, 0x0c, 0xb8, 0x07, 0x0c, 0x06, 0x0c, 0x18, 0x60, 0xc0,
+   0xc0, 0x3d, 0x88, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x00, 0x00,
+   0x12, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x8c, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x08, 0x00, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x08, 0x00, 0x80,
+   0x1f, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d02gaf.bitmap b/src/axiom-website/hyperdoc/bitmaps/d02gaf.bitmap
new file mode 100644
index 0000000..427043a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d02gaf.bitmap
@@ -0,0 +1,39 @@
+#define d02gaf_width 125
+#define d02gaf_height 27
+static char d02gaf_bits[] = {
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0xc7, 0x06, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x02, 0xdc, 0x01, 0x80, 0x63, 0x18, 0x00, 0x80, 0xc6, 0x00, 0x00,
+   0xff, 0x3f, 0x00, 0x38, 0x00, 0x03, 0xb2, 0x03, 0x40, 0x63, 0x18, 0x00,
+   0x80, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, 0xb3, 0x01,
+   0x40, 0x63, 0x18, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x08, 0x03, 0x30, 0x00, 0x00, 0x63, 0x18, 0x00, 0x00, 0x63, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x18, 0x00, 0x80, 0x31, 0x18, 0x00,
+   0x00, 0x63, 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x03, 0x18, 0x00,
+   0x80, 0x31, 0x18, 0x00, 0x00, 0x63, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x1c,
+   0x0e, 0x03, 0x1b, 0x01, 0x80, 0x31, 0x18, 0x00, 0x00, 0x73, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x0d, 0x02, 0x9f, 0x60, 0x80, 0x39, 0x18, 0x00,
+   0x00, 0x3e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x06, 0xf7, 0x60,
+   0x00, 0x1f, 0x18, 0x00, 0x00, 0x30, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x0e, 0x06, 0x00, 0x40, 0x00, 0x18, 0x08, 0x00, 0x80, 0x31, 0x04, 0x00,
+   0x00, 0x00, 0x80, 0x0d, 0x0a, 0x04, 0x00, 0x40, 0xc0, 0x18, 0x0c, 0x00,
+   0x80, 0x19, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x07, 0x0e, 0x0c, 0x00, 0x40,
+   0xc0, 0x0c, 0x04, 0x00, 0x80, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x80, 0x03,
+   0x00, 0x08, 0x00, 0x20, 0xc0, 0x07, 0x06, 0x00, 0x00, 0x00, 0x0e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d03edf.bitmap b/src/axiom-website/hyperdoc/bitmaps/d03edf.bitmap
new file mode 100644
index 0000000..fd01f01
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d03edf.bitmap
@@ -0,0 +1,1253 @@
+#define d03edf_width 600
+#define d03edf_height 200
+static char d03edf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x07, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x21, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0xc0, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x21,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0xa0, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x06, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xa0, 0x81, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x06, 0x1e, 0x00, 0x70, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x90,
+   0x81, 0x01, 0x00, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x68, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x98, 0x01, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x00,
+   0x00, 0x68, 0x0c, 0x06, 0x00, 0x30, 0x00, 0x0c, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x88, 0x01, 0x00, 0x00, 0x1a, 0x83, 0x01,
+   0x18, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x07, 0x00, 0x00, 0x60, 0x0c, 0x02, 0x00, 0x3c, 0x00, 0x04, 0x18,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0xfc, 0x01, 0x00, 0x00,
+   0x18, 0x83, 0x00, 0x08, 0x18, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x0c, 0x0c, 0x60, 0x30, 0x06, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x04,
+   0x83, 0x01, 0x18, 0x8c, 0x01, 0x00, 0x00, 0x18, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x04, 0x20, 0x30, 0x86,
+   0x01, 0x00, 0x30, 0x00, 0x03, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x02, 0x83, 0x00, 0x08, 0x8c, 0x61, 0x00, 0x06, 0x18, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00,
+   0x00, 0x30, 0x96, 0x03, 0x00, 0x30, 0x00, 0x07, 0x18, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x03, 0x00, 0x00, 0x8c, 0xe5, 0x00,
+   0x0e, 0x18, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x0c, 0x03, 0x18, 0x30, 0x57, 0x03, 0x00, 0x30, 0x80, 0x06, 0x18,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x63, 0x00, 0x06,
+   0xcc, 0xd5, 0x00, 0x0d, 0x18, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x0f, 0x3f, 0x07, 0x38, 0xe0, 0x0f, 0xe1, 0x7f, 0x30,
+   0x00, 0x86, 0xff, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe0, 0xc3,
+   0xef, 0x00, 0x0e, 0xf8, 0x43, 0x00, 0x8c, 0xff, 0xc1, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x34, 0x00, 0x80,
+   0x03, 0x00, 0x30, 0x00, 0x02, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0xd0, 0x00, 0x0d, 0x00, 0xe0, 0x00, 0x04, 0x18, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+   0x30, 0x00, 0x80, 0x02, 0x00, 0x30, 0x08, 0x02, 0x18, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, 0xa0, 0x10,
+   0x04, 0x18, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x07, 0x10, 0x00, 0x80, 0x03, 0x00, 0xfc, 0x0c, 0x03, 0x18,
+   0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x04,
+   0x00, 0xe0, 0x18, 0x06, 0x18, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xa0, 0x10, 0x04, 0x00, 0x00, 0x10, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x68, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x00, 0x00, 0xd0, 0x02, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0xd8,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xd8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x87, 0x63, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0xc0, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x70, 0x98, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x80,
+   0x86, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0xa0, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x68,
+   0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x80, 0x06, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xa0, 0x81, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x68, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x40, 0x06, 0x00, 0x00, 0x70, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x90,
+   0x01, 0x00, 0x00, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x64, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x60, 0x06, 0x00, 0x00,
+   0x68, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x98, 0x01, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x80,
+   0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x20,
+   0x06, 0x00, 0x00, 0x68, 0x0c, 0x06, 0x00, 0x30, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x88, 0x01, 0x00, 0x00, 0x1a, 0x83, 0xc1,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x62,
+   0x00, 0x00, 0x80, 0xc6, 0x60, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xff, 0x3f, 0xf0, 0x07, 0x00, 0x00, 0x60, 0x0c, 0x02, 0x00, 0x3c, 0x00,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0xfc, 0x01, 0x00, 0x00,
+   0x18, 0x83, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0x01, 0x7f, 0x00, 0x00, 0x00, 0xc6, 0x20, 0x30, 0xe0, 0x01, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0x3f, 0x10, 0x0c, 0x0c, 0xc0, 0x30, 0x06, 0x00,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x04,
+   0x83, 0x01, 0x18, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0xff, 0x01, 0xc1, 0x60, 0x00, 0x06, 0x63, 0x00, 0x30,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x08, 0x0c, 0x04, 0x40,
+   0x30, 0x86, 0x01, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x02, 0x83, 0x00, 0x08, 0x8c, 0x61, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0xc0, 0x20, 0x00, 0x02,
+   0x63, 0x18, 0x30, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0c,
+   0x0c, 0x00, 0x00, 0x30, 0x96, 0x03, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x03, 0x00, 0x00, 0x8c, 0xe5, 0x70,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0xc0,
+   0x00, 0x00, 0x00, 0x63, 0x39, 0x30, 0x80, 0x01, 0x38, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x04, 0x0c, 0x03, 0x30, 0x30, 0x57, 0x03, 0x00, 0x30, 0x80,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x63, 0x00, 0x06,
+   0xcc, 0xd5, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x40, 0xc0, 0x18, 0x80, 0x01, 0x73, 0x35, 0x30, 0x80, 0x01, 0x34,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x80, 0x0f, 0x3f, 0x07, 0x70, 0xe0, 0x0f, 0xe1,
+   0x7f, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe0, 0xc3,
+   0xef, 0x00, 0x0e, 0xf8, 0x43, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0xf8, 0xf0, 0x3b, 0x80, 0x03, 0xfe, 0x10, 0xff,
+   0x83, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x80, 0x06, 0x68,
+   0x00, 0x80, 0x03, 0x00, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0xd0, 0x00, 0x0d, 0x00, 0xe0, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x34, 0x40, 0x03,
+   0x00, 0x38, 0x30, 0x80, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x02, 0x60, 0x00, 0x80, 0x02, 0x00, 0x30, 0x08, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, 0xa0, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x10, 0x00, 0x03, 0x00, 0x28, 0x30, 0x80, 0x41, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x07, 0x20, 0x00, 0x80, 0x03, 0x00, 0xfc, 0x0c,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x04,
+   0x00, 0xe0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x38, 0x00, 0x01, 0x00, 0x38, 0x30, 0xe0, 0x67, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xa0, 0x10, 0x04, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x04, 0x01, 0x00, 0x00, 0x30,
+   0x00, 0x40, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x86, 0x01,
+   0x00, 0x00, 0x30, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x84, 0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xd8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x98, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xc0,
+   0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0xa0, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x68, 0x20, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0xa0, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x68,
+   0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x90, 0xe1, 0x07, 0x00,
+   0x1c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x64, 0xf8, 0x01, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x98,
+   0x01, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x80, 0xc6, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
+   0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x88, 0x01, 0x00, 0x00, 0x1a, 0x83, 0x01, 0x18, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x62, 0x00, 0x00, 0x80,
+   0xc6, 0x60, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0xff, 0x0f, 0xfc, 0x01, 0x00, 0x00, 0x18, 0x83, 0x00,
+   0x08, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x7f,
+   0x00, 0x00, 0x00, 0xc6, 0x20, 0x30, 0xe0, 0x01, 0x20, 0x00, 0x80, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x04, 0x83, 0x01, 0x18,
+   0x8c, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0x01, 0xc1, 0x60, 0x00, 0x06, 0x63, 0x00, 0x30, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02,
+   0x83, 0x00, 0x08, 0x8c, 0x61, 0x00, 0x06, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x80, 0xc0, 0x20, 0x00, 0x02, 0x63, 0x18, 0x30,
+   0x80, 0x01, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x03, 0x03, 0x00, 0x00, 0x8c, 0xe5, 0x00, 0x0e, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0xc0, 0x00, 0x00, 0x00,
+   0x63, 0x39, 0x30, 0x80, 0x01, 0x38, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0x01, 0x70, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x63, 0x00, 0x06, 0xcc, 0xd5, 0x00,
+   0x0d, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xc0,
+   0x18, 0x80, 0x01, 0x73, 0x35, 0x30, 0x80, 0x01, 0x34, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x34, 0x1a, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe0, 0xc3, 0xef, 0x00, 0x0e,
+   0xf8, 0x43, 0x00, 0x8c, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0xf8, 0xf0, 0x3b, 0x80, 0x03, 0xfe, 0x10, 0xff, 0x83, 0x01, 0x30,
+   0xfc, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10,
+   0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0xd0, 0x00, 0x0d, 0x00, 0xe0, 0x00, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x34, 0x40, 0x03, 0x00, 0x38, 0x30,
+   0x80, 0x01, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x38, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, 0xa0, 0x10, 0x04, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x10, 0x00, 0x03,
+   0x00, 0x28, 0x30, 0x80, 0x41, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x36, 0x28, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x04, 0x00, 0xe0, 0x18,
+   0x06, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x38, 0x00, 0x01, 0x00, 0x38, 0x30, 0xe0, 0x67, 0x18, 0x00, 0x80, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x38, 0x0c, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x10, 0x04,
+   0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x28, 0x04, 0x01, 0x00, 0x00, 0x30, 0x00, 0x40, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
+   0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x18, 0x06, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x86, 0x01, 0x00, 0x00, 0x30,
+   0x00, 0x40, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x30, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0,
+   0x03, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x30,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x00, 0x70, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x8e, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x70, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x8e,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x07, 0x00, 0x0c, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0xfc, 0xff, 0x00, 0x18, 0x00, 0x00,
+   0x0e, 0x00, 0x00, 0x00, 0x00, 0x74, 0x06, 0x00, 0x0c, 0x00, 0x24, 0x80,
+   0xff, 0x1f, 0x00, 0x03, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x80, 0xce,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x34, 0x06, 0x00, 0x00,
+   0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xc0,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x87, 0x1d, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe3,
+   0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0xfc, 0xff, 0x00,
+   0x18, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0xcb, 0x1f, 0x00,
+   0x00, 0x18, 0x80, 0xff, 0x1f, 0x00, 0x03, 0x00, 0x0c, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x63, 0x39, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03,
+   0x00, 0x00, 0x00, 0x18, 0x18, 0xe0, 0x8f, 0x01, 0xc3, 0x30, 0x0c, 0x18,
+   0x4b, 0x1b, 0x0c, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0xfc,
+   0x31, 0x60, 0x18, 0x86, 0x01, 0x63, 0xb5, 0xc1, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xfe, 0x18, 0xf0, 0x8f, 0x01, 0xc3,
+   0x30, 0x0c, 0x0c, 0x07, 0x03, 0x0c, 0x00, 0x18, 0x00, 0x00, 0x00, 0xc0,
+   0x1f, 0x03, 0xfe, 0x31, 0x60, 0x18, 0x86, 0x81, 0xe1, 0x90, 0xc1, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x08, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x98, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x60, 0x09, 0x08,
+   0x80, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x01, 0x00, 0xd8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00,
+   0xe0, 0x07, 0x08, 0x80, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d03edf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/d03edf1.bitmap
new file mode 100644
index 0000000..eff51bd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d03edf1.bitmap
@@ -0,0 +1,320 @@
+#define d03edf1_width 760
+#define d03edf1_height 40
+static char d03edf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x81, 0x9f, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x80, 0x81, 0x9f, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xc0,
+   0xc0, 0xcf, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0xf8, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x80, 0x81, 0x9f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0xe7, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x80,
+   0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x30, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x01,
+   0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0c, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x30, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x06, 0x00, 0x20, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x10,
+   0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x30, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x03, 0x01, 0x00, 0x00, 0x06, 0x00, 0x20, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x10, 0x86,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x81, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30,
+   0x10, 0x00, 0x00, 0x60, 0x00, 0x80, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x03, 0x01, 0x00, 0x00, 0x06, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xc1, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x77, 0x00, 0x70,
+   0x0c, 0x86, 0x01, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0xc8, 0x87, 0x00,
+   0x77, 0x00, 0x70, 0x0c, 0x86, 0x01, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x3c, 0x44, 0x80, 0x3b, 0x00, 0x38, 0x06, 0xc3, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x78, 0x08, 0x70, 0x07, 0x00, 0xc7, 0x60, 0x18, 0x10,
+   0x00, 0x00, 0x60, 0x00, 0xe0, 0x8f, 0x00, 0x77, 0x00, 0x70, 0x0c, 0x86,
+   0x01, 0x01, 0x00, 0x00, 0x06, 0x00, 0xfc, 0x20, 0xc0, 0x1d, 0x00, 0x1c,
+   0x83, 0x61, 0x40, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x8c, 0x00, 0x77, 0x00,
+   0x70, 0x0c, 0x06, 0x00, 0x00, 0x9c, 0xc9, 0x80, 0xec, 0x00, 0x68, 0x0c,
+   0x86, 0x01, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0xc8, 0xc7, 0x80, 0xec,
+   0x00, 0x68, 0x0c, 0x86, 0x01, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7e,
+   0x62, 0x40, 0x76, 0x00, 0x34, 0x06, 0xc3, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x6e, 0x0c, 0xc8, 0x0e, 0x80, 0xc6, 0x60, 0x18, 0x10, 0x00,
+   0x00, 0x60, 0x00, 0x20, 0xc0, 0x80, 0xec, 0x00, 0x68, 0x0c, 0x86, 0x01,
+   0x01, 0x00, 0x00, 0x06, 0x00, 0x96, 0x31, 0x20, 0x3b, 0x00, 0x1a, 0x83,
+   0x61, 0x40, 0x00, 0xfc, 0xff, 0x00, 0xcd, 0xcc, 0x80, 0xec, 0x00, 0x68,
+   0x0c, 0x06, 0x00, 0x00, 0x8c, 0xc9, 0xc0, 0x6c, 0x00, 0x68, 0x0c, 0x86,
+   0x81, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0xc6, 0xc0, 0x6c, 0x00,
+   0x68, 0x0c, 0x86, 0x81, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x63, 0x63,
+   0x60, 0x36, 0x00, 0x34, 0x06, 0xc3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x66, 0x0c, 0xcc, 0x06, 0x80, 0xc6, 0x60, 0x18, 0x08, 0x00, 0x00,
+   0x60, 0x00, 0x10, 0xc0, 0xc0, 0x6c, 0x00, 0x68, 0x0c, 0x86, 0x81, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x93, 0x31, 0x30, 0x1b, 0x00, 0x1a, 0x83, 0x61,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xc8, 0xc0, 0x6c, 0x00, 0x68, 0x0c,
+   0x06, 0x00, 0x00, 0x86, 0xc7, 0x00, 0x0c, 0x00, 0x60, 0x0c, 0x86, 0x81,
+   0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x08, 0xc6, 0x00, 0x0c, 0x00, 0x60,
+   0x0c, 0x86, 0x81, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x41, 0x61, 0x00,
+   0x06, 0x00, 0x30, 0x06, 0xc3, 0x40, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x01,
+   0x43, 0x0c, 0xc0, 0x00, 0x00, 0xc6, 0x60, 0x18, 0x08, 0x00, 0x80, 0xff,
+   0x1f, 0xe0, 0xc1, 0x00, 0x0c, 0x00, 0x60, 0x0c, 0x86, 0x81, 0x00, 0x00,
+   0xf8, 0xff, 0x81, 0x11, 0x31, 0x00, 0x03, 0x00, 0x18, 0x83, 0x61, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x4c, 0xc8, 0x00, 0x0c, 0x00, 0x60, 0x0c, 0x06,
+   0x00, 0x00, 0x06, 0xc7, 0x00, 0x06, 0x00, 0x30, 0x06, 0xc6, 0x80, 0x00,
+   0x00, 0x00, 0xe0, 0xff, 0x07, 0x04, 0xc6, 0x00, 0x06, 0x00, 0x30, 0x06,
+   0xc6, 0x80, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0xc0, 0x61, 0x00, 0x03,
+   0x00, 0x18, 0x03, 0x63, 0x40, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x43,
+   0x0c, 0x60, 0x00, 0x00, 0x63, 0x60, 0x0c, 0x08, 0x00, 0x80, 0xff, 0x1f,
+   0xf0, 0xc1, 0x00, 0x06, 0x00, 0x30, 0x06, 0xc6, 0x80, 0x00, 0x00, 0xf8,
+   0xff, 0x81, 0x91, 0x31, 0x80, 0x01, 0x00, 0x8c, 0x81, 0x31, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x46, 0xc4, 0x00, 0x06, 0x00, 0x30, 0x06, 0x06, 0x00,
+   0x00, 0x06, 0xc3, 0x00, 0x06, 0x00, 0x30, 0x06, 0xc6, 0xc0, 0x60, 0x87,
+   0x1d, 0x00, 0x18, 0x00, 0x04, 0xc7, 0x00, 0x06, 0x00, 0x30, 0x06, 0xc6,
+   0xc0, 0xc0, 0xce, 0x08, 0x00, 0x18, 0x00, 0xc0, 0x60, 0x00, 0x03, 0x00,
+   0x18, 0x03, 0x63, 0x60, 0x30, 0x32, 0x02, 0x00, 0x06, 0x00, 0x63, 0x0c,
+   0x60, 0x00, 0x00, 0x63, 0x60, 0x0c, 0x0c, 0x76, 0x00, 0x60, 0x00, 0x10,
+   0xc0, 0x00, 0x06, 0x00, 0x30, 0x06, 0xc6, 0xc0, 0x30, 0x02, 0x00, 0x06,
+   0x80, 0x89, 0x31, 0x80, 0x01, 0x00, 0x8c, 0x81, 0x31, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x66, 0xc4, 0x00, 0x06, 0x00, 0x30, 0x06, 0x06, 0x00, 0x00,
+   0x06, 0xc3, 0xc0, 0x46, 0x00, 0x30, 0x06, 0xc6, 0x40, 0xf0, 0xc7, 0x1f,
+   0x00, 0x18, 0x00, 0x04, 0xc3, 0xc0, 0x46, 0x00, 0x30, 0x06, 0xc6, 0x40,
+   0xe0, 0xcf, 0x09, 0x00, 0x18, 0x00, 0xc0, 0x60, 0x60, 0x23, 0x00, 0x18,
+   0x03, 0x63, 0x20, 0x70, 0x72, 0x02, 0x00, 0x06, 0x00, 0x23, 0x0c, 0x6c,
+   0x04, 0x00, 0x63, 0x60, 0x0c, 0x04, 0x7f, 0x00, 0x60, 0x00, 0x08, 0xc0,
+   0xc0, 0x46, 0x00, 0x30, 0x06, 0xc6, 0x40, 0x70, 0x02, 0x00, 0x06, 0x80,
+   0xc9, 0x31, 0xb0, 0x11, 0x00, 0x8c, 0x81, 0x31, 0x10, 0x00, 0xfc, 0xff,
+   0x00, 0x26, 0xc2, 0xc0, 0x46, 0x00, 0x30, 0x06, 0x06, 0x00, 0x00, 0xc6,
+   0x8b, 0xc0, 0x27, 0x18, 0x30, 0x07, 0x86, 0x20, 0xd0, 0x46, 0x1b, 0x00,
+   0x18, 0x00, 0x8c, 0x81, 0xc0, 0x27, 0x18, 0x30, 0x07, 0x86, 0x20, 0xa0,
+   0xad, 0x0d, 0x00, 0x18, 0x00, 0x40, 0x40, 0xe0, 0x13, 0x0c, 0x98, 0x03,
+   0x43, 0x10, 0x68, 0x6b, 0x03, 0x00, 0x06, 0x00, 0x33, 0x08, 0x7c, 0x82,
+   0x01, 0x73, 0x60, 0x08, 0x02, 0x6d, 0x00, 0x60, 0x00, 0x18, 0x86, 0xc0,
+   0x27, 0x18, 0x30, 0x07, 0x86, 0x20, 0x68, 0x03, 0x00, 0x06, 0x80, 0xe9,
+   0x20, 0xf0, 0x09, 0x06, 0xcc, 0x81, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x26, 0x81, 0xc0, 0x27, 0x18, 0x30, 0x07, 0x06, 0x00, 0x00, 0x7c, 0x87,
+   0xc1, 0x3d, 0x18, 0xe0, 0x03, 0x86, 0x19, 0xc0, 0x00, 0x03, 0x00, 0x18,
+   0x00, 0xfa, 0x80, 0xc1, 0x3d, 0x18, 0xe0, 0x03, 0x86, 0x19, 0x80, 0x81,
+   0x0c, 0x00, 0x18, 0x00, 0x40, 0xc0, 0xe0, 0x1e, 0x0c, 0xf0, 0x01, 0xc3,
+   0x0c, 0x20, 0x23, 0x03, 0x00, 0x06, 0x00, 0x1e, 0x18, 0xdc, 0x83, 0x01,
+   0x3e, 0x60, 0x98, 0x01, 0x0c, 0x00, 0x60, 0x00, 0xf0, 0x83, 0xc1, 0x3d,
+   0x18, 0xe0, 0x03, 0x86, 0x19, 0x20, 0x03, 0x00, 0x06, 0x00, 0x3f, 0x60,
+   0x70, 0x0f, 0x06, 0xf8, 0x80, 0x61, 0x06, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x80, 0xc1, 0x3d, 0x18, 0xe0, 0x03, 0x06, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x10, 0x00, 0x03, 0x02, 0x0e, 0x40, 0x02, 0x09, 0x00, 0x18, 0x00,
+   0x02, 0x80, 0x01, 0x00, 0x10, 0x00, 0x03, 0x02, 0x0e, 0x80, 0xc4, 0x04,
+   0x00, 0x18, 0x00, 0x40, 0xc0, 0x00, 0x00, 0x08, 0x80, 0x01, 0x01, 0x07,
+   0x30, 0x31, 0x01, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0x30,
+   0x20, 0xe0, 0x00, 0x24, 0x00, 0x60, 0x00, 0xe0, 0x80, 0x01, 0x00, 0x10,
+   0x00, 0x03, 0x02, 0x0e, 0x30, 0x01, 0x00, 0x06, 0x00, 0x04, 0x60, 0x00,
+   0x00, 0x04, 0xc0, 0x80, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80,
+   0x01, 0x00, 0x10, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x10, 0x18, 0x03, 0x03, 0x00, 0x58, 0x62, 0x09, 0x00, 0x18, 0x00, 0x02,
+   0x00, 0x01, 0x00, 0x10, 0x18, 0x03, 0x03, 0x00, 0xb0, 0xc4, 0x06, 0x00,
+   0x18, 0x00, 0x60, 0x80, 0x00, 0x00, 0x08, 0x8c, 0x81, 0x01, 0x00, 0xb0,
+   0xb1, 0x01, 0x00, 0x06, 0x00, 0x00, 0x10, 0x00, 0x00, 0x81, 0x31, 0x30,
+   0x00, 0x80, 0x25, 0x00, 0x60, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x18,
+   0x03, 0x03, 0x00, 0xb0, 0x01, 0x00, 0x06, 0x00, 0x04, 0x40, 0x00, 0x00,
+   0x04, 0xc6, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01,
+   0x00, 0x10, 0x18, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x10,
+   0x98, 0x01, 0x01, 0x00, 0xf8, 0xe1, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00,
+   0x03, 0x00, 0x10, 0x98, 0x01, 0x01, 0x00, 0xf0, 0x83, 0x07, 0x00, 0x00,
+   0x00, 0x60, 0x80, 0x01, 0x00, 0x08, 0xcc, 0x80, 0x00, 0x00, 0xe0, 0xe1,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x81, 0x19, 0x10, 0x00,
+   0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x10, 0x98, 0x01,
+   0x01, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x04,
+   0x66, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00,
+   0x10, 0x98, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0xf8,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02,
+   0x00, 0x08, 0xf8, 0x80, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x01, 0x00, 0x04, 0x7c, 0xc0, 0x00, 0x00, 0x80, 0x81, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x80, 0x0f, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0xf8, 0x80, 0x01,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x02, 0x3e,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x00, 0x08,
+   0xf8, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xd8, 0xd8, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x70,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d03eef.bitmap b/src/axiom-website/hyperdoc/bitmaps/d03eef.bitmap
new file mode 100644
index 0000000..10e93c8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d03eef.bitmap
@@ -0,0 +1,528 @@
+#define d03eef_width 800
+#define d03eef_height 63
+static char d03eef_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x66,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x0c, 0x3f, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0xc3,
+   0xcf, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x10, 0x60, 0xf8, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x3f, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe1, 0xe7, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0c, 0x06, 0x06,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1c, 0x83, 0x81, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x31, 0x30, 0x30, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1c, 0xc3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0x0c, 0x06, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x83, 0x81, 0x01, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x31, 0x30,
+   0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x18, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1c, 0xc3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x06, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x82,
+   0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x48, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x8d, 0x08, 0x06,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x23, 0x82, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x44, 0x30, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1b, 0x06,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0xc3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0xce, 0x0f, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xf3, 0xc3, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x39, 0x7e,
+   0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x1c, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x9c, 0x63, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x0e, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x03, 0xc0,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x38, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1c, 0x03, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x63, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x03,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x03, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x18, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x03,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x63, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x0e, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x03, 0xc0, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00,
+   0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x1c, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x83, 0x63, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x60,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x18, 0x00, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x8c, 0x01, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x31, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x80, 0x81,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x83, 0x01, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x00, 0x0c, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x8c, 0x81,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x83, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x03, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00,
+   0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x86, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc3, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x0c, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc3, 0x00, 0x40,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x30, 0x0c, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x18, 0x06, 0x41, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc3, 0x20, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x01, 0xd8, 0x01, 0x00, 0x33,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x76, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x60, 0x07, 0x00, 0x98, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x1c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0xb0, 0x03, 0x33,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x76, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x70, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x01, 0x00,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x1c, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xcf, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x31, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x80, 0x01,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0xc0, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x81, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x40, 0x30, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x40, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0e, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0xc0, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x81,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0xe0, 0x01, 0x01, 0xee, 0x00, 0xe0, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x20, 0x1f, 0x02, 0xdc, 0x01, 0xc0, 0x31, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x87, 0x08,
+   0x70, 0x07, 0x00, 0xc7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x1e, 0x02, 0xdc, 0x01, 0xc0, 0x31, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0xf0, 0x47, 0x80, 0x3b, 0x00, 0x38, 0x06, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf8, 0x41, 0x80, 0x3b, 0x00,
+   0x38, 0x06, 0xc3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x19, 0x01, 0xee,
+   0x00, 0xe0, 0x18, 0x0c, 0x38, 0x93, 0x01, 0xd9, 0x01, 0xd0, 0x18, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x1f, 0x03, 0xb2,
+   0x03, 0xa0, 0x31, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0xc0, 0x4f, 0x0c, 0xc8, 0x0e, 0x80, 0xc6, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x1b, 0x03, 0xb2, 0x03, 0xa0, 0x31,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x10, 0x60, 0x40, 0x76,
+   0x00, 0x34, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x2c,
+   0x63, 0x40, 0x76, 0x00, 0x34, 0x06, 0xc3, 0x80, 0x00, 0xf8, 0xff, 0x01,
+   0x9a, 0x99, 0x01, 0xd9, 0x01, 0xd0, 0x18, 0x0c, 0x18, 0x93, 0x81, 0xd9,
+   0x00, 0xd0, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x20, 0x18, 0x03, 0xb3, 0x01, 0xa0, 0x31, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x60, 0x6c, 0x0c, 0xcc, 0x06, 0x80, 0xc6,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x19, 0x03,
+   0xb3, 0x01, 0xa0, 0x31, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x08, 0x60, 0x60, 0x36, 0x00, 0x34, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x26, 0x63, 0x60, 0x36, 0x00, 0x34, 0x06, 0xc3, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x9a, 0x90, 0x81, 0xd9, 0x00, 0xd0, 0x18, 0x0c,
+   0x0c, 0x8f, 0x01, 0x18, 0x00, 0xc0, 0x18, 0x0c, 0xfe, 0xff, 0xff, 0xff,
+   0x7f, 0x80, 0xff, 0x1f, 0x20, 0x18, 0x03, 0x30, 0x00, 0x80, 0x31, 0x18,
+   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0x7f, 0x20, 0x28, 0x0c,
+   0xc0, 0x00, 0x00, 0xc6, 0x60, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe,
+   0x7f, 0xc0, 0x10, 0x03, 0x30, 0x00, 0x80, 0x31, 0x18, 0xfc, 0xff, 0xff,
+   0x7f, 0x80, 0xff, 0x1f, 0xf0, 0x60, 0x00, 0x06, 0x00, 0x30, 0x06, 0x83,
+   0xff, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0x01, 0x23, 0x62, 0x00, 0x06, 0x00,
+   0x30, 0x06, 0xc3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x98, 0x90, 0x01, 0x18,
+   0x00, 0xc0, 0x18, 0x0c, 0x0c, 0x8e, 0x01, 0x0c, 0x00, 0x60, 0x0c, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f, 0x10, 0x18, 0x03, 0x18,
+   0x00, 0xc0, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+   0x7f, 0x00, 0x38, 0x0c, 0x60, 0x00, 0x00, 0x63, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0x7f, 0xc0, 0x10, 0x03, 0x18, 0x00, 0xc0, 0x18,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f, 0xf8, 0x60, 0x00, 0x03,
+   0x00, 0x18, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x23,
+   0x63, 0x00, 0x03, 0x00, 0x18, 0x03, 0x63, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x8c, 0x88, 0x01, 0x0c, 0x00, 0x60, 0x0c, 0x0c, 0x0c, 0x86, 0x01, 0x0c,
+   0x00, 0x60, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x10, 0x1c, 0x03, 0x18, 0x00, 0xc0, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x0c, 0x60, 0x00, 0x00, 0x63,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x18, 0x03,
+   0x18, 0x00, 0xc0, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x08, 0x60, 0x00, 0x03, 0x00, 0x18, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x13, 0x63, 0x00, 0x03, 0x00, 0x18, 0x03, 0x63, 0x60,
+   0x00, 0x00, 0x00, 0x00, 0xcc, 0x88, 0x01, 0x0c, 0x00, 0x60, 0x0c, 0x0c,
+   0x0c, 0x86, 0x81, 0x8d, 0x00, 0x60, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x10, 0x0c, 0x03, 0x1b, 0x01, 0xc0, 0x18, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x0c,
+   0x6c, 0x04, 0x00, 0x63, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0xc0, 0x08, 0x03, 0x1b, 0x01, 0xc0, 0x18, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x04, 0x60, 0x60, 0x23, 0x00, 0x18, 0x03, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x93, 0x63, 0x60, 0x23, 0x00,
+   0x18, 0x03, 0x63, 0x20, 0x00, 0xf8, 0xff, 0x01, 0x4c, 0x84, 0x81, 0x8d,
+   0x00, 0x60, 0x0c, 0x0c, 0x8c, 0x17, 0x81, 0x4f, 0x30, 0x60, 0x0e, 0x0c,
+   0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x60, 0x00, 0x30, 0x06, 0x02, 0x9f,
+   0x60, 0xc0, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x08, 0x08, 0x7c, 0x82, 0x01, 0x73, 0x60, 0x00, 0x00, 0x70,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x0c, 0x02, 0x9f, 0x60, 0xc0, 0x1c,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0c, 0x43, 0xe0, 0x13,
+   0x0c, 0x98, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xd3,
+   0x41, 0xe0, 0x13, 0x06, 0x98, 0x03, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x4c, 0x02, 0x81, 0x4f, 0x30, 0x60, 0x0e, 0x0c, 0xf8, 0x0e, 0x83, 0x7b,
+   0x30, 0xc0, 0x07, 0x0c, 0x00, 0x0f, 0x33, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0xe8, 0x03, 0x06, 0xf7, 0x60, 0x80, 0x0f, 0x18, 0x80, 0x07, 0x00, 0x80,
+   0x07, 0x00, 0x00, 0x80, 0x01, 0x00, 0x08, 0x18, 0xdc, 0x83, 0x01, 0x3e,
+   0x60, 0x00, 0x78, 0x98, 0x01, 0x00, 0x00, 0x80, 0x01, 0x80, 0x07, 0x06,
+   0xf7, 0x60, 0x80, 0x0f, 0x18, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0xf8, 0xc1, 0xe0, 0x1e, 0x0c, 0xf0, 0x01, 0x03, 0xc0, 0x03, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x7e, 0xc0, 0xe0, 0x1e, 0x06, 0xf0, 0x01, 0xc3, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x83, 0x7b, 0x30, 0xc0, 0x07, 0x0c,
+   0x00, 0x00, 0x03, 0x00, 0x20, 0x00, 0x06, 0x04, 0x80, 0x10, 0x33, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x08, 0x00, 0x06, 0x00, 0x40, 0x00, 0x0c, 0x08,
+   0x40, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x80, 0x01, 0x00, 0x08, 0x18,
+   0x00, 0x00, 0x01, 0x30, 0x20, 0x00, 0x84, 0x98, 0x01, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x06, 0x00, 0x40, 0x00, 0x0c, 0x08, 0x00, 0x21, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x70, 0xc0, 0x00, 0x00, 0x08, 0x80, 0x01, 0x01,
+   0x20, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x08, 0xc0, 0x00, 0x00, 0x04,
+   0x80, 0x01, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00,
+   0x20, 0x00, 0x06, 0x04, 0x00, 0x00, 0x02, 0x00, 0x20, 0x30, 0x06, 0x06,
+   0xc0, 0x31, 0x33, 0x00, 0x00, 0x00, 0x60, 0x00, 0x08, 0x00, 0x04, 0x00,
+   0x40, 0x60, 0x0c, 0x0c, 0xe0, 0x18, 0x00, 0xe0, 0x18, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x0c, 0x10, 0x00, 0x00, 0x81, 0x31, 0x30, 0x00, 0x8e, 0x99,
+   0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x04, 0x00, 0x40, 0x60, 0x0c,
+   0x0c, 0x80, 0x63, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x08, 0x8c, 0x81, 0x01, 0x70, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x08,
+   0x80, 0x00, 0x00, 0x04, 0x8c, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x02, 0x00, 0x20, 0x30, 0x06, 0x06, 0x00, 0x00, 0x06, 0x00,
+   0x20, 0x30, 0x03, 0x02, 0xc0, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x0c, 0x00, 0x40, 0x60, 0x06, 0x04, 0xe0, 0x18, 0x00, 0xe0,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x81, 0x19,
+   0x10, 0x00, 0x8e, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x40, 0x60, 0x06, 0x04, 0x80, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x08, 0xcc, 0x80, 0x00, 0x70, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x80, 0x01, 0x00, 0x04, 0xcc, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x06, 0x00, 0x20, 0x30, 0x03, 0x02,
+   0x00, 0x00, 0x04, 0x00, 0x10, 0xf0, 0x01, 0x03, 0x00, 0x20, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0xe0, 0x03, 0x06,
+   0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20,
+   0x00, 0x80, 0x80, 0x0f, 0x18, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0xe0, 0x03, 0x06, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x7c, 0xc0, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x02,
+   0x7c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
+   0x10, 0xf0, 0x01, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x37, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x80, 0x1b, 0x00, 0x80, 0x1b, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xb8, 0xc1,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0xc0, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0xc0, 0x39, 0x24, 0xb8, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x1c, 0xee, 0xe0,
+   0x1c, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x00, 0xce, 0x21, 0xc1, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x73, 0xb8, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x70, 0x0e, 0xc7, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x38, 0x22, 0x64,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x1c, 0xd9, 0x31, 0x9c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x11, 0xa1, 0x31, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x64,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x8e, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x30, 0x3f, 0x66, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x98, 0xd9, 0x30, 0x98, 0xc6, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xf9,
+   0xa1, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x60, 0x66, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x8c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x18, 0x18,
+   0x1c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xc1, 0x01, 0x80, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0e, 0xc6, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x0c, 0x0c, 0x18, 0x0c, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x00, 0xc0, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x06, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x18, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x0c, 0x18, 0x0c, 0x63, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x00,
+   0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x36, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x86, 0x8d, 0x18,
+   0x06, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x61, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x36, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x63, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x3e,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x86, 0x4f, 0x18, 0x06, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0xc0, 0x1c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x3e,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x03, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x07, 0x00, 0xee, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xb0, 0x83, 0x7b, 0xb0, 0x03, 0x3e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00,
+   0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x0e, 0xee, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xe0,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0e, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x19, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d03eef.xbm b/src/axiom-website/hyperdoc/bitmaps/d03eef.xbm
new file mode 100644
index 0000000..b69f718
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d03eef.xbm
@@ -0,0 +1,537 @@
+#define d03eef_width 485
+#define d03eef_height 105
+static char d03eef_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x11, 0xe3, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x23, 0xc6, 0x0f, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x47, 0x8c,
+   0x1f, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x02, 0x83, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x06, 0x03, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08,
+   0x0c, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x82, 0x81, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x03, 0x03, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x08, 0x06, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x80, 0x01, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x03,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x02, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x01, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04,
+   0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x09, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe6, 0x83, 0x01, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xcc,
+   0x07, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x99, 0x0f, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xf7, 0x81, 0x01, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0xef, 0x03, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0xde, 0x07, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x80, 0x01,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x06, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x0c, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x80,
+   0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x06, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x06, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01,
+   0x80, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x03, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x06, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82,
+   0x01, 0x80, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x06, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x82, 0x00, 0x80, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0e,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc6, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x06, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00,
+   0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x7c, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf8, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01,
+   0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x81, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x83, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x43, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x28, 0x41, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xc0, 0x01, 0xc1, 0xe7, 0x01, 0x7c, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0xcc, 0x20, 0x7c, 0x1e, 0x80, 0x8f, 0x83, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x04, 0x9f,
+   0x07, 0xf0, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x70, 0x22, 0x01, 0x67, 0x00, 0x30, 0x04, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x84, 0x21, 0x70, 0x06, 0x00, 0x86, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x87, 0x04,
+   0x9c, 0x01, 0xc0, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x18, 0x14, 0x01, 0x36, 0x00, 0x70, 0x04, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x84, 0x21, 0x60, 0x03, 0x00, 0x8e,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x48,
+   0x04, 0xd8, 0x00, 0xc0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x18, 0x14, 0x01, 0x1c, 0x00, 0x60, 0x02, 0x08, 0xff,
+   0xff, 0xff, 0xff, 0x3f, 0x00, 0x04, 0x00, 0x84, 0x21, 0xc0, 0x01, 0x00,
+   0x4c, 0x80, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x01, 0x20,
+   0x28, 0x04, 0x70, 0x00, 0x80, 0x09, 0x10, 0xfc, 0xff, 0xff, 0xff, 0xff,
+   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x18, 0x0c, 0x01, 0x1c, 0x00, 0xe0, 0x02, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x86, 0x21, 0xc0, 0x01,
+   0x00, 0x5c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f,
+   0x00, 0x18, 0x04, 0x70, 0x00, 0x80, 0x0b, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x04, 0x01, 0x3c, 0x00, 0xc0, 0x03,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x82, 0x21, 0xc0,
+   0x03, 0x00, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x18, 0x04, 0xf0, 0x00, 0x00, 0x0f, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x04, 0x01, 0x32, 0x00, 0xc0,
+   0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x83, 0x20,
+   0x20, 0x03, 0x00, 0x38, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x01, 0x00, 0x08, 0x04, 0xc8, 0x00, 0x00, 0x07, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x0a, 0x01, 0x63, 0x30,
+   0xc0, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x45,
+   0x20, 0x30, 0x06, 0x03, 0x38, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x08, 0x04, 0x8c, 0x61, 0x00, 0x07, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x31, 0xc1, 0xf3,
+   0x31, 0x80, 0x00, 0x08, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x04, 0x80,
+   0x39, 0x40, 0x3c, 0x1f, 0x03, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x08, 0xcf, 0x67, 0x00, 0x02, 0x08,
+   0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x02,
+   0x00, 0x20, 0x80, 0x00, 0x08, 0x80, 0x87, 0x19, 0x00, 0x00, 0x00, 0x04,
+   0x80, 0x00, 0x40, 0x00, 0x00, 0x02, 0x10, 0x80, 0x00, 0x1e, 0x00, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x08, 0x00, 0x40, 0x00, 0x02,
+   0x08, 0x00, 0x1e, 0x66, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x02, 0x00, 0x10, 0x48, 0x00, 0x04, 0x40, 0x88, 0x18, 0x00, 0x00, 0x00,
+   0x04, 0x80, 0x00, 0x40, 0x00, 0x00, 0x01, 0x09, 0x40, 0x00, 0x21, 0x00,
+   0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x08, 0x00, 0x20, 0x20,
+   0x01, 0x08, 0x00, 0x21, 0x62, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x5c, 0x00, 0x04, 0x60, 0x08, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x0b, 0x40, 0x80, 0x21,
+   0x00, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00,
+   0x70, 0x01, 0x04, 0x80, 0x21, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x38, 0x00, 0x02, 0x00, 0x18, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x07, 0x20, 0x00,
+   0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00,
+   0x00, 0xe0, 0x00, 0x04, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x18, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1b,
+   0x92, 0xcf, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x66, 0x9f, 0x07, 0x66, 0x8f, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x40, 0x1f, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x1e, 0x1f, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x79, 0x9c, 0x81, 0x79, 0x86, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x79, 0x7c, 0x0c, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x8c, 0x0f, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x30, 0xd8, 0x40, 0x30, 0x8e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x3e, 0x1c,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x0c, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x70, 0x60, 0x30, 0x4c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00,
+   0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x18, 0x70, 0x20, 0x18, 0x5c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x18,
+   0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x18, 0xf0, 0x20, 0x18, 0x78,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x18, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0xc8, 0x20, 0x08,
+   0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x08, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0xc4, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x8c, 0x61,
+   0x0c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x0c, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0xe7, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xcf,
+   0xc7, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x3c, 0x7e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3c, 0x7e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x42, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x42, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x43, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x18, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x18, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x18, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x18, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x18, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60,
+   0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x18,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x30, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x30,
+   0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x30, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x10, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x10, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x18, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x18, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x80, 0x0f, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x80, 0x0f, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x82, 0x1f, 0x1c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x44, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x68, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x21, 0xf8, 0x3c, 0x80, 0x8f, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x80, 0x23, 0xf8, 0x3c, 0x80, 0x8f, 0x83, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x80, 0x0f, 0x82, 0xcf, 0x03, 0xf8, 0x38, 0x08, 0x06,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xc8, 0x04, 0x9f, 0x07, 0xf0,
+   0x71, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x21, 0xe0, 0x0c, 0x00, 0x86, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x60, 0x24, 0xe0, 0x0c, 0x00, 0x86, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x40, 0x12, 0x02, 0xce, 0x00, 0x60, 0x08, 0x08,
+   0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc8, 0x04, 0x9c, 0x01,
+   0xc0, 0x10, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x22, 0xc0, 0x06, 0x00, 0x8e, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x20, 0x20, 0xc0, 0x06, 0x00, 0x8e, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x32, 0x02, 0x6c, 0x00, 0xe0, 0x08,
+   0x08, 0x06, 0x08, 0x00, 0x80, 0xff, 0x0f, 0x00, 0xc0, 0xc4, 0x04, 0xd8,
+   0x00, 0xc0, 0x11, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x22, 0x80, 0x03, 0x00, 0x4c, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x30, 0x20, 0x80, 0x03, 0x00, 0x4c, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x33, 0x02, 0x38, 0x00, 0xc0,
+   0x04, 0x08, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc4, 0x04,
+   0x70, 0x00, 0x80, 0x09, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x22, 0x80, 0x03, 0x00, 0x5c, 0x80, 0xe0, 0xff,
+   0xff, 0xff, 0x03, 0xfe, 0x3f, 0xf0, 0x21, 0x80, 0x03, 0x00, 0x5c, 0x80,
+   0xe0, 0xff, 0xff, 0xff, 0x03, 0xff, 0x1f, 0x30, 0x31, 0x02, 0x38, 0x00,
+   0xc0, 0x05, 0x08, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc4,
+   0x04, 0x70, 0x00, 0x80, 0x0b, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0x80, 0x07, 0x00, 0x78, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x21, 0x80, 0x07, 0x00, 0x78,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x31, 0x02, 0x78,
+   0x00, 0x80, 0x07, 0x08, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x62, 0x04, 0xf0, 0x00, 0x00, 0x0f, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0x40, 0x06, 0x00, 0x38, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x20, 0x40, 0x06, 0x00,
+   0x38, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xb0, 0x10, 0x02,
+   0x64, 0x00, 0x80, 0x03, 0x08, 0x0e, 0x08, 0x00, 0x80, 0xff, 0x0f, 0x00,
+   0x60, 0x62, 0x04, 0xc8, 0x00, 0x00, 0x07, 0x10, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x60, 0x0c, 0x03, 0x38,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x20, 0x60, 0x0c,
+   0x03, 0x38, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xa0, 0x0c,
+   0x02, 0xc6, 0x30, 0x80, 0x03, 0x08, 0x1c, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x3a, 0x04, 0x8c, 0x61, 0x00, 0x07, 0x10, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x40, 0x78, 0x3e, 0x03,
+   0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x44, 0x78,
+   0x3e, 0x03, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0,
+   0x03, 0x84, 0xe7, 0x33, 0x00, 0x01, 0x04, 0xf0, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x1f, 0x08, 0xcf, 0x67, 0x00, 0x02, 0x08, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+   0x02, 0x10, 0x40, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x80, 0x43,
+   0x00, 0x00, 0x02, 0x10, 0x40, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x80, 0x00, 0x04, 0x00, 0x20, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x40, 0x00, 0x02, 0x08, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x01, 0x09, 0x40, 0x00, 0x10, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x01, 0x09, 0x40, 0x00, 0x08, 0x01, 0x00, 0x00, 0x40,
+   0x00, 0x40, 0x00, 0x04, 0x00, 0x10, 0x90, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x20, 0x20, 0x01, 0x08,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x80, 0x0b, 0x20, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x80, 0x0b, 0x20, 0x00, 0x0c, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0xb8, 0x00, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x70, 0x01,
+   0x04, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x70, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xe0,
+   0x00, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xf6, 0x3c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0xfb, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xe7,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xcc, 0x63, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0xc3, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x82, 0xe1, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x83, 0xc1, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x82, 0x81, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc1, 0xc0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x82, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc1, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x82, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc6, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x80, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x78, 0x3e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d03eef1.bitmap b/src/axiom-website/hyperdoc/bitmaps/d03eef1.bitmap
new file mode 100644
index 0000000..52cdddb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d03eef1.bitmap
@@ -0,0 +1,162 @@
+#define d03eef1_width 300
+#define d03eef1_height 50
+static char d03eef1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x21, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x63, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0x18, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x18,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x73, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x70, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x60, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x0c, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x06, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x06,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x18, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x18, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0xc0, 0x0e, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x03, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0x1f, 0x00, 0x00, 0x00,
+   0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x04, 0x00,
+   0x00, 0x00, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06,
+   0x04, 0x00, 0x0c, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x06, 0x02, 0x00, 0x0c, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x06, 0x02, 0x00, 0x0c, 0x00, 0x0c, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x01,
+   0xee, 0x00, 0xe0, 0x18, 0x0c, 0x03, 0x02, 0x00, 0x0c, 0x00, 0x7c, 0x08,
+   0x70, 0x07, 0x00, 0xc7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x3c, 0x02, 0xb8, 0x03, 0x80, 0x63, 0x30, 0x00, 0x00, 0x00, 0x60,
+   0x8c, 0x01, 0xd9, 0x01, 0xd0, 0x18, 0x0c, 0x03, 0x02, 0x00, 0x0c, 0x00,
+   0xcc, 0x0c, 0xc8, 0x0e, 0x80, 0xc6, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0x00, 0x77, 0x03, 0x64, 0x07, 0x40, 0x63, 0x30, 0x00, 0x00,
+   0x00, 0x60, 0x8c, 0x81, 0xd9, 0x00, 0xd0, 0x18, 0x0c, 0x03, 0x01, 0x00,
+   0x0c, 0x00, 0xc6, 0x0c, 0xcc, 0x06, 0x80, 0xc6, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x03, 0x66, 0x03, 0x40, 0x63, 0x30,
+   0x00, 0x00, 0x00, 0x30, 0x8c, 0x01, 0x18, 0x00, 0xc0, 0x18, 0x0c, 0x03,
+   0x01, 0xf0, 0xff, 0x03, 0xc6, 0x0c, 0xc0, 0x00, 0x00, 0xc6, 0x60, 0xf0,
+   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x80, 0x01, 0x03, 0x60, 0x00, 0x00,
+   0x63, 0x30, 0x00, 0x00, 0x00, 0x30, 0x86, 0x01, 0x0c, 0x00, 0x60, 0x0c,
+   0x8c, 0x01, 0x01, 0xf0, 0xff, 0x03, 0xc6, 0x0c, 0x60, 0x00, 0x00, 0x63,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x03, 0x30,
+   0x00, 0x80, 0x31, 0x30, 0x00, 0x00, 0x00, 0x30, 0x86, 0x01, 0x0c, 0x00,
+   0x60, 0x0c, 0x8c, 0x81, 0x01, 0x00, 0x0c, 0x00, 0xc6, 0x0c, 0x60, 0x00,
+   0x00, 0x63, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x03, 0x30, 0x00, 0x80, 0x31, 0x30, 0x00, 0x00, 0x00, 0x30, 0x96, 0x81,
+   0x8d, 0x00, 0x60, 0x0c, 0x8c, 0x81, 0x00, 0x00, 0x0c, 0x00, 0x66, 0x0c,
+   0x6c, 0x04, 0x00, 0x63, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
+   0x80, 0x21, 0x03, 0x36, 0x02, 0x80, 0x31, 0x30, 0x00, 0x00, 0x00, 0x30,
+   0x17, 0x81, 0x4f, 0x30, 0x60, 0x0e, 0x0c, 0x41, 0x00, 0x00, 0x0c, 0x00,
+   0x36, 0x08, 0x7c, 0x82, 0x01, 0x73, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x31, 0x02, 0x3e, 0x61, 0x80, 0x39, 0x30, 0x00, 0x00,
+   0x00, 0xe0, 0x0f, 0x83, 0x7b, 0x30, 0xc0, 0x07, 0x0c, 0x33, 0x00, 0x00,
+   0x0c, 0x00, 0x1c, 0x18, 0xdc, 0x83, 0x01, 0x3e, 0x60, 0x00, 0x78, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x06, 0xee, 0x61, 0x00, 0x1f, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x20, 0x00, 0x06, 0x04, 0x1c,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0x30, 0x20, 0x00,
+   0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x00,
+   0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x30, 0x06,
+   0x06, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x81, 0x31,
+   0x30, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x40, 0xc0, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x20,
+   0x30, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x81, 0x19, 0x10, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x40, 0xc0, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x00, 0x10, 0xf0, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x80, 0x80, 0x0f, 0x18, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x20, 0xc0, 0x07, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xb8, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xce, 0xf9,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc3, 0xe9, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x83, 0x69, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0xc1, 0x61, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x30, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x30, 0x0e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x30,
+   0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x61, 0x30, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3b, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d03eef2.bitmap b/src/axiom-website/hyperdoc/bitmaps/d03eef2.bitmap
new file mode 100644
index 0000000..958b51f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d03eef2.bitmap
@@ -0,0 +1,97 @@
+#define d03eef2_width 250
+#define d03eef2_height 35
+static char d03eef2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1c, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x03, 0x18, 0x00, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x33, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x24, 0x00,
+   0x80, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x60, 0x80, 0x31, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x22, 0x00, 0x80, 0x03, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0xc0, 0x03, 0x00, 0x20, 0xc0, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x0c, 0x3f, 0x00, 0xc0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0f, 0x00,
+   0x30, 0x40, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00,
+   0x60, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x3c, 0x00, 0x30, 0x40, 0x18, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x20, 0x03, 0x1e, 0x10,
+   0xe0, 0x0e, 0x00, 0x8e, 0xc1, 0xf0, 0x10, 0x01, 0xee, 0x00, 0xe0, 0x18,
+   0x0c, 0x00, 0xf0, 0x00, 0x10, 0x20, 0x1f, 0x02, 0xdc, 0x01, 0xc0, 0x31,
+   0x18, 0x18, 0x00, 0x00, 0x30, 0x83, 0x33, 0x19, 0x90, 0x1d, 0x00, 0x8d,
+   0xc1, 0xf8, 0x89, 0x01, 0xd9, 0x01, 0xd0, 0x18, 0x0c, 0x00, 0xc0, 0x03,
+   0x18, 0x20, 0x1f, 0x03, 0xb2, 0x03, 0xa0, 0x31, 0x18, 0x18, 0x00, 0x00,
+   0x18, 0x83, 0x31, 0x19, 0x98, 0x0d, 0x00, 0x8d, 0xc1, 0x8c, 0x8d, 0x81,
+   0xd9, 0x00, 0xd0, 0x18, 0x0c, 0x00, 0x80, 0x03, 0x18, 0x20, 0x18, 0x03,
+   0xb3, 0x01, 0xa0, 0x31, 0x18, 0x18, 0x00, 0x00, 0x08, 0xc3, 0xf0, 0x18,
+   0x80, 0x01, 0x00, 0x8c, 0xc1, 0x04, 0x85, 0x01, 0x18, 0x00, 0xc0, 0x18,
+   0x0c, 0x00, 0xe0, 0x01, 0x18, 0x20, 0x18, 0x03, 0x30, 0x00, 0x80, 0x31,
+   0x18, 0x18, 0x00, 0x00, 0xfc, 0xcf, 0xe0, 0x18, 0xc0, 0x00, 0x00, 0xc6,
+   0xc0, 0x00, 0x87, 0x01, 0x0c, 0x00, 0x60, 0x0c, 0x0c, 0x00, 0x78, 0x00,
+   0x18, 0x10, 0x18, 0x03, 0x18, 0x00, 0xc0, 0x18, 0x18, 0x18, 0x00, 0x00,
+   0x00, 0xc3, 0x60, 0x18, 0xc0, 0x00, 0x00, 0xc6, 0xc0, 0x00, 0x83, 0x01,
+   0x0c, 0x00, 0x60, 0x0c, 0x0c, 0x00, 0x1e, 0x00, 0x18, 0x10, 0x1c, 0x03,
+   0x18, 0x00, 0xc0, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0xc3, 0x60, 0x18,
+   0xd8, 0x08, 0x00, 0xc6, 0xc0, 0x00, 0x83, 0x81, 0x8d, 0x00, 0x60, 0x0c,
+   0x0c, 0x80, 0x07, 0x00, 0x18, 0x10, 0x0c, 0x03, 0x1b, 0x01, 0xc0, 0x18,
+   0x18, 0x18, 0x00, 0x00, 0x00, 0xc3, 0x78, 0x11, 0xf8, 0x04, 0x03, 0xe6,
+   0xc0, 0x00, 0x01, 0x81, 0x4f, 0x30, 0x60, 0x0e, 0x0c, 0xe0, 0x01, 0x00,
+   0x10, 0x30, 0x06, 0x02, 0x9f, 0x60, 0xc0, 0x1c, 0x18, 0x18, 0x00, 0x00,
+   0xc0, 0x8f, 0xef, 0x30, 0xb8, 0x07, 0x03, 0x7c, 0xc0, 0x00, 0x01, 0x83,
+   0x7b, 0x30, 0xc0, 0x07, 0x0c, 0x60, 0x00, 0x00, 0x30, 0xe8, 0x03, 0x06,
+   0xf7, 0x60, 0x80, 0x0f, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x02, 0x60, 0x40, 0x00, 0x01, 0x03, 0x00, 0x20, 0x00, 0x06,
+   0x04, 0x00, 0x00, 0x00, 0x30, 0x08, 0x00, 0x06, 0x00, 0x40, 0x00, 0x0c,
+   0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x02, 0x63,
+   0x60, 0x80, 0x01, 0x02, 0x00, 0x20, 0x30, 0x06, 0x06, 0x00, 0x00, 0x00,
+   0x20, 0x08, 0x00, 0x04, 0x00, 0x40, 0x60, 0x0c, 0x0c, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x33, 0x20, 0x80, 0x01, 0x06,
+   0x00, 0x20, 0x30, 0x03, 0x02, 0x00, 0x00, 0x00, 0x60, 0x08, 0x00, 0x0c,
+   0x00, 0x40, 0x60, 0x06, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x01, 0x1f, 0x30, 0x80, 0x00, 0x04, 0x00, 0x10, 0xf0, 0x01,
+   0x03, 0xe0, 0xff, 0x03, 0x40, 0x04, 0x00, 0x08, 0x00, 0x20, 0xe0, 0x03,
+   0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d03faf.bitmap b/src/axiom-website/hyperdoc/bitmaps/d03faf.bitmap
new file mode 100644
index 0000000..86ec0ab
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d03faf.bitmap
@@ -0,0 +1,201 @@
+#define d03faf_width 340
+#define d03faf_height 55
+static char d03faf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x19, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x83, 0x19, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0xc3, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x04, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0c, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x70, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0c, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0d, 0x11, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x8d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x8d,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x8e, 0x1f, 0x8e, 0x01, 0x00, 0x00, 0x00, 0x70, 0xce, 0x0f,
+   0x8e, 0x01, 0x00, 0x00, 0x00, 0x70, 0xce, 0x0f, 0xc7, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0e, 0x00, 0x8d,
+   0x01, 0x00, 0x00, 0x00, 0x18, 0x0e, 0x00, 0x8d, 0x01, 0x00, 0x00, 0x00,
+   0x18, 0x0e, 0x80, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x18,
+   0x0c, 0x00, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x80, 0xc6, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0e,
+   0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0e, 0x00, 0x8c, 0x01, 0x00,
+   0x00, 0x00, 0x0c, 0x0e, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0xc6, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x06, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00,
+   0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x06, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0xc6,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0xc6, 0x02,
+   0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0xc6, 0x02, 0x00, 0x00, 0x00, 0x0c,
+   0x03, 0x00, 0x63, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x03, 0x00, 0xe6, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x03,
+   0x00, 0xe6, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x73, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x00,
+   0xfc, 0x01, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x00, 0xfc, 0x01, 0x00, 0x00,
+   0x00, 0xd8, 0x01, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x30, 0x70, 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x01,
+   0xee, 0x00, 0xe0, 0x18, 0x00, 0x9c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x70, 0x68,
+   0x0c, 0xe0, 0xff, 0x07, 0x80, 0x83, 0x01, 0xd9, 0x01, 0xd0, 0x18, 0x00,
+   0xfc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x70, 0x68, 0x0c, 0x00, 0x00, 0x00, 0x80,
+   0x81, 0x81, 0xd9, 0x00, 0xd0, 0x18, 0x00, 0x62, 0xc0, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
+   0x07, 0xf8, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfc, 0xff, 0x00,
+   0x78, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x81, 0x01, 0x18, 0x00, 0xc0,
+   0x18, 0x00, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0xec, 0x30, 0x06, 0x00, 0x00,
+   0x00, 0x80, 0x81, 0x01, 0x0c, 0x00, 0x60, 0x0c, 0x00, 0x18, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0xc6, 0x30, 0x06, 0x00, 0x00, 0x00, 0x80, 0x81, 0x01, 0x0c,
+   0x00, 0x60, 0x0c, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc7, 0x30, 0x16,
+   0xe0, 0xff, 0x07, 0xc0, 0x81, 0x81, 0x8d, 0x00, 0x60, 0x0c, 0x00, 0x46,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00,
+   0x00, 0x00, 0x03, 0x80, 0xc3, 0x30, 0x17, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x81, 0x4f, 0x30, 0x60, 0x0e, 0x03, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0xc0,
+   0x83, 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x87, 0x19, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0xc0, 0x83, 0x19, 0x00, 0x00, 0x00, 0x03, 0x80, 0xc1,
+   0xe1, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x83, 0x7b, 0x30, 0xc0, 0x07,
+   0x03, 0x39, 0xc0, 0x00, 0x00, 0x00, 0x20, 0x84, 0x19, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x40, 0x88, 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0x20, 0x84,
+   0x19, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x03, 0x00, 0x20, 0x00, 0x06, 0x02, 0x00, 0x40, 0x00, 0x00,
+   0x00, 0x70, 0x8c, 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x98, 0x19,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x70, 0x8c, 0x19, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x02, 0x00, 0x20,
+   0x30, 0x06, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0x70, 0x0c, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x06, 0x00, 0x20, 0x30, 0x03, 0x02, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x04,
+   0x00, 0x10, 0xf0, 0x01, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00, 0xc0, 0x0d,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1b, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x0d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x12, 0xdc, 0x01, 0x00, 0x00,
+   0x00, 0xe0, 0x1c, 0x12, 0x8e, 0x01, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x12,
+   0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x18, 0x0e, 0x11, 0xb2, 0x03, 0x00, 0x00, 0x00, 0x30, 0x1c, 0x11, 0x8d,
+   0x01, 0x00, 0x00, 0x00, 0x18, 0x0e, 0x11, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x8c, 0x1f, 0xb3, 0x01,
+   0x00, 0x00, 0x00, 0x30, 0x98, 0x1f, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x18,
+   0x8c, 0x1f, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x0e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1c,
+   0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0e, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0xc6, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x0c, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x03, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0xc6, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x9f, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x06, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03,
+   0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xd8, 0x01, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x03, 0x00,
+   0x7c, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x39, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/d03faf.xbm b/src/axiom-website/hyperdoc/bitmaps/d03faf.xbm
new file mode 100644
index 0000000..a6db2fd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/d03faf.xbm
@@ -0,0 +1,185 @@
+#define d03faf_width 334
+#define d03faf_height 52
+static char d03faf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xf0, 0x80, 0xf1, 0x83, 0x07,
+   0x00, 0x00, 0x00, 0xe0, 0x01, 0xe3, 0x07, 0x0f, 0x00, 0x00, 0x00, 0xc0,
+   0x03, 0xc6, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x08, 0xc1, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x82, 0x81,
+   0x01, 0x02, 0x00, 0x00, 0x00, 0x20, 0x04, 0x03, 0x03, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0x41, 0xc0, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x18, 0x82, 0x80, 0x01, 0x02, 0x00, 0x00, 0x00, 0x30,
+   0x04, 0x01, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x23, 0xc1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82,
+   0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04, 0x03, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xf3, 0xc1, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0xe6, 0x83, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0xcc, 0x07, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x30, 0xfb, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0xf6, 0x81,
+   0x01, 0x02, 0x00, 0x00, 0x00, 0xc0, 0xec, 0x03, 0x03, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x4c, 0x03, 0xc0, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x98, 0x06, 0x80, 0x01, 0x02, 0x00, 0x00, 0x00, 0x30,
+   0x0d, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x82, 0x01, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x03, 0x80,
+   0x01, 0x02, 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x03, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x83, 0x01, 0xc0, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x06, 0x03, 0x80, 0x01, 0x02, 0x00, 0x00, 0x00, 0x0c,
+   0x06, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x83, 0x00, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x80,
+   0x01, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x03, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc3, 0x00, 0xc0, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x86, 0x01, 0x80, 0x01, 0x02, 0x00, 0x00, 0x00, 0x0c,
+   0x03, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x43, 0x00, 0xc0, 0x01, 0x01, 0x00, 0x00, 0x00, 0x86, 0x00, 0x80,
+   0x03, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x07, 0x04, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x63, 0x00, 0x80, 0x83, 0x00,
+   0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x8c,
+   0x01, 0x00, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x3e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00,
+   0xfc, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00,
+   0x00, 0x0c, 0xf0, 0x83, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x76, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0xc0, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x30, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0xc0, 0x00, 0x01, 0x00,
+   0x00, 0xc0, 0x0f, 0x82, 0xcf, 0x03, 0xf8, 0x38, 0x00, 0xfe, 0x41, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x60, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x02, 0xce, 0x00,
+   0x60, 0x08, 0x00, 0xc2, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x60, 0xc0, 0x00, 0x01, 0xf8,
+   0xff, 0x00, 0x03, 0x02, 0x6c, 0x00, 0xe0, 0x08, 0x00, 0x62, 0x40, 0xc0,
+   0x80, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x04, 0x00, 0xff, 0xff, 0xff,
+   0xff, 0x3f, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x08,
+   0x00, 0x60, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x02, 0x38, 0x00,
+   0xc0, 0x04, 0x00, 0x70, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0xd0, 0xc0, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x03, 0x02, 0x38, 0x00, 0xc0, 0x05, 0x00, 0x38, 0x40, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x88, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x02, 0x78, 0x00,
+   0x80, 0x07, 0x00, 0x18, 0x41, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x84, 0xc1, 0x01, 0x01, 0xf8,
+   0xff, 0x00, 0x03, 0x02, 0x64, 0x00, 0x80, 0x03, 0x00, 0x9c, 0x41, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x02, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0xc6, 0x60,
+   0x80, 0x03, 0x0c, 0x8e, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x3c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x06, 0x7e, 0x00, 0x00,
+   0x00, 0x80, 0x07, 0x84, 0xe7, 0x63, 0x00, 0x01, 0x0c, 0xfe, 0x20, 0xc0,
+   0x00, 0x80, 0x87, 0x19, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x87, 0x19,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1e, 0x66, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40,
+   0x00, 0x01, 0x08, 0x00, 0x20, 0xc0, 0x00, 0x40, 0x88, 0x18, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x40, 0x88, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x21, 0x62, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x90, 0x00, 0x04, 0x00, 0x20, 0xc0,
+   0x00, 0x60, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0xb8, 0x00, 0x00, 0x00, 0x10, 0xc0, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x10, 0xc0,
+   0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x80, 0x19, 0xd2, 0xe7, 0x01,
+   0x00, 0x00, 0x00, 0x80, 0x19, 0x92, 0x8f, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x66, 0x48, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x60, 0x1a, 0x1f, 0x67, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1a, 0x1f,
+   0x86, 0x00, 0x00, 0x00, 0x00, 0x80, 0x69, 0x7c, 0xc2, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x10, 0x8c, 0x0f, 0x36, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x8c, 0x0f, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x30, 0x3e, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x18, 0x0c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00,
+   0x4c, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x18, 0x04, 0x00, 0x1c, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x10, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x18, 0x06, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x18, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x18, 0x02, 0x00, 0x32, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x08, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x18, 0x03, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00,
+   0x38, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x8e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0xc0, 0xf3, 0x01,
+   0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x07, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/del.bitmap b/src/axiom-website/hyperdoc/bitmaps/del.bitmap
new file mode 100644
index 0000000..c54c5a9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/del.bitmap
@@ -0,0 +1,6 @@
+#define del_width 16
+#define del_height 16
+static char del_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0x7f, 0xff, 0x7f, 0x03, 0x60, 0x06, 0x30, 0x0c, 0x18,
+   0x18, 0x0c, 0x30, 0x06, 0x60, 0x03, 0xc0, 0x01};
diff --git a/src/axiom-website/hyperdoc/bitmaps/delta-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/delta-cap.bitmap
new file mode 100644
index 0000000..47b89f0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/delta-cap.bitmap
@@ -0,0 +1,8 @@
+#define Delta_width 16
+#define Delta_height 16
+#define Delta_x_hot -1
+#define Delta_y_hot -1
+static char Delta_bits[] = {
+   0x80, 0x01, 0x80, 0x01, 0x40, 0x03, 0x40, 0x03, 0x40, 0x06, 0x20, 0x06,
+   0x20, 0x0c, 0x20, 0x0c, 0x10, 0x18, 0x10, 0x18, 0x10, 0x30, 0x08, 0x30,
+   0x08, 0x60, 0x0c, 0x60, 0xfc, 0x7f, 0xfc, 0x7f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/delta.bitmap b/src/axiom-website/hyperdoc/bitmaps/delta.bitmap
new file mode 100644
index 0000000..74f644e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/delta.bitmap
@@ -0,0 +1,8 @@
+#define delta_width 16
+#define delta_height 16
+#define delta_x_hot -1
+#define delta_y_hot -1
+static char delta_bits[] = {
+   0xc0, 0x00, 0xf0, 0x03, 0x30, 0x03, 0x18, 0x00, 0x18, 0x00, 0xf8, 0x03,
+   0xf0, 0x07, 0x38, 0x0e, 0x18, 0x0c, 0x18, 0x0c, 0x38, 0x0e, 0xf8, 0x0f,
+   0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/delta.xbm b/src/axiom-website/hyperdoc/bitmaps/delta.xbm
new file mode 100644
index 0000000..1f73d50
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/delta.xbm
@@ -0,0 +1,7 @@
+#define delta_width 15
+#define delta_height 20
+static char delta_bits[] = {
+   0x00, 0x0e, 0x00, 0x13, 0x80, 0x01, 0x80, 0x01, 0x00, 0x03, 0x00, 0x07,
+   0x80, 0x06, 0x40, 0x0c, 0x40, 0x0c, 0x60, 0x0c, 0x60, 0x0c, 0x60, 0x0c,
+   0x60, 0x04, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/div.bitmap b/src/axiom-website/hyperdoc/bitmaps/div.bitmap
new file mode 100644
index 0000000..cadd01d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/div.bitmap
@@ -0,0 +1,6 @@
+#define div_width 16
+#define div_height 16
+static char div_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0x01,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/doit.bitmap b/src/axiom-website/hyperdoc/bitmaps/doit.bitmap
new file mode 100644
index 0000000..78c55f5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/doit.bitmap
@@ -0,0 +1,23 @@
+#define DoIt.bitmap_width 60
+#define DoIt.bitmap_height 30
+static char DoIt.bitmap_bits[] = {
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0xf1, 0x5f, 0x55, 0x55, 0xf5, 0x57, 0x55, 0x07, 0xea, 0xbf, 0xaa, 0xaa,
+   0xea, 0xab, 0xaa, 0x0e, 0xd1, 0x7d, 0x55, 0x55, 0xd5, 0x55, 0x5d, 0x07,
+   0xea, 0xbb, 0xaa, 0xaa, 0xea, 0xab, 0xae, 0x0e, 0xd1, 0x75, 0x55, 0x55,
+   0xd5, 0x55, 0x5f, 0x07, 0xea, 0xfb, 0xaa, 0xaa, 0xea, 0xab, 0xae, 0x0e,
+   0xd1, 0x75, 0xfd, 0x55, 0xd5, 0xd5, 0xff, 0x07, 0xea, 0xfb, 0xfe, 0xab,
+   0xea, 0xab, 0xff, 0x0e, 0xd1, 0x75, 0xdd, 0x57, 0xd5, 0x55, 0x5f, 0x07,
+   0xea, 0xfb, 0xae, 0xaf, 0xea, 0xab, 0xae, 0x0e, 0xd1, 0x75, 0x5f, 0x57,
+   0xd5, 0x55, 0x5f, 0x07, 0xea, 0xfb, 0xae, 0xaf, 0xea, 0xab, 0xae, 0x0e,
+   0xd1, 0x75, 0x5f, 0x57, 0xd5, 0x55, 0x5f, 0x07, 0xea, 0xbb, 0xae, 0xaf,
+   0xea, 0xab, 0xae, 0x0e, 0xd1, 0x7d, 0xdd, 0x57, 0xd5, 0x55, 0x5f, 0x07,
+   0xea, 0xbf, 0xfe, 0xab, 0xea, 0xab, 0xfe, 0x0e, 0xf1, 0x5f, 0xfd, 0x55,
+   0xf5, 0x57, 0x7d, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a};
diff --git a/src/axiom-website/hyperdoc/bitmaps/door b/src/axiom-website/hyperdoc/bitmaps/door
new file mode 100644
index 0000000..3bd614b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/door
@@ -0,0 +1,20 @@
+#define door_width 40
+#define door_height 40
+static char door_bits[] = {
+   0x00, 0x00, 0x80, 0xff, 0xff, 0xfe, 0xff, 0xbf, 0xff, 0xff, 0x02, 0x00,
+   0x80, 0xff, 0xff, 0xfa, 0xff, 0x6f, 0xfe, 0xff, 0xfa, 0xff, 0xef, 0xf9,
+   0xff, 0xfa, 0xff, 0xef, 0xe7, 0xff, 0xfa, 0xff, 0x2f, 0x9f, 0xff, 0xfa,
+   0xff, 0xaf, 0x7c, 0xfe, 0xfa, 0xff, 0xaf, 0xfd, 0xfd, 0xfa, 0xff, 0xaf,
+   0xcd, 0xfd, 0xfa, 0xff, 0xaf, 0x2d, 0xfd, 0xfa, 0xff, 0xaf, 0x6d, 0xfd,
+   0xfa, 0xff, 0xaf, 0x6d, 0xfd, 0xfa, 0xff, 0xaf, 0x6d, 0xfd, 0x82, 0xff,
+   0x2f, 0x6d, 0xfd, 0xba, 0xff, 0xef, 0x6c, 0xfd, 0xba, 0xff, 0xef, 0x4f,
+   0xfd, 0x02, 0xfc, 0xef, 0x3f, 0xfd, 0xfa, 0xfd, 0xef, 0xff, 0xfd, 0xfa,
+   0xfd, 0x2f, 0x3f, 0xfd, 0x02, 0xe0, 0xaf, 0x3c, 0xfd, 0xfa, 0xef, 0xaf,
+   0x3d, 0xfd, 0xfa, 0xef, 0xaf, 0xcd, 0xfd, 0x02, 0x00, 0xaf, 0x2d, 0xfd,
+   0xfa, 0x7f, 0xaf, 0x6d, 0xfd, 0xfa, 0x7f, 0xaf, 0x6d, 0xfd, 0x02, 0x00,
+   0x28, 0x6d, 0xfd, 0xfa, 0xff, 0xeb, 0x6c, 0xfd, 0xfa, 0xff, 0xeb, 0x6f,
+   0xfd, 0x00, 0x00, 0x80, 0x4f, 0xfd, 0xff, 0xff, 0x7f, 0x3e, 0xfd, 0xff,
+   0xff, 0xff, 0xf9, 0xfd, 0xff, 0xff, 0xff, 0xe7, 0xfd, 0xff, 0xff, 0xff,
+   0x9f, 0xfd, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xfd,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/door.bitmap b/src/axiom-website/hyperdoc/bitmaps/door.bitmap
new file mode 100644
index 0000000..c695c77
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/door.bitmap
@@ -0,0 +1,23 @@
+#define door_width 60
+#define door_height 30
+static char door_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xf7, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
+   0xfe, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xf7, 0xfe, 0x7f, 0xff, 0xff,
+   0xfe, 0xff, 0xff, 0xf7, 0xfe, 0x7f, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xf7,
+   0xfe, 0x7f, 0xfd, 0xbf, 0xf1, 0xff, 0xff, 0xf7, 0xfe, 0x7f, 0xfd, 0xbf,
+   0x8f, 0xff, 0xff, 0xf7, 0xfe, 0x7f, 0xfd, 0xbf, 0x7f, 0xfc, 0xff, 0xf7,
+   0xfe, 0x7f, 0xf9, 0xbf, 0xf1, 0xfb, 0xff, 0xf7, 0xfe, 0x7f, 0xf9, 0xbf,
+   0x8d, 0xfb, 0xff, 0xf7, 0xfe, 0x7f, 0xf9, 0xbf, 0xbd, 0xfb, 0xff, 0xf7,
+   0xfe, 0x7f, 0x81, 0xbf, 0xbd, 0xfb, 0xff, 0xf7, 0xfe, 0x7f, 0xbd, 0xbf,
+   0xbd, 0xfb, 0xff, 0xf7, 0xfe, 0x7f, 0xbd, 0xbf, 0xb1, 0xfb, 0xff, 0xf7,
+   0xfe, 0x7f, 0x01, 0xbe, 0x8f, 0xfb, 0xff, 0xf7, 0xfe, 0x7f, 0xfd, 0xbe,
+   0x7f, 0xfa, 0xff, 0xf7, 0xfe, 0x7f, 0xfd, 0xbe, 0x71, 0xfa, 0xff, 0xf7,
+   0xfe, 0x7f, 0x01, 0xb0, 0x8d, 0xfb, 0xff, 0xf7, 0xfe, 0x7f, 0xfd, 0xb7,
+   0xbd, 0xfb, 0xff, 0xf7, 0xfe, 0x7f, 0xfd, 0xb7, 0xb1, 0xfb, 0xff, 0xf7,
+   0xfe, 0x7f, 0x00, 0x00, 0x8e, 0xfb, 0xff, 0xf7, 0xfe, 0xff, 0xff, 0xff,
+   0xf1, 0xfb, 0xff, 0xf7, 0xfe, 0xff, 0xff, 0xff, 0x8f, 0xfb, 0xff, 0xf7,
+   0xfe, 0xff, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xf7, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xfb, 0xff, 0xf7, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/dot.bitmap b/src/axiom-website/hyperdoc/bitmaps/dot.bitmap
new file mode 100644
index 0000000..f4cd91f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/dot.bitmap
@@ -0,0 +1,8 @@
+#define dot_width 16
+#define dot_height 16
+#define dot_x_hot -1
+#define dot_y_hot -1
+static char dot_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/down.bitmap b/src/axiom-website/hyperdoc/bitmaps/down.bitmap
new file mode 100644
index 0000000..32e8346
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/down.bitmap
@@ -0,0 +1,23 @@
+#define down_width 60
+#define down_height 30
+static char down_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x00,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x00,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x00,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0x1f, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0xfb, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfb,
+   0xfd, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfb, 0xfd, 0xff, 0x01, 0x00,
+   0x00, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x1f, 0x00,
+   0xf0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/down3.bitmap b/src/axiom-website/hyperdoc/bitmaps/down3.bitmap
new file mode 100644
index 0000000..afd0629
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/down3.bitmap
@@ -0,0 +1,23 @@
+#define down3_width 60
+#define down3_height 30
+static char down3_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x3f, 0x00,
+   0xe0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x3f, 0x00,
+   0xe0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xfb,
+   0xfd, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x1f, 0x00,
+   0xc0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x07,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/dr.bitmap b/src/axiom-website/hyperdoc/bitmaps/dr.bitmap
new file mode 100644
index 0000000..a2704b2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/dr.bitmap
@@ -0,0 +1,6 @@
+#define dr_width 16
+#define dr_height 16
+static char dr_bits[] = {
+   0xc0, 0x03, 0x00, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+   0xfc, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc3, 0xd8, 0x63, 0xb8, 0x63, 0xb4,
+   0x63, 0x11, 0x73, 0x19, 0xfe, 0x18, 0x00, 0x08};
diff --git a/src/axiom-website/hyperdoc/bitmaps/drown.bm b/src/axiom-website/hyperdoc/bitmaps/drown.bm
new file mode 100644
index 0000000..d4df252
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/drown.bm
@@ -0,0 +1,23 @@
+#define drown_width 60
+#define drown_height 30
+static char drown_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x7d, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0xfb, 0xbd, 0xb9, 0xea, 0x1f, 0xfc, 0xab, 0xee, 0xfb,
+   0xcd, 0xbb, 0xea, 0x07, 0xf0, 0xab, 0xfe, 0xfb, 0xf5, 0x3f, 0xe0, 0x03,
+   0xe0, 0x03, 0xfe, 0xfb, 0xfd, 0x3f, 0xf0, 0x03, 0xe0, 0x07, 0xee, 0xfb,
+   0xfd, 0xff, 0xf8, 0x31, 0xc6, 0x8f, 0x8f, 0xfb, 0xfd, 0xff, 0xf8, 0x31,
+   0xc6, 0x8f, 0x37, 0xfb, 0xcd, 0xff, 0xf8, 0x81, 0xc0, 0x8f, 0x7b, 0xfa,
+   0x85, 0xe7, 0xf8, 0x81, 0xc0, 0x8f, 0xff, 0xfb, 0x3d, 0xe1, 0xf0, 0x01,
+   0xc0, 0x87, 0xff, 0xfb, 0x7d, 0xff, 0xf1, 0x03, 0xe0, 0xc7, 0xff, 0xfb,
+   0xfd, 0xff, 0xe1, 0xc3, 0xe1, 0xc3, 0xff, 0xfb, 0xfd, 0xdf, 0xc3, 0x27,
+   0xf2, 0xe1, 0xff, 0xfb, 0xfd, 0x07, 0xff, 0x0f, 0xf8, 0xff, 0xe1, 0xfb,
+   0xfd, 0x33, 0xfe, 0xff, 0x3f, 0x7e, 0x8e, 0xfb, 0x8d, 0xfd, 0xf9, 0xff,
+   0xdf, 0x3d, 0x3f, 0xfb, 0xa5, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0x3f, 0xff, 0xc3,
+   0x1f, 0xfc, 0xf1, 0xfb, 0xfd, 0x0f, 0xfc, 0x99, 0xcf, 0xf9, 0xc6, 0xfb,
+   0xfd, 0xe7, 0xf9, 0x3c, 0xe7, 0x73, 0xdf, 0xfb, 0x0d, 0xf3, 0x33, 0x7e,
+   0xf3, 0x27, 0x9f, 0xfb, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e01baf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e01baf.bitmap
new file mode 100644
index 0000000..4ead209
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e01baf.bitmap
@@ -0,0 +1,47 @@
+#define e01baf_width 125
+#define e01baf_height 33
+static char e01baf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0xec, 0x1c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x3e, 0xbc,
+   0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00,
+   0x60, 0x00, 0x70, 0x9a, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x40, 0x88, 0x11, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0xe0, 0x03, 0x08, 0x00, 0x60, 0x00, 0xc0, 0x01, 0xc0, 0x8c,
+   0x38, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc1, 0x00, 0x0c, 0x00, 0x40, 0x00,
+   0x80, 0x03, 0x00, 0x8c, 0x28, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x41, 0x00,
+   0x04, 0x00, 0xc0, 0x00, 0x00, 0x03, 0x00, 0xc4, 0x38, 0x00, 0x00, 0x00,
+   0x00, 0xa0, 0x41, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x43, 0x00, 0x06, 0x00, 0x80, 0x01,
+   0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x20, 0x23, 0x00,
+   0x02, 0xdc, 0x81, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc,
+   0x01, 0x20, 0x27, 0x00, 0x03, 0xb2, 0x83, 0x01, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xcc, 0x30, 0x10, 0x26, 0x30, 0x03, 0xb3, 0x81, 0x01,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x26, 0x10,
+   0x03, 0x30, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x10, 0x1c, 0x00, 0x03, 0x18, 0x80, 0x01, 0x00, 0x06, 0x00, 0x30,
+   0x00, 0xc0, 0x00, 0x06, 0x0c, 0x10, 0x1c, 0x0c, 0x03, 0x18, 0x80, 0x01,
+   0x00, 0x03, 0x00, 0x10, 0x00, 0xf0, 0x00, 0x86, 0x1c, 0x08, 0x1c, 0x1c,
+   0x03, 0x1b, 0x81, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc6,
+   0x1a, 0x08, 0x18, 0x1a, 0x02, 0x9f, 0x80, 0x01, 0x80, 0x01, 0xc0, 0x0c,
+   0x00, 0xc0, 0x00, 0x7c, 0x08, 0x3e, 0x08, 0x08, 0x06, 0xf7, 0x80, 0x01,
+   0xc0, 0x00, 0x40, 0x9c, 0xff, 0xc1, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x1c,
+   0x06, 0x00, 0x80, 0x00, 0x60, 0x00, 0x70, 0x1a, 0x00, 0xc0, 0x00, 0x00,
+   0x14, 0x00, 0x00, 0x14, 0x04, 0x00, 0xc0, 0x00, 0x30, 0x00, 0x3e, 0x08,
+   0x00, 0xc0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x0c, 0x00, 0x40, 0x00,
+   0xf0, 0xff, 0x3f, 0x1c, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x94, 0xff, 0xc1, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1c,
+   0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e01baf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/e01baf1.bitmap
new file mode 100644
index 0000000..f96ec5d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e01baf1.bitmap
@@ -0,0 +1,26 @@
+#define e01baf1_width 69
+#define e01baf1_height 30
+static char e01baf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x40, 0x80, 0x3b, 0x00, 0x00, 0x1c, 0x03, 0x60, 0x00,
+   0x60, 0x40, 0x76, 0x00, 0x00, 0x1a, 0x03, 0x60, 0x00, 0x60, 0x60, 0x36,
+   0x18, 0x00, 0x1a, 0x63, 0x60, 0x00, 0x60, 0x00, 0x06, 0x08, 0x00, 0x18,
+   0x23, 0x60, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x8c, 0x01, 0x60, 0x00,
+   0x60, 0x00, 0x03, 0x06, 0x00, 0x8c, 0x19, 0x60, 0x00, 0x60, 0x60, 0x23,
+   0x0e, 0x00, 0x8c, 0x39, 0x60, 0x00, 0x40, 0xe0, 0x13, 0x0d, 0x06, 0xcc,
+   0x35, 0x60, 0x00, 0xc0, 0xe0, 0x1e, 0x04, 0x06, 0xf8, 0x10, 0x60, 0x00,
+   0xc0, 0x00, 0x00, 0x0e, 0x04, 0xc0, 0x38, 0x20, 0x00, 0x80, 0x00, 0x00,
+   0x0a, 0x04, 0xc6, 0x28, 0x30, 0x00, 0x80, 0x01, 0x00, 0x0e, 0x04, 0x66,
+   0x38, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x3e, 0x00, 0x18, 0x00,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e01bef.bitmap b/src/axiom-website/hyperdoc/bitmaps/e01bef.bitmap
new file mode 100644
index 0000000..908c86b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e01bef.bitmap
@@ -0,0 +1,31 @@
+#define e01bef_width 75
+#define e01bef_height 33
+static char e01bef_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x38, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x7c, 0x00, 0x03, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x36, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x06, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x40, 0x80,
+   0x3b, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x0c, 0x00, 0x60, 0x40, 0x76, 0x00,
+   0x00, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x60, 0x60, 0x36, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x0c, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x0c, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00,
+   0x60, 0x00, 0x03, 0x36, 0x00, 0x00, 0xc3, 0x06, 0x0c, 0x00, 0x60, 0x60,
+   0x23, 0x6e, 0x00, 0x80, 0xc3, 0x0d, 0x0c, 0x00, 0x40, 0xe0, 0x13, 0x2d,
+   0x18, 0x80, 0xa1, 0x05, 0x0c, 0x00, 0xc0, 0xe0, 0x1e, 0x04, 0x18, 0x80,
+   0x81, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0x06, 0x10, 0x80, 0xc1, 0x00,
+   0x04, 0x00, 0x80, 0x00, 0x00, 0x06, 0x10, 0xb0, 0xc1, 0x00, 0x06, 0x00,
+   0x80, 0x01, 0x00, 0x02, 0x10, 0xf0, 0x40, 0x00, 0x02, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x08, 0x70, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e01daf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e01daf.bitmap
new file mode 100644
index 0000000..a772588
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e01daf.bitmap
@@ -0,0 +1,35 @@
+#define e01daf_width 105
+#define e01daf_height 25
+#define e01daf_x_hot -1
+#define e01daf_y_hot -1
+static char e01daf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x06, 0x00, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x0c, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x08, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x10, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x08, 0x70, 0x07, 0x00, 0x00, 0x1c,
+   0x03, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x30, 0x00, 0x0c, 0xc8, 0x0e, 0x00,
+   0x00, 0x1a, 0x03, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x30, 0x00, 0x0c, 0xcc,
+   0x06, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00,
+   0x0c, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x30, 0x00, 0x0c, 0x60, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x30, 0x00, 0x0c, 0x60, 0x00, 0x0b, 0x00, 0x8c, 0xd9, 0x00,
+   0x00, 0x06, 0x96, 0x0d, 0x30, 0x00, 0x0c, 0x6c, 0x84, 0x0d, 0x00, 0x8c,
+   0xb9, 0x01, 0x00, 0x07, 0x9b, 0x1b, 0x30, 0x00, 0x08, 0x7c, 0xc2, 0x04,
+   0x03, 0xcc, 0xb5, 0x60, 0x00, 0x83, 0x49, 0x0b, 0x30, 0x00, 0x18, 0xdc,
+   0xc3, 0x04, 0x03, 0xf8, 0x10, 0x60, 0x00, 0x83, 0x09, 0x01, 0x30, 0x00,
+   0x18, 0x00, 0x40, 0x06, 0x02, 0xc0, 0x18, 0x40, 0x00, 0x83, 0x8c, 0x01,
+   0x10, 0x00, 0x10, 0x00, 0x40, 0x06, 0x02, 0xc6, 0x18, 0x40, 0x60, 0x83,
+   0x8c, 0x01, 0x18, 0x00, 0x30, 0x00, 0xc0, 0x03, 0x02, 0x66, 0x08, 0x40,
+   0xe0, 0x81, 0x87, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x02, 0x01, 0x3e,
+   0x00, 0x20, 0xe0, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x40, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x80, 0x00,
+   0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e01daf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/e01daf1.bitmap
new file mode 100644
index 0000000..40b891d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e01daf1.bitmap
@@ -0,0 +1,83 @@
+#define 1_width 250
+#define 1_height 30
+static char 1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0xce, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3b, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3b, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0xef,
+   0x04, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x19, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x9f, 0x66, 0x04, 0x00, 0x00, 0x07,
+   0xe0, 0x83, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00,
+   0x30, 0x00, 0x38, 0x62, 0x04, 0x00, 0x00, 0x06, 0x00, 0xc7, 0x88, 0x63,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x20, 0x23,
+   0x0e, 0x1f, 0x00, 0x0c, 0x00, 0xc4, 0x88, 0x52, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x7c, 0x80, 0x07, 0x20, 0x00, 0x80, 0x01, 0x1e, 0x7c, 0x00, 0x04,
+   0x00, 0x18, 0x00, 0x00, 0xe0, 0x00, 0x60, 0x23, 0x8a, 0x16, 0x00, 0x1c,
+   0x00, 0x4c, 0x8c, 0x63, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xc0, 0x01,
+   0x30, 0x00, 0x00, 0x01, 0x38, 0x18, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00,
+   0xc0, 0x01, 0x00, 0x31, 0x0e, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0x60,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x01, 0x10, 0x00, 0x00, 0x03,
+   0x38, 0x08, 0x00, 0x02, 0x00, 0x30, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x80, 0x12, 0x00, 0x30, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x68, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x02, 0x34, 0x08, 0x00, 0x03,
+   0x00, 0x20, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x70,
+   0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x68, 0xd0, 0x00,
+   0x18, 0x00, 0x00, 0x06, 0x64, 0x08, 0x00, 0x03, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x3c, 0x00, 0x00, 0x68, 0xd8, 0x00, 0x08, 0x70, 0x07, 0x06,
+   0x64, 0x04, 0x00, 0x01, 0xc7, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00,
+   0x00, 0x68, 0xc8, 0x00, 0x0c, 0xc8, 0x0e, 0x06, 0xe4, 0x04, 0x80, 0x81,
+   0xc6, 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0c, 0x06, 0x64, 0x64, 0x60,
+   0x0c, 0xcc, 0x06, 0x06, 0xc2, 0x04, 0x86, 0x81, 0xc6, 0x60, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x04, 0x02, 0xc4, 0x64, 0x20, 0x0c, 0xc0, 0x00, 0x06,
+   0xc2, 0x04, 0x82, 0x01, 0xc6, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x06, 0x00, 0x30, 0x80, 0x01, 0x00,
+   0x00, 0xc4, 0x62, 0x00, 0x0c, 0x60, 0x00, 0x06, 0x82, 0x03, 0x80, 0x01,
+   0x63, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x60, 0x00, 0x60,
+   0x00, 0x00, 0x02, 0x00, 0x3c, 0x80, 0x01, 0x83, 0x01, 0xc4, 0x63, 0x18,
+   0x0c, 0x60, 0x00, 0x06, 0x82, 0x83, 0x81, 0x01, 0x63, 0x60, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x04, 0x00, 0x78, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x80, 0x21, 0x87, 0x03, 0xc2, 0x31, 0x38, 0x0c, 0x6c, 0x04, 0x06,
+   0x81, 0x83, 0x83, 0x01, 0x63, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x30, 0x80, 0xb1, 0x46,
+   0x03, 0xc2, 0x30, 0x34, 0x08, 0x7c, 0x02, 0x06, 0x01, 0x43, 0x03, 0x01,
+   0x73, 0x60, 0x18, 0x00, 0xc0, 0x00, 0x60, 0x03, 0x00, 0x60, 0x00, 0x18,
+   0x00, 0x8c, 0xe3, 0x7f, 0x30, 0x00, 0x1f, 0x02, 0x83, 0xcf, 0xfc, 0x10,
+   0x18, 0xdc, 0x03, 0xc6, 0x07, 0x01, 0x03, 0x03, 0x3e, 0x60, 0x18, 0x00,
+   0x60, 0x00, 0x20, 0xc7, 0xff, 0x60, 0x00, 0x0c, 0x00, 0x44, 0x03, 0x00,
+   0x30, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x38, 0x18, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x01, 0x03, 0x30, 0x20, 0x00, 0x00, 0x30, 0x00, 0xb8, 0x06,
+   0x00, 0x60, 0x00, 0x06, 0x00, 0x07, 0x03, 0x00, 0x30, 0x00, 0x00, 0x05,
+   0x01, 0x00, 0x00, 0x28, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x82,
+   0x31, 0x30, 0x00, 0x00, 0x18, 0x00, 0x1f, 0x02, 0x00, 0x60, 0x00, 0x03,
+   0xe0, 0x03, 0x01, 0x00, 0x30, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x38,
+   0x30, 0x00, 0x00, 0x01, 0x00, 0x80, 0x01, 0x86, 0x19, 0x10, 0x00, 0x00,
+   0xf8, 0xff, 0x1f, 0x07, 0x00, 0x60, 0x00, 0xff, 0xff, 0x03, 0xe1, 0x7f,
+   0x30, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x01,
+   0x00, 0x80, 0x01, 0x84, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5,
+   0xff, 0x60, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xfc, 0x00, 0x00, 0xb0,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0xb0, 0x00, 0x08,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf8, 0x01, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x40, 0x00, 0x00, 0xf0, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02adf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02adf.bitmap
new file mode 100644
index 0000000..ac8d7bc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02adf.bitmap
@@ -0,0 +1,253 @@
+#define e02adf_width 320
+#define e02adf_height 75
+static char e02adf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x70, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x07, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0xff, 0x01, 0x08, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0x1f, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x86, 0x01, 0x0c, 0xfe, 0x41,
+   0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x18, 0xc0, 0xc0, 0x3f, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x86,
+   0x00, 0x04, 0x00, 0xc0, 0x00, 0x80, 0x01, 0x00, 0x3c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x08, 0x40,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x83, 0x00, 0x06, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x30, 0x08, 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x83, 0x00, 0x06, 0x00, 0x80,
+   0x01, 0x80, 0x01, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x08, 0x60, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x02, 0xdc, 0x81, 0x01, 0x80, 0x01, 0x00, 0xf0, 0x01, 0x00, 0x00,
+   0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x20,
+   0xc0, 0x1d, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0xb2, 0x83, 0x01, 0x80, 0x01, 0x00,
+   0xe0, 0x01, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x00, 0x30, 0x20, 0x3b, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x63, 0x30, 0x00, 0xc0, 0x00, 0x18, 0x80, 0x01, 0x06, 0x03, 0xb3, 0x81,
+   0x01, 0x80, 0x01, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x63, 0x30, 0x00, 0xc0,
+   0x00, 0x60, 0x00, 0x00, 0x03, 0x18, 0x80, 0x31, 0x30, 0x1b, 0x18, 0x00,
+   0x00, 0x00, 0xfe, 0x8f, 0x61, 0x10, 0x18, 0xf0, 0x00, 0x1e, 0x80, 0x81,
+   0x19, 0x03, 0x30, 0x80, 0x01, 0xfe, 0x7f, 0x00, 0xc0, 0x03, 0x00, 0x80,
+   0x61, 0x10, 0x30, 0xf0, 0x00, 0x20, 0x60, 0xc0, 0x03, 0x18, 0x80, 0x30,
+   0x00, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x00, 0x18, 0xc0,
+   0x00, 0x18, 0x80, 0x81, 0x19, 0x03, 0x18, 0x80, 0x01, 0xfe, 0x7f, 0x00,
+   0x80, 0x03, 0x00, 0x80, 0x31, 0x00, 0x30, 0xc0, 0x00, 0x00, 0x60, 0x00,
+   0x03, 0x18, 0x00, 0x30, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x31, 0x0c, 0x18, 0xc0, 0x00, 0x18, 0x80, 0x81, 0x10, 0x03, 0x18, 0x80,
+   0x01, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x31, 0x0c, 0x30, 0xc0,
+   0x00, 0x18, 0x60, 0x00, 0x03, 0x18, 0x60, 0x30, 0x80, 0x01, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0xb1, 0x1c, 0x18, 0xc0, 0x00, 0x18, 0xc0, 0x80,
+   0x10, 0x03, 0x1b, 0x81, 0x01, 0x80, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x80,
+   0xb1, 0x1c, 0x30, 0xc0, 0x00, 0x38, 0x60, 0x00, 0x03, 0x0c, 0xe0, 0x30,
+   0xb0, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x80, 0xb9, 0x1a, 0x18, 0xc0,
+   0x00, 0x18, 0xc0, 0x80, 0x10, 0x02, 0x9f, 0x80, 0x01, 0x80, 0x01, 0x00,
+   0x60, 0x00, 0x00, 0x80, 0xb9, 0x1a, 0x30, 0xc0, 0x00, 0x34, 0x60, 0x00,
+   0x03, 0x0c, 0xd0, 0x20, 0xf0, 0x09, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x7f, 0x88, 0xff, 0xc1, 0x00, 0x18, 0xf8, 0x87, 0x10, 0x06, 0xf7, 0x80,
+   0x01, 0x80, 0x01, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7f, 0x08, 0xff, 0xc3,
+   0x00, 0x30, 0xfe, 0x07, 0x83, 0x7f, 0xc0, 0x60, 0x70, 0x0f, 0x18, 0x00,
+   0x00, 0x00, 0xf8, 0x00, 0x00, 0x1c, 0x18, 0xc0, 0x00, 0x18, 0x00, 0x80,
+   0x10, 0x06, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x38, 0x00, 0x00, 0x00,
+   0x00, 0x1c, 0x30, 0xc0, 0x00, 0x10, 0x60, 0x00, 0x03, 0x00, 0x40, 0x60,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x14, 0x18, 0xc0,
+   0x20, 0x18, 0x00, 0x80, 0x19, 0x04, 0x00, 0xc0, 0x00, 0x80, 0x01, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x14, 0x30, 0xc0, 0x40, 0x10, 0x60, 0x00,
+   0x03, 0x00, 0x40, 0x40, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x03,
+   0x00, 0x1c, 0x18, 0xf0, 0x33, 0x7e, 0x00, 0x00, 0x0f, 0x0c, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x80, 0x01, 0x00, 0x1c, 0x30, 0xf0,
+   0x63, 0x18, 0x60, 0xc0, 0x0f, 0x00, 0x60, 0xc0, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x1c, 0x03, 0x00, 0x00, 0x18, 0x00, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x40, 0x18, 0x60, 0x00, 0x00, 0x00, 0x60, 0x80,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x03, 0x00, 0x00, 0x18, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x0b, 0x60, 0x00,
+   0x00, 0x00, 0x2c, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x02, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0xc3, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc1, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf8, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02adf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02adf1.bitmap
new file mode 100644
index 0000000..1136084
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02adf1.bitmap
@@ -0,0 +1,173 @@
+#define e02adf1_width 270
+#define e02adf1_height 60
+static char e02adf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe0, 0x0e, 0x00, 0x00, 0x00,
+   0xdc, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x70, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x90, 0x1d, 0x00, 0x00, 0x00, 0xb2, 0x03,
+   0x00, 0x02, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0xc8, 0x0e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x98, 0x0d, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x06,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0xd9, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x80, 0x01, 0xf8, 0xff, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0xe0, 0xff, 0x03, 0x0c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f,
+   0x00, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0,
+   0x00, 0xf8, 0xff, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0xe0, 0xff,
+   0x03, 0x0c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x0c,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0xf8, 0x39, 0xe7, 0x07, 0x18, 0x00, 0x00, 0x00, 0x0c,
+   0x60, 0xe0, 0xe7, 0x78, 0x9c, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xd8, 0x08, 0x00, 0x00, 0x00,
+   0x1b, 0x71, 0x67, 0xc6, 0x0d, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x6c, 0xc4,
+   0x9d, 0xd9, 0x98, 0x01, 0x00, 0x00, 0x80, 0x8d, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0xf8, 0x04, 0x00, 0x00, 0x00, 0x9f, 0x30,
+   0x62, 0xc6, 0x08, 0x18, 0x00, 0x00, 0x00, 0x08, 0x7c, 0xc2, 0x88, 0x89,
+   0xf1, 0x00, 0x00, 0x00, 0x80, 0x4f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0xb8, 0x07, 0x00, 0x00, 0x00, 0xf7, 0x30, 0x62, 0xc6,
+   0x08, 0x18, 0x00, 0x00, 0x00, 0x18, 0xdc, 0xc3, 0x88, 0xf1, 0x61, 0x00,
+   0x00, 0x00, 0x80, 0x7b, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x62, 0xc6, 0x08, 0x08,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0xc0, 0x88, 0x99, 0xf1, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x62, 0xc6, 0x08, 0x0c, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0xc0, 0x88, 0x89, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0xf7, 0xef, 0x1d, 0x04, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0xe0, 0xdd, 0xfb, 0x9f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xdc, 0x01, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0xb2, 0x03, 0xfc, 0xff, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x01, 0xfc,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x02, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x3b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0xb2, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x76, 0x00,
+   0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xb3,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x36, 0x00, 0xc0, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0x1f, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0xf8, 0x39, 0x1e, 0xce, 0x01, 0x00,
+   0x00, 0x00, 0x03, 0x3f, 0xe7, 0xfc, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x1b, 0x71, 0x67, 0x36, 0xcc, 0x00, 0x00, 0x00, 0x60,
+   0x23, 0xee, 0xcc, 0xb8, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x9f, 0x30, 0x62, 0x62, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x13, 0x46,
+   0xcc, 0x18, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf7,
+   0x30, 0x62, 0x7c, 0x30, 0x00, 0x00, 0x00, 0xe0, 0x1e, 0x46, 0xcc, 0x18,
+   0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x30, 0x62,
+   0x66, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xcc, 0x18, 0x01, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x30, 0x62, 0xe2, 0x68,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xcc, 0x18, 0x81, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x78, 0xf7, 0xfe, 0xce, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0xef, 0xfe, 0xbd, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02aef.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02aef.bitmap
new file mode 100644
index 0000000..151587b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02aef.bitmap
@@ -0,0 +1,117 @@
+#define e02aef_width 270
+#define e02aef_height 40
+static char e02aef_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0xff, 0x1f, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00,
+   0x1f, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x38, 0xc4,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00,
+   0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x46, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x20, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xc3, 0x30, 0x80, 0x81, 0x7f,
+   0x08, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x60, 0x66, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x61, 0x18, 0x30, 0xf8, 0x07, 0x01, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0xc1, 0x10, 0x80, 0x00, 0x00, 0x18, 0x00,
+   0x30, 0x00, 0xc0, 0x01, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x60, 0x08, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x80, 0x61, 0x10, 0xc0, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x30, 0x08, 0x18, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x80, 0x60, 0x10, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x80, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x08,
+   0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0x0f, 0x00, 0x60,
+   0x00, 0x40, 0x80, 0x3b, 0x30, 0x00, 0x30, 0x00, 0x00, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x08, 0x70,
+   0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x60, 0x00, 0x60,
+   0x40, 0x76, 0x30, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x0c, 0xc8, 0x0e, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x06, 0x30, 0xc0, 0x60, 0x60, 0x36,
+   0x30, 0x00, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6,
+   0x60, 0x00, 0x00, 0x03, 0x18, 0x60, 0x0c, 0xcc, 0x06, 0x06, 0x00, 0x00,
+   0x00, 0xff, 0x31, 0x8c, 0x07, 0x30, 0x30, 0x63, 0x00, 0x06, 0x30, 0xc0,
+   0xff, 0x0f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x20, 0x60,
+   0xc0, 0x03, 0x18, 0x20, 0x0c, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x06, 0x06, 0x30, 0x30, 0x63, 0x00, 0x03, 0x30, 0xc0, 0xff, 0x0f,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x60, 0x00, 0x03,
+   0x18, 0x00, 0x0c, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06,
+   0x06, 0x30, 0x10, 0x62, 0x00, 0x03, 0x30, 0x00, 0x30, 0x00, 0x00, 0x03,
+   0x00, 0x18, 0x00, 0x60, 0x00, 0x63, 0x18, 0x60, 0x00, 0x03, 0x18, 0x18,
+   0x0c, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x30, 0x16, 0x06, 0x18,
+   0x10, 0x62, 0x60, 0x23, 0x30, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00, 0x08,
+   0x00, 0x78, 0x00, 0x63, 0x39, 0x60, 0x00, 0x03, 0x0c, 0x38, 0x0c, 0x6c,
+   0x04, 0x06, 0x00, 0x00, 0x00, 0x66, 0x30, 0x17, 0x06, 0x18, 0x10, 0x42,
+   0xe0, 0x13, 0x30, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x73, 0x35, 0x60, 0x00, 0x03, 0x0c, 0x34, 0x08, 0x7c, 0x02, 0x86,
+   0x01, 0x00, 0x00, 0x66, 0xe0, 0x0f, 0x06, 0xff, 0x10, 0xc2, 0xe0, 0x1e,
+   0x30, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x60, 0x06, 0x00, 0x60, 0x00, 0xfe,
+   0x10, 0xfe, 0x07, 0x83, 0x7f, 0x10, 0x18, 0xdc, 0x03, 0x86, 0x01, 0x00,
+   0x00, 0x66, 0x00, 0x00, 0x06, 0x00, 0x10, 0xc2, 0x00, 0x00, 0x10, 0x00,
+   0x30, 0x00, 0x60, 0x00, 0x20, 0xce, 0xff, 0x60, 0x00, 0x00, 0x38, 0x60,
+   0x00, 0x03, 0x00, 0x38, 0x18, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x06, 0x00, 0x30, 0x83, 0x00, 0x00, 0x18, 0x00, 0x30, 0x00,
+   0x30, 0x00, 0x38, 0x0d, 0x00, 0x60, 0x00, 0x00, 0x28, 0x60, 0x00, 0x03,
+   0x00, 0x28, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x80,
+   0x1f, 0x00, 0xe0, 0x81, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x1f, 0x04, 0x00, 0x60, 0x00, 0x00, 0x38, 0x60, 0xc0, 0x0f, 0x00, 0x38,
+   0x30, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x0e,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xff, 0x60,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xf8, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02agf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02agf.bitmap
new file mode 100644
index 0000000..ffb99ef
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02agf.bitmap
@@ -0,0 +1,51 @@
+#define e02agf_width 283
+#define e02agf_height 16
+static char e02agf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0d, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xef, 0x7d, 0x80, 0x01, 0x00, 0x06,
+   0x00, 0xfe, 0x01, 0x00, 0x80, 0x01, 0x80, 0x7f, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00,
+   0xa0, 0x33, 0x00, 0xff, 0x3f, 0x00, 0x1d, 0x67, 0x80, 0x01, 0x00, 0x06,
+   0x00, 0x3a, 0x03, 0x00, 0x80, 0x01, 0x80, 0xce, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0xce, 0x00, 0x00, 0x00, 0x00,
+   0xa0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x63, 0xe0, 0x07, 0x00, 0x06,
+   0x00, 0x1a, 0x63, 0x00, 0x80, 0x01, 0x80, 0xc6, 0x1c, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0xc6, 0x00, 0x00, 0xe0, 0x00,
+   0x80, 0x31, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x63, 0xc0, 0x01, 0xf8, 0xff,
+   0x01, 0x18, 0x7b, 0x00, 0xfe, 0x7f, 0x00, 0xc6, 0x66, 0x00, 0xff, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0xc6, 0x00, 0x00, 0xe0, 0x00,
+   0xc0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x86, 0x61, 0xc0, 0x00, 0xf8, 0xff,
+   0x01, 0x0c, 0x63, 0x00, 0xfe, 0x7f, 0x00, 0xc3, 0x66, 0x00, 0xff, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0xc3, 0x00, 0x00, 0x30, 0x00,
+   0xc0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x86, 0x71, 0xc0, 0x00, 0x00, 0x06,
+   0x00, 0x0c, 0x63, 0x00, 0x80, 0x01, 0x00, 0xc3, 0x66, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc3, 0xec, 0x1c, 0x78, 0x00,
+   0xc0, 0x58, 0x00, 0xff, 0x3f, 0x00, 0x86, 0xb1, 0xc0, 0x00, 0x00, 0x06,
+   0x00, 0x8c, 0x61, 0x00, 0x80, 0x01, 0x00, 0x63, 0x60, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x63, 0xbc, 0x13, 0x30, 0x00,
+   0xc0, 0x58, 0x00, 0x00, 0x00, 0x00, 0x86, 0xb1, 0xc0, 0x00, 0x00, 0x06,
+   0x00, 0xcc, 0x60, 0x00, 0x80, 0x01, 0x00, 0x33, 0x30, 0x00, 0xc0, 0x00,
+   0xc0, 0x80, 0x01, 0x03, 0x00, 0x03, 0x00, 0x33, 0x9a, 0x11, 0x10, 0x00,
+   0x60, 0x38, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x70, 0xe0, 0x00, 0x00, 0x06,
+   0x00, 0x7e, 0x60, 0x00, 0x80, 0x01, 0x80, 0x1f, 0x30, 0x00, 0xc0, 0x00,
+   0xc0, 0x80, 0x01, 0x03, 0x00, 0x03, 0x80, 0x1f, 0x88, 0x11, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x06,
+   0x00, 0x06, 0x60, 0x00, 0x80, 0x01, 0x80, 0x01, 0x48, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0x8c, 0x38, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x06,
+   0x00, 0x06, 0x60, 0x00, 0x80, 0x01, 0x80, 0x01, 0x44, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0x8c, 0x28, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0xf8, 0x01, 0x00, 0x00, 0x80, 0x01, 0x7e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc4, 0x38, 0x0b, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
+   0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x07, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02agf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02agf1.bitmap
new file mode 100644
index 0000000..2d66a98
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02agf1.bitmap
@@ -0,0 +1,103 @@
+#define e02agf1_width 265
+#define e02agf1_height 35
+static char e02agf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x80, 0x03, 0xf0, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x80, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0x3f, 0x00, 0x02, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x10,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x30,
+   0x00, 0x83, 0x7f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xa6, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x03, 0x18, 0xf8, 0x87,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x10, 0x00, 0x01,
+   0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x1c, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x0c, 0x01, 0x08, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x61, 0x10, 0x80, 0x01, 0x00, 0x20,
+   0x00, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x06, 0x01, 0x0c, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x80, 0x60, 0x10, 0x80, 0x01, 0x00, 0x60, 0x00, 0xc0,
+   0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x06, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x80, 0x1f, 0xf8, 0x01,
+   0x00, 0x00, 0x60, 0x00, 0x80, 0x00, 0x77, 0x60, 0x00, 0xc0, 0x00, 0x00,
+   0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x04, 0xb8, 0x03, 0x03, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00,
+   0x60, 0x00, 0xc0, 0x80, 0xec, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06,
+   0x64, 0x07, 0x03, 0x00, 0x00, 0x00, 0x8c, 0xc1, 0x00, 0x06, 0x30, 0x80,
+   0xc1, 0xc0, 0x6c, 0x60, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x31, 0x18, 0x80, 0x01, 0x03, 0x18, 0x06, 0x66, 0x03,
+   0x03, 0x00, 0xc0, 0x7f, 0x86, 0x41, 0x80, 0x19, 0x30, 0x60, 0xc6, 0x00,
+   0x0c, 0x60, 0x00, 0xff, 0x3f, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x30, 0x08, 0x80, 0x00, 0x03, 0x08, 0x06, 0x60, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0xc6, 0x00, 0x80, 0x19, 0x30, 0x60, 0xc6, 0x00, 0x06, 0x60,
+   0x00, 0xff, 0x3f, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0xc6, 0x30, 0x80, 0x10, 0x30, 0x20, 0xc4, 0x00, 0x06, 0x60, 0x00, 0xc0,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x18, 0xc0, 0x18, 0x06, 0x60,
+   0x00, 0x03, 0x06, 0x06, 0x30, 0x00, 0x03, 0x00, 0x00, 0x07, 0xc6, 0x72,
+   0x80, 0x10, 0x18, 0x20, 0xc4, 0xc0, 0x46, 0x60, 0x00, 0xc0, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x01, 0x00, 0x1e, 0xc0, 0x58, 0x0e, 0xe0, 0x80, 0x01,
+   0x0e, 0x06, 0x36, 0x02, 0x03, 0x00, 0x80, 0x19, 0xe6, 0x6a, 0x80, 0x10,
+   0x18, 0x20, 0x84, 0xc0, 0x27, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0xc0, 0x5c, 0x0d, 0xd0, 0x80, 0x01, 0x0d, 0x04,
+   0x3e, 0x01, 0x03, 0x00, 0x80, 0x19, 0xfc, 0x21, 0x80, 0x10, 0xff, 0x20,
+   0x84, 0xc1, 0x3d, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0xc6, 0x00,
+   0x00, 0x18, 0x80, 0x3f, 0x04, 0xc0, 0xf0, 0x0f, 0x0c, 0x0c, 0xee, 0x01,
+   0x03, 0x00, 0x80, 0x19, 0x00, 0x70, 0x80, 0x10, 0x00, 0x20, 0x84, 0x01,
+   0x00, 0x20, 0x00, 0xc0, 0x00, 0x00, 0x06, 0x00, 0xc2, 0xf1, 0x3f, 0x18,
+   0x00, 0x00, 0x0e, 0x40, 0x00, 0x00, 0x04, 0x0c, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x18, 0x00, 0x50, 0x88, 0x19, 0x00, 0x60, 0x06, 0x01, 0x00, 0x30,
+   0x00, 0xc0, 0x00, 0x00, 0x03, 0x80, 0xa3, 0x01, 0x00, 0x18, 0x00, 0x00,
+   0x0a, 0x41, 0x00, 0x00, 0x04, 0x08, 0x00, 0x80, 0x01, 0x00, 0x00, 0x0c,
+   0x00, 0x70, 0x0c, 0x0f, 0x00, 0xc0, 0x03, 0x03, 0x00, 0x10, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0xf0, 0x81, 0x01, 0x00, 0x18, 0x00, 0x00, 0x8e, 0x61,
+   0x00, 0x00, 0x06, 0x18, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x18, 0x00, 0x00, 0x00, 0x80,
+   0xff, 0xff, 0x81, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00,
+   0x06, 0x10, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xf0, 0x3f, 0x18, 0x00, 0x00, 0x00, 0x2d, 0x00, 0xc0, 0x02, 0x20,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x7e, 0x00, 0x00, 0x80, 0x3d, 0x00, 0xc0, 0x03, 0x40, 0x00, 0x20,
+   0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02ahf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02ahf.bitmap
new file mode 100644
index 0000000..a7cbaff
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02ahf.bitmap
@@ -0,0 +1,110 @@
+#define e02ahf_width 250
+#define e02ahf_height 40
+static char e02ahf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x1d, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff,
+   0x8f, 0x37, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x80, 0x4f, 0x33, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x80, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x1c, 0x31, 0xfc, 0x0f, 0x06, 0x00, 0x00, 0xc0,
+   0xff, 0x07, 0x08, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf8, 0x07,
+   0x80, 0x61, 0x18, 0xc0, 0xc0, 0x3f, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x90, 0x51, 0x00, 0x00, 0x06, 0xf0, 0x0f, 0x60, 0x18, 0x06, 0x0c, 0xfc,
+   0x43, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x80, 0x60, 0x08, 0x40,
+   0x00, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x70, 0x00, 0xb0, 0x59, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x20, 0x18, 0x02, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x60, 0x00, 0x00, 0x08, 0x00,
+   0x18, 0x00, 0xe0, 0x00, 0x80, 0x38, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x30,
+   0x0c, 0x02, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x40, 0x30, 0x08, 0x60, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0c, 0x02, 0x06, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x07, 0x00, 0x30, 0x00, 0x20,
+   0xc0, 0x1d, 0x18, 0x00, 0x18, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x07, 0x00, 0x0c, 0x00, 0x02, 0xdc, 0x81, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x06, 0x00, 0x30, 0x00, 0x30, 0x20, 0x3b, 0x18, 0x00,
+   0x18, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00,
+   0x0c, 0x00, 0x03, 0xb2, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06,
+   0x03, 0x18, 0x60, 0x30, 0x30, 0x1b, 0x18, 0x00, 0x18, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x03, 0x06, 0x18, 0x03, 0xb3,
+   0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x0c, 0x18, 0x98, 0x31,
+   0x00, 0x03, 0x18, 0xe0, 0xff, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x06, 0x01, 0x06, 0x08, 0x03, 0x30, 0x80, 0x01, 0x00, 0x00,
+   0x80, 0xff, 0x18, 0xc3, 0x0c, 0x18, 0x98, 0x31, 0x80, 0x01, 0x18, 0xe0,
+   0xff, 0x07, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00,
+   0x06, 0x00, 0x03, 0x18, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0x43,
+   0x08, 0x18, 0x08, 0x31, 0x80, 0x01, 0x18, 0x00, 0x18, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0x00, 0x06, 0x06, 0x03, 0x18,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x18, 0x4b, 0x08, 0x0c, 0x08, 0x31,
+   0xb0, 0x11, 0x18, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x30,
+   0x00, 0x18, 0xcb, 0x01, 0x03, 0x0e, 0x03, 0x1b, 0x81, 0x01, 0x00, 0x00,
+   0x00, 0x33, 0x98, 0x4b, 0x08, 0x0c, 0x08, 0x21, 0xf0, 0x09, 0x18, 0x00,
+   0x18, 0x00, 0xc0, 0x00, 0x00, 0x02, 0x00, 0x3c, 0x00, 0x98, 0xab, 0x01,
+   0x03, 0x0d, 0x02, 0x9f, 0x80, 0x61, 0x00, 0x00, 0x00, 0x33, 0xf0, 0x47,
+   0x88, 0x7f, 0x08, 0x61, 0x70, 0x0f, 0x18, 0x00, 0x18, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0xf0, 0x87, 0xe0, 0x1f, 0x04, 0x06, 0xf7,
+   0x80, 0x61, 0x00, 0x00, 0x00, 0x33, 0x00, 0x40, 0x08, 0x00, 0x08, 0x61,
+   0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x60, 0x00, 0xb0, 0x01, 0x00, 0x30,
+   0x00, 0x00, 0xc0, 0x01, 0x00, 0x0e, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x00, 0xc0, 0x0c, 0x00, 0x98, 0x41, 0x00, 0x00, 0x0c, 0x00,
+   0x18, 0x00, 0x30, 0x00, 0x90, 0xe3, 0x7f, 0x30, 0x00, 0x00, 0x40, 0x01,
+   0x00, 0x0a, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x80,
+   0x07, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x5c, 0x03, 0x00, 0x30, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x0e, 0x0c, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x0f, 0x01, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0xfc, 0xff, 0x8f, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xe2, 0x7f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02ahf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02ahf1.bitmap
new file mode 100644
index 0000000..7737442
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02ahf1.bitmap
@@ -0,0 +1,100 @@
+#define e02ahf_width 230
+#define e02ahf_height 40
+static char e02ahf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0xff, 0xc3, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0xa3, 0x19, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x87, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0xc0, 0x00, 0x80, 0x01, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x20, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc4, 0x28, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0x1f, 0x20, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x30,
+   0x0c, 0x03, 0x30, 0xf8, 0x07, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xcc,
+   0x2c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x18, 0x30, 0xf0, 0x0f, 0x01,
+   0x80, 0x01, 0x00, 0x00, 0x10, 0x0c, 0x01, 0x10, 0x00, 0x00, 0x03, 0x00,
+   0x06, 0x00, 0x38, 0x00, 0x40, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60,
+   0x08, 0x10, 0x00, 0x00, 0x03, 0x80, 0x01, 0x00, 0x00, 0x18, 0x06, 0x01,
+   0x18, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x18, 0x00, 0x00, 0x02, 0xe0, 0x07,
+   0x00, 0x00, 0x08, 0x06, 0x01, 0x18, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
+   0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x08, 0x18,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x06, 0x00, 0x08, 0x70,
+   0x07, 0x06, 0x00, 0x06, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x1f, 0x00, 0x30, 0x00, 0x08, 0x70, 0x07, 0x06, 0x00, 0x00, 0xc6, 0x00,
+   0x00, 0x06, 0x00, 0x0c, 0xc8, 0x0e, 0x06, 0x00, 0x06, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x00, 0x30, 0x00, 0x0c, 0xc8, 0x0e,
+   0x06, 0x00, 0x00, 0xc6, 0x60, 0x00, 0x03, 0x18, 0x0c, 0xcc, 0x06, 0x06,
+   0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x0c,
+   0x18, 0x60, 0x0c, 0xcc, 0x06, 0x06, 0xf0, 0x1f, 0xc3, 0x98, 0x01, 0x03,
+   0x66, 0x0c, 0xc0, 0x00, 0x06, 0xf8, 0xff, 0x01, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x18, 0x04, 0x18, 0x20, 0x0c, 0xc0, 0x00, 0x06, 0x00,
+   0x00, 0x63, 0x98, 0x01, 0x03, 0x66, 0x0c, 0x60, 0x00, 0x06, 0xf8, 0xff,
+   0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x18, 0x00,
+   0x0c, 0x60, 0x00, 0x06, 0x00, 0x00, 0x63, 0x08, 0x01, 0x03, 0x42, 0x0c,
+   0x60, 0x00, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x0c,
+   0x60, 0x0c, 0x03, 0x18, 0x18, 0x0c, 0x60, 0x00, 0x06, 0xc0, 0x01, 0x63,
+   0x09, 0x81, 0x01, 0x42, 0x0c, 0x6c, 0x04, 0x06, 0x00, 0x06, 0x00, 0x30,
+   0x00, 0x00, 0x01, 0x00, 0x0f, 0x60, 0x2c, 0x07, 0x0c, 0x38, 0x0c, 0x6c,
+   0x04, 0x06, 0x60, 0x06, 0x73, 0x09, 0x81, 0x01, 0x42, 0x08, 0x7c, 0x02,
+   0x06, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x60, 0xae,
+   0x06, 0x0c, 0x34, 0x08, 0x7c, 0x02, 0x06, 0x60, 0x06, 0xfe, 0x08, 0xf1,
+   0x0f, 0x42, 0x18, 0xdc, 0x03, 0x06, 0x00, 0x06, 0x00, 0x18, 0x00, 0xcc,
+   0x00, 0x00, 0x0c, 0xc0, 0x1f, 0x82, 0x7f, 0x10, 0x18, 0xdc, 0x03, 0x06,
+   0x60, 0x06, 0x00, 0x08, 0x01, 0x00, 0x42, 0x18, 0x00, 0x00, 0x02, 0x00,
+   0x06, 0x00, 0x0c, 0x00, 0xc4, 0xf1, 0x3f, 0x0c, 0x00, 0x00, 0x07, 0x00,
+   0x38, 0x18, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x98, 0x01, 0x00, 0x66,
+   0x10, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0xa7, 0x01, 0x00,
+   0x0c, 0x00, 0x00, 0x05, 0x00, 0x28, 0x10, 0x00, 0x00, 0x03, 0x00, 0x03,
+   0x00, 0xf0, 0x00, 0x00, 0x3c, 0x30, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x03, 0xe0, 0x83, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x07, 0x00, 0x38, 0x30,
+   0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc3, 0x01, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x01, 0x80, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0xf1, 0x3f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xc0,
+   0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02ajf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02ajf.bitmap
new file mode 100644
index 0000000..bf39484
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02ajf.bitmap
@@ -0,0 +1,94 @@
+#define e02ajf_width 245
+#define e02ajf_height 35
+static char e02ajf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1d, 0x60, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
+   0x87, 0x37, 0x60, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x0e, 0xc0, 0x47, 0x33, 0x60, 0x00, 0x03,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0xc0, 0x80, 0xff, 0x0f, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x0e, 0x31, 0xfe, 0x07, 0x03, 0x00, 0xc0, 0xe0, 0xff, 0x03,
+   0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0xc0, 0xc0, 0x30, 0x0c,
+   0x60, 0xe0, 0x1f, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x88, 0x51, 0x60,
+   0x00, 0x03, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x06, 0xfe, 0x21, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x60, 0x40, 0x30, 0x04, 0x20, 0x00, 0x00, 0x06, 0x00,
+   0x0c, 0x00, 0x38, 0x00, 0x98, 0x59, 0x60, 0x00, 0x03, 0x00, 0x60, 0x10,
+   0x0c, 0x01, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60, 0x60,
+   0x18, 0x04, 0x30, 0x00, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x70, 0x00, 0x80,
+   0x38, 0x60, 0xc0, 0x0f, 0x00, 0x60, 0x18, 0x06, 0x01, 0x03, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x60, 0x20, 0x18, 0x04, 0x30, 0x00, 0x00,
+   0x0c, 0x00, 0x0c, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x60, 0x08, 0x06, 0x01, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x80, 0x1f, 0xf0,
+   0x33, 0x00, 0x18, 0x00, 0x10, 0xe0, 0x0e, 0x0c, 0x00, 0x0c, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xf0, 0x33, 0x00, 0x06, 0x00, 0x01,
+   0xee, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x33, 0x00, 0x18, 0x00, 0x18,
+   0x90, 0x1d, 0x0c, 0x00, 0x0c, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x33, 0x00, 0x06, 0x80, 0x01, 0xd9, 0xc1, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x03, 0x00, 0x0c, 0x30, 0x18, 0x98, 0x0d, 0x0c, 0x00, 0x0c,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x03,
+   0x8c, 0x81, 0xd9, 0xc0, 0x00, 0x00, 0xc0, 0x7f, 0x0c, 0x03, 0x00, 0x0c,
+   0xcc, 0x18, 0x80, 0x01, 0x0c, 0xf0, 0xff, 0x03, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x03, 0x84, 0x01, 0x18, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x8c, 0x81, 0x01, 0x0c, 0xcc, 0x18, 0xc0, 0x00, 0x0c,
+   0xf0, 0xff, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01,
+   0x00, 0x03, 0x80, 0x01, 0x0c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x61,
+   0x06, 0x0c, 0x84, 0x18, 0xc0, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x80, 0x01,
+   0x00, 0x06, 0x00, 0x18, 0x00, 0x8c, 0x81, 0x01, 0x03, 0x83, 0x01, 0x0c,
+   0xc0, 0x00, 0x00, 0x00, 0x07, 0x8c, 0x65, 0x06, 0x06, 0x84, 0x18, 0xd8,
+   0x08, 0x0c, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0x02, 0x00, 0x1e, 0x00,
+   0x8c, 0x85, 0x80, 0x01, 0x87, 0x81, 0x8d, 0xc0, 0x00, 0x00, 0x80, 0x19,
+   0xcc, 0x25, 0x04, 0x06, 0x84, 0x10, 0xf8, 0x04, 0x0c, 0x00, 0x0c, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xcc, 0x05, 0x80, 0x81, 0x06,
+   0x81, 0x4f, 0xc0, 0x30, 0x00, 0x80, 0x19, 0xf8, 0x23, 0xc4, 0x3f, 0x84,
+   0x30, 0xb8, 0x07, 0x0c, 0x00, 0x0c, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00,
+   0x18, 0x00, 0xf8, 0x63, 0xf0, 0x0f, 0x02, 0x83, 0x7b, 0xc0, 0x30, 0x00,
+   0x80, 0x19, 0x00, 0x20, 0x04, 0x00, 0x84, 0x30, 0x00, 0x00, 0x04, 0x00,
+   0x0c, 0x00, 0x30, 0x00, 0x98, 0xf3, 0x3f, 0x18, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x07, 0x03, 0x00, 0x40, 0x20, 0x00, 0x00, 0x18, 0x00, 0x20, 0x04,
+   0x00, 0xcc, 0x20, 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x48,
+   0x03, 0x00, 0x18, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x05, 0x02, 0x00, 0x60,
+   0x20, 0x00, 0x00, 0x0c, 0x00, 0x20, 0x04, 0x00, 0x78, 0x60, 0x00, 0x00,
+   0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0e, 0x01, 0x00, 0x18, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x07, 0x06, 0x00, 0x20, 0x20, 0x00, 0x00, 0x0c, 0x00,
+   0x60, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06,
+   0xc0, 0x87, 0x03, 0x00, 0x18, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x04,
+   0x00, 0x30, 0x10, 0x00, 0x00, 0x12, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x87, 0xf2, 0x3f, 0x18,
+   0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x7e, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02baf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02baf.bitmap
new file mode 100644
index 0000000..4c41f83
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02baf.bitmap
@@ -0,0 +1,76 @@
+#define e02baf_width 200
+#define e02baf_height 35
+static char e02baf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xec, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0xff, 0x3f, 0xbc, 0x01, 0x03, 0x3c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x3e, 0x9a, 0x01, 0x03, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x88, 0xf1, 0x3f, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x40, 0x8c, 0x02, 0x03, 0xc7,
+   0x00, 0x00, 0x00, 0x1e, 0x7c, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0xcc, 0x02, 0x03,
+   0x67, 0x00, 0x00, 0x00, 0x38, 0x18, 0x80, 0x01, 0x00, 0x08, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xc4, 0x01,
+   0x03, 0x7e, 0x00, 0x00, 0x00, 0x38, 0x08, 0x80, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x34, 0x08, 0xc0, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x64, 0x08, 0xc0, 0x00, 0x00,
+   0x30, 0x00, 0xe0, 0x23, 0xc0, 0x1d, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x64, 0x04, 0x40, 0x80,
+   0x3b, 0x30, 0x00, 0x20, 0x36, 0x20, 0x3b, 0x18, 0xc0, 0xff, 0x0f, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3b, 0x00, 0xe4, 0x04, 0x60,
+   0x40, 0x76, 0x30, 0x00, 0x30, 0x32, 0x30, 0x1b, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x19, 0x06, 0xc2, 0x04,
+   0x63, 0x60, 0x36, 0x30, 0x00, 0xf0, 0x31, 0x00, 0x03, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x02, 0xc2,
+   0x04, 0x61, 0x00, 0x06, 0x30, 0x00, 0xe0, 0x33, 0x80, 0x01, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x82, 0x03, 0x60, 0x00, 0x03, 0x30, 0x00, 0x10, 0x33, 0x80, 0x01, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x30, 0x00, 0x80, 0x01, 0xc0, 0x80,
+   0x01, 0x82, 0xc3, 0x60, 0x00, 0x03, 0x30, 0x00, 0x18, 0x33, 0xb0, 0x11,
+   0x18, 0xc0, 0xff, 0x0f, 0x00, 0x03, 0x00, 0x10, 0x00, 0xe0, 0x01, 0xc0,
+   0x90, 0x03, 0x81, 0xc3, 0x61, 0x60, 0x23, 0x30, 0x00, 0x18, 0x21, 0xf0,
+   0x09, 0x18, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0xc0, 0x58, 0x03, 0x01, 0xa3, 0x41, 0xe0, 0x13, 0x30, 0x0c, 0xf8, 0x61,
+   0x70, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x0c, 0x00, 0x80,
+   0x01, 0x80, 0x0f, 0xc1, 0x07, 0x81, 0xc0, 0xe0, 0x1e, 0x30, 0x0c, 0x00,
+   0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x40, 0x1c, 0xff,
+   0x83, 0x01, 0x00, 0x80, 0x03, 0x00, 0xc0, 0xc1, 0x00, 0x00, 0x10, 0x08,
+   0x00, 0x40, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x1a,
+   0x00, 0x80, 0x01, 0x00, 0x80, 0x02, 0x00, 0x40, 0x81, 0x00, 0x00, 0x18,
+   0x08, 0x00, 0xc0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, 0x3e,
+   0x08, 0x00, 0x80, 0x01, 0x00, 0x80, 0x03, 0x00, 0xc0, 0x81, 0x01, 0x00,
+   0x08, 0x08, 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0xff,
+   0x3f, 0x1c, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x0c, 0x04, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x14, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1c, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02bdf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02bdf.bitmap
new file mode 100644
index 0000000..3fed7f7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02bdf.bitmap
@@ -0,0 +1,25 @@
+#define e02bdf_width 100
+#define e02bdf_height 20
+static char e02bdf_bits[] = {
+   0xc0, 0xe3, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01,
+   0x00, 0x40, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x40, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x40, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x40, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x40, 0x00, 0x07, 0x00, 0x00,
+   0x80, 0x03, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x40, 0x00, 0x07, 0x08,
+   0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x40, 0x80, 0x07,
+   0x0c, 0x00, 0xc0, 0x03, 0x00, 0x30, 0x00, 0x83, 0x01, 0x00, 0x40, 0xc0,
+   0x0e, 0x0e, 0x00, 0x60, 0x07, 0x00, 0x30, 0x80, 0x83, 0x01, 0x00, 0x40,
+   0x60, 0x0c, 0x0b, 0x00, 0x30, 0xc6, 0x0e, 0x30, 0xc0, 0x82, 0x01, 0x00,
+   0x40, 0x70, 0x0c, 0x09, 0x00, 0x38, 0xc6, 0x1b, 0x30, 0x40, 0x82, 0x01,
+   0x00, 0x40, 0x38, 0x8c, 0x08, 0x0c, 0x1c, 0xa6, 0x19, 0x30, 0x20, 0x82,
+   0x61, 0x00, 0x40, 0x18, 0xdc, 0x3f, 0x0c, 0x0c, 0x8e, 0x18, 0xff, 0xf3,
+   0x8f, 0x61, 0x00, 0x40, 0x00, 0x00, 0x08, 0x08, 0x00, 0xc0, 0x28, 0x30,
+   0x00, 0x82, 0x01, 0x00, 0x40, 0x00, 0x00, 0x08, 0x08, 0x00, 0xc0, 0x2c,
+   0x30, 0x00, 0x82, 0x01, 0x00, 0x40, 0x00, 0x00, 0x3e, 0x08, 0x00, 0x40,
+   0x1c, 0x30, 0x80, 0x8f, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x01, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02bef.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02bef.bitmap
new file mode 100644
index 0000000..3404751
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02bef.bitmap
@@ -0,0 +1,68 @@
+#define e01bef_width 205
+#define e01bef_height 30
+static char e01bef_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x0c, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0x78, 0x03, 0x0c, 0x78,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x7c, 0x34, 0x03,
+   0x0c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xe0,
+   0x10, 0xc3, 0xff, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x80, 0x18, 0x05, 0x0c, 0x8e, 0x01, 0x00, 0x00, 0x3c, 0xf8, 0x00,
+   0x02, 0x00, 0x18, 0x00, 0x00, 0x80, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x03, 0x80, 0x99, 0x05, 0x0c, 0xce, 0x00, 0x00, 0x00, 0x70,
+   0x30, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x88, 0x03, 0x0c, 0xfc, 0x00, 0x00,
+   0x00, 0x70, 0x10, 0x00, 0x01, 0x00, 0x30, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x68, 0x10, 0x80, 0x01, 0x00, 0x20, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x10, 0x80, 0x01, 0x00, 0x60, 0x00,
+   0xc0, 0x47, 0x80, 0x3b, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x08, 0x80, 0x00, 0xee,
+   0x60, 0x00, 0x40, 0x6c, 0x40, 0x76, 0x30, 0x00, 0xf8, 0xff, 0x01, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0xc8, 0x09, 0xc0,
+   0x00, 0xd9, 0x61, 0x00, 0x60, 0x64, 0x60, 0x36, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0c, 0x84,
+   0x09, 0xcc, 0x80, 0xd9, 0x60, 0x00, 0xe0, 0x63, 0x00, 0x06, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x04, 0x84, 0x09, 0xc4, 0x00, 0x18, 0x60, 0x00, 0xc0, 0x67, 0x00, 0x03,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x04, 0x07, 0xc0, 0x00, 0x0c, 0x60, 0x00, 0x20, 0x66,
+   0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x60, 0x00,
+   0x00, 0x03, 0x80, 0x01, 0x03, 0x04, 0x07, 0xc3, 0x00, 0x0c, 0x60, 0x00,
+   0x30, 0x66, 0x60, 0x23, 0x30, 0x00, 0xf8, 0xff, 0x01, 0x00, 0x06, 0x00,
+   0x20, 0x00, 0xc0, 0x03, 0x80, 0x21, 0x07, 0x02, 0x07, 0xc7, 0x80, 0x8d,
+   0x60, 0x00, 0x30, 0x42, 0xe0, 0x13, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0xb1, 0x06, 0x02, 0x86, 0x86,
+   0x80, 0x4f, 0x60, 0x00, 0xf0, 0xc3, 0xe0, 0x1e, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x80, 0x19, 0x00, 0x00, 0x03, 0x00, 0x1f, 0x82, 0x0f,
+   0x02, 0x82, 0x81, 0x7b, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x38, 0xfe, 0x07, 0x03, 0x00, 0x00,
+   0x07, 0x00, 0x00, 0x87, 0x01, 0x00, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0x34, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x01, 0x00, 0x30, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x7c, 0x10, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x03, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x7f,
+   0x38, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x28, 0xfe, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02daf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02daf.bitmap
new file mode 100644
index 0000000..8e09a96
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02daf.bitmap
@@ -0,0 +1,260 @@
+#define f01daf_width 350
+#define f01daf_height 70
+static char f01daf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x36, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x6e, 0x00,
+   0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x0d, 0x00, 0x00, 0x80, 0x05, 0x45, 0x00, 0x00, 0x00, 0x11, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1b, 0x00, 0x00,
+   0x80, 0x04, 0x44, 0x00, 0xf8, 0x9f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x00, 0x00, 0x40, 0x04, 0x66, 0x98,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x11, 0x00, 0xfe, 0xe7, 0x1f, 0x26, 0x94, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x19, 0x1f, 0x00,
+   0x00, 0x04, 0x1e, 0xd8, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x89, 0x16, 0x00, 0x00, 0x04, 0x02, 0xd8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x07, 0x02, 0x00, 0x00, 0x1f, 0x03, 0x78, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x12, 0x00,
+   0x00, 0x80, 0x07, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xc0, 0x1f, 0x00, 0xc0, 0x03,
+   0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x00, 0x00, 0x1c, 0x00, 0x80, 0x07, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00,
+   0x30, 0x00, 0x00, 0x0f, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x20, 0x00, 0x00, 0x1f,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x03, 0x00, 0x60, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x01, 0x1e, 0x80, 0x00, 0x00, 0x06, 0x00, 0x1e, 0x7c, 0x00, 0x04, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x7c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x07, 0xc0, 0x00,
+   0x00, 0x04, 0x00, 0x38, 0x18, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x81, 0x07, 0x40, 0x00, 0x00, 0x0c, 0x00, 0x38,
+   0x08, 0x00, 0x02, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
+   0x81, 0x03, 0x60, 0x00, 0x00, 0x08, 0x00, 0x34, 0x08, 0x00, 0x03, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x41, 0x03, 0x60, 0x00,
+   0x00, 0x18, 0x00, 0x64, 0x08, 0x00, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0x10, 0xe0, 0x0e, 0x00, 0x8e, 0xc1, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80,
+   0x07, 0x00, 0x00, 0xa0, 0x61, 0x03, 0x20, 0xc0, 0x1d, 0x18, 0x00, 0x64,
+   0x04, 0x00, 0x01, 0xc7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x19,
+   0x90, 0x1d, 0x00, 0x8d, 0xc1, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x78, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x00, 0xa0,
+   0x21, 0x03, 0x30, 0x20, 0x3b, 0x18, 0x00, 0xe4, 0x04, 0x80, 0x81, 0xc6,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x18, 0x98, 0x0d, 0x00, 0x8d,
+   0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x07, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x90, 0x91, 0x01, 0x30, 0x30,
+   0x1b, 0x18, 0x00, 0xc2, 0x04, 0x80, 0x81, 0xc6, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x7c, 0x18, 0x80, 0x01, 0x00, 0x8c, 0xc1, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x30,
+   0x80, 0x61, 0x00, 0x10, 0x93, 0x81, 0x31, 0x00, 0x03, 0x18, 0x00, 0xc2,
+   0x04, 0x86, 0x01, 0xc6, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18,
+   0xc0, 0x00, 0x00, 0xc6, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x30, 0x80, 0x20, 0x00, 0x10,
+   0x8b, 0x81, 0x30, 0x80, 0x01, 0x18, 0x00, 0x82, 0x03, 0x82, 0x01, 0x63,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x18, 0xc0, 0x00, 0x00, 0xc6,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x8f, 0x01, 0x30, 0x80,
+   0x01, 0x18, 0x00, 0x82, 0x03, 0x80, 0x01, 0x63, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc6, 0x18, 0xd8, 0x08, 0x00, 0xc6, 0xc0, 0x00, 0xfe, 0x7f,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x30,
+   0x64, 0x18, 0x00, 0x08, 0xc7, 0x60, 0x30, 0xb0, 0x11, 0x18, 0x00, 0x81,
+   0x83, 0x81, 0x01, 0x63, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10,
+   0xf8, 0x04, 0x03, 0xe6, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x30, 0xe6, 0x38, 0x00, 0x08,
+   0xc3, 0xe0, 0x20, 0xf0, 0x09, 0x18, 0x00, 0x01, 0x83, 0x03, 0x01, 0x73,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x30, 0xb8, 0x07, 0x03, 0x7c,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0xe0, 0xd3, 0x34, 0x00, 0x3e, 0xf3, 0xd3, 0x60, 0x70,
+   0x0f, 0x18, 0xc0, 0x07, 0x41, 0x03, 0x03, 0x3e, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x02, 0x60, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x30, 0x00, 0x00, 0x00, 0x40, 0x60, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x03, 0x03, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x02, 0x63, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x00, 0x00,
+   0x00, 0xe0, 0x40, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x82, 0x31,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x33,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x60, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x03, 0x00, 0xa0, 0x10, 0x00, 0x00, 0x00, 0xa0, 0xc0, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x86, 0x19, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x1f, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x00,
+   0xe0, 0x18, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x80, 0x01, 0x84, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00,
+   0x30, 0x00, 0x00, 0x0e, 0x00, 0x80, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x80, 0x01, 0x08, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07,
+   0x00, 0xe0, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x01, 0x00, 0x00, 0xb0, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0xc0, 0x1f, 0x00, 0x80, 0x03, 0x00, 0xfe, 0x00, 0x00,
+   0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
+   0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff,
+   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x06, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x0f, 0x00, 0x00, 0x02, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x0c, 0x00, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0x1f,
+   0x0c, 0x00, 0x80, 0xc3, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x0c, 0x00, 0x40, 0x03,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf8, 0x1f, 0x0c, 0x00, 0x00, 0xc1,
+   0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x3f, 0x00, 0x80, 0x01, 0x00, 0xf8, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e02daf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/e02daf1.bitmap
new file mode 100644
index 0000000..abf98f6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e02daf1.bitmap
@@ -0,0 +1,56 @@
+#define e02daf1_width 200
+#define e02daf1_height 25
+static char e02daf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80,
+   0x0f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0xc0, 0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x80, 0x01, 0x00, 0x3c, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x63, 0x06, 0x80, 0x00, 0x1f, 0x01, 0xee, 0x00, 0xc0, 0x31,
+   0x0c, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x80, 0x01, 0x00, 0x66, 0x00, 0x80,
+   0xff, 0x1f, 0x40, 0x63, 0x06, 0xc0, 0x00, 0xb1, 0x01, 0xd9, 0x01, 0xa0,
+   0x31, 0x0c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x80, 0x01, 0x00, 0x63, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x63, 0x04, 0xc0, 0x80, 0x91, 0x81, 0xd9, 0x00,
+   0xa0, 0x31, 0x0c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x63,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x04, 0xc0, 0x80, 0x8f, 0x01, 0x18,
+   0x00, 0x80, 0x31, 0x0c, 0xf0, 0xff, 0x01, 0x60, 0x00, 0x80, 0x01, 0x80,
+   0x61, 0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x04, 0xc0, 0x00, 0x9f, 0x01,
+   0x0c, 0x00, 0xc0, 0x18, 0x0c, 0xf0, 0xff, 0x01, 0x60, 0x00, 0x80, 0x01,
+   0x80, 0x61, 0x1b, 0x00, 0x00, 0x00, 0x80, 0x31, 0xb6, 0xc1, 0x80, 0x98,
+   0x01, 0x0c, 0x00, 0xc0, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x60, 0xd8, 0x80,
+   0x01, 0x80, 0x31, 0x37, 0x80, 0xff, 0x1f, 0x80, 0x31, 0x72, 0xc3, 0xc0,
+   0x98, 0x81, 0x8d, 0x00, 0xc0, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x70, 0xb8,
+   0x81, 0x01, 0x80, 0x99, 0x16, 0x00, 0x00, 0x00, 0x80, 0x31, 0x6b, 0x81,
+   0xc0, 0x08, 0x81, 0x4f, 0x30, 0xc0, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x30,
+   0xb4, 0x80, 0x01, 0xc0, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0xef, 0x21,
+   0x80, 0xc1, 0x0f, 0x83, 0x7b, 0x30, 0x80, 0x0f, 0x0c, 0x00, 0x00, 0x00,
+   0x30, 0x10, 0x80, 0x01, 0xc0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x80, 0x01, 0x00, 0x03, 0x00, 0x20, 0x00, 0x0c, 0x04, 0x00, 0x00,
+   0x00, 0x30, 0x18, 0x80, 0x00, 0xc0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x00, 0x01, 0x00, 0x02, 0x00, 0x20, 0x60, 0x0c, 0x06, 0x00,
+   0x00, 0x00, 0x36, 0x18, 0xc0, 0x00, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x06, 0x00, 0x20, 0x60, 0x06, 0x02,
+   0x00, 0x00, 0x00, 0x1e, 0x08, 0x40, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x10, 0xe0, 0x03,
+   0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e04fdf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e04fdf.bitmap
new file mode 100644
index 0000000..e00e847
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e04fdf.bitmap
@@ -0,0 +1,173 @@
+#define e04fdf_width 265
+#define e04fdf_height 60
+static char e04fdf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x39, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x34, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x51, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x71, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x60,
+   0x3c, 0x00, 0x00, 0x20, 0x00, 0x10, 0x78, 0xcc, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x3c, 0xc0,
+   0x01, 0x10, 0x00, 0x30, 0x78, 0xc0, 0x00, 0x00, 0x7c, 0xc0, 0xe7, 0x00,
+   0xc0, 0x01, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x41, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x04, 0xe0, 0x03, 0x08,
+   0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x70, 0xe0, 0x41, 0x00, 0x80, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x61, 0x00, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x04, 0xb0, 0x01, 0x0c, 0x00, 0x40,
+   0x60, 0x60, 0x00, 0x00, 0x70, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x21, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x04, 0x30, 0x00, 0x04, 0x00, 0xc0, 0x60, 0x90,
+   0x00, 0x00, 0xf0, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x31, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x04, 0x30, 0x00, 0x06, 0x00, 0x80, 0x60, 0x88, 0x00, 0x00,
+   0xd0, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x11, 0x31, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00,
+   0x04, 0x30, 0x00, 0x06, 0x00, 0x80, 0x61, 0xfc, 0x00, 0x00, 0xd0, 0xd1,
+   0xf1, 0xfc, 0xe7, 0xf9, 0xef, 0xf3, 0xf8, 0xe3, 0x03, 0x80, 0x11, 0x10,
+   0xc0, 0x1d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x04, 0xfc,
+   0x00, 0x02, 0xdc, 0x81, 0x61, 0x00, 0x00, 0x00, 0xd0, 0xd1, 0xc1, 0x70,
+   0x86, 0xe1, 0x38, 0xc6, 0x88, 0x31, 0x06, 0x80, 0x1f, 0x18, 0x20, 0x3b,
+   0x0c, 0xe0, 0xff, 0x07, 0x00, 0xf0, 0x00, 0x00, 0x04, 0x38, 0x00, 0x03,
+   0xb2, 0x83, 0x61, 0x00, 0x00, 0x00, 0x90, 0xc9, 0xc1, 0x30, 0x86, 0x61,
+   0x18, 0xc6, 0xc8, 0x31, 0x06, 0xc0, 0x08, 0x18, 0x30, 0x1b, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x04, 0x18, 0x18, 0x03, 0xb3, 0x81,
+   0x61, 0x00, 0x00, 0x00, 0x90, 0xcb, 0xc1, 0x30, 0x86, 0x61, 0x18, 0xc6,
+   0xe8, 0xf8, 0x07, 0xc0, 0x08, 0x18, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x04, 0x18, 0x08, 0x03, 0x30, 0x80, 0x61, 0x00,
+   0x00, 0x00, 0x90, 0xcb, 0xc1, 0x30, 0x86, 0x61, 0x18, 0xc6, 0x60, 0x18,
+   0x00, 0xc0, 0x08, 0x18, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x04, 0x18, 0x00, 0x03, 0x18, 0x80, 0x61, 0x00, 0x00, 0x00,
+   0x10, 0xc7, 0xc1, 0x30, 0x86, 0x61, 0x18, 0xc6, 0x70, 0x1a, 0x00, 0xc0,
+   0x00, 0x18, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x04, 0x18, 0x06, 0x03, 0x18, 0x80, 0x61, 0x00, 0x00, 0x00, 0x10, 0xc7,
+   0xc1, 0x30, 0x86, 0x61, 0x18, 0xc6, 0x38, 0x33, 0x04, 0x60, 0x00, 0x18,
+   0xb0, 0x11, 0x0c, 0xe0, 0xff, 0x07, 0x00, 0x18, 0x00, 0x00, 0x04, 0x1c,
+   0x0e, 0x03, 0x1b, 0x81, 0x61, 0x00, 0x00, 0x00, 0x10, 0xc7, 0xc1, 0x30,
+   0x86, 0x61, 0x18, 0xc6, 0x18, 0x31, 0x04, 0x60, 0x00, 0x10, 0xf0, 0x09,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x04, 0x0c, 0x0d, 0x02,
+   0x9f, 0x80, 0x61, 0x00, 0x00, 0x00, 0x7c, 0xf2, 0xf7, 0x7d, 0xff, 0xfb,
+   0xbe, 0xff, 0xfd, 0xe1, 0x03, 0xf8, 0x01, 0x30, 0x70, 0x0f, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x04, 0x0c, 0x04, 0x06, 0xf7, 0x80,
+   0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x04, 0x0c, 0x0e, 0x06, 0x00, 0x80, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x60, 0x84, 0x0d, 0x0a, 0x04, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x20,
+   0x84, 0x07, 0x0e, 0x0c, 0x00, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x30, 0x84, 0x03,
+   0x00, 0x08, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x10,
+   0x00, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x70, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0xf8, 0x1f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xa0, 0xf8, 0x1f, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e04fdf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/e04fdf1.bitmap
new file mode 100644
index 0000000..0945073
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e04fdf1.bitmap
@@ -0,0 +1,63 @@
+#define e04fdf1_width 190
+#define e04fdf1_height 30
+static char e04fdf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x66, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x66, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x23, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x07, 0x00,
+   0xe0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x01, 0xee, 0x00, 0x00, 0x80, 0x3b,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x90, 0x1d, 0x80, 0xff, 0x1f, 0x80, 0x01, 0xd9, 0x01, 0x00, 0x40, 0x76,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xec, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x98, 0x0d, 0x00, 0x00, 0x00, 0x80, 0x81, 0xd9, 0x60, 0x00, 0x60, 0x36,
+   0x1c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x6c, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x78, 0x00, 0x00, 0x06,
+   0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x60, 0x00, 0x00, 0x03,
+   0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x60, 0x00, 0x00, 0x03,
+   0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xec, 0x00, 0x03, 0x00, 0x00,
+   0xd8, 0x08, 0x80, 0xff, 0x1f, 0x80, 0x81, 0x8d, 0x60, 0x00, 0x60, 0x23,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x46, 0xbc, 0x01, 0x03, 0x00, 0x00,
+   0xf8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x81, 0x4f, 0x60, 0x60, 0xe0, 0x13,
+   0x30, 0x18, 0x60, 0x0c, 0xc3, 0xc0, 0x27, 0x9a, 0x01, 0x03, 0x00, 0x00,
+   0xb8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x83, 0x7b, 0x60, 0x60, 0xe0, 0x1e,
+   0x30, 0x18, 0x60, 0x0c, 0xc3, 0xc0, 0x3d, 0x88, 0x01, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x60, 0x40, 0x00, 0x00,
+   0x48, 0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x8c, 0x02, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x60, 0x40, 0x00, 0x00,
+   0x44, 0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0xcc, 0x82, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf8, 0x41, 0x00, 0x00,
+   0x7e, 0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc4, 0x81, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e04mbf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e04mbf.bitmap
new file mode 100644
index 0000000..ae78932
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e04mbf.bitmap
@@ -0,0 +1,212 @@
+#define e04mbf_width 400
+#define e04mbf_height 50
+static char e04mbf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xe0, 0x0e, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x90,
+   0x1d, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x98, 0x0d, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x18, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xd8, 0x08, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x80, 0xcf, 0x01,
+   0x80, 0x03, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf8,
+   0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0,
+   0x83, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x40,
+   0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x80, 0x01, 0xc0, 0x00, 0x00,
+   0x00, 0xb8, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0xe0, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe0, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x80, 0x03,
+   0x00, 0x00, 0xe0, 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x38,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
+   0xe0, 0x00, 0x00, 0x00, 0xa0, 0xa1, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x0e, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x38, 0x00, 0x00, 0x00, 0xa0, 0xa3, 0xe3, 0xfd, 0xc7, 0xf3,
+   0xdf, 0xe7, 0xf1, 0xc7, 0x07, 0x00, 0x3c, 0x3f, 0x00, 0x77, 0x00, 0x00,
+   0xf8, 0x3d, 0x87, 0x1f, 0x3c, 0x7c, 0xe0, 0xf9, 0x01, 0x7e, 0xf8, 0x01,
+   0x00, 0x06, 0x80, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x0e, 0x00, 0xe0, 0x18, 0xa0, 0xa3, 0x83, 0x71,
+   0x06, 0xc3, 0x71, 0x8c, 0x11, 0x63, 0x0c, 0x00, 0x77, 0x00, 0x80, 0xec,
+   0x00, 0x00, 0x8c, 0x31, 0x86, 0x31, 0x30, 0xc6, 0xb0, 0x63, 0x00, 0x18,
+   0x0c, 0x03, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x03, 0x00, 0xd0, 0x18, 0x20, 0x93,
+   0x83, 0x31, 0x06, 0xc3, 0x30, 0x8c, 0x91, 0x63, 0x0c, 0x00, 0x33, 0x00,
+   0xc0, 0x6c, 0x00, 0x00, 0x0c, 0x31, 0x86, 0x61, 0x30, 0xc6, 0x18, 0x61,
+   0x00, 0x18, 0x0c, 0x03, 0x00, 0x06, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x01, 0x00, 0xd0, 0x18,
+   0x20, 0x97, 0x83, 0x31, 0x06, 0xc3, 0x30, 0x8c, 0xd1, 0xf1, 0x0f, 0x80,
+   0x01, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x7c, 0x30, 0x86, 0x61, 0x30, 0xff,
+   0x18, 0x60, 0x00, 0x18, 0x06, 0x06, 0x00, 0x06, 0xc0, 0x01, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00,
+   0xc0, 0x18, 0x20, 0x97, 0x83, 0x31, 0x06, 0xc3, 0x30, 0x8c, 0xc1, 0x30,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0xf8, 0x31, 0x86, 0x61,
+   0x30, 0x03, 0x18, 0x60, 0x00, 0x18, 0x06, 0x06, 0x00, 0x03, 0x00, 0x07,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x1c, 0x00, 0x60, 0x0c, 0x20, 0x8e, 0x83, 0x31, 0x06, 0xc3, 0x30, 0x8c,
+   0xe1, 0x34, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0xc4, 0x31,
+   0x86, 0x61, 0x30, 0x03, 0x18, 0x60, 0x02, 0x98, 0x06, 0x06, 0x00, 0x03,
+   0x00, 0x1c, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x70, 0x00, 0x60, 0x0c, 0x20, 0x8e, 0x83, 0x31, 0x06, 0xc3,
+   0x30, 0x8c, 0x71, 0x66, 0x08, 0x80, 0x21, 0x00, 0xc0, 0x46, 0x00, 0x00,
+   0x0c, 0x31, 0x86, 0x61, 0x30, 0x86, 0x18, 0x62, 0x02, 0x98, 0x0c, 0x03,
+   0x00, 0x07, 0x00, 0x70, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0xc0, 0x01, 0x60, 0x2c, 0x20, 0x8e, 0x83, 0x31,
+   0x06, 0xc3, 0x30, 0x8c, 0x31, 0x62, 0x08, 0x80, 0x31, 0x00, 0xc0, 0x27,
+   0x00, 0x00, 0x0c, 0x31, 0x86, 0x31, 0x30, 0x86, 0x30, 0x62, 0x02, 0x98,
+   0x0c, 0x03, 0x00, 0x07, 0x00, 0xc0, 0x01, 0x60, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x60, 0x2e, 0xf8, 0xe4,
+   0xef, 0x7f, 0xdf, 0xf7, 0x7d, 0xff, 0xfb, 0xc3, 0x07, 0x00, 0x1f, 0x00,
+   0xc0, 0x3d, 0x00, 0x00, 0xfc, 0xf0, 0x9f, 0x1e, 0x30, 0x7c, 0xe0, 0xe1,
+   0x01, 0x78, 0xf8, 0x01, 0x00, 0x07, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0xc0, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0xff, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x64, 0xe0, 0x0e,
+   0x00, 0x00, 0x03, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x66,
+   0x90, 0x1d, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0x60, 0x1c, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x62, 0x98, 0x0d, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0x60, 0x18, 0x36, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x7f, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x06, 0x60, 0x1c, 0x76, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0xc1, 0xc0, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x03, 0xe0, 0x0f, 0x72,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0xc0, 0xc0, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x36, 0x03, 0x60,
+   0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc0, 0xc0, 0xd8, 0x08,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0xff, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0xc0,
+   0xf8, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x12, 0x03, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0xf8, 0xf0, 0xbb, 0x07, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x12, 0x03, 0x60, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x06, 0xf8, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e04naf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e04naf.bitmap
new file mode 100644
index 0000000..d256d4e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e04naf.bitmap
@@ -0,0 +1,303 @@
+#define e04naf_width 570
+#define e04naf_height 50
+static char e04naf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0xfe, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x62, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x61, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x08, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x61, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x01, 0x9f, 0x03, 0x00, 0x07, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x81, 0x07, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00,
+   0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x80, 0x03, 0x00, 0x00,
+   0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1c,
+   0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x83, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x07,
+   0x00, 0x40, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x43, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0xc0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x38, 0x00, 0x00, 0x00,
+   0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xc0, 0x01,
+   0x00, 0x40, 0x03, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x47, 0xc7, 0xf3, 0x9f, 0xe7, 0xbf, 0xcf, 0xe3, 0x8f, 0x0f, 0xc0,
+   0xc3, 0x0f, 0xb8, 0x03, 0x80, 0x01, 0x00, 0x00, 0x80, 0x3b, 0xf8, 0x01,
+   0x0c, 0x06, 0xb8, 0x03, 0x00, 0xe0, 0xf7, 0x1c, 0xfc, 0xf0, 0xe0, 0x83,
+   0xe7, 0x07, 0xf0, 0xc3, 0x0f, 0x00, 0x18, 0x00, 0x0e, 0x00, 0xc0, 0x1d,
+   0x00, 0x0e, 0x00, 0xe0, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x70, 0x00,
+   0x00, 0x20, 0x03, 0xee, 0x00, 0x38, 0x00, 0x80, 0x63, 0x00, 0x00, 0x00,
+   0x40, 0x47, 0x07, 0xc3, 0x19, 0x86, 0xe3, 0x18, 0x23, 0xc6, 0x18, 0x70,
+   0x07, 0x00, 0x64, 0x07, 0x80, 0x01, 0x00, 0x00, 0x40, 0x76, 0x00, 0x00,
+   0xfc, 0x07, 0x64, 0x07, 0x00, 0x30, 0xc6, 0x18, 0x8c, 0xc1, 0x30, 0xc6,
+   0x8e, 0x01, 0xc0, 0x60, 0x18, 0x00, 0x18, 0x80, 0x03, 0x00, 0x20, 0x3b,
+   0x80, 0x03, 0x00, 0xd0, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1c, 0x00,
+   0x00, 0x30, 0x03, 0xd9, 0x01, 0x0e, 0x00, 0x40, 0x63, 0x00, 0x00, 0x00,
+   0x40, 0x26, 0x07, 0xc3, 0x18, 0x86, 0x61, 0x18, 0x23, 0xc7, 0x18, 0x30,
+   0x03, 0x00, 0x66, 0x03, 0x80, 0x01, 0x00, 0x00, 0x60, 0x36, 0x00, 0x00,
+   0x06, 0x06, 0x66, 0x03, 0x00, 0x30, 0xc4, 0x18, 0x0c, 0xc3, 0x30, 0x66,
+   0x84, 0x01, 0xc0, 0x60, 0x18, 0x00, 0x18, 0xc0, 0x01, 0x00, 0x30, 0x1b,
+   0xc0, 0x01, 0x00, 0xd0, 0x18, 0x00, 0x00, 0x06, 0x30, 0x00, 0x0e, 0x00,
+   0x00, 0x10, 0x83, 0xd9, 0x00, 0x07, 0x00, 0x40, 0x63, 0x00, 0x03, 0x00,
+   0x40, 0x2e, 0x07, 0xc3, 0x18, 0x86, 0x61, 0x18, 0xa3, 0xe3, 0x1f, 0x18,
+   0x00, 0x00, 0x60, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x06, 0x06, 0x60, 0x00, 0x00, 0xf0, 0xc1, 0x18, 0x0c, 0xc3, 0xf8, 0x67,
+   0x80, 0x01, 0xc0, 0x30, 0x30, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0x03,
+   0x00, 0x07, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x06, 0x30, 0x00, 0x38, 0x00,
+   0x00, 0xf8, 0x03, 0x18, 0x00, 0x1c, 0x00, 0x00, 0x63, 0x00, 0x03, 0x00,
+   0x40, 0x2e, 0x07, 0xc3, 0x18, 0x86, 0x61, 0x18, 0x83, 0x61, 0x00, 0x18,
+   0x00, 0x00, 0x30, 0x00, 0xfe, 0x7f, 0x80, 0xff, 0x03, 0x03, 0x00, 0x00,
+   0x06, 0x03, 0x30, 0x00, 0x00, 0xe0, 0xc7, 0x18, 0x0c, 0xc3, 0x18, 0x60,
+   0x80, 0x01, 0xc0, 0x30, 0x30, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x80, 0x01,
+   0x00, 0x1c, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x03, 0x38, 0x00, 0xe0, 0x00,
+   0x00, 0x08, 0x06, 0x0c, 0x00, 0x70, 0x00, 0x80, 0x31, 0x80, 0x03, 0x00,
+   0x40, 0x1c, 0x07, 0xc3, 0x18, 0x86, 0x61, 0x18, 0xc3, 0x69, 0x00, 0x18,
+   0x00, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x06, 0x03, 0x30, 0x00, 0x00, 0x10, 0xc7, 0x18, 0x0c, 0xc3, 0x18, 0x60,
+   0x80, 0x09, 0xc0, 0x34, 0x30, 0x00, 0x0c, 0x00, 0x70, 0x00, 0x80, 0x01,
+   0x00, 0x70, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x03, 0x3c, 0x00, 0x80, 0x03,
+   0x00, 0x04, 0x06, 0x0c, 0x00, 0xc0, 0x01, 0x80, 0x31, 0xc0, 0x03, 0x00,
+   0x40, 0x1c, 0x07, 0xc3, 0x18, 0x86, 0x61, 0x18, 0xe3, 0xcc, 0x10, 0x18,
+   0x02, 0x00, 0x36, 0x02, 0x80, 0x01, 0x00, 0x00, 0x60, 0x23, 0x00, 0x00,
+   0x03, 0x03, 0x36, 0x02, 0x00, 0x30, 0xc4, 0x18, 0x0c, 0xc3, 0x30, 0x64,
+   0x88, 0x09, 0xc0, 0x64, 0x18, 0x00, 0x1c, 0x00, 0xc0, 0x01, 0xb0, 0x11,
+   0x00, 0xc0, 0x01, 0x60, 0x2c, 0x00, 0x00, 0x07, 0x34, 0x00, 0x00, 0x0e,
+   0x00, 0x06, 0x86, 0x8d, 0x00, 0x00, 0x07, 0x80, 0xb1, 0x40, 0x03, 0x00,
+   0x40, 0x1c, 0x07, 0xc3, 0x18, 0x86, 0x61, 0x18, 0x63, 0xc4, 0x10, 0x18,
+   0x03, 0x00, 0x3e, 0x01, 0x80, 0x01, 0x00, 0x00, 0xe0, 0x13, 0x00, 0x00,
+   0x03, 0x03, 0x3e, 0xc1, 0x00, 0x30, 0xc4, 0x18, 0x8c, 0xc1, 0x30, 0xc4,
+   0x88, 0x09, 0xc0, 0x64, 0x18, 0x00, 0x1c, 0x00, 0x00, 0x07, 0xf0, 0x09,
+   0x00, 0x00, 0x07, 0x60, 0x2e, 0x06, 0x00, 0x07, 0x72, 0x00, 0x00, 0x38,
+   0x00, 0x02, 0x86, 0x4f, 0x00, 0x00, 0x1c, 0x80, 0xb9, 0x20, 0x07, 0x00,
+   0xf0, 0xc9, 0xdf, 0xf7, 0xfd, 0xef, 0xfb, 0xfe, 0xf7, 0x87, 0x0f, 0xf0,
+   0x01, 0x00, 0xee, 0x01, 0x80, 0x01, 0x00, 0x00, 0xe0, 0x1e, 0x00, 0xc0,
+   0xef, 0x07, 0xee, 0xc1, 0x00, 0xf0, 0xc3, 0x7f, 0xf4, 0xc0, 0xe0, 0x83,
+   0x87, 0x07, 0xc0, 0xc3, 0x0f, 0x00, 0x1c, 0x00, 0x00, 0x04, 0x70, 0x0f,
+   0x00, 0x00, 0x04, 0xc0, 0x1f, 0x06, 0x00, 0x07, 0x7f, 0x00, 0x00, 0x20,
+   0xc0, 0x87, 0x9f, 0x7b, 0x00, 0x00, 0x10, 0x00, 0x7f, 0xf0, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x00,
+   0xc0, 0xff, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x3c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0xc3, 0x38, 0x5a, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0xc3, 0x30, 0x6c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x76, 0x18, 0xc0, 0x38, 0xec, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x7f, 0x0c, 0xc0, 0x1f, 0xe4, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x6d, 0x0c, 0xc0, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0xfc, 0xc3, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x24, 0x0c, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x25, 0x0c, 0xc0, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x1f, 0x18, 0xf0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/e04ucf.bitmap b/src/axiom-website/hyperdoc/bitmaps/e04ucf.bitmap
new file mode 100644
index 0000000..89ea38c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/e04ucf.bitmap
@@ -0,0 +1,363 @@
+#define e04ucf_width 430
+#define e04ucf_height 80
+static char e04ucf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0xb2, 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x9f, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0x80, 0xcf, 0x01, 0x00, 0x07, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00,
+   0xf8, 0x3f, 0x08, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0x83, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0x20, 0x0c, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x01, 0x00, 0x00, 0x02, 0x80, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x0c, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0xe0, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x20, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x07,
+   0x00, 0x38, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xc1, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x06, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0xc0, 0x01, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1a,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+   0xa0, 0xa1, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x22, 0x06, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x00,
+   0x00, 0x1c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x77, 0x00, 0x00, 0x70,
+   0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa0, 0xa3, 0xe3, 0xf9, 0x8f, 0xf7,
+   0xdf, 0xc7, 0xf3, 0x87, 0x0f, 0x00, 0x30, 0x02, 0x02, 0xdc, 0x81, 0x01,
+   0x00, 0xc0, 0xef, 0x39, 0xfc, 0xe0, 0xe1, 0x03, 0xcf, 0x0f, 0xf0, 0xc3,
+   0x0f, 0x00, 0x30, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x19,
+   0x00, 0x80, 0xec, 0x00, 0x00, 0x60, 0x00, 0x80, 0x03, 0x00, 0x38, 0x06,
+   0xa0, 0xa3, 0x83, 0xe1, 0x0c, 0xc6, 0x71, 0x0c, 0x13, 0xc3, 0x18, 0x00,
+   0xf0, 0x03, 0x03, 0xb2, 0x83, 0x01, 0x00, 0x60, 0x8c, 0x31, 0x8c, 0x81,
+   0x31, 0x86, 0x1d, 0x03, 0xc0, 0x60, 0x18, 0x00, 0x30, 0x00, 0x07, 0x00,
+   0x00, 0x0e, 0x00, 0x00, 0x80, 0x18, 0x00, 0xc0, 0x6c, 0x00, 0x00, 0xe0,
+   0x00, 0xe0, 0x00, 0x00, 0x34, 0x06, 0x20, 0x93, 0x83, 0x61, 0x0c, 0xc6,
+   0x30, 0x0c, 0x93, 0xc3, 0x18, 0x00, 0x18, 0x01, 0x03, 0xb3, 0x81, 0x01,
+   0x00, 0x60, 0x88, 0x31, 0x0c, 0x83, 0x31, 0xc6, 0x08, 0x03, 0xc0, 0x60,
+   0x18, 0x00, 0x30, 0x80, 0x03, 0x00, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x1f,
+   0xf8, 0x00, 0x0c, 0x00, 0x00, 0xc0, 0x01, 0x70, 0x00, 0x00, 0x34, 0x06,
+   0x20, 0x97, 0x83, 0x61, 0x0c, 0xc6, 0x30, 0x0c, 0xd3, 0xe1, 0x1f, 0x00,
+   0x18, 0x01, 0x03, 0x30, 0x80, 0x01, 0x00, 0xe0, 0x83, 0x31, 0x0c, 0x83,
+   0xf9, 0xc7, 0x00, 0x03, 0xc0, 0x30, 0x30, 0x00, 0x30, 0x00, 0x0e, 0x00,
+   0x80, 0x03, 0x00, 0x00, 0x40, 0x30, 0x30, 0x00, 0x06, 0x00, 0x00, 0x80,
+   0x03, 0xc0, 0x01, 0x00, 0x30, 0x06, 0x20, 0x97, 0x83, 0x61, 0x0c, 0xc6,
+   0x30, 0x0c, 0xc3, 0x60, 0x00, 0x00, 0x18, 0x01, 0x03, 0x18, 0x80, 0x01,
+   0x00, 0xc0, 0x8f, 0x31, 0x0c, 0x83, 0x19, 0xc0, 0x00, 0x03, 0xc0, 0x30,
+   0x30, 0x00, 0x18, 0x00, 0x38, 0x00, 0x80, 0x03, 0x00, 0x00, 0x20, 0x30,
+   0x30, 0x00, 0x06, 0x00, 0x00, 0x80, 0x03, 0x00, 0x07, 0x00, 0x18, 0x03,
+   0x20, 0x8e, 0x83, 0x61, 0x0c, 0xc6, 0x30, 0x0c, 0xe3, 0x64, 0x00, 0x00,
+   0x18, 0x00, 0x03, 0x18, 0x80, 0x01, 0x00, 0x20, 0x8e, 0x31, 0x0c, 0x83,
+   0x19, 0xc0, 0x00, 0x13, 0xc0, 0x34, 0x30, 0x00, 0x18, 0x00, 0xe0, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x30, 0x30, 0x18, 0xc0, 0x46, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x1c, 0x00, 0x18, 0x03, 0x20, 0x8e, 0x83, 0x61, 0x0c, 0xc6,
+   0x30, 0x0c, 0x73, 0xc6, 0x10, 0x00, 0x0c, 0x00, 0x03, 0x1b, 0x81, 0x01,
+   0x00, 0x60, 0x88, 0x31, 0x0c, 0x83, 0x31, 0xc4, 0x10, 0x13, 0xc0, 0x64,
+   0x18, 0x00, 0x38, 0x00, 0x80, 0x03, 0x00, 0x0c, 0x00, 0x00, 0x10, 0x30,
+   0x18, 0xc0, 0x27, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x70, 0x00, 0x18, 0x0b,
+   0x20, 0x8e, 0x83, 0x61, 0x0c, 0xc6, 0x30, 0x0c, 0x33, 0xc2, 0x10, 0x00,
+   0x0c, 0x00, 0x02, 0x9f, 0x80, 0x01, 0x00, 0x60, 0x88, 0x31, 0x8c, 0x81,
+   0x31, 0x84, 0x11, 0x13, 0xc0, 0x64, 0x18, 0x00, 0x38, 0x00, 0x00, 0x0e,
+   0x00, 0x1c, 0x00, 0x00, 0x3e, 0xfc, 0x18, 0xc0, 0x3d, 0x00, 0x00, 0x70,
+   0x00, 0x00, 0xc0, 0x01, 0x98, 0x0b, 0xf8, 0xe4, 0xef, 0xfb, 0xbe, 0xff,
+   0x7d, 0xdf, 0xff, 0x83, 0x0f, 0x00, 0x3f, 0x00, 0x06, 0xf7, 0x80, 0x01,
+   0x00, 0xe0, 0x87, 0xff, 0xf4, 0x80, 0xe1, 0x03, 0x0f, 0x0f, 0xc0, 0xc3,
+   0x0f, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0xff, 0x0f, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xf0, 0xff, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x81, 0x61, 0x3c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x81,
+   0x61, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3b, 0x0c, 0xc0, 0x30, 0x6c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x06, 0xc0,
+   0x1f, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x36, 0x06, 0xc0, 0x1c, 0xe4, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xfe, 0xc1,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x12, 0x06, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x12, 0x06, 0x60,
+   0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x0f, 0x0c, 0xf8, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0xc0, 0x23,
+   0xc0, 0x1d, 0x18, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x70, 0x37, 0x20, 0x3b, 0x18, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x30, 0x33,
+   0x30, 0x1b, 0x18, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x18, 0x30, 0x00, 0x03, 0x18, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x18, 0x30,
+   0x80, 0x01, 0x18, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x18, 0x30, 0x80, 0x01, 0x18, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x18, 0x32,
+   0xb0, 0x11, 0x18, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x18, 0x23, 0xf0, 0x09, 0x18, 0x00, 0x00, 0x38,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0xf0, 0x61,
+   0x70, 0x0f, 0x18, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x01, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ell.bitmap b/src/axiom-website/hyperdoc/bitmaps/ell.bitmap
new file mode 100644
index 0000000..6d8ef0a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ell.bitmap
@@ -0,0 +1,8 @@
+#define ell_width 16
+#define ell_height 16
+#define ell_x_hot -1
+#define ell_y_hot -1
+static char ell_bits[] = {
+   0x00, 0x00, 0xc0, 0x01, 0x40, 0x01, 0x60, 0x01, 0x20, 0x01, 0xa0, 0x01,
+   0x90, 0x00, 0x50, 0x00, 0x70, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00,
+   0x28, 0x02, 0x28, 0x02, 0x60, 0x03, 0xc0, 0x01};
diff --git a/src/axiom-website/hyperdoc/bitmaps/emptyset.bitmap b/src/axiom-website/hyperdoc/bitmaps/emptyset.bitmap
new file mode 100644
index 0000000..699754f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/emptyset.bitmap
@@ -0,0 +1,8 @@
+#define emptyset_width 16
+#define emptyset_height 16
+#define emptyset_x_hot -1
+#define emptyset_y_hot -1
+static char emptyset_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x13, 0x10, 0x0c, 0x08, 0x0c, 0x04, 0x12,
+   0x04, 0x11, 0x84, 0x10, 0x44, 0x10, 0x24, 0x10, 0x18, 0x08, 0x18, 0x04,
+   0xe4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ep1.bitmap b/src/axiom-website/hyperdoc/bitmaps/ep1.bitmap
new file mode 100644
index 0000000..d440af1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ep1.bitmap
@@ -0,0 +1,6 @@
+#define ep1_width 16
+#define ep1_height 16
+static char ep1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x0c, 0x00,
+   0x0c, 0x30, 0x3e, 0x3c, 0x06, 0x30, 0x06, 0x30, 0x06, 0x30, 0x06, 0x30,
+   0x7c, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0xfc};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ep2.bitmap b/src/axiom-website/hyperdoc/bitmaps/ep2.bitmap
new file mode 100644
index 0000000..1ea1b49
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ep2.bitmap
@@ -0,0 +1,6 @@
+#define ep2_width 16
+#define ep2_height 16
+static char ep2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x0c, 0x00,
+   0x0c, 0x1c, 0x3e, 0x66, 0x06, 0x66, 0x06, 0x66, 0x06, 0x60, 0x06, 0x30,
+   0x7c, 0x30, 0x00, 0x48, 0x00, 0x44, 0x00, 0x7e};
diff --git a/src/axiom-website/hyperdoc/bitmaps/epi.bitmap b/src/axiom-website/hyperdoc/bitmaps/epi.bitmap
new file mode 100644
index 0000000..773a389
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/epi.bitmap
@@ -0,0 +1,6 @@
+#define epi_width 16
+#define epi_height 16
+static char epi_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x18, 0x00,
+   0x18, 0x30, 0x7c, 0x10, 0x0c, 0x00, 0x0c, 0x0c, 0x0c, 0x1c, 0x0c, 0x1a,
+   0xf8, 0x08, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x1c};
diff --git a/src/axiom-website/hyperdoc/bitmaps/epp.bitmap b/src/axiom-website/hyperdoc/bitmaps/epp.bitmap
new file mode 100644
index 0000000..c7d9999
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/epp.bitmap
@@ -0,0 +1,6 @@
+#define epp_width 16
+#define epp_height 16
+static char epp_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x0c, 0x00,
+   0x0c, 0x36, 0x3e, 0x6e, 0x06, 0x45, 0x06, 0x44, 0x06, 0x66, 0x06, 0x26,
+   0x7c, 0x1e, 0x00, 0x02, 0x00, 0x03, 0x80, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/epsilon.bitmap b/src/axiom-website/hyperdoc/bitmaps/epsilon.bitmap
new file mode 100644
index 0000000..aa8fc6b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/epsilon.bitmap
@@ -0,0 +1,8 @@
+#define epsilon_width 16
+#define epsilon_height 16
+#define epsilon_x_hot -1
+#define epsilon_y_hot -1
+static char epsilon_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x01, 0x0e, 0x01,
+   0x06, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x06, 0x00, 0x0e, 0x01, 0xfc, 0x01,
+   0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/epsilon.xbm b/src/axiom-website/hyperdoc/bitmaps/epsilon.xbm
new file mode 100644
index 0000000..072b349
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/epsilon.xbm
@@ -0,0 +1,7 @@
+#define epsilon_width 15
+#define epsilon_height 20
+static char epsilon_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xc0, 0x08,
+   0x60, 0x00, 0x60, 0x00, 0xe0, 0x03, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
+   0xc0, 0x08, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/eqpage.bitmap b/src/axiom-website/hyperdoc/bitmaps/eqpage.bitmap
new file mode 100644
index 0000000..8a536dc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/eqpage.bitmap
@@ -0,0 +1,23 @@
+#define ntear_width 60
+#define ntear_height 30
+static char ntear_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0b, 0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b,
+   0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b, 0xfd, 0xfc, 0x7f, 0xfe,
+   0xe7, 0xff, 0xf3, 0x0b, 0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b,
+   0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b, 0xfd, 0xfc, 0x7f, 0xfe,
+   0xe7, 0xff, 0xf3, 0x0b, 0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b,
+   0xfd, 0x00, 0x00, 0x0e, 0x06, 0x00, 0xf0, 0x0b, 0xfd, 0xfc, 0x7f, 0x06,
+   0xe7, 0xff, 0xf3, 0x0b, 0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b,
+   0xfd, 0x00, 0x00, 0x0e, 0x06, 0x00, 0xf0, 0x0b, 0xfd, 0xfc, 0x7f, 0x06,
+   0xe7, 0xff, 0xf3, 0x0b, 0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b,
+   0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b, 0xfd, 0xfc, 0x7f, 0xfe,
+   0xe7, 0xff, 0xf3, 0x0b, 0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b,
+   0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b, 0xfd, 0xfc, 0x7f, 0xfe,
+   0xe7, 0xff, 0xf3, 0x0b, 0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b,
+   0xfd, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x0b, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0b, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/erase.bitmap b/src/axiom-website/hyperdoc/bitmaps/erase.bitmap
new file mode 100644
index 0000000..269432d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/erase.bitmap
@@ -0,0 +1,6 @@
+#define foo_width 16
+#define foo_height 16
+static char foo_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x03, 0xc0, 0x07,
+   0xe0, 0x0f, 0xf0, 0x1f, 0xe0, 0x0f, 0xc0, 0x07, 0x80, 0x03, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/error.bitmap b/src/axiom-website/hyperdoc/bitmaps/error.bitmap
new file mode 100644
index 0000000..c712dc1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/error.bitmap
@@ -0,0 +1,6 @@
+#define error_width 16
+#define error_height 16
+static char error_bits[] = {
+   0xe0, 0x07, 0xf8, 0x1f, 0x1c, 0x38, 0x06, 0x60, 0x76, 0x6e, 0x73, 0xce,
+   0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0xe3, 0xc7, 0x33, 0xcc, 0x16, 0x68,
+   0x06, 0x60, 0x1c, 0x38, 0xf8, 0x1f, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/eta.bitmap b/src/axiom-website/hyperdoc/bitmaps/eta.bitmap
new file mode 100644
index 0000000..dba270b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/eta.bitmap
@@ -0,0 +1,6 @@
+#define eta_width 16
+#define eta_height 16
+static char eta_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0e,0xfc,0x1f,0xfe,0x3b,0xe6,
+ 0x30,0x66,0x30,0x60,0x18,0x30,0x18,0x30,0x0c,0x18,0x0c,0x00,0x06,0x00,0x06,
+ 0x00,0x06};
diff --git a/src/axiom-website/hyperdoc/bitmaps/exists.bitmap b/src/axiom-website/hyperdoc/bitmaps/exists.bitmap
new file mode 100644
index 0000000..614503a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/exists.bitmap
@@ -0,0 +1,8 @@
+#define exists_width 16
+#define exists_height 16
+#define exists_x_hot -1
+#define exists_y_hot -1
+static char exists_bits[] = {
+   0xf8, 0x1f, 0xf8, 0x1f, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18,
+   0x00, 0x18, 0xc0, 0x1f, 0xc0, 0x1f, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18,
+   0x00, 0x18, 0x00, 0x18, 0xf8, 0x1f, 0xf8, 0x1f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/exit.bitmap b/src/axiom-website/hyperdoc/bitmaps/exit.bitmap
new file mode 100644
index 0000000..ce30227
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/exit.bitmap
@@ -0,0 +1,25 @@
+#define exit_width 60
+#define exit_height 30
+#define exit_x_hot -1
+#define exit_y_hot -1
+static char exit_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xcf, 0x3f,
+   0xcf, 0x03, 0xc0, 0xff, 0x3f, 0x00, 0x8e, 0x3f, 0x8e, 0x03, 0x80, 0xff,
+   0x3f, 0x00, 0x1e, 0x1f, 0x8f, 0x07, 0x80, 0xff, 0x3f, 0xfe, 0x1f, 0x1f,
+   0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0xfe, 0x3f, 0x8e, 0x8f, 0x7f, 0xfc, 0xff,
+   0x3f, 0xfe, 0x3f, 0x8e, 0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0xfe, 0x7f, 0xc4,
+   0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0xfe, 0x7f, 0xc4, 0x8f, 0x7f, 0xfc, 0xff,
+   0x3f, 0xfe, 0xff, 0xe0, 0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0x80, 0xff, 0xe0,
+   0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0x00, 0xff, 0xf1, 0x8f, 0x7f, 0xfc, 0xff,
+   0x3f, 0x00, 0xff, 0xf1, 0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0xfe, 0xff, 0xe0,
+   0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0xfe, 0xff, 0xe0, 0x8f, 0x7f, 0xfc, 0xff,
+   0x3f, 0xfe, 0x7f, 0xc4, 0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0xfe, 0x7f, 0xc4,
+   0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0xfe, 0x3f, 0x8e, 0x8f, 0x7f, 0xfc, 0xff,
+   0x3f, 0xfe, 0x3f, 0x8e, 0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0xfe, 0x1f, 0x1f,
+   0x8f, 0x7f, 0xfc, 0xff, 0x3f, 0x00, 0x1f, 0x1f, 0x8f, 0x7f, 0xfc, 0xff,
+   0x3f, 0x00, 0x8e, 0x3f, 0x8e, 0x7f, 0xfc, 0xff, 0x7f, 0x00, 0x9e, 0x7f,
+   0x9e, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/exit3d.bitmap b/src/axiom-website/hyperdoc/bitmaps/exit3d.bitmap
new file mode 100644
index 0000000..9aaf199
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/exit3d.bitmap
@@ -0,0 +1,23 @@
+#define exit3d.bitmap_width 60
+#define exit3d.bitmap_height 30
+static char exit3d.bitmap_bits[] = {
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0xd1, 0xff, 0x55, 0x55,
+   0x5d, 0x55, 0x55, 0x07, 0xaa, 0xff, 0xaa, 0xaa, 0xbe, 0xaa, 0xaa, 0x0e,
+   0xd1, 0xd7, 0x55, 0x55, 0x5f, 0xd5, 0x55, 0x07, 0xaa, 0xab, 0xaa, 0xaa,
+   0xae, 0xea, 0xaa, 0x0e, 0xd1, 0x57, 0x55, 0x55, 0x55, 0xf5, 0x55, 0x07,
+   0xaa, 0xab, 0xaa, 0xaa, 0xaa, 0xea, 0xaa, 0x0e, 0xd1, 0x77, 0x7d, 0x5f,
+   0x5f, 0xfd, 0x5f, 0x07, 0xaa, 0xbf, 0xbe, 0xae, 0xbe, 0xfa, 0xaf, 0x0e,
+   0xd1, 0x7f, 0x7d, 0x57, 0x5d, 0xf5, 0x55, 0x07, 0xaa, 0xab, 0xfa, 0xab,
+   0xbe, 0xea, 0xaa, 0x0e, 0xd1, 0x57, 0xf5, 0x55, 0x5d, 0xf5, 0x55, 0x07,
+   0xaa, 0xab, 0xea, 0xab, 0xbe, 0xea, 0xaa, 0x0e, 0xd1, 0x57, 0xd5, 0x57,
+   0x5d, 0xf5, 0x55, 0x07, 0xaa, 0xab, 0xea, 0xaf, 0xbe, 0xea, 0xaa, 0x0e,
+   0xd1, 0xd7, 0x75, 0x5f, 0x5d, 0xf5, 0x55, 0x07, 0xaa, 0xff, 0xba, 0xbe,
+   0xbe, 0xea, 0xaf, 0x0e, 0xd1, 0xff, 0x7d, 0x5f, 0x7f, 0xd5, 0x57, 0x07,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05};
diff --git a/src/axiom-website/hyperdoc/bitmaps/exit3d_old.bitmap b/src/axiom-website/hyperdoc/bitmaps/exit3d_old.bitmap
new file mode 100644
index 0000000..94e0de0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/exit3d_old.bitmap
@@ -0,0 +1,23 @@
+#define exit_width 60
+#define exit_height 30
+static char exit_bits[] = {
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xea, 0xff, 0xba, 0xea,
+   0xba, 0xfe, 0xbf, 0x0e, 0xd1, 0xff, 0x75, 0xd5, 0x75, 0xfd, 0x7f, 0x07,
+   0xea, 0xff, 0xeb, 0xea, 0xfa, 0xfa, 0xff, 0x0e, 0xd1, 0x55, 0xf5, 0xf5,
+   0x75, 0xd5, 0x57, 0x07, 0xea, 0xab, 0xea, 0xfb, 0xfa, 0xaa, 0xab, 0x0e,
+   0xd1, 0x55, 0xd5, 0x75, 0x75, 0xd5, 0x57, 0x07, 0xea, 0xab, 0xaa, 0xbb,
+   0xfa, 0xaa, 0xab, 0x0e, 0xd1, 0x55, 0xd5, 0x7f, 0x75, 0xd5, 0x57, 0x07,
+   0xea, 0xab, 0xaa, 0xbf, 0xfa, 0xaa, 0xab, 0x0e, 0xd1, 0x7f, 0x55, 0x5f,
+   0x75, 0xd5, 0x57, 0x07, 0xea, 0xff, 0xaa, 0xae, 0xfa, 0xaa, 0xab, 0x0e,
+   0xd1, 0xff, 0x55, 0x5f, 0x75, 0xd5, 0x57, 0x07, 0xea, 0xab, 0xaa, 0xbf,
+   0xfa, 0xaa, 0xab, 0x0e, 0xd1, 0x55, 0x55, 0x5f, 0x75, 0xd5, 0x57, 0x07,
+   0xea, 0xab, 0xaa, 0xbb, 0xfa, 0xaa, 0xab, 0x0e, 0xd1, 0x55, 0xd5, 0x7f,
+   0x75, 0xd5, 0x57, 0x07, 0xea, 0xab, 0xea, 0xfb, 0xfa, 0xaa, 0xab, 0x0e,
+   0xd1, 0x55, 0xd5, 0x75, 0x75, 0xd5, 0x57, 0x07, 0xea, 0xab, 0xea, 0xea,
+   0xfa, 0xaa, 0xab, 0x0e, 0xd1, 0xff, 0xf5, 0xf5, 0x75, 0xd5, 0x57, 0x07,
+   0xea, 0xff, 0xfb, 0xea, 0xfb, 0xaa, 0xab, 0x0e, 0xd1, 0xff, 0x75, 0xd5,
+   0x75, 0x55, 0x57, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05};
diff --git a/src/axiom-website/hyperdoc/bitmaps/exit3di.bitmap b/src/axiom-website/hyperdoc/bitmaps/exit3di.bitmap
new file mode 100644
index 0000000..d619393
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/exit3di.bitmap
@@ -0,0 +1,23 @@
+#define exit3di_width 60
+#define exit3di_height 30
+static char exit3di_bits[] = {
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf5, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xfa, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3,
+   0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xf8, 0x15, 0x00, 0x45, 0x15,
+   0x45, 0x01, 0x40, 0xf1, 0x2e, 0x00, 0x8a, 0x2a, 0x8a, 0x02, 0x80, 0xf8,
+   0x15, 0x00, 0x14, 0x15, 0x05, 0x05, 0x00, 0xf1, 0x2e, 0xaa, 0x0a, 0x0a,
+   0x8a, 0x2a, 0xa8, 0xf8, 0x15, 0x54, 0x15, 0x04, 0x05, 0x55, 0x54, 0xf1,
+   0x2e, 0xaa, 0x2a, 0x8a, 0x8a, 0x2a, 0xa8, 0xf8, 0x15, 0x54, 0x55, 0x44,
+   0x05, 0x55, 0x54, 0xf1, 0x2e, 0xaa, 0x2a, 0x80, 0x8a, 0x2a, 0xa8, 0xf8,
+   0x15, 0x54, 0x55, 0x40, 0x05, 0x55, 0x54, 0xf1, 0x2e, 0x80, 0xaa, 0xa0,
+   0x8a, 0x2a, 0xa8, 0xf8, 0x15, 0x00, 0x55, 0x51, 0x05, 0x55, 0x54, 0xf1,
+   0x2e, 0x00, 0xaa, 0xa0, 0x8a, 0x2a, 0xa8, 0xf8, 0x15, 0x54, 0x55, 0x40,
+   0x05, 0x55, 0x54, 0xf1, 0x2e, 0xaa, 0xaa, 0xa0, 0x8a, 0x2a, 0xa8, 0xf8,
+   0x15, 0x54, 0x55, 0x44, 0x05, 0x55, 0x54, 0xf1, 0x2e, 0xaa, 0x2a, 0x80,
+   0x8a, 0x2a, 0xa8, 0xf8, 0x15, 0x54, 0x15, 0x04, 0x05, 0x55, 0x54, 0xf1,
+   0x2e, 0xaa, 0x2a, 0x8a, 0x8a, 0x2a, 0xa8, 0xf8, 0x15, 0x54, 0x15, 0x15,
+   0x05, 0x55, 0x54, 0xf1, 0x2e, 0x00, 0x0a, 0x0a, 0x8a, 0x2a, 0xa8, 0xf8,
+   0x15, 0x00, 0x04, 0x15, 0x04, 0x55, 0x54, 0xf1, 0x2e, 0x00, 0x8a, 0x2a,
+   0x8a, 0xaa, 0xa8, 0xf8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf1,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xfa};
diff --git a/src/axiom-website/hyperdoc/bitmaps/f01qcf.bitmap b/src/axiom-website/hyperdoc/bitmaps/f01qcf.bitmap
new file mode 100644
index 0000000..652d7d4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/f01qcf.bitmap
@@ -0,0 +1,76 @@
+#define f01qcf_width 145
+#define f01qcf_height 46
+static char f01qcf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0xf0, 0x3f, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xc0,
+   0x60, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x60, 0x60, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x70, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x60, 0x38, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0xe0, 0x1f,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x30, 0x0c, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x00, 0x00, 0x18, 0x8c, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe7,
+   0x00, 0x18, 0x00, 0x00, 0x18, 0xcc, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0xc0, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xc1, 0x00, 0x18, 0x00, 0x00, 0x7e,
+   0x5c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00,
+   0xe0, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x01, 0x1c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00,
+   0x00, 0x00, 0x30, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x38, 0x80, 0x01,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x98,
+   0x01, 0xf0, 0xff, 0x03, 0x38, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00, 0x18,
+   0xc0, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x01, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00,
+   0x00, 0x18, 0xc0, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x18, 0xe0, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x03,
+   0xf0, 0xff, 0x03, 0x98, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0xb0, 0x3c,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0xe0,
+   0xc3, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x4e, 0x00, 0x0c, 0x00, 0x00, 0x78,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x47, 0x00, 0x18, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x18, 0x00,
+   0x00, 0x86, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+   0x18, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x86, 0x01,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x86, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x86, 0x01, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x84,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+   0x00, 0x78, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/f01qcf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/f01qcf1.bitmap
new file mode 100644
index 0000000..cabf8cb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/f01qcf1.bitmap
@@ -0,0 +1,99 @@
+#define f01qcf1_width 180
+#define f01qcf1_height 50
+static char f01qcf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x0f,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x80, 0x19, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0xc0, 0x30, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0xc0,
+   0x30, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x10,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x19, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0xe0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0xe0, 0x00, 0x06, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x60, 0x00, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x60,
+   0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x60, 0x00,
+   0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x60, 0x80, 0x83,
+   0x0d, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x60, 0xde, 0x81, 0x1f,
+   0xc0, 0xff, 0x0f, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0xf2, 0x80, 0x0b, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x80, 0xff, 0x0f,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x3b, 0x81, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x33, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc1, 0x0a, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x80, 0x61, 0x00, 0x00, 0x40, 0x30, 0x04, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xc1, 0x0a, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x80, 0x61, 0x00, 0x00, 0x60, 0x18, 0x04, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x40, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x80, 0x61, 0x00, 0x00, 0x20, 0x18, 0x04, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x80, 0x61, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80,
+   0x61, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x80, 0x61,
+   0x00, 0x00, 0x00, 0x0c, 0x38, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x80, 0x61, 0x00,
+   0x00, 0x00, 0x0c, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x80, 0x61, 0x00, 0x00,
+   0x00, 0x0c, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00,
+   0x0c, 0xd8, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x06,
+   0xf8, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x06, 0xb8,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x33, 0x00, 0x00, 0xc0, 0x3f, 0x38, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00,
+   0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/f01qcf2.bitmap b/src/axiom-website/hyperdoc/bitmaps/f01qcf2.bitmap
new file mode 100644
index 0000000..d311302
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/f01qcf2.bitmap
@@ -0,0 +1,39 @@
+#define f01qcf2_width 140
+#define f01qcf2_height 24
+static char f01qcf2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xcc, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x46, 0x00,
+   0xe0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x10, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x08, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x00, 0x38, 0xc6, 0x0f, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x18, 0x00, 0x00, 0x00, 0xd0,
+   0x18, 0x00, 0x34, 0x06, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0xd0, 0x18, 0x0e, 0x34, 0x06, 0x00, 0x00,
+   0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0xff, 0x0f, 0xc0,
+   0x18, 0x04, 0x30, 0x06, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x80, 0xff, 0x0f, 0x60, 0x0c, 0x04, 0x18, 0x03, 0x00, 0x00,
+   0x00, 0x03, 0x36, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x60,
+   0x0c, 0x36, 0x18, 0x83, 0x03, 0x00, 0x80, 0x01, 0x7e, 0x00, 0xfe, 0x7f,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x2c, 0x7e, 0x18, 0x0b, 0x01, 0x00,
+   0x80, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60,
+   0x2e, 0x2e, 0x98, 0x0b, 0x01, 0x00, 0xf0, 0x0f, 0x0e, 0x00, 0x00, 0x00,
+   0x80, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x0e, 0xf0, 0x87, 0x0d, 0x00,
+   0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x2b, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x80, 0x0b, 0x00,
+   0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x39, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0a, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0e, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/f01qcf3.bitmap b/src/axiom-website/hyperdoc/bitmaps/f01qcf3.bitmap
new file mode 100644
index 0000000..02f66a7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/f01qcf3.bitmap
@@ -0,0 +1,65 @@
+#define f01qcf3_width 125
+#define f01qcf3_height 46
+static char f01qcf3_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x07, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x07,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x08, 0xe0, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x08, 0x40,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x0c, 0x40, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0c, 0x60, 0x03, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0c, 0xe0,
+   0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x18, 0xe0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xe0, 0xb1,
+   0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
+   0x00, 0x00, 0x80, 0xb3, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x93, 0x03, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0xe0, 0x01,
+   0x00, 0x00, 0x00, 0x06, 0x80, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0x63, 0x00, 0x00,
+   0xfc, 0xff, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x40, 0x63, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x63, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x31, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x80, 0x31, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x80, 0xb1, 0xf8, 0x01, 0xfc, 0xff, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0xb9, 0xb8, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x7f, 0x38, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xac, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0xe0, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x10, 0xe3,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x80, 0x41, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x60, 0x60,
+   0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x30, 0xe2, 0x07, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf8, 0xe3, 0x02, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc8, 0xe1,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x90,
+   0x03, 0x00, 0x18, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/f01qdf.bitmap b/src/axiom-website/hyperdoc/bitmaps/f01qdf.bitmap
new file mode 100644
index 0000000..e15f612
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/f01qdf.bitmap
@@ -0,0 +1,13 @@
+#define 1_width 50
+#define 1_height 16
+static char 1_bits[] = {
+   0x00, 0xfe, 0xf1, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x83, 0x11, 0x33, 0xf0,
+   0x3f, 0x00, 0xc0, 0x01, 0x0b, 0x33, 0xc0, 0x60, 0x00, 0xe0, 0x00, 0x8b,
+   0x11, 0xc0, 0x60, 0x00, 0x60, 0x00, 0x83, 0x01, 0x60, 0x60, 0x00, 0x70,
+   0x00, 0x83, 0x01, 0x60, 0x70, 0x00, 0x70, 0x00, 0x83, 0x01, 0x60, 0x38,
+   0x00, 0x30, 0x80, 0xc3, 0x00, 0xe0, 0x1f, 0x00, 0x30, 0x80, 0xc3, 0x00,
+   0x30, 0x38, 0x00, 0x30, 0x80, 0xf1, 0x03, 0x30, 0x30, 0x00, 0x30, 0xc0,
+   0x01, 0x00, 0x30, 0x30, 0x00, 0x30, 0xef, 0x00, 0x00, 0x30, 0x30, 0x00,
+   0x60, 0x79, 0x00, 0x00, 0x18, 0x38, 0x00, 0xe0, 0x1d, 0x00, 0x00, 0x18,
+   0x1c, 0x00, 0x80, 0x8f, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xf8, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/f01qdf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/f01qdf1.bitmap
new file mode 100644
index 0000000..3e65c79
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/f01qdf1.bitmap
@@ -0,0 +1,33 @@
+#define f01qdf1_width 170
+#define f01qdf1_height 16
+static char f01qdf1_bits[] = {
+   0x80, 0x00, 0xfe, 0x01, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x08, 0xf0, 0x3f, 0x00, 0xc0, 0x80,
+   0x83, 0x01, 0x00, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x38, 0x18, 0x00, 0x18, 0x10, 0x33, 0x00, 0x40, 0xc0, 0x01, 0x03,
+   0x00, 0x1c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
+   0x30, 0x00, 0x18, 0x08, 0x33, 0x00, 0x60, 0xe0, 0x00, 0x03, 0x00, 0x0e,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x30, 0x00,
+   0x30, 0x88, 0x11, 0x00, 0x60, 0x60, 0x00, 0x03, 0x00, 0x06, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x30, 0x80,
+   0x01, 0x00, 0x20, 0x70, 0x00, 0x03, 0x00, 0x07, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0x70, 0x80, 0x01, 0x00,
+   0x30, 0x70, 0x00, 0x03, 0x00, 0x07, 0x30, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x07, 0x30, 0x18, 0x60, 0x80, 0x01, 0x00, 0x30, 0x30,
+   0x80, 0x03, 0x00, 0x03, 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x38, 0x1e, 0x60, 0xc0, 0x00, 0x00, 0x30, 0x30, 0x80, 0x03,
+   0x00, 0x03, 0x38, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x38, 0x18, 0x60, 0xc0, 0x00, 0x00, 0x30, 0x30, 0x80, 0x61, 0x07, 0x03,
+   0x18, 0x76, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0x18,
+   0x60, 0xf0, 0x03, 0x00, 0x30, 0x30, 0xc0, 0xe1, 0x0d, 0x03, 0x1c, 0xde,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x18, 0x60, 0x00,
+   0x00, 0x00, 0x30, 0x30, 0xef, 0xd0, 0x0c, 0xf3, 0x0e, 0xcd, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x0e, 0x18, 0x30, 0x00, 0x00, 0x00,
+   0x20, 0x60, 0x79, 0x40, 0x0c, 0x96, 0x07, 0xc4, 0xf8, 0x1f, 0x18, 0xc0,
+   0x80, 0x01, 0x03, 0x96, 0x07, 0x18, 0x30, 0x00, 0x00, 0x00, 0x60, 0xe0,
+   0x9d, 0x60, 0x14, 0xde, 0x09, 0x46, 0x01, 0x00, 0x18, 0xc0, 0x80, 0x01,
+   0x03, 0xde, 0x09, 0x18, 0x18, 0x00, 0x00, 0x00, 0x60, 0x80, 0x8f, 0x60,
+   0x16, 0xf8, 0x08, 0x66, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x08, 0x18, 0x18, 0x00, 0x00, 0x00, 0x40, 0x00, 0xf8, 0x20, 0x0e, 0x80,
+   0x0f, 0xe2, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x7e,
+   0x08, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/f01qdf2.bitmap b/src/axiom-website/hyperdoc/bitmaps/f01qdf2.bitmap
new file mode 100644
index 0000000..c25a1c9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/f01qdf2.bitmap
@@ -0,0 +1,9 @@
+#define f07qdf2_width 30
+#define f07qdf2_height 16
+static char f07qdf2_bits[] = {
+   0x00, 0xff, 0x00, 0x00, 0xc0, 0xc1, 0x00, 0x00, 0xe0, 0x80, 0x01, 0x00,
+   0x70, 0x80, 0x01, 0x00, 0x30, 0x80, 0x01, 0x00, 0x38, 0x80, 0x01, 0x00,
+   0x38, 0x80, 0x71, 0x00, 0x18, 0xc0, 0x21, 0x00, 0x18, 0xc0, 0x21, 0x00,
+   0x18, 0xc0, 0xb0, 0x01, 0x18, 0xe0, 0xf0, 0x03, 0x98, 0x77, 0x70, 0x01,
+   0xb0, 0x3c, 0x70, 0x00, 0xf0, 0x4e, 0x58, 0x01, 0xc0, 0x47, 0x58, 0x01,
+   0x00, 0x7c, 0xc8, 0x01};
diff --git a/src/axiom-website/hyperdoc/bitmaps/f01rdf.bitmap b/src/axiom-website/hyperdoc/bitmaps/f01rdf.bitmap
new file mode 100644
index 0000000..53db00d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/f01rdf.bitmap
@@ -0,0 +1,13 @@
+#define 1_width 50
+#define 1_height 16
+static char 1_bits[] = {
+   0x00, 0x7f, 0x7c, 0x3e, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0x30, 0x0c, 0xf8,
+   0x1f, 0x00, 0xe0, 0x80, 0x31, 0x0c, 0x60, 0x30, 0x00, 0x70, 0x80, 0x31,
+   0x0c, 0x60, 0x30, 0x00, 0x30, 0x80, 0xf1, 0x0f, 0x30, 0x30, 0x00, 0x38,
+   0x80, 0x31, 0x0c, 0x30, 0x38, 0x00, 0x38, 0x80, 0x31, 0x0c, 0x30, 0x1c,
+   0x00, 0x18, 0xc0, 0x31, 0x0c, 0xf0, 0x0f, 0x00, 0x18, 0xc0, 0x31, 0x0c,
+   0x18, 0x1c, 0x00, 0x18, 0xc0, 0x7c, 0x3e, 0x18, 0x18, 0x00, 0x18, 0xe0,
+   0x00, 0x00, 0x18, 0x18, 0x00, 0x98, 0x77, 0x00, 0x00, 0x18, 0x18, 0x00,
+   0xb0, 0x3c, 0x00, 0x00, 0x0c, 0x1c, 0x00, 0xf0, 0x4e, 0x00, 0x00, 0x0c,
+   0x0e, 0x00, 0xc0, 0x47, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x7c, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/f01rdf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/f01rdf1.bitmap
new file mode 100644
index 0000000..7e4b97d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/f01rdf1.bitmap
@@ -0,0 +1,33 @@
+#define f01rdf1_width 170
+#define f01rdf1_height 16
+static char f01rdf1_bits[] = {
+   0x80, 0x00, 0xfe, 0x01, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x08, 0x3e, 0x1f, 0x00, 0xc0, 0x80,
+   0x83, 0x01, 0x00, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x38, 0x18, 0x00, 0x18, 0x18, 0x06, 0x00, 0x40, 0xc0, 0x01, 0x03,
+   0x00, 0x1c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
+   0x30, 0x00, 0x18, 0x18, 0x06, 0x00, 0x60, 0xe0, 0x00, 0x03, 0x00, 0x0e,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x30, 0x00,
+   0x30, 0x18, 0x06, 0x00, 0x60, 0x60, 0x00, 0x03, 0x00, 0x06, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x30, 0xf8,
+   0x07, 0x00, 0x20, 0x70, 0x00, 0x03, 0x00, 0x07, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0x70, 0x18, 0x06, 0x00,
+   0x30, 0x70, 0x00, 0x03, 0x00, 0x07, 0x30, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x07, 0x30, 0x18, 0x60, 0x18, 0x06, 0x00, 0x30, 0x30,
+   0x80, 0x03, 0x00, 0x03, 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x38, 0x1e, 0x60, 0x18, 0x06, 0x00, 0x30, 0x30, 0x80, 0x03,
+   0x00, 0x03, 0x38, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x38, 0x18, 0x60, 0x18, 0x06, 0x00, 0x30, 0x30, 0x80, 0x61, 0x07, 0x03,
+   0x18, 0x76, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0x18,
+   0x60, 0x3e, 0x1f, 0x00, 0x30, 0x30, 0xc0, 0xe1, 0x0d, 0x03, 0x1c, 0xde,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x18, 0x60, 0x00,
+   0x00, 0x00, 0x30, 0x30, 0xef, 0xd0, 0x0c, 0xf3, 0x0e, 0xcd, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x0e, 0x18, 0x30, 0x00, 0x00, 0x00,
+   0x20, 0x60, 0x79, 0x40, 0x0c, 0x96, 0x07, 0xc4, 0xf8, 0x1f, 0x18, 0xc0,
+   0x80, 0x01, 0x03, 0x96, 0x07, 0x18, 0x30, 0x00, 0x00, 0x00, 0x60, 0xe0,
+   0x9d, 0x60, 0x14, 0xde, 0x09, 0x46, 0x01, 0x00, 0x18, 0xc0, 0x80, 0x01,
+   0x03, 0xde, 0x09, 0x18, 0x18, 0x00, 0x00, 0x00, 0x60, 0x80, 0x8f, 0x60,
+   0x16, 0xf8, 0x08, 0x66, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x08, 0x18, 0x18, 0x00, 0x00, 0x00, 0x40, 0x00, 0xf8, 0x20, 0x0e, 0x80,
+   0x0f, 0xe2, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x7e,
+   0x08, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/f01rdf2.bitmap b/src/axiom-website/hyperdoc/bitmaps/f01rdf2.bitmap
new file mode 100644
index 0000000..f94da28
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/f01rdf2.bitmap
@@ -0,0 +1,34 @@
+#define f01rdf2_width 180
+#define f01rdf2_height 16
+static char f01rdf2_bits[] = {
+   0xf0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcf, 0x07, 0x18,
+   0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x01, 0x08, 0x86,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xe0, 0x21,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x01, 0x0c, 0x83, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x13, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x01, 0x04, 0x83, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x1b, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x00, 0x1c, 0x03,
+   0x00, 0xc7, 0x00, 0x00, 0x86, 0x01, 0x00, 0x03, 0x1c, 0x00, 0xf8, 0xff,
+   0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x07, 0x1a, 0xc3, 0x81,
+   0xc6, 0xe0, 0x00, 0x86, 0x01, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x1a, 0x83, 0x80, 0xc6,
+   0x40, 0x00, 0x86, 0x01, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0xc0, 0xff, 0x07, 0x00, 0x06, 0x02, 0x18, 0x83, 0x00, 0xc6, 0x40,
+   0x00, 0x86, 0x01, 0x80, 0x01, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0xc0, 0xff, 0x07, 0x00, 0x02, 0x1b, 0x8c, 0xc1, 0x06, 0x63, 0x60, 0x83,
+   0xcf, 0x07, 0x80, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x3f, 0x8c, 0xc1, 0x0f, 0x63, 0xe0, 0x07, 0x00,
+   0x00, 0xc0, 0x00, 0x5c, 0x00, 0xf8, 0xff, 0x01, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x02, 0x17, 0x8c, 0xc5, 0x05, 0x63, 0xe1, 0x02, 0x00, 0x00,
+   0xc0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x07, 0xcc, 0xc5, 0x01, 0x73, 0xe1, 0x00, 0x00, 0x00, 0xf8,
+   0x07, 0x56, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x83, 0x15, 0xf8, 0x63, 0x05, 0xfe, 0xb0, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
+   0x15, 0x00, 0x60, 0x05, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x72,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x1c,
+   0x00, 0x20, 0x07, 0x00, 0x90, 0x03, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/fi.bitmap b/src/axiom-website/hyperdoc/bitmaps/fi.bitmap
new file mode 100644
index 0000000..27c4b97
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/fi.bitmap
@@ -0,0 +1,6 @@
+#define fi_width 16
+#define fi_height 16
+static char fi_bits[] = {
+   0x00, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xb0, 0x01, 0x30, 0x00, 0x30, 0x60,
+   0x30, 0x20, 0xfc, 0x00, 0x18, 0x18, 0x18, 0x38, 0x18, 0x34, 0x18, 0x10,
+   0x18, 0x38, 0x1b, 0x28, 0x0f, 0x38, 0x07, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/forall.bitmap b/src/axiom-website/hyperdoc/bitmaps/forall.bitmap
new file mode 100644
index 0000000..ce1687f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/forall.bitmap
@@ -0,0 +1,8 @@
+#define forall_width 16
+#define forall_height 16
+#define forall_x_hot -1
+#define forall_y_hot -1
+static char forall_bits[] = {
+   0x00, 0x00, 0x06, 0x60, 0x06, 0x60, 0x0c, 0x30, 0x0c, 0x30, 0xf8, 0x1f,
+   0xf8, 0x1f, 0x30, 0x0c, 0x30, 0x0c, 0x60, 0x06, 0x60, 0x06, 0xc0, 0x03,
+   0xc0, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/fqr.bitmap b/src/axiom-website/hyperdoc/bitmaps/fqr.bitmap
new file mode 100644
index 0000000..d4fadc2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/fqr.bitmap
@@ -0,0 +1,9 @@
+#define fqr_width 30
+#define fqr_height 16
+static char fqr_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00,
+   0xb0, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x30, 0x58, 0xb0, 0x01, 0xfc, 0x6c, 0x70, 0x03, 0x18, 0x26, 0x68, 0x01,
+   0x18, 0x26, 0x20, 0x00, 0x18, 0x32, 0x30, 0x00, 0x18, 0x32, 0x33, 0x00,
+   0x18, 0x1e, 0x12, 0x00, 0x1b, 0x10, 0x02, 0x00, 0x0f, 0x18, 0x01, 0x00,
+   0x07, 0x3c, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/fr.bitmap b/src/axiom-website/hyperdoc/bitmaps/fr.bitmap
new file mode 100644
index 0000000..fb5ec98
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/fr.bitmap
@@ -0,0 +1,8 @@
+#define xr_width 16
+#define xr_height 16
+#define xr_x_hot -1
+#define xr_y_hot -1
+static char xr_bits[] = {
+   0x00, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xb0, 0x01, 0x30, 0x00, 0x30, 0x00,
+   0x30, 0x00, 0xfc, 0x00, 0x18, 0x6c, 0x18, 0xdc, 0x18, 0x5a, 0x18, 0x08,
+   0x18, 0x0c, 0x1b, 0x0c, 0x0f, 0x04, 0x07, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/gamma-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/gamma-cap.bitmap
new file mode 100644
index 0000000..e472024
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/gamma-cap.bitmap
@@ -0,0 +1,8 @@
+#define Gamma_width 16
+#define Gamma_height 16
+#define Gamma_x_hot -1
+#define Gamma_y_hot -1
+static char Gamma_bits[] = {
+   0xfe, 0x0f, 0xfc, 0x0f, 0x18, 0x08, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00,
+   0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00,
+   0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/gamma.bitmap b/src/axiom-website/hyperdoc/bitmaps/gamma.bitmap
new file mode 100644
index 0000000..09b1ea6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/gamma.bitmap
@@ -0,0 +1,6 @@
+#define gamma_width 16
+#define gamma_height 16
+static char gamma_bits[] = {
+ 0x00,0x00,0x00,0x00,0x38,0x10,0x7c,0x18,0xc6,0x1c,0x86,0x0c,0x82,0x0c,0x82,
+ 0x07,0x00,0x07,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x00,
+ 0xc0,0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/gamma.xbm b/src/axiom-website/hyperdoc/bitmaps/gamma.xbm
new file mode 100644
index 0000000..30d4e42
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/gamma.xbm
@@ -0,0 +1,7 @@
+#define gamma_width 15
+#define gamma_height 20
+static char gamma_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x20, 0x34, 0x10, 0x22, 0x08, 0x60, 0x04,
+   0x40, 0x02, 0x40, 0x01, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x60, 0x00,
+   0x60, 0x00, 0x20, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/gammacomplex.png b/src/axiom-website/hyperdoc/bitmaps/gammacomplex.png
new file mode 100644
index 0000000..cac4afd
Binary files /dev/null and b/src/axiom-website/hyperdoc/bitmaps/gammacomplex.png differ
diff --git a/src/axiom-website/hyperdoc/bitmaps/gammacomplexinverse.png b/src/axiom-website/hyperdoc/bitmaps/gammacomplexinverse.png
new file mode 100644
index 0000000..2ba6b6e
Binary files /dev/null and b/src/axiom-website/hyperdoc/bitmaps/gammacomplexinverse.png differ
diff --git a/src/axiom-website/hyperdoc/bitmaps/gammak.bitmap b/src/axiom-website/hyperdoc/bitmaps/gammak.bitmap
new file mode 100644
index 0000000..3b546a3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/gammak.bitmap
@@ -0,0 +1,7 @@
+#define gammak_width 22
+#define gammak_height 16
+static char gammak_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x00, 0xf8, 0x09, 0x00,
+   0x8c, 0x0d, 0x00, 0x04, 0x05, 0x00, 0x00, 0x87, 0x03, 0x00, 0x03, 0x01,
+   0x00, 0x03, 0x01, 0x00, 0x81, 0x0d, 0x00, 0x81, 0x1f, 0x00, 0x81, 0x0b,
+   0x80, 0x81, 0x03, 0x80, 0xc1, 0x0a, 0x80, 0xc0, 0x0a, 0x80, 0x40, 0x0e};
diff --git a/src/axiom-website/hyperdoc/bitmaps/gammareal3.png b/src/axiom-website/hyperdoc/bitmaps/gammareal3.png
new file mode 100644
index 0000000..55be8e5
Binary files /dev/null and b/src/axiom-website/hyperdoc/bitmaps/gammareal3.png differ
diff --git a/src/axiom-website/hyperdoc/bitmaps/gi.bitmap b/src/axiom-website/hyperdoc/bitmaps/gi.bitmap
new file mode 100644
index 0000000..b7fa131
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/gi.bitmap
@@ -0,0 +1,6 @@
+#define gi_width 16
+#define gi_height 16
+static char gi_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x30, 0x03, 0x18, 0xc3,
+   0x18, 0x43, 0x8c, 0x01, 0x8c, 0x31, 0x8c, 0x71, 0xcc, 0x69, 0xf8, 0x20,
+   0xc0, 0x70, 0xc4, 0x50, 0x6e, 0x70, 0x3e, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/great=.bitmap b/src/axiom-website/hyperdoc/bitmaps/great=.bitmap
new file mode 100644
index 0000000..86969e5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/great=.bitmap
@@ -0,0 +1,8 @@
+#define not__width 16
+#define not__height 16
+#define not__x_hot -1
+#define not__y_hot -1
+static char not__bits[] = {
+   0x00, 0x00, 0x0c, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x03, 0x00, 0x0c,
+   0x00, 0x30, 0x00, 0x30, 0x00, 0x0c, 0x00, 0x03, 0xc0, 0x00, 0x30, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/hbar.bitmap b/src/axiom-website/hyperdoc/bitmaps/hbar.bitmap
new file mode 100644
index 0000000..0416119
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/hbar.bitmap
@@ -0,0 +1,8 @@
+#define hbar_width 16
+#define hbar_height 16
+#define hbar_x_hot -1
+#define hbar_y_hot -1
+static char hbar_bits[] = {
+   0x70, 0x00, 0x60, 0x00, 0x60, 0x07, 0xe0, 0x00, 0x7e, 0x00, 0x30, 0x00,
+   0xb0, 0x03, 0x70, 0x02, 0x30, 0x02, 0x18, 0x03, 0x18, 0x03, 0x88, 0x01,
+   0x8c, 0x05, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/help.bitmap b/src/axiom-website/hyperdoc/bitmaps/help.bitmap
new file mode 100644
index 0000000..4c55ef0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/help.bitmap
@@ -0,0 +1,23 @@
+#define help_width 60
+#define help_height 30
+static char help_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x03,
+   0xfc, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xf8, 0xf8, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x7f, 0xfc,
+   0xf1, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x7f, 0xfc, 0xf1, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x7f, 0xfc, 0xf1, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xf1, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x0f,
+   0xfc, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xc7,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xc7,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xc7,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xc7,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/help2.bakmap b/src/axiom-website/hyperdoc/bitmaps/help2.bakmap
new file mode 100644
index 0000000..681822f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/help2.bakmap
@@ -0,0 +1,23 @@
+#define help2_width 60
+#define help2_height 30
+static char help2_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x0d, 0x0f, 0x03, 0xcc,
+   0x7f, 0xe0, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcc, 0x7f, 0xce, 0xf3, 0xfb,
+   0x9d, 0x9f, 0xf3, 0xcd, 0x7f, 0x9e, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcf,
+   0x7f, 0x9e, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcf, 0x7f, 0x9e, 0xf3, 0xfb,
+   0x9d, 0x9f, 0xf3, 0xcf, 0x7f, 0x9e, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcf,
+   0x7f, 0x9e, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcf, 0x7f, 0x9e, 0xf3, 0xfb,
+   0x9d, 0x9f, 0xf3, 0xcf, 0x7f, 0x9e, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xce,
+   0x7f, 0xce, 0xf3, 0xfb, 0x1d, 0x80, 0x03, 0xce, 0x7f, 0xe0, 0xf3, 0xfb,
+   0x9d, 0x9f, 0xf3, 0xce, 0x7f, 0xfe, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcf,
+   0x7f, 0xfe, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcf, 0x7f, 0xfe, 0xf3, 0xfb,
+   0x9d, 0x9f, 0xf3, 0xcf, 0x7f, 0xfe, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcf,
+   0x7f, 0xfe, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcf, 0x7f, 0xfe, 0xf3, 0xfb,
+   0x9d, 0x9f, 0xf3, 0xcf, 0x7f, 0xfe, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcf,
+   0x7f, 0xfe, 0xf3, 0xfb, 0x9d, 0x9f, 0xf3, 0xcd, 0x6f, 0xfe, 0xff, 0xfb,
+   0x9d, 0x9f, 0xf3, 0xcc, 0x67, 0xfe, 0xf3, 0xfb, 0x0d, 0x0f, 0x03, 0x0c,
+   0x60, 0xfc, 0xf3, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/help2.bitmap b/src/axiom-website/hyperdoc/bitmaps/help2.bitmap
new file mode 100644
index 0000000..f315bc3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/help2.bitmap
@@ -0,0 +1,25 @@
+#define help2_width 60
+#define help2_height 30
+#define help2_x_hot -1
+#define help2_y_hot -1
+static char help2_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x9f, 0x07, 0xf0,
+   0xfc, 0x0f, 0xf0, 0xff, 0x1f, 0x1f, 0x07, 0xe0, 0xf8, 0x0f, 0xe0, 0xff,
+   0x1f, 0x1f, 0x07, 0xe0, 0xf8, 0x0f, 0xc0, 0xff, 0x1f, 0x1f, 0xc7, 0xff,
+   0xf8, 0x8f, 0x87, 0xff, 0x1f, 0x1f, 0xc7, 0xff, 0xf8, 0x8f, 0x8f, 0xff,
+   0x1f, 0x1f, 0xc7, 0xff, 0xf8, 0x8f, 0x8f, 0xff, 0x1f, 0x1f, 0xc7, 0xff,
+   0xf8, 0x8f, 0x8f, 0xff, 0x1f, 0x1f, 0xc7, 0xff, 0xf8, 0x8f, 0x8f, 0xff,
+   0x1f, 0x1f, 0xc7, 0xff, 0xf8, 0x8f, 0x8f, 0xff, 0x1f, 0x00, 0x07, 0xf8,
+   0xf8, 0x8f, 0x87, 0xff, 0x1f, 0x00, 0x07, 0xf0, 0xf8, 0x0f, 0xc0, 0xff,
+   0x1f, 0x00, 0x07, 0xf0, 0xf8, 0x0f, 0xe0, 0xff, 0x1f, 0x1f, 0xc7, 0xff,
+   0xf8, 0x0f, 0xf0, 0xff, 0x1f, 0x1f, 0xc7, 0xff, 0xf8, 0x8f, 0xff, 0xff,
+   0x1f, 0x1f, 0xc7, 0xff, 0xf8, 0x8f, 0xff, 0xff, 0x1f, 0x1f, 0xc7, 0xff,
+   0xf8, 0x8f, 0xff, 0xff, 0x1f, 0x1f, 0xc7, 0xff, 0xf8, 0x8f, 0xff, 0xff,
+   0x1f, 0x1f, 0xc7, 0xff, 0xf8, 0x8f, 0xff, 0xff, 0x1f, 0x1f, 0xc7, 0xff,
+   0xf8, 0x8f, 0xff, 0xff, 0x1f, 0x1f, 0x07, 0xf0, 0x00, 0x8f, 0xff, 0xff,
+   0x1f, 0x1f, 0x07, 0xe0, 0x00, 0x8e, 0xff, 0xff, 0x3f, 0x3f, 0x0f, 0xe0,
+   0x01, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/help3.bitmap b/src/axiom-website/hyperdoc/bitmaps/help3.bitmap
new file mode 100644
index 0000000..ce0007d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/help3.bitmap
@@ -0,0 +1,23 @@
+#define help3_width 60
+#define help3_height 30
+static char help3_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xf8, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc,
+   0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xc3, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0xfc, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8,
+   0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8, 0xc3, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x7f, 0xfc, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
+   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/help3d.bitmap b/src/axiom-website/hyperdoc/bitmaps/help3d.bitmap
new file mode 100644
index 0000000..7a2d574
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/help3d.bitmap
@@ -0,0 +1,23 @@
+#define help3d.bitmap_width 60
+#define help3d.bitmap_height 30
+static char help3d.bitmap_bits[] = {
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0xd1, 0xf7, 0x55, 0x55,
+   0x5f, 0x55, 0x55, 0x07, 0xaa, 0xeb, 0xaa, 0xaa, 0xbe, 0xaa, 0xaa, 0x0e,
+   0xd1, 0xf7, 0x55, 0x55, 0x5d, 0x55, 0x55, 0x07, 0xaa, 0xeb, 0xaa, 0xaa,
+   0xbe, 0xaa, 0xaa, 0x0e, 0xd1, 0xf7, 0x55, 0x55, 0x5d, 0x55, 0x55, 0x07,
+   0xaa, 0xeb, 0xaa, 0xaa, 0xbe, 0xaa, 0xaa, 0x0e, 0xd1, 0xf7, 0xf5, 0x57,
+   0x5d, 0xdd, 0x57, 0x07, 0xaa, 0xff, 0xfa, 0xaf, 0xbe, 0xfa, 0xaf, 0x0e,
+   0xd1, 0xff, 0x7d, 0x5f, 0x5d, 0x7d, 0x5f, 0x07, 0xaa, 0xeb, 0xbe, 0xae,
+   0xbe, 0xba, 0xbe, 0x0e, 0xd1, 0xf7, 0xfd, 0x5f, 0x5d, 0x7d, 0x5d, 0x07,
+   0xaa, 0xeb, 0xfe, 0xaf, 0xbe, 0xba, 0xbe, 0x0e, 0xd1, 0xf7, 0x5d, 0x55,
+   0x5d, 0x7d, 0x5d, 0x07, 0xaa, 0xeb, 0xbe, 0xaa, 0xbe, 0xba, 0xbe, 0x0e,
+   0xd1, 0xf7, 0x7d, 0x5d, 0x5d, 0x7d, 0x5f, 0x07, 0xaa, 0xeb, 0xfa, 0xaf,
+   0xbe, 0xfa, 0xaf, 0x0e, 0xd1, 0xf7, 0xf5, 0x57, 0x7f, 0xfd, 0x57, 0x07,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xba, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55,
+   0x55, 0x7d, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xba, 0xaa, 0x0e,
+   0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05};
diff --git a/src/axiom-website/hyperdoc/bitmaps/help3d_old.bitmap b/src/axiom-website/hyperdoc/bitmaps/help3d_old.bitmap
new file mode 100644
index 0000000..38ab829
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/help3d_old.bitmap
@@ -0,0 +1,23 @@
+#define help2_width 60
+#define help2_height 30
+static char help2_bits[] = {
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xea, 0xea, 0xfa, 0xaf,
+   0xab, 0xfa, 0xaf, 0x0e, 0xf1, 0xf5, 0xfd, 0x5f, 0x57, 0xf5, 0x5f, 0x07,
+   0xea, 0xea, 0xfa, 0xbf, 0xaf, 0xfa, 0xbf, 0x0e, 0xf1, 0xf5, 0x7d, 0x55,
+   0x57, 0x75, 0x7d, 0x07, 0xea, 0xea, 0xba, 0xaa, 0xaf, 0xfa, 0xfa, 0x0e,
+   0xf1, 0xf5, 0x7d, 0x55, 0x57, 0x75, 0x75, 0x07, 0xea, 0xea, 0xba, 0xaa,
+   0xaf, 0xfa, 0xfa, 0x0e, 0xf1, 0xf5, 0x7d, 0x55, 0x57, 0x75, 0x75, 0x07,
+   0xea, 0xea, 0xba, 0xaa, 0xaf, 0xfa, 0xfa, 0x0e, 0xf1, 0xff, 0xfd, 0x57,
+   0x57, 0x75, 0x7d, 0x07, 0xea, 0xff, 0xfa, 0xaf, 0xaf, 0xfa, 0xbf, 0x0e,
+   0xf1, 0xff, 0xfd, 0x5f, 0x57, 0xf5, 0x5f, 0x07, 0xea, 0xea, 0xba, 0xaa,
+   0xaf, 0xfa, 0xaf, 0x0e, 0xf1, 0xf5, 0x7d, 0x55, 0x57, 0xf5, 0x55, 0x07,
+   0xea, 0xea, 0xba, 0xaa, 0xaf, 0xfa, 0xaa, 0x0e, 0xf1, 0xf5, 0x7d, 0x55,
+   0x57, 0x75, 0x55, 0x07, 0xea, 0xea, 0xba, 0xaa, 0xaf, 0xfa, 0xaa, 0x0e,
+   0xf1, 0xf5, 0x7d, 0x55, 0x57, 0x75, 0x55, 0x07, 0xea, 0xea, 0xba, 0xaa,
+   0xaf, 0xfa, 0xaa, 0x0e, 0xf1, 0xf5, 0xfd, 0x5f, 0xff, 0x77, 0x55, 0x07,
+   0xea, 0xea, 0xfa, 0xbf, 0xff, 0xfb, 0xaa, 0x0e, 0xd1, 0xd5, 0xf5, 0x5f,
+   0xff, 0x77, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05};
diff --git a/src/axiom-website/hyperdoc/bitmaps/help3di.bitmap b/src/axiom-website/hyperdoc/bitmaps/help3di.bitmap
new file mode 100644
index 0000000..d933efa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/help3di.bitmap
@@ -0,0 +1,23 @@
+#define help3di_width 60
+#define help3di_height 30
+static char help3di_bits[] = {
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf5, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xfa, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3,
+   0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xf8, 0x15, 0x15, 0x05, 0x50,
+   0x54, 0x05, 0x50, 0xf1, 0x0e, 0x0a, 0x02, 0xa0, 0xa8, 0x0a, 0xa0, 0xf8,
+   0x15, 0x15, 0x05, 0x40, 0x50, 0x05, 0x40, 0xf1, 0x0e, 0x0a, 0x82, 0xaa,
+   0xa8, 0x8a, 0x82, 0xf8, 0x15, 0x15, 0x45, 0x55, 0x50, 0x05, 0x05, 0xf1,
+   0x0e, 0x0a, 0x82, 0xaa, 0xa8, 0x8a, 0x8a, 0xf8, 0x15, 0x15, 0x45, 0x55,
+   0x50, 0x05, 0x05, 0xf1, 0x0e, 0x0a, 0x82, 0xaa, 0xa8, 0x8a, 0x8a, 0xf8,
+   0x15, 0x15, 0x45, 0x55, 0x50, 0x05, 0x05, 0xf1, 0x0e, 0x00, 0x02, 0xa8,
+   0xa8, 0x8a, 0x82, 0xf8, 0x15, 0x00, 0x05, 0x50, 0x50, 0x05, 0x40, 0xf1,
+   0x0e, 0x00, 0x02, 0xa0, 0xa8, 0x0a, 0xa0, 0xf8, 0x15, 0x15, 0x45, 0x55,
+   0x50, 0x05, 0x50, 0xf1, 0x0e, 0x0a, 0x82, 0xaa, 0xa8, 0x0a, 0xaa, 0xf8,
+   0x15, 0x15, 0x45, 0x55, 0x50, 0x05, 0x55, 0xf1, 0x0e, 0x0a, 0x82, 0xaa,
+   0xa8, 0x8a, 0xaa, 0xf8, 0x15, 0x15, 0x45, 0x55, 0x50, 0x05, 0x55, 0xf1,
+   0x0e, 0x0a, 0x82, 0xaa, 0xa8, 0x8a, 0xaa, 0xf8, 0x15, 0x15, 0x45, 0x55,
+   0x50, 0x05, 0x55, 0xf1, 0x0e, 0x0a, 0x02, 0xa0, 0x00, 0x88, 0xaa, 0xf8,
+   0x15, 0x15, 0x05, 0x40, 0x00, 0x04, 0x55, 0xf1, 0x2e, 0x2a, 0x0a, 0xa0,
+   0x00, 0x88, 0xaa, 0xf8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf1,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xfa};
diff --git a/src/axiom-website/hyperdoc/bitmaps/home3d.bitmap b/src/axiom-website/hyperdoc/bitmaps/home3d.bitmap
new file mode 100644
index 0000000..7a827fb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/home3d.bitmap
@@ -0,0 +1,23 @@
+#define home3d.bitmap_width 60
+#define home3d.bitmap_height 30
+static char home3d.bitmap_bits[] = {
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xef, 0xab, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0xd7, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xaa, 0xef, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0xd7, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0xaa, 0xef, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0x51, 0xd7, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xef, 0xeb, 0xaf,
+   0xbb, 0xeb, 0xaf, 0x0e, 0x51, 0xff, 0xf5, 0xdf, 0xff, 0xf7, 0x5f, 0x07,
+   0xaa, 0xff, 0xfb, 0xae, 0xbb, 0xfb, 0xbe, 0x0e, 0x51, 0xd7, 0x7d, 0xdd,
+   0xff, 0x7f, 0x5d, 0x07, 0xaa, 0xef, 0xbb, 0xbe, 0xbb, 0xfb, 0xbf, 0x0e,
+   0x51, 0xd7, 0x7d, 0xdd, 0xff, 0xff, 0x5f, 0x07, 0xaa, 0xef, 0xbb, 0xbe,
+   0xbb, 0xbb, 0xaa, 0x0e, 0x51, 0xd7, 0x7d, 0xdd, 0xff, 0x7f, 0x55, 0x07,
+   0xaa, 0xef, 0xfb, 0xae, 0xbb, 0xfb, 0xba, 0x0e, 0x51, 0xd7, 0xf5, 0xdf,
+   0xff, 0xf7, 0x5f, 0x07, 0xaa, 0xef, 0xeb, 0xaf, 0xbb, 0xeb, 0xaf, 0x0e,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a};
diff --git a/src/axiom-website/hyperdoc/bitmaps/home3d_old.bitmap b/src/axiom-website/hyperdoc/bitmaps/home3d_old.bitmap
new file mode 100644
index 0000000..7711cf7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/home3d_old.bitmap
@@ -0,0 +1,23 @@
+#define home3d_width 60
+#define home3d_height 30
+static char home3d_bits[] = {
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x51, 0x55, 0x55, 0xd5, 0x55, 0x56, 0x55, 0x07, 0xfa, 0xfa, 0xfa, 0xab,
+   0xab, 0xef, 0xff, 0x0e, 0x71, 0x75, 0xfd, 0xd7, 0x57, 0xd7, 0xff, 0x07,
+   0xfa, 0xfa, 0xfe, 0xaf, 0xaf, 0xef, 0xff, 0x0e, 0x71, 0x75, 0x5d, 0xdf,
+   0xd7, 0xd7, 0x55, 0x07, 0xfa, 0xfa, 0xbe, 0xae, 0xaf, 0xef, 0xab, 0x0e,
+   0x71, 0x75, 0x5d, 0xdf, 0xdf, 0xd7, 0x55, 0x07, 0xfa, 0xfa, 0xbe, 0xae,
+   0xef, 0xef, 0xab, 0x0e, 0x71, 0x75, 0x5d, 0xdf, 0xff, 0xd7, 0x55, 0x07,
+   0xfa, 0xfa, 0xbe, 0xae, 0xfb, 0xef, 0xab, 0x0e, 0xf1, 0x7f, 0x5d, 0xdf,
+   0x77, 0xd7, 0x7f, 0x07, 0xfa, 0xff, 0xbe, 0xae, 0xab, 0xef, 0xff, 0x0e,
+   0xf1, 0x7f, 0x5d, 0xdf, 0x57, 0xd7, 0x7f, 0x07, 0xfa, 0xfa, 0xbe, 0xae,
+   0xab, 0xef, 0xab, 0x0e, 0x71, 0x75, 0x5d, 0xdf, 0x57, 0xd7, 0x55, 0x07,
+   0xfa, 0xfa, 0xbe, 0xae, 0xab, 0xef, 0xab, 0x0e, 0x71, 0x75, 0x5d, 0xdf,
+   0x57, 0xd7, 0x55, 0x07, 0xfa, 0xfa, 0xbe, 0xae, 0xab, 0xef, 0xab, 0x0e,
+   0x71, 0x75, 0x5d, 0xdf, 0x57, 0xd7, 0x55, 0x07, 0xfa, 0xfa, 0xbe, 0xae,
+   0xab, 0xef, 0xab, 0x0e, 0x71, 0x75, 0xfd, 0xdf, 0x57, 0xd7, 0x7f, 0x07,
+   0xfa, 0xfa, 0xfa, 0xaf, 0xab, 0xef, 0xff, 0x0e, 0x71, 0x75, 0xf5, 0xd7,
+   0x57, 0xd7, 0xff, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05};
diff --git a/src/axiom-website/hyperdoc/bitmaps/home3di.bitmap b/src/axiom-website/hyperdoc/bitmaps/home3di.bitmap
new file mode 100644
index 0000000..3ea3f62
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/home3di.bitmap
@@ -0,0 +1,23 @@
+#define home3di_width 60
+#define home3di_height 30
+static char home3di_bits[] = {
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf5, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xfa, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3,
+   0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xf8, 0x45, 0x45, 0x05, 0x54,
+   0x54, 0x14, 0x00, 0xf1, 0x8e, 0x8a, 0x02, 0x28, 0xa8, 0x28, 0x00, 0xf8,
+   0x05, 0x05, 0x01, 0x50, 0x50, 0x10, 0x00, 0xf1, 0x8e, 0x8a, 0xa2, 0x20,
+   0x28, 0x28, 0xaa, 0xf8, 0x05, 0x05, 0x41, 0x51, 0x50, 0x10, 0x54, 0xf1,
+   0x8e, 0x8a, 0xa2, 0x20, 0x20, 0x28, 0xaa, 0xf8, 0x05, 0x05, 0x41, 0x51,
+   0x10, 0x10, 0x54, 0xf1, 0x8e, 0x8a, 0xa2, 0x20, 0x00, 0x28, 0xaa, 0xf8,
+   0x05, 0x05, 0x41, 0x51, 0x04, 0x10, 0x54, 0xf1, 0x0e, 0x80, 0xa2, 0x20,
+   0x80, 0x28, 0x80, 0xf8, 0x05, 0x00, 0x41, 0x51, 0x44, 0x10, 0x00, 0xf1,
+   0x0e, 0x80, 0xa2, 0x20, 0x88, 0x28, 0x80, 0xf8, 0x05, 0x05, 0x41, 0x51,
+   0x54, 0x10, 0x54, 0xf1, 0x8e, 0x8a, 0xa2, 0x20, 0xa8, 0x28, 0xaa, 0xf8,
+   0x05, 0x05, 0x41, 0x51, 0x54, 0x10, 0x54, 0xf1, 0x8e, 0x8a, 0xa2, 0x20,
+   0xa8, 0x28, 0xaa, 0xf8, 0x05, 0x05, 0x41, 0x51, 0x54, 0x10, 0x54, 0xf1,
+   0x8e, 0x8a, 0xa2, 0x20, 0xa8, 0x28, 0xaa, 0xf8, 0x05, 0x05, 0x41, 0x51,
+   0x54, 0x10, 0x54, 0xf1, 0x8e, 0x8a, 0x02, 0x20, 0xa8, 0x28, 0x80, 0xf8,
+   0x05, 0x05, 0x05, 0x50, 0x54, 0x10, 0x00, 0xf1, 0x8e, 0x8a, 0x0a, 0xa8,
+   0xa8, 0x28, 0x00, 0xf8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf1,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xfa};
diff --git a/src/axiom-website/hyperdoc/bitmaps/im-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/im-cap.bitmap
new file mode 100644
index 0000000..84c103c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/im-cap.bitmap
@@ -0,0 +1,6 @@
+#define Im_width 16
+#define Im_height 16
+static char Im_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0xc4, 0x00, 0x84, 0x21, 0x08, 0x1f,
+   0x00, 0x07, 0x00, 0x0f, 0x00, 0x19, 0x00, 0x11, 0x00, 0x01, 0x80, 0x00,
+   0x88, 0x00, 0x98, 0x00, 0xb0, 0x00, 0xe0, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/imath.bitmap b/src/axiom-website/hyperdoc/bitmaps/imath.bitmap
new file mode 100644
index 0000000..90acfad
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/imath.bitmap
@@ -0,0 +1,8 @@
+#define imath_width 16
+#define imath_height 16
+#define imath_x_hot -1
+#define imath_y_hot -1
+static char imath_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x1e, 0x00,
+   0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x01,
+   0xb0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/infty.bitmap b/src/axiom-website/hyperdoc/bitmaps/infty.bitmap
new file mode 100644
index 0000000..073951f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/infty.bitmap
@@ -0,0 +1,8 @@
+#define infty_width 16
+#define infty_height 16
+#define infty_x_hot -1
+#define infty_y_hot -1
+static char infty_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c,
+   0xc6, 0xc6, 0x82, 0x83, 0x02, 0x81, 0x86, 0xc3, 0xcc, 0x66, 0x38, 0x1c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/infty.xbm b/src/axiom-website/hyperdoc/bitmaps/infty.xbm
new file mode 100644
index 0000000..d19f8ee
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/infty.xbm
@@ -0,0 +1,6 @@
+#define infty_width 16
+#define infty_height 16
+static char infty_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c,
+   0x64, 0x26, 0xc2, 0x43, 0xc2, 0x43, 0xc2, 0x43, 0x64, 0x26, 0x38, 0x1c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ing.bitmap b/src/axiom-website/hyperdoc/bitmaps/ing.bitmap
new file mode 100644
index 0000000..2947591
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ing.bitmap
@@ -0,0 +1,9 @@
+#define junk_width 16
+#define junk_height 32
+static char junk_bits[] = {
+   0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x30, 0x0e, 0x78, 0x12,
+   0x48, 0x12, 0x48, 0x0e, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
+   0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
+   0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
+   0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0f, 0x00, 0xc6, 0x01, 0x20, 0x01,
+   0x20, 0x01, 0xc0, 0x01};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ing1.bitmap b/src/axiom-website/hyperdoc/bitmaps/ing1.bitmap
new file mode 100644
index 0000000..464e6b0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ing1.bitmap
@@ -0,0 +1,11 @@
+#define ing_width 16
+#define ing_height 32
+#define ing_x_hot -1
+#define ing_y_hot -1
+static char ing_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x6c, 0x78, 0x92,
+   0x48, 0x92, 0x48, 0x6c, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
+   0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
+   0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
+   0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0f, 0x00, 0xc6, 0x01, 0x20, 0x01,
+   0x20, 0x01, 0xc0, 0x01};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ing2.bitmap b/src/axiom-website/hyperdoc/bitmaps/ing2.bitmap
new file mode 100644
index 0000000..7c32a19
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ing2.bitmap
@@ -0,0 +1,25 @@
+#define ing2_width 64
+#define ing2_height 32
+static char ing2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x07, 0x98, 0x03,
+   0x00, 0x00, 0x73, 0x00, 0x78, 0x09, 0xbc, 0x64, 0x00, 0x80, 0x97, 0x00,
+   0x48, 0x29, 0xa4, 0x94, 0x00, 0x80, 0x94, 0x0e, 0x48, 0x27, 0xa4, 0x43,
+   0x00, 0x80, 0x74, 0x12, 0x08, 0x20, 0x04, 0x20, 0x00, 0x80, 0x00, 0x12,
+   0x08, 0x20, 0x04, 0xf0, 0x00, 0x80, 0x00, 0x12, 0x08, 0x00, 0x04, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x08, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x08, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x49, 0x82, 0x00, 0x00,
+   0x08, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x08, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x08, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x09, 0x80, 0x04, 0x00,
+   0x00, 0x90, 0x00, 0x00, 0xc9, 0x81, 0xe4, 0x00, 0x00, 0x90, 0x1c, 0x00,
+   0x2f, 0x81, 0x97, 0x0c, 0x00, 0xf0, 0x12, 0x00, 0x26, 0x05, 0x93, 0x12,
+   0x00, 0x60, 0xd2, 0x01, 0xc0, 0x05, 0xe0, 0x08, 0x00, 0x00, 0x5c, 0x02,
+   0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x40, 0x02, 0x00, 0x04, 0x00, 0x1e,
+   0x00, 0x00, 0x40, 0x02};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int.bitmap b/src/axiom-website/hyperdoc/bitmaps/int.bitmap
new file mode 100644
index 0000000..80ada88
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int.bitmap
@@ -0,0 +1,8 @@
+#define int_width 16
+#define int_height 16
+#define int_x_hot -1
+#define int_y_hot -1
+static char int_bits[] = {
+   0x00, 0x07, 0x80, 0x0d, 0x80, 0x09, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00,
+   0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00,
+   0x20, 0x00, 0x32, 0x00, 0x36, 0x00, 0x1c, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int1.xbm b/src/axiom-website/hyperdoc/bitmaps/int1.xbm
new file mode 100644
index 0000000..71d5adf
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int1.xbm
@@ -0,0 +1,78 @@
+#define int1_width 159
+#define int1_height 45
+static char int1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x80, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xe3, 0x0e,
+   0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x92, 0x13, 0x00, 0x00, 0x00, 0x90,
+   0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x48, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0xc0, 0x10, 0x11, 0x00, 0x00, 0x00, 0x08, 0x83, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x90, 0x13,
+   0x00, 0x00, 0x3f, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x21, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0xe0, 0x0e, 0x00, 0x00, 0x00, 0x12,
+   0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x9e, 0x0c, 0x00, 0x40, 0x00,
+   0xf8, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x00, 0x00,
+   0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x8c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x20, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03,
+   0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x80, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x9c, 0x81, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x43, 0x98, 0x80, 0x00, 0x0c, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x43, 0x70, 0x80,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x60, 0x80, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x43, 0xd0, 0x80, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x88, 0x81,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x8c, 0x83, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc8, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x09,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x0d,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x21, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x81, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0xc1, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0xb0, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x20, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int10.xbm b/src/axiom-website/hyperdoc/bitmaps/int10.xbm
new file mode 100644
index 0000000..6f4690b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int10.xbm
@@ -0,0 +1,64 @@
+#define int10_width 134
+#define int10_height 43
+static char int10_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x8e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x51, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x18, 0x71, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x08, 0x51, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
+   0x08, 0x8e, 0x03, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x27, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x09, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x80, 0x01, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0xe0, 0xc7, 0xff, 0x03, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x24, 0x00, 0xf8, 0xf1, 0xc3, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x02, 0x00, 0x10,
+   0x00, 0x0c, 0x91, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x30, 0x02, 0x00, 0x08, 0x00, 0x0c, 0x81, 0xc1, 0xfc, 0xff, 0xff,
+   0xff, 0x07, 0x80, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x0c,
+   0xc1, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x61, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x21, 0xc2,
+   0x00, 0x00, 0xff, 0xff, 0x0f, 0x80, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00,
+   0x00, 0x00, 0x78, 0xf3, 0xc3, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x40, 0x38, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x60, 0x64, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x20, 0xc6, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x10, 0xc6, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x10, 0xc0, 0xf8, 0x03, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x60,
+   0xa0, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x20, 0x08, 0x30, 0x90, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x04, 0x90, 0x90, 0x01,
+   0x20, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x60, 0x04, 0x88, 0x88, 0x01, 0x20, 0x80, 0x28, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x02, 0xfc, 0x88, 0x01, 0x16, 0xbf,
+   0x38, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x02,
+   0xfe, 0x88, 0x01, 0x0c, 0x80, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int11.xbm b/src/axiom-website/hyperdoc/bitmaps/int11.xbm
new file mode 100644
index 0000000..b93e304
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int11.xbm
@@ -0,0 +1,191 @@
+#define int11_width 372
+#define int11_height 48
+static char int11_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x06, 0x01, 0x00, 0xc0,
+   0x10, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x05, 0x01, 0x00, 0xa0, 0x10,
+   0x00, 0x00, 0x0a, 0x02, 0x00, 0x40, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x00, 0x80, 0x01, 0x01, 0x00, 0x30, 0x10, 0x00,
+   0x00, 0x03, 0x02, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x80, 0x00, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00,
+   0x01, 0x02, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x90, 0x24, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x00, 0x80, 0x80, 0x03, 0x00, 0x10, 0x38, 0x00, 0x00, 0x81,
+   0x07, 0x00, 0x20, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x18, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x18, 0x82, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x24, 0x43, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0xf0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0xf0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x90, 0x00, 0x20, 0x04, 0x02, 0x00, 0x40, 0x00, 0x80, 0x20, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0xf0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x10, 0x06, 0x82, 0x04, 0x40, 0x48, 0x00, 0x11, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0xf0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x1a, 0xce, 0x00, 0x9c, 0x01, 0x00, 0xf0,
+   0x11, 0x84, 0x0f, 0xc3, 0xf0, 0x31, 0x0c, 0x79, 0x00, 0xfc, 0x38, 0x07,
+   0x00, 0xfc, 0x38, 0x07, 0x00, 0xfc, 0x38, 0x07, 0x00, 0xfc, 0x38, 0x07,
+   0xf0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x19, 0x4c, 0x00, 0x98, 0x00, 0x00, 0x18, 0x11,
+   0x04, 0x02, 0x23, 0x41, 0x30, 0x0c, 0x01, 0x00, 0x86, 0x30, 0x01, 0x00,
+   0x86, 0x30, 0x01, 0x00, 0x86, 0x30, 0x01, 0x00, 0x86, 0x30, 0x01, 0xf0,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x80, 0x18, 0x38, 0x00, 0x70, 0x00, 0x00, 0x18, 0x11, 0x04,
+   0x82, 0x84, 0x40, 0x48, 0x0a, 0x01, 0x00, 0x86, 0xe0, 0x00, 0x00, 0x86,
+   0xe0, 0x00, 0x00, 0x86, 0xe0, 0x00, 0x00, 0x86, 0xe0, 0x00, 0xf0, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x80, 0x3f, 0x30, 0x20, 0x60, 0xe0, 0x00, 0xf8, 0x20, 0x04, 0x00,
+   0x40, 0x01, 0x00, 0x9e, 0x00, 0x00, 0x86, 0xc0, 0x00, 0x01, 0x86, 0xc0,
+   0xc0, 0x01, 0x86, 0xc0, 0xc0, 0x01, 0x86, 0xc0, 0x80, 0xf0, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x18, 0x68, 0x30, 0xd0, 0x90, 0x00, 0x18, 0x40, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x48, 0x00, 0x00, 0x86, 0xa0, 0x81, 0x01, 0x86, 0xa0, 0x21,
+   0x01, 0x86, 0xa0, 0x21, 0x03, 0x86, 0xa0, 0xc1, 0xf0, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x18, 0xc4, 0x20, 0x88, 0x81, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc6, 0x10, 0xc3, 0x01, 0xc6, 0x10, 0x03, 0x01,
+   0xc6, 0x10, 0x03, 0x01, 0xc6, 0x10, 0x83, 0xf0, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3c,
+   0xc6, 0x21, 0x8c, 0xe3, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xbc, 0x19, 0x27, 0x01, 0xbc, 0x19, 0xc7, 0x01, 0xbc,
+   0x19, 0x07, 0x01, 0xbc, 0x19, 0x87, 0xf0, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x40,
+   0x02, 0x00, 0x00, 0x80, 0xf0, 0x00, 0x0c, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00,
+   0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01,
+   0x00, 0x00, 0xe0, 0xf1, 0x00, 0x0c, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x0c, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
+   0x06, 0x03, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x80, 0x61,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x82,
+   0x04, 0x00, 0x40, 0x48, 0x00, 0x00, 0x04, 0x09, 0x00, 0x80, 0x90, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x82, 0x04,
+   0x00, 0x40, 0x48, 0x00, 0x00, 0x04, 0x09, 0x00, 0x80, 0x90, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x82, 0x04, 0x00,
+   0x40, 0x48, 0x00, 0x00, 0x04, 0x09, 0x00, 0x80, 0x90, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x81, 0x04, 0x00, 0x2c,
+   0x48, 0x00, 0xc0, 0x02, 0x09, 0x00, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x80, 0x04, 0x00, 0x18, 0x48,
+   0x00, 0x80, 0x01, 0x09, 0x00, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int12.xbm b/src/axiom-website/hyperdoc/bitmaps/int12.xbm
new file mode 100644
index 0000000..0705ee5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int12.xbm
@@ -0,0 +1,127 @@
+#define int12_width 231
+#define int12_height 51
+static char int12_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xd8, 0x00,
+   0x00, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0xd0, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x3c,
+   0x82, 0x1b, 0x00, 0x70, 0x03, 0x00, 0x00, 0x00, 0x70, 0x03, 0x20, 0x80,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x18, 0x02, 0x0b, 0x00, 0x60, 0x01, 0x00, 0x00,
+   0x00, 0x60, 0x01, 0x40, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x02, 0x06,
+   0x03, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x40, 0x80, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x18, 0x02, 0x86, 0x03, 0xc0, 0x20, 0x01, 0x00, 0x00, 0xc0,
+   0xd0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x02, 0x0d, 0x02, 0xa0,
+   0x81, 0x01, 0x00, 0x00, 0xa0, 0xb1, 0x41, 0x80, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x06, 0x00, 0x33, 0x33, 0x33, 0x33, 0x00, 0x0c, 0x00, 0x00,
+   0x3c, 0x84, 0x39, 0xc2, 0x30, 0x83, 0x60, 0x98, 0x99, 0x31, 0x97, 0x41,
+   0x80, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x33, 0x33, 0x33,
+   0x33, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x82, 0x00, 0x40, 0x42,
+   0x98, 0x19, 0x01, 0x90, 0x21, 0x80, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08,
+   0x80, 0x47, 0x00, 0xe0, 0x21, 0x00, 0x80, 0x00, 0x90, 0x21, 0x80, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x8c, 0x00, 0x80, 0x31,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x60, 0x58, 0x00, 0x80, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x26, 0x30, 0x08, 0x98, 0xc0, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x81, 0x41, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x3c, 0x70,
+   0x0c, 0xf0, 0xc0, 0x91, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x81, 0xc3, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x18, 0xc8, 0x08, 0x60, 0x20, 0x43, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x40, 0x46, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x84, 0x09, 0x00,
+   0x10, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4c, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int13.xbm b/src/axiom-website/hyperdoc/bitmaps/int13.xbm
new file mode 100644
index 0000000..3d4b3be
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int13.xbm
@@ -0,0 +1,49 @@
+#define int13_width 96
+#define int13_height 46
+static char int13_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xc0, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x19, 0x80, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0xc0, 0xf0, 0xf0, 0xc2, 0x30, 0x12, 0xfc, 0x8d, 0x01,
+   0x00, 0x60, 0x00, 0xc0, 0x98, 0x99, 0xc1, 0x30, 0x0f, 0x86, 0x8c, 0x01,
+   0x00, 0x30, 0x00, 0xc0, 0x08, 0x09, 0xc1, 0x30, 0x00, 0x86, 0x8c, 0x01,
+   0x00, 0x30, 0x00, 0xc0, 0x08, 0x99, 0xc1, 0x30, 0x00, 0x86, 0x8c, 0x01,
+   0x00, 0x30, 0x00, 0xc0, 0x08, 0xf1, 0xc0, 0x30, 0x00, 0x86, 0x8c, 0x01,
+   0x00, 0x30, 0x00, 0xc0, 0x98, 0x09, 0xc0, 0x30, 0x00, 0xc6, 0x8c, 0x01,
+   0x00, 0x30, 0x00, 0xe0, 0xf1, 0xf8, 0x81, 0x6f, 0x00, 0xfc, 0x79, 0x03,
+   0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x84, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x72, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int2.xbm b/src/axiom-website/hyperdoc/bitmaps/int2.xbm
new file mode 100644
index 0000000..f530e9c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int2.xbm
@@ -0,0 +1,49 @@
+#define int2_width 96
+#define int2_height 46
+static char int2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x8a, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x43, 0x14, 0x01, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x41, 0x1c, 0x01, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x41, 0x14, 0x01, 0x00, 0xfc, 0x50, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x81, 0xe3, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x46, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x71, 0x0c,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x60, 0x04,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x86, 0x60, 0x02,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x40, 0x02,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xc0, 0x01,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x80, 0x01,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x81, 0x00,
+   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x80, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x98, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc7, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x46, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x0a, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x09, 0x00, 0x00, 0x18, 0x04, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x19, 0x00, 0x00, 0x10, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x02, 0x11, 0x00, 0x00, 0x10, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x19, 0x00, 0x00, 0x30, 0x82, 0x09, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0a, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int3.xbm b/src/axiom-website/hyperdoc/bitmaps/int3.xbm
new file mode 100644
index 0000000..c0b5a46
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int3.xbm
@@ -0,0 +1,82 @@
+#define int3_width 154
+#define int3_height 47
+static char int3_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x80, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x46, 0x06, 0x00, 0x00, 0xc0, 0x01,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x05, 0x02, 0x00, 0x00, 0x20, 0x01, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80, 0x01, 0x02,
+   0x00, 0x00, 0x00, 0xb1, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x03,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x80, 0x61,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x80, 0x80, 0x04, 0x00, 0xf0, 0x03, 0x41, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x1f, 0x04, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80, 0xc0, 0x03,
+   0x00, 0x00, 0x20, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0xc0, 0x00, 0x00, 0xe0, 0x03, 0xe0, 0x91,
+   0x01, 0x00, 0x08, 0x80, 0x0f, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0xc0, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc0,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x40, 0x00, 0x00,
+   0x30, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x40, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x7f, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x60, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xfc,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0xfc, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xfc,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x87, 0x73, 0xfc, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x13, 0xfc,
+   0x00, 0x18, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x3f, 0x30, 0x04, 0x0e, 0xfc, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x04, 0x0c, 0xfc, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x1a, 0xfc,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x31, 0xfc, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x8d, 0x71, 0xfc, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00,
+   0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x31, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x80, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x21, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x4c, 0x90, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x78, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3f, 0x00,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x02, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x82, 0x04, 0x00, 0x00, 0x00, 0x00, 0xc4,
+   0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x82, 0x04, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x00, 0x80,
+   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x60, 0x81, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0xc0, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int4.xbm b/src/axiom-website/hyperdoc/bitmaps/int4.xbm
new file mode 100644
index 0000000..901814e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int4.xbm
@@ -0,0 +1,60 @@
+#define int4_width 114
+#define int4_height 45
+static char int4_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x18,
+   0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x00, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x02,
+   0x12, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xfc,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0xfc, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0xfc, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfc, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfc,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xe3, 0x1c, 0xfc, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0xc1, 0x04, 0xfc, 0x00, 0x60, 0x00, 0x00, 0xf0, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x07, 0x0c, 0x81, 0x03, 0xfc, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x03, 0xfc,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x81, 0x06, 0xfc, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x8c, 0x41, 0x0c, 0xfc, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x70, 0x63, 0x1c, 0xfc, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x00, 0x30, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x30, 0x00, 0x00, 0x00, 0x80,
+   0x04, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x10, 0x00,
+   0x00, 0xe0, 0x9c, 0x04, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x10, 0x00, 0x00, 0xc0, 0x04, 0x07, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x00, 0x10, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0xf0, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x08, 0x06,
+   0x00, 0x80, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x08, 0x09, 0x00, 0x40, 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x00, 0x08, 0x09, 0x00, 0x60, 0x1c, 0x00, 0x00, 0x00,
+   0xf0, 0x01, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x07, 0x09, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x03, 0x09,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int5.xbm b/src/axiom-website/hyperdoc/bitmaps/int5.xbm
new file mode 100644
index 0000000..47b4029
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int5.xbm
@@ -0,0 +1,110 @@
+#define int5_width 231
+#define int5_height 44
+static char int5_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x8c, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0a, 0x05,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x83, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x81, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x41, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0e, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x80, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x06, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x04, 0x80, 0x00, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04,
+   0x81, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x09, 0x00, 0x04, 0x81, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x84, 0x87, 0x00,
+   0x60, 0x00, 0x00, 0xc0, 0xe1, 0xe1, 0xe0, 0x00, 0x00, 0x20, 0x00, 0xce,
+   0xd8, 0x00, 0x03, 0x80, 0x00, 0x38, 0x3c, 0x1c, 0x38, 0x66, 0x03, 0x0c,
+   0x00, 0xe0, 0x07, 0x83, 0x00, 0x60, 0x00, 0x00, 0x20, 0x12, 0x12, 0x40,
+   0x00, 0x00, 0x20, 0x00, 0x81, 0x30, 0x01, 0x01, 0x80, 0x00, 0x44, 0x42,
+   0x02, 0x04, 0xc4, 0x04, 0x04, 0x00, 0x30, 0x04, 0x81, 0x00, 0x60, 0x00,
+   0x00, 0x20, 0x10, 0x12, 0x40, 0x00, 0x00, 0x20, 0x00, 0x81, 0x10, 0x01,
+   0x01, 0x80, 0x00, 0x04, 0x42, 0x02, 0x04, 0x44, 0x04, 0x04, 0x00, 0x30,
+   0x04, 0x81, 0x00, 0x30, 0x00, 0x00, 0x20, 0x10, 0xe2, 0x40, 0x00, 0x00,
+   0xfc, 0x01, 0x8e, 0x10, 0x01, 0x01, 0xf0, 0x07, 0x04, 0x42, 0x1c, 0x38,
+   0x44, 0x04, 0x04, 0x00, 0x30, 0x04, 0x81, 0x00, 0x30, 0x00, 0x00, 0x20,
+   0x10, 0x82, 0x40, 0x02, 0x00, 0x20, 0x00, 0x88, 0x10, 0x01, 0x09, 0x80,
+   0x00, 0x04, 0x42, 0x10, 0x20, 0x44, 0x04, 0x24, 0x00, 0x30, 0x04, 0x89,
+   0x00, 0x30, 0x00, 0x00, 0x20, 0x12, 0x8a, 0x40, 0x02, 0x00, 0x20, 0x80,
+   0x88, 0x10, 0x01, 0x09, 0x80, 0x00, 0x44, 0x42, 0x11, 0x22, 0x44, 0x04,
+   0x24, 0x00, 0x30, 0x0e, 0x89, 0x00, 0x30, 0x00, 0x00, 0xc0, 0xe1, 0xf1,
+   0x80, 0x01, 0x00, 0x20, 0x00, 0x8f, 0x18, 0x01, 0x07, 0x80, 0x00, 0x38,
+   0x3c, 0x1e, 0x3c, 0x64, 0x04, 0x1c, 0x00, 0xc0, 0x0d, 0x87, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x04, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x83,
+   0x8f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x80, 0x01, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int6.xbm b/src/axiom-website/hyperdoc/bitmaps/int6.xbm
new file mode 100644
index 0000000..0ba3c7c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int6.xbm
@@ -0,0 +1,98 @@
+#define int6_width 165
+#define int6_height 54
+static char int6_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xa0, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x30, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0xfe, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x38, 0x80, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x03, 0x00, 0xe0,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x01, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x80, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x02, 0x00, 0xe0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x01,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0xe0,
+   0x00, 0x06, 0x00, 0x00, 0xce, 0x01, 0x30, 0x80, 0x01, 0x08, 0xe7, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xc3, 0x19, 0xe0, 0x00, 0x06, 0x00,
+   0x00, 0x4c, 0x00, 0x30, 0x80, 0x01, 0x04, 0x26, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x18, 0x82, 0x09, 0xe0, 0x00, 0x06, 0x00, 0x00, 0x38, 0x00,
+   0x30, 0x80, 0x01, 0x04, 0x1c, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x10, 0x18,
+   0x02, 0x07, 0xe0, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x30, 0x80, 0x01,
+   0x04, 0x18, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x10, 0x18, 0x02, 0x06, 0xe0,
+   0x00, 0x03, 0x00, 0x00, 0x68, 0x00, 0x30, 0x80, 0x01, 0x04, 0x34, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x18, 0x02, 0x0d, 0xe0, 0x00, 0x03, 0x00,
+   0x00, 0xc4, 0x00, 0x30, 0x80, 0x01, 0x04, 0x62, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x18, 0x83, 0x18, 0xe0, 0x00, 0x03, 0x00, 0x00, 0xc6, 0x01,
+   0x30, 0x80, 0x01, 0x08, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe0,
+   0xc6, 0x38, 0xe0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x01,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x01, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x80, 0x01, 0x10, 0x00, 0x00, 0x00, 0x80, 0x81,
+   0x08, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x80, 0x01, 0x10, 0x00, 0x00, 0x00, 0xc0, 0xc1, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x18, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf1, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xc1, 0x18, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0xc0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x18, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x40, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xc1, 0x18, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0xf0, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x2c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x18, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x7c, 0x00, 0x48,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x7c, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int7.xbm b/src/axiom-website/hyperdoc/bitmaps/int7.xbm
new file mode 100644
index 0000000..2d15f4d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int7.xbm
@@ -0,0 +1,104 @@
+#define int7_width 221
+#define int7_height 43
+static char int7_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x8c, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x01, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x81, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x0c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x01, 0xe0,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0x01, 0x00, 0x01,
+   0x0c, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x01, 0x00, 0x01, 0xe0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90,
+   0x21, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0xe0, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x33, 0x06, 0x80, 0x00, 0x00, 0x00, 0x00, 0x90,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x01, 0xe0,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x33, 0x06, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07,
+   0x02, 0x00, 0x01, 0xe0, 0x00, 0x60, 0x00, 0x00, 0x38, 0x3c, 0x1c, 0x00,
+   0x33, 0x06, 0x87, 0xe0, 0x8c, 0x0d, 0xc0, 0x01, 0x00, 0x08, 0x00, 0x87,
+   0x87, 0x03, 0x1c, 0x00, 0x02, 0xf8, 0x81, 0xe3, 0x00, 0x60, 0x00, 0x00,
+   0x44, 0x42, 0x02, 0x80, 0x31, 0x86, 0x48, 0x10, 0x08, 0x13, 0x20, 0x02,
+   0x00, 0x08, 0x80, 0x48, 0x48, 0x00, 0x22, 0x00, 0x04, 0x0c, 0x41, 0xe4,
+   0x00, 0x30, 0x00, 0x00, 0x04, 0x42, 0x02, 0xc0, 0x30, 0x46, 0x4c, 0x10,
+   0x08, 0x11, 0x10, 0x03, 0x00, 0x08, 0x80, 0x40, 0x48, 0x00, 0x31, 0x00,
+   0x04, 0x0c, 0x21, 0xe6, 0x00, 0x30, 0x00, 0x00, 0x04, 0x42, 0x1c, 0x40,
+   0x32, 0x46, 0x44, 0xe0, 0x08, 0x11, 0x10, 0x01, 0x00, 0x7f, 0x80, 0x40,
+   0x88, 0x03, 0x11, 0x00, 0x04, 0x0c, 0x21, 0xe2, 0x00, 0x30, 0x00, 0x00,
+   0x04, 0x42, 0x10, 0x20, 0x32, 0x46, 0x44, 0x80, 0x08, 0x11, 0x10, 0x01,
+   0x00, 0x08, 0x80, 0x40, 0x08, 0x02, 0x11, 0x00, 0x04, 0x0c, 0x21, 0xe2,
+   0x00, 0x30, 0x00, 0x00, 0x44, 0x42, 0x11, 0xf0, 0x23, 0x62, 0x82, 0x88,
+   0x08, 0x11, 0x98, 0x01, 0x00, 0x08, 0x80, 0x48, 0x28, 0x82, 0x09, 0x00,
+   0x02, 0x8c, 0x31, 0xe1, 0x00, 0x30, 0x00, 0x00, 0x38, 0x3c, 0x1e, 0xf8,
+   0xc3, 0xe1, 0x83, 0xf0, 0x88, 0x11, 0x78, 0x00, 0x00, 0x08, 0x00, 0x87,
+   0xc7, 0x83, 0x07, 0x00, 0x02, 0x78, 0xf3, 0xe0, 0x00, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x10, 0xe0,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x01, 0x00, 0x10, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x10, 0xe0, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x84, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0xc0, 0x82, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x81, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int8.xbm b/src/axiom-website/hyperdoc/bitmaps/int8.xbm
new file mode 100644
index 0000000..847ccb9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int8.xbm
@@ -0,0 +1,91 @@
+#define int8_width 176
+#define int8_height 48
+static char int8_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x02, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x84, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x81, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+   0xc2, 0x18, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc1, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xc2, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x20, 0x1e, 0x1e, 0x70, 0x06, 0xc2, 0xc3, 0x03, 0x02, 0x18, 0x00, 0x00,
+   0x70, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x20, 0x21,
+   0x11, 0x60, 0x02, 0x22, 0x24, 0x02, 0x01, 0x0c, 0x00, 0x00, 0x60, 0x02,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x20, 0x21, 0x11, 0xc0,
+   0x01, 0x22, 0x24, 0x02, 0x01, 0x06, 0x00, 0x00, 0xc0, 0x01, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x20, 0x21, 0x11, 0x80, 0x01, 0x22,
+   0x24, 0x02, 0x01, 0x02, 0xc0, 0x0f, 0x80, 0x01, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x20, 0x21, 0x0e, 0x40, 0x03, 0x22, 0xc4, 0x01,
+   0x01, 0x11, 0x00, 0x00, 0x40, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x20, 0x21, 0x01, 0x20, 0x06, 0x22, 0x24, 0x00, 0x82, 0x1f,
+   0x00, 0x00, 0x20, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x70, 0x1e, 0x1f, 0x30, 0x0e, 0xc7, 0xe3, 0x03, 0xc2, 0x1f, 0x00, 0x00,
+   0x30, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x80,
+   0x20, 0x00, 0x00, 0x00, 0x10, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x80, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00,
+   0x00, 0x00, 0x10, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
+   0x20, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xe1, 0x1c, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0xc1, 0x04, 0x00, 0x30, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0c,
+   0x81, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x03,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x81, 0x06, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x38, 0x00, 0x00, 0x8c, 0x41, 0x0c, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x64, 0x00, 0x00, 0x70, 0x63, 0x1c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x21, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00,
+   0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x89, 0x70, 0x00, 0x00,
+   0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x86, 0xc8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x40, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x40, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x0c, 0x00,
+   0x20, 0x80, 0x01, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x04, 0x00, 0x20, 0xc0,
+   0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x81, 0x03, 0x60, 0x10, 0x60, 0x00, 0x00,
+   0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x82, 0x04, 0x00,
+   0x00, 0x00, 0x83, 0x00, 0x03, 0x40, 0x10, 0x20, 0x00, 0xfc, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x04, 0x00, 0x00, 0x00,
+   0x82, 0x80, 0x06, 0xc0, 0x08, 0x10, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0xc2, 0x40,
+   0x0c, 0x80, 0x08, 0xf8, 0x01, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x60, 0x1c, 0x80,
+   0x04, 0xfc, 0x01, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x80, 0x05, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/int9.xbm b/src/axiom-website/hyperdoc/bitmaps/int9.xbm
new file mode 100644
index 0000000..a131941
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/int9.xbm
@@ -0,0 +1,91 @@
+#define int9_width 175
+#define int9_height 48
+static char int9_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x71, 0x1c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x88, 0x22, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x20, 0x88, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x20, 0x88, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
+   0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20,
+   0x70, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x36, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x80, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x80, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x82, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x21, 0x00, 0x84, 0x00, 0x06, 0x00, 0x00, 0xc0, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x81, 0x21, 0x04, 0x84, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21,
+   0x22, 0x82, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x22, 0x82,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x31, 0x32, 0x81, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x7e, 0xcc, 0x80, 0x00, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+   0x00, 0xe0, 0x43, 0x40, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0,
+   0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x80, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0xa0, 0x81, 0x20, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00,
+   0x80, 0x00, 0x20, 0x00, 0x00, 0x60, 0x03, 0x11, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x80, 0x01, 0x00, 0x00, 0x80, 0x20,
+   0x20, 0x00, 0x00, 0x00, 0x06, 0x11, 0x04, 0x04, 0x00, 0x00, 0xfc, 0x41,
+   0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x00, 0x00, 0x80, 0x10, 0x31, 0xc0,
+   0x0f, 0x20, 0x06, 0x11, 0x22, 0x02, 0xf8, 0x01, 0x00, 0x40, 0x00, 0x00,
+   0x00, 0x80, 0x80, 0x20, 0x01, 0x00, 0x80, 0x10, 0x11, 0x00, 0x00, 0x30,
+   0x06, 0x11, 0x22, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80,
+   0x80, 0x20, 0x01, 0x00, 0x00, 0x91, 0x09, 0x00, 0x00, 0x30, 0x83, 0x20,
+   0x32, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x80, 0x58, 0x20,
+   0x01, 0x00, 0x00, 0x61, 0x06, 0x00, 0x00, 0xe0, 0x81, 0x20, 0xcc, 0x00,
+   0x00, 0x00, 0x70, 0x20, 0x00, 0x00, 0x00, 0x80, 0x30, 0x20, 0x01, 0x00,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0xc8, 0x20, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80};
diff --git a/src/axiom-website/hyperdoc/bitmaps/integral.bitmap b/src/axiom-website/hyperdoc/bitmaps/integral.bitmap
new file mode 100644
index 0000000..d8f7fe4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/integral.bitmap
@@ -0,0 +1,8 @@
+#define i_width 20
+#define i_height 20
+static char i_bits[] = {
+   0x80, 0x09, 0x00, 0xc0, 0x0b, 0x00, 0x40, 0x3a, 0x00, 0x40, 0x4a, 0x00,
+   0x40, 0x48, 0x00, 0x40, 0x38, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x0e, 0x00,
+   0x48, 0x09, 0x00, 0x78, 0x09, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/integral.bm b/src/axiom-website/hyperdoc/bitmaps/integral.bm
new file mode 100644
index 0000000..08049fa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/integral.bm
@@ -0,0 +1,8 @@
+#define integral_width 16
+#define integral_height 16
+#define integral_x_hot 7
+#define integral_y_hot 8
+static char integral_bits[] = {
+   0x00, 0x07, 0x80, 0x0d, 0x80, 0x08, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
+   0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
+   0x80, 0x00, 0x88, 0x00, 0xd8, 0x00, 0x70, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/iota.bitmap b/src/axiom-website/hyperdoc/bitmaps/iota.bitmap
new file mode 100644
index 0000000..36d4849
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/iota.bitmap
@@ -0,0 +1,8 @@
+#define iota_width 16
+#define iota_height 16
+#define iota_x_hot -1
+#define iota_y_hot -1
+static char iota_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00,
+   0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x66, 0x00, 0x7e, 0x00,
+   0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/jmath.bitmap b/src/axiom-website/hyperdoc/bitmaps/jmath.bitmap
new file mode 100644
index 0000000..fe458f0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/jmath.bitmap
@@ -0,0 +1,6 @@
+#define jmapth_width 16
+#define jmapth_height 16
+static char jmapth_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+   0x60, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
+   0x00, 0x01, 0x88, 0x01, 0xc8, 0x00, 0x38, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/kappa.bitmap b/src/axiom-website/hyperdoc/bitmaps/kappa.bitmap
new file mode 100644
index 0000000..9e5721a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/kappa.bitmap
@@ -0,0 +1,8 @@
+#define kappa_width 16
+#define kappa_height 16
+#define kappa_x_hot -1
+#define kappa_y_hot -1
+static char kappa_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x07, 0x98, 0x03,
+   0xd8, 0x01, 0xfc, 0x00, 0x7c, 0x00, 0x3c, 0x00, 0xec, 0x00, 0xce, 0x01,
+   0x86, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/l1.bitmap b/src/axiom-website/hyperdoc/bitmaps/l1.bitmap
new file mode 100644
index 0000000..57166eb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/l1.bitmap
@@ -0,0 +1,9 @@
+#define 1_width 30
+#define 1_height 16
+static char 1_bits[] = {
+   0x80, 0x3f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x03, 0x30, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x80, 0x01, 0x30, 0x00,
+   0x80, 0x81, 0x30, 0x00, 0x80, 0xc1, 0x30, 0x00, 0xc0, 0x40, 0x30, 0x00,
+   0xc0, 0x60, 0x30, 0x00, 0xf0, 0x3f, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0xfc, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/lambda-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/lambda-cap.bitmap
new file mode 100644
index 0000000..c8633e1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/lambda-cap.bitmap
@@ -0,0 +1,8 @@
+#define Lambda_width 16
+#define Lambda_height 16
+#define Lambda_x_hot -1
+#define Lambda_y_hot -1
+static char Lambda_bits[] = {
+   0x80, 0x01, 0x80, 0x01, 0x40, 0x03, 0x40, 0x03, 0x40, 0x06, 0x20, 0x06,
+   0x20, 0x0c, 0x20, 0x0c, 0x10, 0x18, 0x10, 0x18, 0x10, 0x30, 0x08, 0x30,
+   0x08, 0x60, 0x08, 0x60, 0x08, 0x60, 0x1c, 0xf0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/lambda.bitmap b/src/axiom-website/hyperdoc/bitmaps/lambda.bitmap
new file mode 100644
index 0000000..be5f035
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/lambda.bitmap
@@ -0,0 +1,8 @@
+#define lambda_width 16
+#define lambda_height 16
+#define lambda_x_hot -1
+#define lambda_y_hot -1
+static char lambda_bits[] = {
+   0x00, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x70, 0x00, 0x60, 0x00,
+   0xe0, 0x00, 0xf0, 0x01, 0xb8, 0x01, 0x98, 0x03, 0x0c, 0x03, 0x0e, 0x07,
+   0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/lamdab.bitmap b/src/axiom-website/hyperdoc/bitmaps/lamdab.bitmap
new file mode 100644
index 0000000..9d27898
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/lamdab.bitmap
@@ -0,0 +1,6 @@
+#define lambda__width 16
+#define lambda__height 16
+static char lambda__bits[] = {
+   0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x34, 0x00,
+   0x70, 0x00, 0x60, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0xb8, 0x01, 0x98, 0x03,
+   0x0c, 0x03, 0x0e, 0x07, 0x06, 0x06, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/lamdai.bitmap b/src/axiom-website/hyperdoc/bitmaps/lamdai.bitmap
new file mode 100644
index 0000000..89c4f78
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/lamdai.bitmap
@@ -0,0 +1,7 @@
+#define lamdai_width 20
+#define lamdai_height 16
+static char lamdai_bits[] = {
+   0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
+   0xe0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x01, 0x00,
+   0xc0, 0x01, 0x03, 0xe0, 0x01, 0x01, 0xb0, 0x03, 0x00, 0x18, 0xc3, 0x00,
+   0x1c, 0xc3, 0x01, 0x0e, 0xa3, 0x01, 0x06, 0x87, 0x00, 0x00, 0xc0, 0x01};
diff --git a/src/axiom-website/hyperdoc/bitmaps/lamdaj.bitmap b/src/axiom-website/hyperdoc/bitmaps/lamdaj.bitmap
new file mode 100644
index 0000000..0bc541b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/lamdaj.bitmap
@@ -0,0 +1,9 @@
+#define lamdaj_width 25
+#define lamdaj_height 16
+static char lamdaj_bits[] = {
+   0xe0, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x80, 0x01, 0x18, 0x00, 0x80, 0x03, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x03, 0x06, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x00, 0x07, 0x0d, 0x00,
+   0x80, 0x07, 0x0c, 0x00, 0xc0, 0x0e, 0x04, 0x00, 0x60, 0x0c, 0x04, 0x00,
+   0x70, 0x0c, 0x06, 0x00, 0x38, 0x0c, 0x06, 0x00, 0x18, 0xdc, 0x02, 0x00,
+   0x00, 0xc0, 0x03, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ldlt.bitmap b/src/axiom-website/hyperdoc/bitmaps/ldlt.bitmap
new file mode 100644
index 0000000..4a904f8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ldlt.bitmap
@@ -0,0 +1,14 @@
+#define ldlt_width 60
+#define ldlt_height 16
+static char ldlt_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x31, 0x03, 0xe0, 0x0f, 0xf8, 0x3f, 0xe0, 0x8f, 0x30, 0x03,
+   0x80, 0x01, 0x60, 0x70, 0x80, 0x81, 0x18, 0x01, 0x80, 0x01, 0x60, 0x60,
+   0x80, 0x01, 0x18, 0x00, 0xc0, 0x00, 0x30, 0xe0, 0xc0, 0x00, 0x18, 0x00,
+   0xc0, 0x00, 0x30, 0xe0, 0xc0, 0x00, 0x18, 0x00, 0xc0, 0x00, 0x30, 0xe0,
+   0xc0, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x30, 0xe0, 0xc0, 0x00, 0x0c, 0x00,
+   0x60, 0x00, 0x18, 0x60, 0x60, 0x00, 0x3f, 0x00, 0x60, 0x00, 0x18, 0x60,
+   0x60, 0x00, 0x00, 0x00, 0x60, 0x20, 0x18, 0x70, 0x60, 0x20, 0x00, 0x00,
+   0x60, 0x30, 0x18, 0x30, 0x60, 0x30, 0x00, 0x00, 0x30, 0x10, 0x0c, 0x18,
+   0x30, 0x10, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0e, 0x30, 0x18, 0x00, 0x00,
+   0xfc, 0x0f, 0xff, 0x07, 0xfc, 0x0f, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/less=.bitmap b/src/axiom-website/hyperdoc/bitmaps/less=.bitmap
new file mode 100644
index 0000000..063e577
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/less=.bitmap
@@ -0,0 +1,8 @@
+#define great__width 16
+#define great__height 16
+#define great__x_hot -1
+#define great__y_hot -1
+static char great__bits[] = {
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x0c, 0x00, 0x03, 0xc0, 0x00, 0x30, 0x00,
+   0x0c, 0x00, 0x0c, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x03, 0x00, 0x0c,
+   0x00, 0x30, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/lj.bitmap b/src/axiom-website/hyperdoc/bitmaps/lj.bitmap
new file mode 100644
index 0000000..4f65e94
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/lj.bitmap
@@ -0,0 +1,6 @@
+#define lj_width 16
+#define lj_height 16
+static char lj_bits[] = {
+   0x78, 0x00, 0x60, 0x00, 0x30, 0x00, 0x30, 0x60, 0x30, 0x20, 0x30, 0x00,
+   0x18, 0x18, 0x18, 0x38, 0x18, 0x34, 0x18, 0x30, 0x0c, 0x10, 0x0c, 0x10,
+   0x1c, 0x18, 0x1c, 0x18, 0x1c, 0x0b, 0x00, 0x0f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/llt.bitmap b/src/axiom-website/hyperdoc/bitmaps/llt.bitmap
new file mode 100644
index 0000000..e093138
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/llt.bitmap
@@ -0,0 +1,13 @@
+#define llt_width 50
+#define llt_height 16
+static char llt_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88,
+   0x19, 0x00, 0x00, 0xfe, 0x00, 0x7f, 0x84, 0x19, 0x00, 0x00, 0x18, 0x00,
+   0x0c, 0xc4, 0x08, 0x00, 0x00, 0x18, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0xc0, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06,
+   0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x03, 0xf8, 0x01, 0x00, 0x00, 0x06,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x03, 0x01, 0x00, 0x00,
+   0x00, 0x06, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, 0x03, 0x81, 0x81, 0x00,
+   0x00, 0x00, 0x00, 0x83, 0x81, 0xc1, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe0,
+   0x7f, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/loggamma.png b/src/axiom-website/hyperdoc/bitmaps/loggamma.png
new file mode 100644
index 0000000..bff7e62
Binary files /dev/null and b/src/axiom-website/hyperdoc/bitmaps/loggamma.png differ
diff --git a/src/axiom-website/hyperdoc/bitmaps/lt.bitmap b/src/axiom-website/hyperdoc/bitmaps/lt.bitmap
new file mode 100644
index 0000000..d77b2af
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/lt.bitmap
@@ -0,0 +1,9 @@
+#define lt_width 30
+#define lt_height 16
+static char lt_bits[] = {
+   0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xc4, 0x0c, 0x80, 0x3f, 0xc2, 0x0c,
+   0x00, 0x06, 0x62, 0x04, 0x00, 0x06, 0x60, 0x00, 0x00, 0x03, 0x60, 0x00,
+   0x00, 0x03, 0x60, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x03, 0x30, 0x00,
+   0x80, 0x01, 0xfc, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x81, 0x00, 0x00,
+   0x80, 0xc1, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x00,
+   0xf0, 0x3f, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/mask.bitmap b/src/axiom-website/hyperdoc/bitmaps/mask.bitmap
new file mode 100644
index 0000000..13fcaef
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/mask.bitmap
@@ -0,0 +1,8 @@
+#define mask_width 16
+#define mask_height 16
+#define mask_x_hot 8
+#define mask_y_hot 0
+static char mask_bits[] = {
+   0x7f, 0xfc, 0x3f, 0xf8, 0xff, 0xfe, 0x1f, 0xf0, 0x0f, 0xe0, 0x07, 0xc0,
+   0x03, 0x80, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+   0x03, 0x80, 0x07, 0xc0, 0x0f, 0xe0, 0x1f, 0xf0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/menudot.bitmap b/src/axiom-website/hyperdoc/bitmaps/menudot.bitmap
new file mode 100644
index 0000000..8aa5f11
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/menudot.bitmap
@@ -0,0 +1,6 @@
+#define menudot_width 16
+#define menudot_height 16
+static char menudot_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0xff, 0x0f,
+   0xab, 0x0e, 0x57, 0x0d, 0xab, 0x0e, 0x57, 0x0d, 0xab, 0x0e, 0x57, 0x0d,
+   0xab, 0x0e, 0x57, 0x0d, 0xff, 0x0f, 0xff, 0x0f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/mkm.bitmap b/src/axiom-website/hyperdoc/bitmaps/mkm.bitmap
new file mode 100644
index 0000000..4836a7b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/mkm.bitmap
@@ -0,0 +1,17 @@
+#define mkm_width 80
+#define mkm_height 16
+static char mkm_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x0c, 0xc0, 0x07, 0x78, 0xf0,
+   0xe3, 0x83, 0x0f, 0xf0, 0xc2, 0x0c, 0x00, 0x07, 0x1c, 0xc0, 0xc0, 0x00,
+   0x0e, 0x38, 0x62, 0x04, 0x00, 0x07, 0x1e, 0xc0, 0x20, 0x00, 0x0e, 0x3c,
+   0x60, 0x00, 0x80, 0x06, 0x0e, 0x60, 0x18, 0x00, 0x0d, 0x1c, 0x60, 0x00,
+   0x80, 0x06, 0x0d, 0x60, 0x0c, 0x00, 0x0d, 0x1a, 0x60, 0x00, 0x80, 0x86,
+   0x0d, 0x60, 0x02, 0x00, 0x0d, 0x1b, 0x30, 0x00, 0x80, 0x86, 0x0c, 0x60,
+   0x07, 0x00, 0x0d, 0x19, 0x30, 0x00, 0x40, 0x46, 0x06, 0xf0, 0x06, 0x80,
+   0x8c, 0x0c, 0xfc, 0x00, 0x40, 0x4c, 0x06, 0x70, 0x0c, 0x80, 0x98, 0x0c,
+   0x00, 0x00, 0x40, 0x2c, 0x06, 0x30, 0x0c, 0x80, 0x58, 0x0c, 0x00, 0x00,
+   0x40, 0x3c, 0x06, 0x30, 0x1c, 0x80, 0x78, 0x0c, 0x00, 0x00, 0x20, 0x1c,
+   0x03, 0x18, 0x18, 0x40, 0x38, 0x06, 0x00, 0x00, 0x20, 0x0c, 0x03, 0x18,
+   0x18, 0x40, 0x18, 0x06, 0x00, 0x00, 0xf8, 0xcc, 0x0f, 0x7e, 0x7c, 0xf0,
+   0x99, 0x1f, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/mu.bitmap b/src/axiom-website/hyperdoc/bitmaps/mu.bitmap
new file mode 100644
index 0000000..8f0b928
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/mu.bitmap
@@ -0,0 +1,6 @@
+#define mu_width 16
+#define mu_height 16
+static char mu_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x30,0x18,0x30,0x18,0x38,0x1c,0x18,
+ 0x0c,0x18,0x0c,0x1c,0x0c,0x3c,0x1f,0xfc,0x1f,0xee,0x0d,0x06,0x00,0x06,0x00,
+ 0x06,0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/mui.bitmap b/src/axiom-website/hyperdoc/bitmaps/mui.bitmap
new file mode 100644
index 0000000..c2c97b3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/mui.bitmap
@@ -0,0 +1,7 @@
+#define mui_width 20
+#define mui_height 16
+static char mui_bits[] = {
+   0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x06, 0x06,
+   0x30, 0x06, 0x02, 0x18, 0x06, 0x00, 0x18, 0x86, 0x01, 0x18, 0x8b, 0x03,
+   0x18, 0x4b, 0x03, 0xfc, 0x0e, 0x03, 0x0c, 0x00, 0x01, 0x0c, 0x00, 0x01,
+   0x0c, 0x80, 0x01, 0x06, 0x80, 0x01, 0x06, 0xb0, 0x00, 0x00, 0xf0, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/muj.bitmap b/src/axiom-website/hyperdoc/bitmaps/muj.bitmap
new file mode 100644
index 0000000..4ce6f7b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/muj.bitmap
@@ -0,0 +1,7 @@
+#define muj_width 20
+#define muj_height 16
+static char muj_bits[] = {
+   0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x03, 0x03,
+   0x18, 0x03, 0x01, 0x0c, 0x03, 0x00, 0x0c, 0xc3, 0x00, 0x8c, 0xc5, 0x01,
+   0x8c, 0xa5, 0x01, 0x7e, 0x87, 0x01, 0x06, 0x80, 0x00, 0x06, 0x80, 0x00,
+   0x06, 0xc0, 0x00, 0x03, 0xc0, 0x00, 0x03, 0x58, 0x00, 0x00, 0x78, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/mx.bitmap b/src/axiom-website/hyperdoc/bitmaps/mx.bitmap
new file mode 100644
index 0000000..a55804d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/mx.bitmap
@@ -0,0 +1,9 @@
+#define mx_width 30
+#define mx_height 16
+static char mx_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xef, 0x03, 0x00,
+   0xe8, 0x38, 0x03, 0x00, 0x68, 0x18, 0x03, 0x00, 0x60, 0x18, 0xc3, 0x0e,
+   0x30, 0x0c, 0xe3, 0x0f, 0x30, 0x8c, 0xa3, 0x0d, 0x30, 0x8c, 0x85, 0x01,
+   0x30, 0x8c, 0x85, 0x04, 0x18, 0x86, 0xb3, 0x04, 0x00, 0x00, 0xf0, 0x03,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/my.bitmap b/src/axiom-website/hyperdoc/bitmaps/my.bitmap
new file mode 100644
index 0000000..f2241f2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/my.bitmap
@@ -0,0 +1,9 @@
+#define my_width 25
+#define my_height 16
+static char my_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xde, 0xfb, 0x00, 0x00, 0x3a, 0xce, 0x00, 0x00,
+   0x1a, 0xc6, 0x18, 0x01, 0x18, 0xc6, 0x38, 0x01, 0x0c, 0xc3, 0xb4, 0x01,
+   0x0c, 0xe3, 0x90, 0x01, 0x0c, 0x63, 0x99, 0x00, 0x0c, 0x63, 0xd9, 0x00,
+   0x86, 0xe1, 0xf0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x6c, 0x00,
+   0x00, 0x00, 0x38, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/nabla.bitmap b/src/axiom-website/hyperdoc/bitmaps/nabla.bitmap
new file mode 100644
index 0000000..c54c5a9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/nabla.bitmap
@@ -0,0 +1,6 @@
+#define del_width 16
+#define del_height 16
+static char del_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0x7f, 0xff, 0x7f, 0x03, 0x60, 0x06, 0x30, 0x0c, 0x18,
+   0x18, 0x0c, 0x30, 0x06, 0x60, 0x03, 0xc0, 0x01};
diff --git a/src/axiom-website/hyperdoc/bitmaps/naglogo.bitmap b/src/axiom-website/hyperdoc/bitmaps/naglogo.bitmap
new file mode 100644
index 0000000..9652dcf
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/naglogo.bitmap
@@ -0,0 +1,475 @@
+#define naglogo_width 476
+#define naglogo_height 118
+static char naglogo_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x1f,0x00,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x1f,0x00,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x03,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x3f,0x00,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x03,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x1f,0xe0,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x7f,0x00,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x07,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x0f,0x18,0x06,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x7f,0x00,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x07,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x07,0x04,0x04,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x00,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x03,0xf4,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x00,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x80,0x0f,0xfe,0xff,0xff,0xff,0xff,0x01,0x12,0x12,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x01,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x12,0x12,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x01,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf2,0x11,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x03,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x12,0x12,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x03,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x12,0x12,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x14,0x0a,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x04,0x08,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x0f,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x08,0x06,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xf0,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x01,
+ 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x01,
+ 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x03,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x03,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x07,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x07,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x00,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x0f,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x07,0x18,0x00,0x30,0x80,0x01,0x00,0x07,0xe0,0x00,0xc0,0xff,0x03,0x00,0xfe,
+ 0x07,0x00,0x60,0x00,0x00,0x7c,0x00,0x00,0xc0,0x01,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x01,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x0f,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x07,0x18,0x00,0x30,0x80,0x01,0x00,0x0f,0xe0,0x00,0xc0,0xff,0x03,0x00,0xfe,
+ 0x1f,0x00,0x60,0x00,0x00,0xff,0x01,0x00,0xc0,0x01,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x01,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0xfc,0xff,0x7f,0xf0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x0f,0x18,0x00,0x30,0x80,0x01,0x00,0x0f,0xf0,0x00,0xc0,0x00,0x00,0x00,0x06,
+ 0x38,0x00,0x60,0x00,0x80,0x83,0x03,0x00,0xe0,0x03,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x03,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0xfc,0xff,0x1f,0xc0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x1f,0x18,0x00,0x30,0x80,0x01,0x00,0x0f,0xf0,0x00,0xc0,0x00,0x00,0x00,0x06,
+ 0x30,0x00,0x60,0x00,0xc0,0x01,0x07,0x00,0x60,0x03,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x07,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x3f,
+ 0x00,0x00,0xfc,0xff,0x0f,0x00,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x1b,0x18,0x00,0x30,0x80,0x01,0x00,0x1b,0xd8,0x00,0xc0,0x00,0x00,0x00,0x06,
+ 0x30,0x00,0x60,0x00,0xc0,0x00,0x06,0x00,0x60,0x03,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x07,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x3f,
+ 0x00,0x00,0xfc,0xff,0x07,0x00,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x33,0x18,0x00,0x30,0x80,0x01,0x00,0x1b,0xd8,0x00,0xc0,0x00,0x00,0x00,0x06,
+ 0x30,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x30,0x07,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x0f,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x7f,
+ 0x00,0x00,0xfe,0xff,0x07,0x00,0xfe,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x33,0x18,0x00,0x30,0x80,0x01,0x00,0x1b,0xd8,0x00,0xc0,0x00,0x00,0x00,0x06,
+ 0x30,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x30,0x06,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x0f,0x00,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0x7f,
+ 0x00,0x00,0xfe,0xff,0x03,0x00,0xfe,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x63,0x18,0x00,0x30,0x80,0x01,0x00,0x33,0xcc,0x00,0xc0,0xff,0x01,0x00,0x06,
+ 0x18,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x30,0x0e,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x1f,0x00,0xfe,0xff,0x07,0xfe,0xff,0xef,0xff,0xff,
+ 0x00,0x00,0xfe,0xff,0x03,0x00,0xfc,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe3,0x18,0x00,0x30,0x80,0x01,0x00,0x33,0xcc,0x00,0xc0,0xff,0x01,0x00,0xfe,
+ 0x1f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x18,0x0e,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x1f,0x00,0xfe,0xff,0x07,0xfe,0xff,0xef,0xff,0xff,
+ 0x00,0x00,0xfe,0xff,0x01,0x00,0xfc,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xc3,0x18,0x00,0x30,0x80,0x01,0x00,0x33,0xcc,0x00,0xc0,0x00,0x00,0x00,0xfe,
+ 0x1f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x18,0x0c,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x3f,0x00,0xfe,0xff,0x07,0xfe,0xff,0xcf,0xff,0xff,
+ 0x01,0x00,0xfe,0xff,0x01,0x00,0xfc,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x83,0x19,0x00,0x30,0x80,0x01,0x00,0x63,0xc6,0x00,0xc0,0x00,0x00,0x00,0x06,
+ 0x38,0x00,0x60,0x00,0x60,0x00,0x08,0x00,0xfc,0x1f,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x3f,0x00,0xfe,0xff,0x07,0xfe,0xff,0xcf,0xff,0xff,
+ 0x01,0x00,0xfe,0xff,0x03,0x00,0xfc,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x83,0x19,0x00,0x30,0x80,0x01,0x00,0x63,0xc6,0x00,0xc0,0x00,0x00,0x00,0x06,
+ 0x30,0x00,0x60,0x00,0x60,0x00,0x06,0x00,0xfc,0x1f,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x7f,0x00,0xfe,0xff,0x07,0xfe,0xff,0x8f,0xff,0xff,
+ 0x03,0x00,0xfe,0xff,0x03,0x00,0xfe,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x03,0x1b,0x00,0x30,0x80,0x01,0x00,0x63,0xc6,0x00,0xc0,0x00,0x00,0x00,0x06,
+ 0x30,0x00,0x60,0x00,0xc0,0x00,0x06,0x00,0x0c,0x18,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0x7f,0x00,0xfe,0xff,0x07,0xfe,0xff,0x8f,0xff,0xff,
+ 0x03,0x00,0xfe,0xff,0x07,0x00,0xfe,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x03,0x1e,0x00,0x70,0xc0,0x00,0x00,0xc3,0xc3,0x00,0xc0,0x00,0x00,0x00,0x06,
+ 0x30,0x00,0x60,0x00,0xc0,0x01,0x07,0x00,0x0e,0x38,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0x00,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xff,0xff,
+ 0x07,0x00,0xfc,0xff,0x07,0x00,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x03,0x1e,0x00,0xe0,0xe0,0x00,0x00,0xc3,0xc3,0x00,0xc0,0x00,0x00,0x00,0x06,
+ 0x30,0x00,0x60,0x00,0x80,0x83,0x03,0x00,0x06,0x30,0x00,0x60,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0x01,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xff,0xff,
+ 0x07,0x00,0xfc,0xff,0x07,0x00,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x03,0x1c,0x00,0xc0,0x7f,0x00,0x00,0xc3,0xc3,0x00,0xc0,0xff,0x03,0x00,0x06,
+ 0x30,0x00,0x60,0x00,0x00,0xff,0x01,0x00,0x06,0x30,0x00,0xe0,0x7f,0x00,0x00,
+ 0x00,0xff,0xff,0xfb,0xff,0xff,0x01,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xfe,0xff,
+ 0x0f,0x00,0xfc,0xff,0x1f,0x80,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x03,0x1c,0x00,0x00,0x1f,0x00,0x00,0x83,0xc1,0x00,0xc0,0xff,0x03,0x00,0x06,
+ 0x70,0x00,0x60,0x00,0x00,0x7c,0x00,0x00,0x07,0x70,0x00,0xe0,0x7f,0x00,0x00,
+ 0x00,0xff,0xff,0xf3,0xff,0xff,0x03,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xfe,0xff,
+ 0x0f,0x00,0xfc,0xff,0x7f,0xf0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xf3,0xff,0xff,0x03,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xfe,0xff,
+ 0x1f,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xe3,0xff,0xff,0x07,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xfc,0xff,
+ 0x1f,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0xff,0xff,0xe3,0xff,0xff,0x07,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xfc,0xff,
+ 0x3f,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0xff,0xff,0xc3,0xff,0xff,0x0f,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xf8,0xff,
+ 0x3f,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xc3,0xff,0xff,0x0f,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xf8,0xff,
+ 0x7f,0x00,0xf0,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x83,0xff,0xff,0x1f,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xf0,0xff,
+ 0x7f,0x00,0xe0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x70,0x00,0x80,0x01,0x00,0x00,0x1f,0x00,0x00,0xfc,0x00,0x00,0xff,0x03,0x00,
+ 0x06,0xe0,0xff,0x07,0xc0,0x00,0x06,0xc0,0x01,0x38,0x00,0xe0,0x07,0x00,0x00,
+ 0x00,0xff,0xff,0x83,0xff,0xff,0x1f,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xf0,0xff,
+ 0xff,0x00,0xc0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x70,0x00,0x80,0x01,0x00,0xc0,0x7f,0x00,0x00,0xff,0x03,0x00,0xff,0x0f,0x00,
+ 0x06,0xe0,0xff,0x07,0xc0,0x00,0x06,0xc0,0x03,0x38,0x00,0xf8,0x0f,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xff,0xff,0x3f,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xe0,0xff,
+ 0xff,0x00,0xc0,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf8,0x00,0x80,0x01,0x00,0xe0,0xe0,0x00,0x80,0x03,0x07,0x00,0x03,0x1c,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0x03,0x3c,0x00,0x18,0x1c,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xff,0xff,0x7f,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xe0,0xff,
+ 0xff,0x01,0x80,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xd8,0x00,0x80,0x01,0x00,0x70,0x80,0x01,0xc0,0x01,0x0e,0x00,0x03,0x18,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0x03,0x3c,0x00,0x0c,0x38,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xfe,0xff,0x7f,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xc0,0xff,
+ 0xff,0x01,0x00,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xd8,0x00,0x80,0x01,0x00,0x30,0x80,0x03,0xc0,0x00,0x0c,0x00,0x03,0x18,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0x06,0x36,0x00,0x0c,0x30,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xfc,0xff,0xff,0xfe,0xff,0x07,0xfe,0xff,0x0f,0xc0,0xff,
+ 0xff,0x03,0x00,0xfe,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xcc,0x01,0x80,0x01,0x00,0x18,0x00,0x00,0xe0,0x00,0x1c,0x00,0x03,0x18,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0x06,0x36,0x00,0x0c,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xfc,0xff,0xff,0xfe,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x03,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x8c,0x01,0x80,0x01,0x00,0x18,0x00,0x00,0x60,0x00,0x18,0x00,0x03,0x18,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0x06,0x36,0x00,0x1c,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xf8,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x8c,0x03,0x80,0x01,0x00,0x18,0x00,0x00,0x60,0x00,0x18,0x00,0x03,0x0c,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0xff,0x07,0xc0,0x0c,0x33,0x00,0xf8,0x01,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xf8,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x86,0x03,0x80,0x01,0x00,0x18,0xf8,0x03,0x60,0x00,0x18,0x00,0xff,0x0f,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0xff,0x07,0xc0,0x0c,0x33,0x00,0xf0,0x0f,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xf0,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0xfe,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x06,0x03,0x80,0x01,0x00,0x18,0xf8,0x03,0x60,0x00,0x18,0x00,0xff,0x0f,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0x0c,0x33,0x00,0x00,0x1e,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xf0,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0x07,0x80,0x01,0x00,0x18,0x00,0x03,0x60,0x00,0x18,0x00,0x03,0x1c,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0x98,0x31,0x00,0x00,0x38,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xe0,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0x07,0x80,0x01,0x00,0x18,0x00,0x03,0xe0,0x00,0x1c,0x00,0x03,0x18,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0x98,0x31,0x00,0x06,0x30,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xe0,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
+ 0x03,0x06,0x80,0x01,0x00,0x30,0x00,0x03,0xc0,0x00,0x0c,0x00,0x03,0x18,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0x98,0x31,0x00,0x06,0x30,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xc0,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x3f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x80,
+ 0x03,0x0e,0x80,0x01,0x00,0x70,0x80,0x03,0xc0,0x01,0x0e,0x00,0x03,0x18,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0xf0,0x30,0x00,0x0e,0x30,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0xc0,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x3f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x80,
+ 0x01,0x0c,0x80,0x01,0x00,0xe0,0xe0,0x03,0x80,0x03,0x07,0x00,0x03,0x18,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0xf0,0x30,0x00,0x1c,0x18,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x80,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x80,
+ 0x01,0x0c,0x80,0xff,0x01,0xc0,0x7f,0x03,0x00,0xff,0x03,0x00,0x03,0x18,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0xf0,0x30,0x00,0xf8,0x0f,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xc0,
+ 0x01,0x1c,0x80,0xff,0x01,0x00,0x1f,0x02,0x00,0xfc,0x00,0x00,0x03,0x38,0x00,
+ 0x06,0x00,0x18,0x00,0xc0,0x00,0x06,0xc0,0x60,0x30,0x00,0xe0,0x03,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xff,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xfe,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xfe,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x83,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xf8,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x83,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xf8,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xf0,0xff,0xff,0xff,0x07,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x07,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0xf0,0x01,0x00,0x00,0x00,0x00,0xf0,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xf0,0xff,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x80,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0xfc,0x07,0x00,0x00,0x00,0x00,0xf0,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0x0f,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0xff,0x07,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xe0,0xff,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x0e,0x0e,0x00,0x00,0x00,0x00,0x30,0xc0,0x01,0x00,0x00,0x00,0x00,0x0e,0x1c,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0x03,0x06,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x07,0x18,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x00,0x00,0x00,0x00,0x07,0x38,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xfe,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x03,0x38,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x00,0x00,0x00,0x00,0x03,0x30,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x80,0xff,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x07,0x00,0x00,0x00,0x80,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x00,0x00,0x00,0x80,0x03,0x70,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x80,0xff,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x80,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x00,0x00,0x00,0x80,0x01,0x60,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xff,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x80,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x30,0xc0,0x00,0x00,0x00,0x00,0x80,0x01,0x60,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0x03,0x06,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xff,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xf8,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x80,
+ 0x81,0x3f,0x00,0x00,0x00,0x00,0xf0,0xff,0x00,0x00,0x00,0x00,0x80,0x01,0x60,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0xff,0x07,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xfe,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x0f,0x00,0x00,0x00,0x80,
+ 0x81,0x3f,0x00,0x00,0x00,0x00,0xf0,0xff,0x00,0x00,0x00,0x00,0x80,0x01,0x60,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xfe,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xf8,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x0f,0x00,0x00,0x00,0x80,
+ 0x01,0x30,0x00,0x00,0x00,0x00,0x30,0xc0,0x01,0x00,0x00,0x00,0x80,0x01,0x60,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xf0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x80,
+ 0x01,0x30,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x00,0x00,0x00,0x80,0x03,0x70,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xf0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x00,
+ 0x03,0x30,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x00,0x00,0x00,0x00,0x03,0x30,
+ 0x00,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x00,
+ 0x07,0x38,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x00,0x00,0x00,0x00,0x07,0x38,
+ 0x00,0x00,0x00,0x00,0xe0,0x80,0x01,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xf0,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x0e,0x3e,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x00,0x00,0x00,0x00,0x0e,0x1c,
+ 0x00,0x00,0x00,0x00,0xc0,0xc1,0x01,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xf0,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfe,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0xfc,0x37,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x00,0x00,0x00,0x00,0xfc,0x0f,
+ 0x00,0x00,0x00,0x00,0x80,0xff,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xe0,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0xf0,0x21,0x00,0x00,0x00,0x00,0x30,0x80,0x03,0x00,0x00,0x00,0x00,0xf0,0x03,
+ 0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xe0,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0x80,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xc0,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0x80,0xff,0xff,0x0f,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x03,0x00,0x00,0xc0,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ncap.bitmap b/src/axiom-website/hyperdoc/bitmaps/ncap.bitmap
new file mode 100644
index 0000000..48e310a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ncap.bitmap
@@ -0,0 +1,6 @@
+#define ncap_width 16
+#define ncap_height 16
+static char ncap_bits[] = {
+   0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0xe8, 0x0c,
+   0x68, 0x0c, 0x60, 0x0c, 0x30, 0x0c, 0x30, 0x0e, 0x30, 0x16, 0x30, 0x16,
+   0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/neg.bitmap b/src/axiom-website/hyperdoc/bitmaps/neg.bitmap
new file mode 100644
index 0000000..08678d9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/neg.bitmap
@@ -0,0 +1,6 @@
+#define neg_width 16
+#define neg_height 16
+static char neg_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0x1f, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/newrho.bitmap b/src/axiom-website/hyperdoc/bitmaps/newrho.bitmap
new file mode 100644
index 0000000..032b697
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/newrho.bitmap
@@ -0,0 +1,6 @@
+#define newrho_width 10
+#define newrho_height 16
+static char newrho_bits[] = {
+   0x00, 0xfc, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xfc, 0x70, 0xfc, 0xc8, 0xfc,
+   0xc8, 0xfc, 0x4c, 0xfc, 0x4c, 0xfc, 0x3c, 0xfc, 0x04, 0xfc, 0x06, 0xfc,
+   0x02, 0xfc, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xfc};
diff --git a/src/axiom-website/hyperdoc/bitmaps/nl.bitmap b/src/axiom-website/hyperdoc/bitmaps/nl.bitmap
new file mode 100644
index 0000000..61e9387
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/nl.bitmap
@@ -0,0 +1,7 @@
+#define nl_width 20
+#define nl_height 16
+static char nl_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xff, 0x01, 0x00, 0x9d, 0x01, 0x00, 0x8d, 0xc1, 0x07, 0x8c, 0x81, 0x01,
+   0x86, 0x81, 0x01, 0xc6, 0xc1, 0x00, 0xc6, 0xc2, 0x00, 0xc6, 0xc2, 0x00,
+   0xc3, 0xc1, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x08, 0x00, 0xf8, 0x0f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/nn.bitmap b/src/axiom-website/hyperdoc/bitmaps/nn.bitmap
new file mode 100644
index 0000000..4f69c33
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/nn.bitmap
@@ -0,0 +1,9 @@
+#define nn_width 28
+#define nn_height 16
+static char nn_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x3a, 0x03, 0x00, 0x00,
+   0x1a, 0x83, 0xc3, 0x03, 0x18, 0x03, 0x87, 0x00, 0x0c, 0x03, 0x87, 0x00,
+   0x8c, 0x83, 0x4c, 0x00, 0x8c, 0x85, 0x4c, 0x00, 0x8c, 0x85, 0x58, 0x00,
+   0x86, 0x83, 0x58, 0x00, 0x00, 0x40, 0x30, 0x00, 0x00, 0x40, 0x30, 0x00,
+   0x00, 0xf0, 0x20, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/noop.bitmap b/src/axiom-website/hyperdoc/bitmaps/noop.bitmap
new file mode 100644
index 0000000..fe3169b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/noop.bitmap
@@ -0,0 +1,25 @@
+#define noop_width 60
+#define noop_height 30
+#define noop_x_hot -1
+#define noop_y_hot -1
+static char noop_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/noop3d.bitmap b/src/axiom-website/hyperdoc/bitmaps/noop3d.bitmap
new file mode 100644
index 0000000..9564586
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/noop3d.bitmap
@@ -0,0 +1,23 @@
+#define noop_width 60
+#define noop_height 30
+static char noop_bits[] = {
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05};
diff --git a/src/axiom-website/hyperdoc/bitmaps/not=.bitmap b/src/axiom-website/hyperdoc/bitmaps/not=.bitmap
new file mode 100644
index 0000000..d8f965a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/not=.bitmap
@@ -0,0 +1,8 @@
+#define not__width 16
+#define not__height 16
+#define not__x_hot -1
+#define not__y_hot -1
+static char not__bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0c, 0xfe, 0x3f,
+   0xfe, 0x3f, 0x80, 0x01, 0xc0, 0x00, 0xfe, 0x3f, 0xfe, 0x3f, 0x18, 0x00,
+   0x0c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/notequal.bitmap b/src/axiom-website/hyperdoc/bitmaps/notequal.bitmap
new file mode 100644
index 0000000..fa2e17c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/notequal.bitmap
@@ -0,0 +1,6 @@
+#define not__width 16
+#define not__height 16
+static char not__bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08,
+   0x00, 0x04, 0xfc, 0x3f, 0x00, 0x01, 0x80, 0x00, 0x40, 0x00, 0xfc, 0x3f,
+   0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/notequal.xbm b/src/axiom-website/hyperdoc/bitmaps/notequal.xbm
new file mode 100644
index 0000000..fa2e17c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/notequal.xbm
@@ -0,0 +1,6 @@
+#define not__width 16
+#define not__height 16
+static char not__bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08,
+   0x00, 0x04, 0xfc, 0x3f, 0x00, 0x01, 0x80, 0x00, 0x40, 0x00, 0xfc, 0x3f,
+   0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/nu.bitmap b/src/axiom-website/hyperdoc/bitmaps/nu.bitmap
new file mode 100644
index 0000000..60429b2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/nu.bitmap
@@ -0,0 +1,8 @@
+#define nu_width 16
+#define nu_height 16
+#define nu_x_hot -1
+#define nu_y_hot -1
+static char nu_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x1e, 0x06, 0x18, 0x06,
+   0x18, 0x06, 0x18, 0x06, 0x0c, 0x03, 0x8c, 0x01, 0xec, 0x00, 0x7c, 0x00,
+   0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/nx.bitmap b/src/axiom-website/hyperdoc/bitmaps/nx.bitmap
new file mode 100644
index 0000000..865b046
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/nx.bitmap
@@ -0,0 +1,9 @@
+#define nx_width 30
+#define nx_height 16
+static char nx_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xa0, 0x33, 0x00, 0x00,
+   0xa0, 0x31, 0x00, 0x00, 0x80, 0x31, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00,
+   0xc0, 0x38, 0xd8, 0x01, 0xc0, 0x58, 0xfc, 0x01, 0xc0, 0x58, 0xb4, 0x01,
+   0x60, 0x38, 0x30, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x96, 0x00,
+   0x00, 0x00, 0x7e, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ny.bitmap b/src/axiom-website/hyperdoc/bitmaps/ny.bitmap
new file mode 100644
index 0000000..21b3de3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ny.bitmap
@@ -0,0 +1,9 @@
+#define ny_width 30
+#define ny_height 16
+static char ny_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xa0, 0x33, 0x00, 0x00,
+   0xa0, 0x31, 0x8c, 0x00, 0x80, 0x31, 0x9c, 0x00, 0xc0, 0x30, 0xda, 0x00,
+   0xc0, 0x38, 0xc8, 0x00, 0xc0, 0x58, 0x4c, 0x00, 0xc0, 0x58, 0x6c, 0x00,
+   0x60, 0x38, 0x78, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x36, 0x00,
+   0x00, 0x00, 0x1c, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ode1.xbm b/src/axiom-website/hyperdoc/bitmaps/ode1.xbm
new file mode 100644
index 0000000..5678ea2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ode1.xbm
@@ -0,0 +1,273 @@
+#define ode1_width 260
+#define ode1_height 98
+static char ode1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x12, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x07, 0x11, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
+   0x31, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x31, 0x38, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x70, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x8e, 0x01, 0x00, 0x08, 0x00, 0x86, 0x31, 0x00, 0xc7, 0x00, 0x8e, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x04, 0x00,
+   0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00,
+   0x08, 0x00, 0x86, 0x31, 0x00, 0x46, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x4c, 0x10, 0x00, 0x08, 0x00, 0x86,
+   0x31, 0x00, 0x26, 0x38, 0x4c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f,
+   0x00, 0x00, 0x00, 0x48, 0x18, 0x00, 0x7f, 0x00, 0x86, 0x31, 0x00, 0x24,
+   0x64, 0x48, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0xc0, 0x01, 0x01, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x38, 0x10, 0x00, 0x08, 0x00, 0x86, 0x31, 0x00, 0x1c, 0x20, 0x38, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x81, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x00,
+   0x08, 0x00, 0x06, 0x11, 0x00, 0x18, 0x20, 0x30, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x80, 0x0f,
+   0x0e, 0x00, 0x08, 0x10, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x81, 0x1f, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x48, 0x10, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x98, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x83, 0x03,
+   0x13, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x09, 0x3c, 0x13, 0x78,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x86, 0x00, 0x0e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x86, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0xc4, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc7, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x87, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xc0, 0xf1, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x48, 0x00, 0x20, 0xf3, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0xf1, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe0, 0x90, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x18, 0x70, 0x20, 0x00, 0x00, 0xf1,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3c, 0x10, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc8, 0x00, 0x1e, 0x88, 0x30, 0x00, 0x80, 0xf0, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x18, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x01,
+   0x18, 0x8c, 0x11, 0x00, 0x40, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0xc3,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x18, 0x8c, 0x11,
+   0x00, 0xe0, 0xf1, 0x70, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x04, 0x00, 0x00, 0x00, 0x30, 0x18, 0x03, 0x38, 0x02, 0xe0,
+   0x18, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x18, 0x8c, 0x01, 0x1c, 0x03, 0xf0,
+   0x60, 0x04, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x60, 0x04,
+   0x00, 0x00, 0x00, 0x30, 0x18, 0x03, 0x30, 0x02, 0xc0, 0x08, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x18, 0x8c, 0x01, 0x18, 0x01, 0xf0, 0x60, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x61, 0x02, 0x01, 0x00, 0x00,
+   0x30, 0x18, 0x03, 0x30, 0xc1, 0xc1, 0x04, 0x07, 0x00, 0x00, 0x80, 0x01,
+   0x18, 0x8c, 0x01, 0x18, 0x01, 0xf0, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x82, 0x01, 0xf8, 0x03, 0x30, 0x18, 0x03,
+   0x20, 0x21, 0x83, 0x84, 0x04, 0xf0, 0x07, 0x84, 0x01, 0x18, 0x8c, 0x01,
+   0xb0, 0x00, 0xf0, 0xc0, 0x81, 0x03, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x01, 0x01, 0x00, 0x00, 0x30, 0x18, 0x03, 0xe0, 0x00, 0x81,
+   0x03, 0x04, 0x00, 0x00, 0x8c, 0x01, 0x18, 0x8c, 0x01, 0x70, 0xf0, 0xf0,
+   0x80, 0x41, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x01, 0x00, 0x00, 0x30, 0x10, 0x01, 0xc0, 0x00, 0x01, 0x03, 0x07, 0x00,
+   0x00, 0x8c, 0x31, 0x18, 0x88, 0x00, 0x60, 0x90, 0xf1, 0x80, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00,
+   0x7c, 0xe0, 0x00, 0x40, 0x80, 0x00, 0x01, 0x04, 0x00, 0x00, 0xf8, 0x30,
+   0x7e, 0x70, 0x00, 0x20, 0x80, 0xf0, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0e, 0xfc, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x40, 0x02, 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x80, 0xf0, 0x98, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19,
+   0x1c, 0x98, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xe0, 0x31,
+   0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0xf0,
+   0x70, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x04, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x20, 0xf1, 0x00, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x22, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
+   0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x3c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x02, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x81, 0x03, 0x02, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x0d, 0xe0, 0x41, 0x04, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x19,
+   0x80, 0x61, 0x8c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x80, 0x61, 0x8c,
+   0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x61, 0x8c, 0xc0, 0x31, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x04, 0x00, 0x00, 0xf8, 0x1f,
+   0x00, 0x00, 0x0f, 0x80, 0x61, 0x0c, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x80, 0x61, 0x0c, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, 0x80, 0x61, 0x0c,
+   0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x01, 0x00,
+   0x00, 0xf8, 0x1f, 0x00, 0xc0, 0x18, 0x80, 0x61, 0x04, 0x00, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x81, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x98, 0x81, 0x41, 0x04, 0x00, 0x06, 0x0e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x80, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8f,
+   0xe1, 0x87, 0x03, 0x00, 0x02, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x98, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ode2.xbm b/src/axiom-website/hyperdoc/bitmaps/ode2.xbm
new file mode 100644
index 0000000..7dd2bb5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ode2.xbm
@@ -0,0 +1,300 @@
+#define ode2_width 263
+#define ode2_height 108
+static char ode2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x31, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0xc7, 0x0e, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x80, 0x11, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x86,
+   0x8c, 0x19, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x8c, 0x19, 0x98,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x09, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x8f, 0x19, 0x90, 0x90, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x07, 0x04, 0x00, 0xe0, 0x7f,
+   0x00, 0x00, 0x86, 0x8c, 0x19, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96,
+   0x8c, 0x19, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xd7, 0x19, 0x20,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x90, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x02, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0xc0, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x87, 0x1d,
+   0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x0c, 0x37, 0x30, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x0c, 0x33, 0x30, 0xc1, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x38, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x0f, 0x33, 0x20, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x24, 0x64, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x0c, 0x33,
+   0xe0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
+   0x20, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x0c, 0x33, 0xc0, 0xc0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x20, 0x00, 0x80,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x8c, 0x97, 0x33, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x80, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xe0, 0xc0, 0x81, 0x03,
+   0x00, 0x00, 0x00, 0x40, 0x20, 0x01, 0x00, 0x00, 0x70, 0x00, 0x1c, 0x38,
+   0x00, 0x00, 0x08, 0x48, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x04, 0x10, 0x21, 0x43, 0x06, 0x00, 0x00, 0x00,
+   0x4c, 0xe0, 0x01, 0x00, 0x00, 0x88, 0x00, 0x22, 0x64, 0x00, 0x80, 0x09,
+   0x3c, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x0c, 0x18, 0x73, 0x66, 0x0c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00,
+   0x00, 0x00, 0x8c, 0x01, 0x63, 0xc6, 0x00, 0x00, 0x07, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x18,
+   0x23, 0x63, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c,
+   0x01, 0x63, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x31, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x18, 0x03, 0x03, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x63, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x11, 0x00, 0x00, 0xe0, 0x7f,
+   0x00, 0x00, 0x00, 0x60, 0x0c, 0x18, 0xc3, 0x01, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x63, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x0c, 0x18, 0x03, 0x06, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
+   0x00, 0x00, 0x8c, 0x01, 0x63, 0x30, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x9f,
+   0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x63, 0x0c, 0x18,
+   0x13, 0x06, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x8c,
+   0x01, 0x63, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x07, 0x0e,
+   0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x18, 0x33, 0x86, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x63, 0x88,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x06, 0x19, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0xc4, 0x10, 0x31, 0xc6, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x18, 0x22, 0xfc, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xc3, 0xe0, 0xe0, 0xe3, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x70, 0x18, 0x1c, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x02, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x01, 0x12, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0xe1, 0xe0, 0xe0, 0x18, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x11, 0x31, 0xc0, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x09,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x33,
+   0xc0, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0xe3, 0x80, 0x04, 0x87,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x18, 0x83, 0x81, 0x83, 0x84, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x11, 0x81, 0x01, 0x03, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xf0,
+   0x00, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x84,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x81, 0x84, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x80, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xc0,
+   0x01, 0x07, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x20, 0x82, 0x0c, 0x19,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x31, 0x30, 0xc6, 0x99, 0x31, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x31, 0x30, 0x86, 0x8c, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x30,
+   0x06, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x30, 0x06, 0x07, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x31, 0x30, 0x06, 0x18, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x31, 0x30, 0x46, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x30,
+   0xc6, 0x18, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x23, 0xc2, 0x18, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0e, 0xc3, 0x81, 0x8f, 0x3f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0xc0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x80, 0x11, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x09, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x07, 0x0e, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x06, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x0e, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x60, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0xc0, 0x01, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x23, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13,
+   0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x1c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x03, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ode3.xbm b/src/axiom-website/hyperdoc/bitmaps/ode3.xbm
new file mode 100644
index 0000000..8f5446d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ode3.xbm
@@ -0,0 +1,97 @@
+#define ode3_width 207
+#define ode3_height 43
+static char ode3_bits[] = {
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x70,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x60, 0x04, 0x00, 0xe0, 0x7f, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x24,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0x01, 0xe0, 0x7f,
+   0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x81, 0x01,
+   0x00, 0x00, 0x00, 0x18, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x98, 0x00, 0x01, 0x00, 0x00, 0x80, 0x09, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x70, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07,
+   0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x70, 0xe0, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x03,
+   0x07, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x1e, 0x88, 0x10, 0xe1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
+   0x40, 0x84, 0x08, 0x11, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x8c, 0x19, 0x83, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x60, 0xcc, 0x98, 0x31, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x8c, 0x19, 0x83, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x60, 0xcc, 0x98, 0x31, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x70, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x8c, 0x19, 0x83,
+   0xc1, 0x31, 0x00, 0x00, 0x00, 0xc0, 0x60, 0xcc, 0x98, 0x31, 0x8e, 0x01,
+   0x00, 0x80, 0x00, 0x60, 0x04, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x18, 0x8c,
+   0x19, 0x83, 0x81, 0x11, 0x00, 0x00, 0x00, 0xc0, 0x60, 0xcc, 0x98, 0x31,
+   0x8c, 0x00, 0x00, 0x80, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x18, 0x8c, 0x19, 0x83, 0x81, 0x09, 0x00, 0x00, 0x00, 0xc0, 0x60, 0xcc,
+   0x98, 0x31, 0x4c, 0x00, 0x00, 0x80, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00,
+   0x80, 0x1f, 0x18, 0x8c, 0x19, 0x83, 0x01, 0x09, 0x0e, 0xc0, 0x0f, 0xc0,
+   0x60, 0xcc, 0x98, 0x31, 0x48, 0x20, 0x00, 0x80, 0x00, 0xc0, 0x81, 0x03,
+   0xe0, 0x7f, 0x00, 0x00, 0x18, 0x8c, 0x19, 0x83, 0x01, 0x07, 0x19, 0x00,
+   0x00, 0xc0, 0x60, 0xcc, 0x98, 0x31, 0x38, 0x30, 0x00, 0x80, 0x00, 0x80,
+   0x41, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x88, 0x10, 0x81, 0x01, 0x06,
+   0x08, 0x00, 0x00, 0xc0, 0x40, 0x84, 0x08, 0x11, 0x30, 0x20, 0x00, 0x80,
+   0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x70, 0xe0, 0xe0,
+   0x07, 0x02, 0x08, 0x00, 0x00, 0xf0, 0x83, 0x03, 0x07, 0x0e, 0x10, 0x20,
+   0x00, 0x80, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x20, 0x00, 0x80, 0x00, 0x98, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x13, 0x20, 0x00, 0x80, 0x00, 0x70, 0x80, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0e, 0x78, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80};
diff --git a/src/axiom-website/hyperdoc/bitmaps/omega-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/omega-cap.bitmap
new file mode 100644
index 0000000..f39c0a2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/omega-cap.bitmap
@@ -0,0 +1,8 @@
+#define Omega_width 16
+#define Omega_height 16
+#define Omega_x_hot -1
+#define Omega_y_hot -1
+static char Omega_bits[] = {
+   0xe0, 0x07, 0xf0, 0x0f, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x30, 0x0c, 0x30,
+   0x18, 0x18, 0x18, 0x18, 0x38, 0x1c, 0x30, 0x0c, 0x30, 0x0c, 0x60, 0x06,
+   0x60, 0x06, 0x62, 0x46, 0x7a, 0x5e, 0x7e, 0x7e};
diff --git a/src/axiom-website/hyperdoc/bitmaps/omega.bitmap b/src/axiom-website/hyperdoc/bitmaps/omega.bitmap
new file mode 100644
index 0000000..aabf823
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/omega.bitmap
@@ -0,0 +1,8 @@
+#define omega_width 16
+#define omega_height 16
+#define omega_x_hot -1
+#define omega_y_hot -1
+static char omega_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x1c, 0x38, 0x0e, 0x30,
+   0x86, 0x31, 0x86, 0x31, 0xc6, 0x31, 0xc6, 0x18, 0xce, 0x1c, 0xfc, 0x0f,
+   0x38, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/omicron.bitmap b/src/axiom-website/hyperdoc/bitmaps/omicron.bitmap
new file mode 100644
index 0000000..876038a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/omicron.bitmap
@@ -0,0 +1,8 @@
+#define omicron_width 16
+#define omicron_height 16
+#define omicron_x_hot -1
+#define omicron_y_hot -1
+static char omicron_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xf8, 0x01, 0x9c, 0x01,
+   0x0e, 0x03, 0x06, 0x03, 0x06, 0x03, 0x86, 0x03, 0xce, 0x01, 0xfc, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt1.xbm b/src/axiom-website/hyperdoc/bitmaps/opt1.xbm
new file mode 100644
index 0000000..74efe25
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt1.xbm
@@ -0,0 +1,73 @@
+#define opt1_width 280
+#define opt1_height 24
+static char opt1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x02,
+   0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x02, 0x01, 0x86, 0xc7,
+   0x80, 0x01, 0x00, 0x00, 0x1e, 0x3c, 0x06, 0x06, 0x00, 0x00, 0x80, 0xe1,
+   0x31, 0x00, 0x78, 0x0c, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x63, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x06, 0x03, 0x01, 0x07, 0x47, 0xc0,
+   0x00, 0x00, 0x00, 0x33, 0x38, 0x02, 0x03, 0x00, 0x00, 0xc0, 0xc1, 0x11,
+   0x00, 0x70, 0x04, 0x00, 0x00, 0x00, 0x98, 0x81, 0x23, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x04, 0x00, 0x40, 0x0c, 0x02, 0x01, 0x07, 0x26, 0x60, 0x02,
+   0x00, 0x00, 0x63, 0x30, 0x81, 0x09, 0x00, 0x00, 0xe0, 0x81, 0x09, 0x00,
+   0x60, 0x02, 0x00, 0x00, 0x00, 0x18, 0x03, 0x13, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0x04, 0x00, 0x60, 0x1c, 0x82, 0x80, 0x07, 0x1e, 0xe0, 0x01, 0x20,
+   0x00, 0x60, 0xf0, 0x80, 0x07, 0x00, 0x01, 0xa0, 0x81, 0x07, 0x00, 0xe0,
+   0x01, 0x00, 0x00, 0x01, 0x00, 0x03, 0x0f, 0x00, 0x00, 0x08, 0x00, 0x06,
+   0x04, 0xc0, 0x03, 0x00, 0x87, 0xc0, 0x06, 0x1c, 0x00, 0x00, 0x20, 0x00,
+   0x60, 0xe0, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x01, 0x07, 0x00, 0xc0, 0x01,
+   0x00, 0x00, 0x01, 0x00, 0x03, 0x0e, 0x00, 0x00, 0x08, 0x00, 0x06, 0x08,
+   0x60, 0x04, 0x00, 0x80, 0x40, 0x06, 0x18, 0x00, 0x00, 0x20, 0x00, 0x30,
+   0xc0, 0x00, 0x00, 0x00, 0x01, 0x98, 0x01, 0x06, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x01, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x08, 0x00, 0x06, 0x08, 0x60,
+   0x04, 0x00, 0x80, 0x20, 0x06, 0x3c, 0x00, 0x00, 0x20, 0x00, 0x18, 0xe0,
+   0x01, 0x00, 0x00, 0x01, 0x88, 0x01, 0x0f, 0x10, 0xc0, 0x03, 0x0e, 0x00,
+   0x01, 0xc0, 0x00, 0x1e, 0x70, 0x00, 0x08, 0x00, 0x06, 0x08, 0xe0, 0x03,
+   0x00, 0x80, 0xe0, 0x0f, 0x72, 0x00, 0x00, 0xfe, 0x03, 0x0c, 0x90, 0x03,
+   0x00, 0xf0, 0x1f, 0xf8, 0x83, 0x1c, 0x18, 0x20, 0x07, 0x19, 0xf0, 0x1f,
+   0x40, 0x00, 0x39, 0xc8, 0x80, 0xff, 0x00, 0x06, 0x08, 0x60, 0x00, 0x00,
+   0x80, 0x00, 0x06, 0x61, 0x80, 0x00, 0x20, 0x00, 0x46, 0x08, 0x03, 0x07,
+   0x00, 0x01, 0x80, 0x41, 0x18, 0x10, 0x10, 0x06, 0x18, 0x00, 0x01, 0x20,
+   0x82, 0x30, 0xc0, 0x00, 0x08, 0x00, 0x06, 0x08, 0x60, 0x04, 0x00, 0x80,
+   0x00, 0x86, 0xe1, 0xc0, 0x00, 0x20, 0x00, 0x7f, 0x0c, 0x87, 0x0c, 0x00,
+   0x01, 0x80, 0x61, 0x38, 0x10, 0x18, 0x0e, 0x0c, 0x00, 0x01, 0xf0, 0xc3,
+   0x70, 0x60, 0x00, 0x08, 0x00, 0x06, 0x08, 0xc0, 0x03, 0x00, 0x00, 0x01,
+   0xcf, 0xe3, 0x83, 0x00, 0x20, 0x00, 0x7f, 0x1e, 0x0f, 0x0c, 0x00, 0x01,
+   0xc0, 0xf3, 0xf8, 0x10, 0x3c, 0x1e, 0x06, 0x00, 0x01, 0xf8, 0xe3, 0xf1,
+   0x30, 0x00, 0x08, 0x00, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0x98,
+   0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x38, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xc0, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt2.xbm b/src/axiom-website/hyperdoc/bitmaps/opt2.xbm
new file mode 100644
index 0000000..985e16d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt2.xbm
@@ -0,0 +1,117 @@
+#define opt2_width 454
+#define opt2_height 24
+static char opt2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x82, 0xc2, 0x20, 0x78, 0x0c, 0x00, 0x00, 0x00,
+   0xc0, 0x80, 0x83, 0xc7, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, 0xc2,
+   0x63, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x01, 0x40, 0x60, 0x00, 0x00, 0x00,
+   0xc1, 0x63, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1e, 0x03, 0x40, 0x90, 0x00,
+   0x00, 0x00, 0x0c, 0x38, 0x10, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x78, 0x0c,
+   0x00, 0x42, 0xc2, 0x10, 0x70, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x04,
+   0x47, 0x00, 0x40, 0x18, 0x00, 0x00, 0xc0, 0x07, 0x80, 0x23, 0x00, 0x00,
+   0x00, 0x00, 0x8e, 0x00, 0x80, 0x30, 0x00, 0x00, 0x80, 0x80, 0x23, 0x00,
+   0x00, 0x00, 0x80, 0x19, 0x1c, 0x01, 0x80, 0xf0, 0x01, 0x00, 0x00, 0x0e,
+   0x44, 0x08, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x70, 0x04, 0x00, 0xc4, 0xc7,
+   0x10, 0x60, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x0c, 0x26, 0x00, 0x40,
+   0x4c, 0x00, 0x00, 0xc0, 0x03, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00, 0x4c,
+   0x00, 0x80, 0x98, 0x00, 0x00, 0x80, 0x00, 0x13, 0x00, 0x00, 0x00, 0x80,
+   0x31, 0x98, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0c, 0xc6, 0x08, 0x98,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00, 0x04, 0xc2, 0x10, 0xe0, 0x01,
+   0x00, 0x00, 0x01, 0xc0, 0x60, 0x0c, 0x1e, 0x00, 0x40, 0x3c, 0x00, 0x04,
+   0x40, 0x00, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x80, 0x79,
+   0x00, 0x08, 0x80, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x00,
+   0x80, 0xc0, 0x01, 0x10, 0x00, 0x0c, 0xc6, 0x08, 0x78, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x01, 0x00, 0x04, 0xc7, 0x08, 0xc0, 0x01, 0x00, 0x00, 0x01,
+   0xc0, 0x60, 0x0c, 0x1c, 0x00, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x03, 0x00,
+   0x0e, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x01, 0x00, 0x08, 0x40,
+   0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0x00, 0x00, 0x01, 0x00,
+   0x10, 0x00, 0x0c, 0xc6, 0x04, 0x70, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+   0x00, 0x08, 0xc0, 0x08, 0x80, 0x01, 0x00, 0x00, 0x01, 0xc0, 0x60, 0x0c,
+   0x18, 0x00, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x84, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x01, 0x00, 0x08, 0x40, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x60, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x0c,
+   0xc6, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x08, 0xc0,
+   0x08, 0xc0, 0x03, 0x04, 0x00, 0x01, 0xc0, 0x60, 0x0c, 0x3c, 0xe0, 0x80,
+   0x00, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x1e, 0x70, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x01, 0x01, 0x00, 0x08, 0x40, 0x00, 0x1e, 0x70, 0x00, 0x00, 0x00,
+   0x0c, 0xf0, 0x80, 0x03, 0x01, 0x00, 0x10, 0x00, 0x0c, 0xc6, 0x04, 0xf0,
+   0x00, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x08, 0x08, 0xc0, 0x08, 0x20, 0x07,
+   0x06, 0xf0, 0x1f, 0xc0, 0x60, 0x0c, 0x72, 0x90, 0x81, 0x00, 0xc0, 0x7f,
+   0x00, 0x8c, 0x00, 0x39, 0xc8, 0x00, 0x7f, 0x00, 0xe4, 0x80, 0x01, 0x01,
+   0x80, 0xff, 0x40, 0x00, 0x39, 0xc8, 0x00, 0x7f, 0x00, 0x06, 0xc8, 0x41,
+   0x06, 0x01, 0x00, 0xff, 0x01, 0x0c, 0xc6, 0x04, 0xc8, 0x81, 0x01, 0xf0,
+   0x07, 0x20, 0x07, 0x0c, 0x08, 0xc0, 0x08, 0x10, 0x06, 0x04, 0x00, 0x01,
+   0xc0, 0x60, 0x0c, 0x61, 0x80, 0x81, 0x00, 0x00, 0x04, 0x40, 0x8c, 0x80,
+   0x30, 0xc0, 0x00, 0x00, 0x00, 0xc2, 0x40, 0x01, 0x01, 0x00, 0x08, 0x40,
+   0x80, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x23, 0x84, 0x01, 0x06, 0x01, 0x00,
+   0x10, 0x00, 0x0c, 0xc6, 0x04, 0x84, 0x01, 0x01, 0x00, 0x00, 0x10, 0x06,
+   0x0a, 0x08, 0xc0, 0x08, 0x18, 0x0e, 0x04, 0x00, 0x01, 0xc0, 0x40, 0x84,
+   0xe1, 0xc0, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x06, 0xc0, 0x70, 0xf0, 0x00,
+   0x00, 0x00, 0xc3, 0x21, 0x01, 0x01, 0x00, 0x08, 0x40, 0xc0, 0x70, 0x60,
+   0x00, 0x00, 0x80, 0x3f, 0x86, 0x83, 0x07, 0x01, 0x00, 0x10, 0x00, 0x0c,
+   0x44, 0x04, 0x86, 0x03, 0x01, 0x00, 0x00, 0x18, 0x0e, 0x09, 0x08, 0xc0,
+   0x10, 0x3c, 0x3e, 0x04, 0x00, 0x01, 0xe0, 0x81, 0xc3, 0xe3, 0x63, 0x40,
+   0x00, 0x00, 0x04, 0x80, 0x03, 0xf1, 0xf1, 0xc1, 0x00, 0x00, 0x80, 0xc7,
+   0xe7, 0x83, 0x00, 0x00, 0x08, 0x80, 0xe0, 0xf1, 0x31, 0x00, 0x00, 0x80,
+   0x3f, 0x8f, 0x0f, 0x86, 0x00, 0x00, 0x10, 0x00, 0x1e, 0x38, 0x08, 0x8f,
+   0x0f, 0x01, 0x00, 0x00, 0x3c, 0x3e, 0x1f, 0x04, 0xc0, 0x10, 0x00, 0x00,
+   0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0x41, 0x00, 0x00, 0x04,
+   0x00, 0x00, 0x01, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00,
+   0x00, 0x08, 0x80, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x86, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x04, 0xc0, 0x10, 0x00, 0x00, 0x0e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x1c, 0x04, 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc0,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt2c.xbm b/src/axiom-website/hyperdoc/bitmaps/opt2c.xbm
new file mode 100644
index 0000000..4ad434d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt2c.xbm
@@ -0,0 +1,146 @@
+#define opt2c_width 125
+#define opt2c_height 107
+static char opt2c_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3c,
+   0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x78,
+   0x00, 0x00, 0x03, 0x38, 0x02, 0x00, 0x00, 0x0c, 0x90, 0x01, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x30, 0x01, 0x00, 0x00, 0x03,
+   0x38, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x30, 0x00, 0xf0,
+   0x00, 0x00, 0xc0, 0x00, 0x90, 0x01, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x0c, 0x00, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x08, 0x00,
+   0xe0, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x02, 0x00, 0xe0,
+   0x01, 0x00, 0x08, 0x00, 0x00, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x0c, 0x00, 0x90, 0x03, 0x01, 0x30, 0x00, 0x08, 0x03, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x30, 0x00, 0x08, 0x83, 0x01, 0xc0, 0x00,
+   0x18, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x0c,
+   0x07, 0x01, 0x00, 0x03, 0x18, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x03, 0x1e, 0x1f, 0x01, 0x00, 0x0c, 0xf0, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x03, 0x38, 0x02, 0x00, 0x00, 0x18,
+   0x20, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x8c, 0x01, 0xc0, 0x00, 0x30,
+   0x01, 0x00, 0x00, 0x06, 0x30, 0x06, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x30, 0x00, 0xf0, 0x00, 0x00, 0x80, 0x01, 0x30, 0x06, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x00, 0xe0, 0x00, 0x00, 0x60, 0x00,
+   0x30, 0x06, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x02, 0x00, 0xc0,
+   0x00, 0x00, 0x10, 0x00, 0x30, 0x06, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x02, 0x00, 0xe0, 0x01, 0x06, 0x10, 0x00, 0x30, 0x06, 0x00, 0xe0,
+   0x00, 0x80, 0x3f, 0x30, 0x00, 0x0c, 0x00, 0x90, 0x03, 0x09, 0x60, 0x00,
+   0x30, 0x06, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x18, 0x01, 0x30, 0x00, 0x08,
+   0x03, 0x18, 0x80, 0x01, 0x30, 0x06, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xfc,
+   0x01, 0xc0, 0x00, 0x0c, 0x07, 0x08, 0x00, 0x06, 0x20, 0x02, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x03, 0x1e, 0x1f, 0x04, 0x00, 0x18,
+   0xc0, 0x01, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x38, 0x02, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x30,
+   0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xb0,
+   0x01, 0x30, 0x00, 0xf0, 0x00, 0x00, 0x80, 0x01, 0xe0, 0xe1, 0x01, 0xe0,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x0c, 0x00, 0xe0, 0x00, 0x00, 0x60, 0x00,
+   0x10, 0x33, 0x02, 0xe0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x02, 0x00, 0xc0,
+   0x00, 0x00, 0x10, 0x00, 0x08, 0x1e, 0x04, 0xe0, 0x00, 0x00, 0x7f, 0xf8,
+   0x00, 0x02, 0x00, 0xe0, 0x01, 0x00, 0x10, 0x00, 0x08, 0x0c, 0x04, 0xe0,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x90, 0x03, 0x06, 0x60, 0x00,
+   0x08, 0x1e, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x30, 0x00, 0x08,
+   0x03, 0x09, 0x80, 0x01, 0x10, 0x33, 0x02, 0xe0, 0x00, 0x00, 0x00, 0xb0,
+   0x01, 0xc0, 0x00, 0x0c, 0x07, 0x08, 0x00, 0x06, 0xe0, 0xe1, 0x01, 0xe0,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x03, 0x1e, 0x1f, 0x06, 0x00, 0x18,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0x38,
+   0x02, 0x00, 0x00, 0x18, 0x20, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0xc0, 0x00, 0x30, 0x01, 0x00, 0x00, 0x06, 0x70, 0x06, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x30, 0x00, 0xf0, 0x00, 0x00, 0x80, 0x01,
+   0x20, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0c, 0x00, 0xe0,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x10, 0x00, 0xc0, 0x01, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x02, 0x00, 0xe0, 0x01, 0x00, 0x10, 0x00,
+   0x00, 0x06, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0c, 0x00, 0x90,
+   0x03, 0x04, 0x60, 0x00, 0x10, 0x06, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x30, 0x00, 0x08, 0x03, 0x06, 0x80, 0x01, 0x30, 0x06, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x0c, 0x07, 0x05, 0x00, 0x06,
+   0x30, 0x06, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x03, 0x1e,
+   0x9f, 0x04, 0x00, 0x18, 0xe0, 0x01, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt3.xbm b/src/axiom-website/hyperdoc/bitmaps/opt3.xbm
new file mode 100644
index 0000000..e91aaa2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt3.xbm
@@ -0,0 +1,51 @@
+#define opt3_width 211
+#define opt3_height 21
+static char opt3_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x8f, 0x01, 0xc0, 0x63, 0x00, 0x20, 0x3c, 0x06, 0x00, 0x00, 0x00,
+   0x78, 0x0c, 0x00, 0x00, 0x00, 0xe0, 0x31, 0x00, 0x08, 0x00, 0x00, 0xe0,
+   0x31, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x80, 0x23, 0x00, 0x10, 0x38, 0x02,
+   0x00, 0x00, 0x00, 0x70, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x11, 0x00, 0x10,
+   0x00, 0x00, 0xc0, 0x11, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x00, 0x13, 0x00,
+   0x10, 0x30, 0x01, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x80,
+   0x09, 0x00, 0x10, 0x00, 0x00, 0x80, 0x09, 0x00, 0xf8, 0x00, 0x3c, 0x00,
+   0x00, 0x0f, 0x00, 0x10, 0xf0, 0x00, 0x00, 0x80, 0x00, 0xe0, 0x01, 0x00,
+   0x00, 0x02, 0x80, 0x07, 0x00, 0x30, 0x00, 0x02, 0x80, 0x07, 0x00, 0xf8,
+   0x00, 0x38, 0x00, 0x00, 0x0e, 0x00, 0x08, 0xe0, 0x00, 0x00, 0x80, 0x00,
+   0xc0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x20, 0x00, 0x02, 0x00,
+   0x07, 0x00, 0xf8, 0x00, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x08, 0xc0, 0x00,
+   0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x20,
+   0x00, 0x02, 0x00, 0x06, 0x00, 0xf8, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00,
+   0x08, 0xe0, 0x01, 0x00, 0x80, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x02, 0x00,
+   0x0f, 0x00, 0x20, 0x00, 0x02, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0xe4, 0x80,
+   0x00, 0x39, 0x40, 0x08, 0x90, 0x03, 0x02, 0xf8, 0x0f, 0x20, 0x07, 0x1c,
+   0xe0, 0x3f, 0x80, 0x1c, 0x38, 0x20, 0xe0, 0x3f, 0x80, 0x1c, 0x38, 0xf8,
+   0x00, 0xc2, 0xc0, 0x80, 0x30, 0x60, 0x08, 0x08, 0x03, 0x03, 0x80, 0x00,
+   0x10, 0x06, 0x32, 0x00, 0x02, 0x40, 0x18, 0x64, 0x20, 0x00, 0x02, 0x40,
+   0x18, 0x64, 0xf8, 0x00, 0xc3, 0x81, 0xc0, 0x70, 0x50, 0x08, 0x0c, 0x07,
+   0x02, 0x80, 0x00, 0x18, 0x0e, 0x30, 0x00, 0x02, 0x60, 0x38, 0x60, 0x20,
+   0x00, 0x02, 0x60, 0x38, 0x60, 0xf8, 0x80, 0xc7, 0x83, 0xe0, 0xf1, 0x48,
+   0x10, 0x1e, 0x0f, 0x02, 0x80, 0x00, 0x3c, 0x1e, 0x3c, 0x00, 0x02, 0xf0,
+   0xf8, 0x78, 0x10, 0x00, 0x02, 0xf0, 0xf8, 0x78, 0xf8, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0xf8, 0x10, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x02, 0x00, 0x00, 0x60, 0x10, 0x00, 0x02, 0x00, 0x00, 0x60, 0xf8,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x64, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x64, 0xf8, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xe0, 0x20, 0x00, 0x00,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x38, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf8};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt3c1.xbm b/src/axiom-website/hyperdoc/bitmaps/opt3c1.xbm
new file mode 100644
index 0000000..aae4e8b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt3c1.xbm
@@ -0,0 +1,107 @@
+#define opt3c1_width 91
+#define opt3c1_height 104
+static char opt3c1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x80, 0x01, 0x00, 0x00, 0xf0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xe0, 0x01, 0x00, 0x0c, 0xe0, 0x08, 0x00, 0x00, 0x60, 0x80, 0x0f, 0xf8,
+   0x80, 0x01, 0x00, 0x03, 0xc0, 0x04, 0x00, 0x00, 0x18, 0x80, 0x07, 0xf8,
+   0x80, 0x01, 0xc0, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x06, 0x80, 0x00, 0xf8,
+   0x80, 0x01, 0x30, 0x00, 0x80, 0x03, 0x00, 0x80, 0x01, 0x80, 0x03, 0xf8,
+   0x80, 0x01, 0x08, 0x00, 0x00, 0x03, 0x00, 0x40, 0x00, 0x80, 0x0c, 0xf8,
+   0x80, 0x01, 0x08, 0x00, 0x80, 0x07, 0x00, 0x40, 0x00, 0x00, 0x18, 0xf8,
+   0x80, 0x01, 0x30, 0x00, 0x40, 0x0e, 0x08, 0x80, 0x01, 0x80, 0x18, 0xf8,
+   0x80, 0x01, 0xc0, 0x00, 0x20, 0x0c, 0x0c, 0x00, 0x06, 0xc0, 0x18, 0xf8,
+   0x80, 0x01, 0x00, 0x03, 0x30, 0x1c, 0x08, 0x00, 0x18, 0x40, 0x0c, 0xf8,
+   0xe0, 0x03, 0x00, 0x0c, 0x78, 0x7c, 0x08, 0x00, 0x60, 0x80, 0x07, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x80, 0x01, 0x00, 0x00, 0xf0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xe0, 0x01, 0x00, 0x0c, 0xe0, 0x08, 0x00, 0x00, 0x60, 0x80, 0x0f, 0xf8,
+   0x80, 0x01, 0x00, 0x03, 0xc0, 0x04, 0x00, 0x00, 0x18, 0x80, 0x07, 0xf8,
+   0x80, 0x01, 0xc0, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x06, 0x80, 0x00, 0xf8,
+   0x80, 0x01, 0x30, 0x00, 0x80, 0x03, 0x00, 0x80, 0x01, 0x80, 0x03, 0xf8,
+   0x80, 0x01, 0x08, 0x00, 0x00, 0x03, 0x00, 0x40, 0x00, 0x80, 0x0c, 0xf8,
+   0x80, 0x01, 0x08, 0x00, 0x80, 0x07, 0x1e, 0x40, 0x00, 0x00, 0x18, 0xf8,
+   0x80, 0x01, 0x30, 0x00, 0x40, 0x0e, 0x12, 0x80, 0x01, 0x80, 0x18, 0xf8,
+   0x80, 0x01, 0xc0, 0x00, 0x20, 0x0c, 0x30, 0x00, 0x06, 0xc0, 0x18, 0xf8,
+   0x80, 0x01, 0x00, 0x03, 0x30, 0x1c, 0x10, 0x00, 0x18, 0x40, 0x0c, 0xf8,
+   0xe0, 0x03, 0x00, 0x0c, 0x78, 0x7c, 0x08, 0x00, 0x60, 0x80, 0x07, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x80, 0x01, 0x00, 0x00, 0xf0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xe0, 0x01, 0x00, 0x0c, 0xe0, 0x08, 0x00, 0x00, 0x60, 0x80, 0x0f, 0xf8,
+   0x80, 0x01, 0x00, 0x03, 0xc0, 0x04, 0x00, 0x00, 0x18, 0x80, 0x07, 0xf8,
+   0x80, 0x01, 0xc0, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x06, 0x80, 0x00, 0xf8,
+   0x80, 0x01, 0x30, 0x00, 0x80, 0x03, 0x00, 0x80, 0x01, 0x80, 0x03, 0xf8,
+   0x80, 0x01, 0x08, 0x00, 0x00, 0x03, 0x00, 0x40, 0x00, 0x80, 0x0c, 0xf8,
+   0x80, 0x01, 0x08, 0x00, 0x80, 0x07, 0x00, 0x40, 0x00, 0x00, 0x18, 0xf8,
+   0x80, 0x01, 0x30, 0x00, 0x40, 0x0e, 0x0c, 0x80, 0x01, 0x80, 0x18, 0xf8,
+   0x80, 0x01, 0xc0, 0x00, 0x20, 0x0c, 0x12, 0x00, 0x06, 0xc0, 0x18, 0xf8,
+   0x80, 0x01, 0x00, 0x03, 0x30, 0x1c, 0x10, 0x00, 0x18, 0x40, 0x0c, 0xf8,
+   0xe0, 0x03, 0x00, 0x0c, 0x78, 0x7c, 0x0c, 0x00, 0x60, 0x80, 0x07, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x80, 0x01, 0x00, 0x00, 0xf0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xe0, 0x01, 0x00, 0x0c, 0xe0, 0x08, 0x00, 0x00, 0x60, 0x80, 0x0f, 0xf8,
+   0x80, 0x01, 0x00, 0x03, 0xc0, 0x04, 0x00, 0x00, 0x18, 0x80, 0x07, 0xf8,
+   0x80, 0x01, 0xc0, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x06, 0x80, 0x00, 0xf8,
+   0x80, 0x01, 0x30, 0x00, 0x80, 0x03, 0x00, 0x80, 0x01, 0x80, 0x03, 0xf8,
+   0x80, 0x01, 0x08, 0x00, 0x00, 0x03, 0x00, 0x40, 0x00, 0x80, 0x0c, 0xf8,
+   0x80, 0x01, 0x08, 0x00, 0x80, 0x07, 0x00, 0x40, 0x00, 0x00, 0x18, 0xf8,
+   0x80, 0x01, 0x30, 0x00, 0x40, 0x0e, 0x10, 0x80, 0x01, 0x80, 0x18, 0xf8,
+   0x80, 0x01, 0xc0, 0x00, 0x20, 0x0c, 0x18, 0x00, 0x06, 0xc0, 0x18, 0xf8,
+   0x80, 0x01, 0x00, 0x03, 0x30, 0x1c, 0x14, 0x00, 0x18, 0x40, 0x0c, 0xf8,
+   0xe0, 0x03, 0x00, 0x0c, 0x78, 0x7c, 0x12, 0x00, 0x60, 0x80, 0x07, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt3c2.xbm b/src/axiom-website/hyperdoc/bitmaps/opt3c2.xbm
new file mode 100644
index 0000000..829c56c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt3c2.xbm
@@ -0,0 +1,212 @@
+#define opt3c2_width 263
+#define opt3c2_height 76
+static char opt3c2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x03,
+   0x00, 0x00, 0x00, 0x78, 0x0c, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x00, 0x00,
+   0x00, 0xc0, 0x63, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x70, 0x00, 0x1c, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x1c, 0x01, 0x00, 0x00, 0x00,
+   0x70, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x00, 0x00, 0x80, 0x23,
+   0x00, 0x00, 0x80, 0x01, 0x33, 0x88, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00,
+   0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x60,
+   0x00, 0x63, 0x8c, 0x01, 0x63, 0x80, 0x00, 0x00, 0x78, 0x78, 0x00, 0x18,
+   0x00, 0x78, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x01, 0xc0,
+   0x03, 0x00, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x18, 0x00, 0x60, 0x8c,
+   0x01, 0x63, 0x80, 0x00, 0x00, 0xc4, 0x8c, 0x00, 0x06, 0x00, 0x70, 0x00,
+   0x00, 0x40, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x01, 0x80, 0x03, 0x00, 0x00,
+   0x04, 0x00, 0x0e, 0x00, 0x00, 0x06, 0x00, 0x60, 0x8c, 0x01, 0x63, 0x80,
+   0x00, 0x00, 0x82, 0x07, 0x01, 0x01, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x0c,
+   0x00, 0x00, 0x01, 0x00, 0x30, 0x8c, 0x01, 0x63, 0x80, 0x00, 0x00, 0x02,
+   0x03, 0x01, 0x01, 0x00, 0xf0, 0x80, 0x00, 0x40, 0x00, 0xc0, 0x03, 0x06,
+   0x00, 0x01, 0x80, 0x07, 0x0c, 0x00, 0x04, 0x00, 0x1e, 0x40, 0x00, 0x01,
+   0x00, 0x18, 0x8c, 0x01, 0x63, 0x80, 0x80, 0x3f, 0x82, 0x07, 0x01, 0x06,
+   0x00, 0xc8, 0xc1, 0x00, 0xfc, 0x07, 0x20, 0x07, 0x09, 0xf0, 0x1f, 0x40,
+   0x0e, 0x12, 0xc0, 0x7f, 0x00, 0x39, 0x60, 0x00, 0x06, 0x00, 0x0c, 0x8c,
+   0x01, 0x63, 0x80, 0x00, 0x00, 0xc4, 0x8c, 0x00, 0x18, 0x00, 0x84, 0x81,
+   0x00, 0x40, 0x00, 0x10, 0x06, 0x18, 0x00, 0x01, 0x20, 0x0c, 0x10, 0x00,
+   0x04, 0x80, 0x30, 0x50, 0x00, 0x18, 0x00, 0x46, 0x8c, 0x01, 0x63, 0x80,
+   0x00, 0x00, 0x78, 0x78, 0x00, 0x60, 0x00, 0x86, 0x83, 0x00, 0x40, 0x00,
+   0x18, 0x0e, 0x08, 0x00, 0x01, 0x30, 0x1c, 0x0c, 0x00, 0x04, 0xc0, 0x70,
+   0x48, 0x00, 0x60, 0x00, 0x7f, 0x88, 0x18, 0x22, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x8f, 0x8f, 0x00, 0x40, 0x00, 0x3c, 0x3e, 0x04,
+   0x00, 0x01, 0x78, 0x7c, 0x10, 0x00, 0x04, 0xe0, 0xf1, 0xf9, 0x00, 0x80,
+   0x01, 0x7f, 0x70, 0x18, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x12, 0x00, 0x01, 0x00,
+   0x00, 0x12, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x09,
+   0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1e, 0x03, 0x06, 0x00, 0x00, 0x78, 0x0c, 0x18, 0x00, 0x00, 0xf0,
+   0x18, 0x30, 0x00, 0x00, 0xc0, 0x63, 0xc0, 0x00, 0x00, 0x00, 0x20, 0x70,
+   0x00, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x1c, 0x01,
+   0x02, 0x00, 0x00, 0x70, 0x04, 0x08, 0x00, 0x00, 0xe0, 0x08, 0x10, 0x00,
+   0x00, 0x80, 0x23, 0x40, 0x00, 0x80, 0x01, 0x30, 0x88, 0x00, 0x22, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x98, 0x00, 0x01, 0x00, 0x00,
+   0x60, 0x02, 0x04, 0x00, 0x00, 0xc0, 0x04, 0x08, 0x00, 0x00, 0x00, 0x13,
+   0x20, 0x00, 0x60, 0x00, 0x38, 0x8c, 0x01, 0x63, 0x80, 0x00, 0x00, 0xf0,
+   0xf0, 0x00, 0x18, 0x00, 0x78, 0x80, 0x04, 0x40, 0x00, 0xe0, 0x01, 0x12,
+   0x00, 0x01, 0xc0, 0x03, 0x24, 0x00, 0x04, 0x00, 0x0f, 0x90, 0x00, 0x18,
+   0x00, 0x3c, 0x8c, 0x01, 0x63, 0x80, 0x00, 0x00, 0x88, 0x19, 0x01, 0x06,
+   0x00, 0x70, 0xc0, 0x03, 0x40, 0x00, 0xc0, 0x01, 0x0f, 0x00, 0x01, 0x80,
+   0x03, 0x1e, 0x00, 0x04, 0x00, 0x0e, 0x78, 0x00, 0x06, 0x00, 0x36, 0x8c,
+   0x01, 0x63, 0x80, 0x00, 0x00, 0x04, 0x0f, 0x02, 0x01, 0x00, 0x60, 0x00,
+   0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00,
+   0x04, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x00, 0x33, 0x8c, 0x01, 0x63, 0x80,
+   0x00, 0x00, 0x04, 0x06, 0x02, 0x01, 0x00, 0xf0, 0x00, 0x00, 0x40, 0x00,
+   0xc0, 0x03, 0x00, 0x00, 0x01, 0x80, 0x07, 0x00, 0x00, 0x04, 0x00, 0x1e,
+   0x00, 0x00, 0x01, 0x00, 0x31, 0x8c, 0x01, 0x63, 0x80, 0x80, 0x3f, 0x04,
+   0x0f, 0x02, 0x06, 0x00, 0xc8, 0x01, 0x00, 0xfc, 0x07, 0x20, 0x07, 0x00,
+   0xf0, 0x1f, 0x40, 0x0e, 0x00, 0xc0, 0x7f, 0x00, 0x39, 0x00, 0x00, 0x06,
+   0x00, 0x7f, 0x8c, 0x01, 0x63, 0x80, 0x00, 0x00, 0x88, 0x19, 0x01, 0x18,
+   0x00, 0x84, 0x01, 0x00, 0x40, 0x00, 0x10, 0x06, 0x00, 0x00, 0x01, 0x00,
+   0x0c, 0x00, 0x00, 0x04, 0x80, 0x30, 0x00, 0x00, 0x18, 0x00, 0x30, 0x8c,
+   0x01, 0x63, 0x80, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x60, 0x00, 0x86, 0x83,
+   0x00, 0x40, 0x00, 0x18, 0x0e, 0x06, 0x00, 0x01, 0x20, 0x1c, 0x0c, 0x00,
+   0x04, 0xc0, 0x70, 0x40, 0x00, 0x60, 0x00, 0x30, 0x88, 0x18, 0x22, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x8f, 0xcf, 0x00, 0x40, 0x00,
+   0x3c, 0x3e, 0x09, 0x00, 0x01, 0x78, 0x7c, 0x12, 0x00, 0x04, 0xe0, 0xf1,
+   0x61, 0x00, 0x80, 0x01, 0x78, 0x70, 0x18, 0x1c, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x50, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1e, 0x03, 0xc0, 0x63, 0x00, 0xf0,
+   0x18, 0x00, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xf8, 0x00, 0x22,
+   0x00, 0xc0, 0x00, 0x1c, 0x01, 0x80, 0x23, 0x00, 0xe0, 0x08, 0x00, 0x1c,
+   0x01, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x78, 0x00, 0x63, 0x00, 0x30, 0x00,
+   0x98, 0x00, 0x00, 0x13, 0x00, 0xc0, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x08, 0x00, 0x63, 0x00, 0x0c, 0x00, 0x78, 0x00, 0x00,
+   0x0f, 0x00, 0xc0, 0x03, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0xe1,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x38, 0x00, 0x63, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x0e, 0x00, 0x80,
+   0x03, 0x00, 0x70, 0x00, 0x00, 0x30, 0x00, 0x10, 0x33, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x00, 0x63,
+   0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x60,
+   0x00, 0x00, 0x08, 0x00, 0x08, 0x1e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x01, 0x63, 0x80, 0x00, 0x00,
+   0xf0, 0x00, 0x00, 0x1e, 0x00, 0x80, 0x07, 0x00, 0xf0, 0x00, 0x00, 0x08,
+   0x00, 0x08, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x88, 0x01, 0x63, 0x00, 0x03, 0x00, 0xc8, 0x81, 0x00,
+   0x39, 0x30, 0x40, 0x0e, 0x0c, 0xc8, 0x01, 0x02, 0x30, 0x00, 0x08, 0x1e,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c,
+   0x8c, 0x01, 0x63, 0x00, 0x0c, 0x00, 0x84, 0xc1, 0x80, 0x30, 0x48, 0x20,
+   0x0c, 0x12, 0x84, 0x01, 0x03, 0xc0, 0x00, 0x10, 0x33, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc4, 0x30, 0x22,
+   0x00, 0x30, 0x00, 0x86, 0x83, 0xc0, 0x70, 0xc0, 0x30, 0x1c, 0x10, 0x86,
+   0x83, 0x02, 0x00, 0x03, 0xe0, 0xe1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x78, 0x30, 0x1c, 0x00, 0xc0, 0x00,
+   0x8f, 0x8f, 0xe0, 0xf1, 0x41, 0x78, 0x7c, 0x0c, 0x8f, 0x4f, 0x02, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x90, 0x00,
+   0x00, 0x12, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x78, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt4.xbm b/src/axiom-website/hyperdoc/bitmaps/opt4.xbm
new file mode 100644
index 0000000..5d0cca7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt4.xbm
@@ -0,0 +1,95 @@
+#define opt4_width 382
+#define opt4_height 23
+static char opt4_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc1,
+   0x00, 0x00, 0x0e, 0xc0, 0x03, 0x81, 0x03, 0x60, 0xe0, 0x71, 0x00, 0x00,
+   0x00, 0xc0, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x03, 0x00, 0x00, 0x00,
+   0x3c, 0x0e, 0x00, 0x00, 0x00, 0x78, 0x1c, 0x00, 0x00, 0x00, 0xc0, 0x01,
+   0x70, 0x20, 0x78, 0x1c, 0x00, 0x00, 0x00, 0xf0, 0x38, 0x00, 0x04, 0xc1,
+   0x00, 0x00, 0x11, 0x60, 0x86, 0x40, 0x04, 0x70, 0xc0, 0x11, 0x00, 0x00,
+   0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00,
+   0x38, 0x02, 0x00, 0x00, 0x00, 0x70, 0x04, 0x00, 0x00, 0x00, 0x20, 0x02,
+   0xcc, 0x10, 0x70, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x08, 0xc2,
+   0x00, 0x80, 0x31, 0x60, 0x8c, 0x60, 0x0c, 0x68, 0x80, 0x09, 0x00, 0x00,
+   0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x01, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x30, 0x06,
+   0x8c, 0x11, 0x60, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x08, 0xc2,
+   0x00, 0x80, 0x31, 0x00, 0x8c, 0x60, 0x0c, 0x60, 0x80, 0x07, 0x00, 0x00,
+   0x04, 0x00, 0x0f, 0x00, 0x00, 0x10, 0x00, 0x3c, 0x00, 0x00, 0x20, 0x00,
+   0xf0, 0x00, 0x00, 0x80, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x30, 0x06,
+   0x80, 0x11, 0xe0, 0x01, 0x00, 0x00, 0x01, 0xc0, 0x03, 0x00, 0x08, 0xc2,
+   0x00, 0x80, 0x31, 0x00, 0x4c, 0x60, 0x0c, 0x60, 0x00, 0x07, 0x00, 0x00,
+   0x04, 0x00, 0x0e, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x00, 0x20, 0x00,
+   0xe0, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x30, 0x06,
+   0x80, 0x09, 0xc0, 0x01, 0x00, 0x00, 0x01, 0x80, 0x03, 0x00, 0x10, 0xc4,
+   0x00, 0x80, 0x31, 0x00, 0x46, 0x60, 0x0c, 0x60, 0x00, 0x06, 0x00, 0x00,
+   0x04, 0x00, 0x0c, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00,
+   0xc0, 0x00, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x30, 0x06,
+   0xc0, 0x08, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x10, 0xc4,
+   0x00, 0x80, 0x31, 0x00, 0x43, 0x60, 0x0c, 0x60, 0x00, 0x0f, 0x00, 0x00,
+   0x04, 0x00, 0x1e, 0x00, 0x00, 0x10, 0x00, 0x78, 0x00, 0x00, 0x20, 0x00,
+   0xe0, 0x01, 0x00, 0x80, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x30, 0x06,
+   0x60, 0x08, 0xc0, 0x03, 0x00, 0x00, 0x01, 0x80, 0x07, 0x00, 0x10, 0xc4,
+   0xe0, 0x87, 0x31, 0x80, 0x41, 0x60, 0x0c, 0x60, 0x80, 0x1c, 0x10, 0xc0,
+   0x7f, 0x00, 0x39, 0x70, 0x00, 0xff, 0x01, 0xe4, 0xc0, 0x00, 0xfe, 0x03,
+   0x90, 0x03, 0x04, 0xf8, 0x0f, 0x20, 0x07, 0x0f, 0xc0, 0x0f, 0x30, 0x06,
+   0x30, 0x08, 0x20, 0x07, 0x06, 0xf0, 0x1f, 0x40, 0x0e, 0x3e, 0x10, 0xc4,
+   0x00, 0x80, 0x31, 0xc0, 0x48, 0x60, 0x0c, 0x60, 0x40, 0x18, 0x18, 0x00,
+   0x04, 0x80, 0x30, 0xc8, 0x00, 0x10, 0x00, 0xc2, 0x20, 0x01, 0x20, 0x00,
+   0x08, 0x03, 0x06, 0x80, 0x00, 0x10, 0x06, 0x01, 0x00, 0x00, 0x30, 0x06,
+   0x18, 0x09, 0x10, 0x06, 0x09, 0x00, 0x01, 0x20, 0x0c, 0x12, 0x10, 0xc4,
+   0x00, 0x00, 0x11, 0xe3, 0x8f, 0x40, 0xc4, 0x60, 0x60, 0x38, 0x10, 0x00,
+   0x04, 0xc0, 0x70, 0xc0, 0x00, 0x10, 0x00, 0xc3, 0x01, 0x01, 0x20, 0x00,
+   0x0c, 0x07, 0x05, 0x80, 0x00, 0x18, 0x0e, 0x0f, 0x00, 0x00, 0x20, 0x62,
+   0xfc, 0x11, 0x18, 0x0e, 0x01, 0x00, 0x01, 0x30, 0x1c, 0x08, 0x10, 0xc4,
+   0x00, 0x00, 0x0e, 0xe3, 0x8f, 0x80, 0xc3, 0xf8, 0xf0, 0x78, 0x10, 0x00,
+   0x04, 0xe0, 0xf1, 0x60, 0x00, 0x10, 0x80, 0xc7, 0xc3, 0x01, 0x20, 0x00,
+   0x1e, 0x8f, 0x04, 0x80, 0x00, 0x3c, 0x1e, 0x19, 0x00, 0x00, 0xc0, 0x61,
+   0xfc, 0x11, 0x3c, 0x1e, 0x07, 0x00, 0x01, 0x78, 0x3c, 0x08, 0x08, 0xc2,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x04, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00,
+   0x00, 0x80, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x08, 0x08, 0xc2,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xc2,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00,
+   0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc1,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc1,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt4c1.xbm b/src/axiom-website/hyperdoc/bitmaps/opt4c1.xbm
new file mode 100644
index 0000000..54cf7c8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt4c1.xbm
@@ -0,0 +1,317 @@
+#define opt4c1_width 154
+#define opt4c1_height 188
+static char opt4c1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x60, 0x00, 0x00,
+   0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x80, 0x01, 0xfc,
+   0x00, 0x00, 0x10, 0x01, 0x44, 0x78, 0x00, 0x00, 0x03, 0x18, 0x02, 0x00,
+   0x00, 0x30, 0x40, 0x04, 0x10, 0xe1, 0x01, 0xfc, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0x60, 0x00, 0xc0, 0x00, 0x30, 0x01, 0x00, 0x00, 0x0c, 0x60, 0x0c,
+   0x18, 0x83, 0x01, 0xfc, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x30,
+   0x00, 0xf0, 0x00, 0x00, 0x00, 0x03, 0x60, 0x0c, 0x18, 0x83, 0x01, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x0c, 0x00, 0xe0, 0x00, 0x00,
+   0xc0, 0x00, 0x60, 0x0c, 0x18, 0x83, 0x01, 0xfc, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0x60, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x20, 0x00, 0x60, 0x0c,
+   0x18, 0x83, 0x01, 0xfc, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x02,
+   0x00, 0xe0, 0x01, 0x00, 0x20, 0x00, 0x60, 0x0c, 0x18, 0x83, 0x01, 0xfc,
+   0x00, 0x7e, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x0c, 0x00, 0x90, 0x03, 0x04,
+   0xc0, 0x00, 0x60, 0x0c, 0x18, 0x83, 0x01, 0xfc, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0x60, 0x00, 0x30, 0x00, 0x08, 0x03, 0x06, 0x00, 0x03, 0x60, 0x0c,
+   0x18, 0x83, 0x01, 0xfc, 0x00, 0x00, 0x10, 0x31, 0x44, 0x60, 0x00, 0xc0,
+   0x00, 0x0c, 0x07, 0x04, 0x00, 0x0c, 0x40, 0xc4, 0x10, 0x81, 0x01, 0xfc,
+   0x00, 0x00, 0xe0, 0x30, 0x38, 0xf8, 0x00, 0x00, 0x03, 0x1e, 0x1f, 0x04,
+   0x00, 0x30, 0x80, 0xc3, 0xe0, 0xe0, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0xc0, 0x01, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00,
+   0x00, 0x00, 0xc0, 0x01, 0x60, 0xf0, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x20,
+   0x02, 0x78, 0x00, 0x80, 0x01, 0x18, 0x02, 0x00, 0x00, 0x18, 0x20, 0x02,
+   0x78, 0xf0, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x30, 0x06, 0x60, 0x00, 0x60,
+   0x00, 0x30, 0x01, 0x00, 0x00, 0x06, 0x30, 0x06, 0x60, 0x10, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x30, 0x06, 0x60, 0x00, 0x18, 0x00, 0xf0, 0x00, 0x00,
+   0x80, 0x01, 0x30, 0x06, 0x60, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x30,
+   0x06, 0x60, 0x00, 0x06, 0x00, 0xe0, 0x00, 0x00, 0x60, 0x00, 0x30, 0x06,
+   0x60, 0x70, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x30, 0x06, 0x60, 0x00, 0x01,
+   0x00, 0xc0, 0x00, 0x00, 0x10, 0x00, 0x30, 0x06, 0x60, 0x90, 0x01, 0xfc,
+   0x00, 0x00, 0x00, 0x30, 0x06, 0x60, 0x00, 0x01, 0x00, 0xe0, 0x01, 0x00,
+   0x10, 0x00, 0x30, 0x06, 0x60, 0x00, 0x03, 0xfc, 0x00, 0x00, 0xfc, 0x30,
+   0x06, 0x60, 0x00, 0x06, 0x00, 0x90, 0x03, 0x07, 0x60, 0x00, 0x30, 0x06,
+   0x60, 0x10, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x30, 0x06, 0x60, 0x00, 0x18,
+   0x00, 0x08, 0x83, 0x0c, 0x80, 0x01, 0x30, 0x06, 0x60, 0x18, 0x03, 0xfc,
+   0x00, 0x00, 0x00, 0x20, 0x62, 0x70, 0x00, 0x60, 0x00, 0x0c, 0x07, 0x0c,
+   0x00, 0x06, 0x20, 0xc2, 0x60, 0x88, 0x01, 0xfc, 0x00, 0x00, 0x00, 0xc0,
+   0x61, 0xf8, 0x00, 0x80, 0x01, 0x1e, 0x1f, 0x04, 0x00, 0x18, 0xc0, 0xc1,
+   0xf8, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x00,
+   0x38, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0x80, 0x03,
+   0xe0, 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x10, 0x01, 0x44, 0x78, 0x00, 0x00,
+   0x03, 0x38, 0x02, 0x00, 0x00, 0x30, 0x40, 0x04, 0x10, 0x21, 0x03, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0xc0, 0x00, 0x30, 0x01, 0x00,
+   0x00, 0x0c, 0x60, 0x0c, 0x18, 0x73, 0x06, 0xfc, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0x60, 0x00, 0x30, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x03, 0x60, 0x0c,
+   0x18, 0x23, 0x03, 0xfc, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x0c,
+   0x00, 0xe0, 0x00, 0x00, 0xc0, 0x00, 0x60, 0x0c, 0x18, 0x03, 0x03, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00,
+   0x20, 0x00, 0x60, 0x0c, 0x18, 0xc3, 0x01, 0xfc, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0x60, 0x00, 0x02, 0x00, 0xe0, 0x01, 0x06, 0x20, 0x00, 0x60, 0x0c,
+   0x18, 0x03, 0x06, 0xfc, 0x00, 0x7e, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x0c,
+   0x00, 0x90, 0x03, 0x09, 0xc0, 0x00, 0x60, 0x0c, 0x18, 0x13, 0x06, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x30, 0x00, 0x08, 0x03, 0x08,
+   0x00, 0x03, 0x60, 0x0c, 0x18, 0x33, 0x06, 0xfc, 0x00, 0x00, 0x10, 0x31,
+   0x44, 0x60, 0x00, 0xc0, 0x00, 0x0c, 0x07, 0x06, 0x00, 0x0c, 0x40, 0xc4,
+   0x10, 0x31, 0x06, 0xfc, 0x00, 0x00, 0xe0, 0x30, 0x38, 0xf8, 0x00, 0x00,
+   0x03, 0x1e, 0x1f, 0x08, 0x00, 0x30, 0x80, 0xc3, 0xe0, 0xe0, 0x03, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x00,
+   0x38, 0x80, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0x80, 0x03,
+   0xe0, 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x10, 0x01, 0x44, 0xc0, 0x00, 0x00,
+   0x03, 0x38, 0x02, 0x00, 0x00, 0x30, 0x40, 0x04, 0x10, 0x31, 0x03, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0xe0, 0x00, 0xc0, 0x00, 0x30, 0x01, 0x00,
+   0x00, 0x0c, 0x60, 0x0c, 0x18, 0x33, 0x06, 0xfc, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0xd0, 0x00, 0x30, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x03, 0x60, 0x0c,
+   0x18, 0x03, 0x06, 0xfc, 0x00, 0x00, 0x18, 0x03, 0xc6, 0xc8, 0x00, 0x0c,
+   0x00, 0xe0, 0x00, 0x00, 0xc0, 0x00, 0x60, 0x0c, 0x18, 0x03, 0x06, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0xc4, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00,
+   0x20, 0x00, 0x60, 0x0c, 0x18, 0x03, 0x03, 0xfc, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0xc4, 0x00, 0x02, 0x00, 0xe0, 0x01, 0x00, 0x20, 0x00, 0x60, 0x0c,
+   0x18, 0x83, 0x01, 0xfc, 0x00, 0x7e, 0x18, 0x03, 0xc6, 0xfc, 0x01, 0x0c,
+   0x00, 0x90, 0x03, 0x08, 0xc0, 0x00, 0x60, 0x0c, 0x18, 0xc3, 0x00, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0xc0, 0x00, 0x30, 0x00, 0x08, 0x03, 0x0c,
+   0x00, 0x03, 0x60, 0x0c, 0x18, 0x63, 0x04, 0xfc, 0x00, 0x00, 0x10, 0x31,
+   0x44, 0xc0, 0x00, 0xc0, 0x00, 0x0c, 0x07, 0x0a, 0x00, 0x0c, 0x40, 0xc4,
+   0x10, 0xf1, 0x07, 0xfc, 0x00, 0x00, 0xe0, 0x30, 0x38, 0xe0, 0x01, 0x00,
+   0x03, 0x1e, 0x1f, 0x09, 0x00, 0x30, 0x80, 0xc3, 0xe0, 0xf0, 0x07, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x60, 0x00, 0x00,
+   0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x70, 0xf0, 0x03, 0xfc,
+   0x00, 0x00, 0x00, 0x20, 0x02, 0x78, 0x00, 0x80, 0x01, 0x38, 0x02, 0x00,
+   0x00, 0x18, 0x20, 0x02, 0x88, 0xf0, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x30,
+   0x06, 0x60, 0x00, 0x60, 0x00, 0x30, 0x01, 0x00, 0x00, 0x06, 0x30, 0x06,
+   0x8c, 0x11, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x30, 0x06, 0x60, 0x00, 0x18,
+   0x00, 0xf0, 0x00, 0x00, 0x80, 0x01, 0x30, 0x06, 0x8c, 0x11, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x30, 0x06, 0x60, 0x00, 0x06, 0x00, 0xe0, 0x00, 0x00,
+   0x60, 0x00, 0x30, 0x06, 0x8c, 0x71, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x30,
+   0x06, 0x60, 0x00, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x10, 0x00, 0x30, 0x06,
+   0x8c, 0x91, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x30, 0x06, 0x60, 0x00, 0x01,
+   0x00, 0xe0, 0x01, 0x00, 0x10, 0x00, 0x30, 0x06, 0x8c, 0x01, 0x03, 0xfc,
+   0x00, 0x00, 0xfc, 0x30, 0x06, 0x60, 0x00, 0x06, 0x00, 0x90, 0x83, 0x07,
+   0x60, 0x00, 0x30, 0x06, 0x8c, 0x11, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x30,
+   0x06, 0x60, 0x00, 0x18, 0x00, 0x08, 0x83, 0x00, 0x80, 0x01, 0x30, 0x06,
+   0x8c, 0x19, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x20, 0x62, 0x60, 0x00, 0x60,
+   0x00, 0x0c, 0x87, 0x03, 0x00, 0x06, 0x20, 0xc2, 0x88, 0x88, 0x01, 0xfc,
+   0x00, 0x00, 0x00, 0xc0, 0x61, 0xf8, 0x00, 0x80, 0x01, 0x1e, 0x9f, 0x04,
+   0x00, 0x18, 0xc0, 0xc1, 0x70, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0xe0, 0x00, 0x38, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x10, 0x01,
+   0x44, 0x78, 0x00, 0x00, 0x03, 0x38, 0x02, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0xc0,
+   0x00, 0x30, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x30, 0x00, 0xf0, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0x60, 0x00, 0x0c, 0x00, 0xe0, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0xc3,
+   0x03, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x02,
+   0x00, 0xc0, 0x00, 0x00, 0x20, 0x00, 0x20, 0x66, 0x04, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x02, 0x00, 0xe0, 0x01, 0x03,
+   0x20, 0x00, 0x10, 0x3c, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x7e, 0x18, 0x03,
+   0xc6, 0x60, 0x00, 0x0c, 0x00, 0x90, 0x83, 0x04, 0xc0, 0x00, 0x10, 0x18,
+   0x08, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x30,
+   0x00, 0x08, 0x83, 0x00, 0x00, 0x03, 0x10, 0x3c, 0x08, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x10, 0x31, 0x44, 0x60, 0x00, 0xc0, 0x00, 0x0c, 0x87, 0x03,
+   0x00, 0x0c, 0x20, 0x66, 0x04, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x30,
+   0x38, 0xf8, 0x00, 0x00, 0x03, 0x1e, 0x9f, 0x04, 0x00, 0x30, 0xc0, 0xc3,
+   0x03, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0xe0, 0x00, 0x38, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x10, 0x01,
+   0x44, 0x78, 0x00, 0x00, 0x03, 0x38, 0x02, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0xc0,
+   0x00, 0x30, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x30, 0x00, 0xf0, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0x60, 0x00, 0x0c, 0x00, 0xe0, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0xc3,
+   0x03, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x02,
+   0x00, 0xc0, 0x00, 0x00, 0x20, 0x00, 0x20, 0x66, 0x04, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x02, 0x00, 0xe0, 0x81, 0x07,
+   0x20, 0x00, 0x10, 0x3c, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x7e, 0x18, 0x03,
+   0xc6, 0x60, 0x00, 0x0c, 0x00, 0x90, 0x83, 0x04, 0xc0, 0x00, 0x10, 0x18,
+   0x08, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x30,
+   0x00, 0x08, 0x03, 0x02, 0x00, 0x03, 0x10, 0x3c, 0x08, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x10, 0x31, 0x44, 0x60, 0x00, 0xc0, 0x00, 0x0c, 0x07, 0x02,
+   0x00, 0x0c, 0x20, 0x66, 0x04, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x30,
+   0x38, 0xf8, 0x00, 0x00, 0x03, 0x1e, 0x1f, 0x01, 0x00, 0x30, 0xc0, 0xc3,
+   0x03, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt4c2.xbm b/src/axiom-website/hyperdoc/bitmaps/opt4c2.xbm
new file mode 100644
index 0000000..4fd5fb2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt4c2.xbm
@@ -0,0 +1,75 @@
+#define opt4c2_width 344
+#define opt4c2_height 20
+static char opt4c2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x80, 0xc7, 0x00,
+   0x00, 0x00, 0x00, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00,
+   0x00, 0xf0, 0x18, 0x00, 0x00, 0x00, 0xc0, 0x63, 0x00, 0x00, 0x00, 0x80,
+   0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0x03, 0xc0,
+   0x11, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01,
+   0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x00,
+   0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x08, 0xe0, 0x81, 0x0c, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00,
+   0x26, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x40, 0x00, 0x30, 0x01,
+   0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
+   0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x80, 0xc1,
+   0x19, 0x80, 0x07, 0x00, 0x00, 0x08, 0x00, 0x1e, 0x00, 0x00, 0x10, 0x00,
+   0x78, 0x00, 0x00, 0x40, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x03,
+   0x00, 0x00, 0x02, 0x00, 0x0f, 0x00, 0x00, 0x08, 0x00, 0x1e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x18, 0x80, 0x81, 0x0c, 0x00, 0x07, 0x00, 0x00,
+   0x08, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x00, 0x70, 0x00, 0x00, 0x40, 0x00,
+   0xe0, 0x00, 0x00, 0x00, 0x01, 0x80, 0x03, 0x00, 0x00, 0x02, 0x00, 0x0e,
+   0x00, 0x00, 0x08, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18,
+   0x80, 0x01, 0x0c, 0x00, 0x06, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00,
+   0x10, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x00, 0x08, 0x00, 0x18,
+   0x00, 0x00, 0xff, 0x03, 0x00, 0xc0, 0x18, 0x80, 0x01, 0x07, 0x00, 0x0f,
+   0x00, 0x00, 0x08, 0x00, 0x3c, 0x00, 0x00, 0x10, 0x00, 0xf0, 0x00, 0x00,
+   0x40, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x01, 0x80, 0x07, 0x00, 0x00, 0x02,
+   0x00, 0x1e, 0x00, 0x00, 0x08, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x18, 0x80, 0x01, 0x18, 0x80, 0x1c, 0x20, 0x80, 0xff, 0x00, 0x72,
+   0xe0, 0x00, 0xff, 0x01, 0xc8, 0x81, 0x03, 0x64, 0x02, 0x90, 0x03, 0x04,
+   0xf0, 0x1f, 0x40, 0x0e, 0x1e, 0xe0, 0x3f, 0x00, 0x39, 0x30, 0x80, 0xff,
+   0x00, 0x72, 0xf0, 0x01, 0x00, 0x00, 0xf0, 0xc7, 0x18, 0x80, 0x41, 0x18,
+   0x40, 0x18, 0x30, 0x00, 0x08, 0x00, 0x61, 0x90, 0x00, 0x10, 0x00, 0x80,
+   0x41, 0x02, 0x40, 0x00, 0x08, 0x03, 0x06, 0x00, 0x01, 0x20, 0x0c, 0x02,
+   0x00, 0x02, 0x80, 0x30, 0x48, 0x00, 0x08, 0x00, 0x61, 0x90, 0x00, 0xff,
+   0x03, 0x00, 0xc0, 0x18, 0x80, 0xc1, 0x18, 0x60, 0x38, 0x20, 0x00, 0x08,
+   0x80, 0xe1, 0x80, 0x01, 0x10, 0x00, 0x84, 0x03, 0x02, 0x40, 0x00, 0x0c,
+   0x07, 0x05, 0x00, 0x01, 0x30, 0x1c, 0x0e, 0x00, 0x02, 0xc0, 0x70, 0x08,
+   0x00, 0x08, 0x80, 0xe1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x83,
+   0xc1, 0x18, 0xf0, 0xf8, 0x20, 0x00, 0x08, 0xc0, 0xe3, 0x83, 0x00, 0x10,
+   0x00, 0x8f, 0x0f, 0x03, 0x40, 0x00, 0x1e, 0x9f, 0x04, 0x00, 0x01, 0x78,
+   0x7c, 0x12, 0x00, 0x02, 0xe0, 0xf1, 0x39, 0x00, 0x08, 0xc0, 0xe3, 0x41,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x83, 0x07, 0x00, 0x00, 0x20,
+   0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x40,
+   0x00, 0x00, 0x80, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x02, 0x00,
+   0x00, 0x48, 0x00, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x01, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt4c3.xbm b/src/axiom-website/hyperdoc/bitmaps/opt4c3.xbm
new file mode 100644
index 0000000..17d1363
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt4c3.xbm
@@ -0,0 +1,1151 @@
+#define opt4c3_width 653
+#define opt4c3_height 168
+static char opt4c3_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x38, 0x00, 0x0c, 0x00, 0x78, 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x01,
+   0x38, 0x00, 0xe1, 0x31, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x81, 0x81,
+   0xc7, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x07, 0x10, 0x1e, 0x03, 0x00,
+   0x00, 0x00, 0x70, 0x00, 0x1c, 0x18, 0x78, 0x0c, 0x00, 0x00, 0x00, 0xc0,
+   0x01, 0x70, 0xc0, 0xc0, 0x63, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x81,
+   0x01, 0x8f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x80, 0x03, 0x07,
+   0x20, 0x38, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x44,
+   0x00, 0x0f, 0x7c, 0x70, 0x04, 0x00, 0x00, 0x00, 0x20, 0x02, 0x44, 0x80,
+   0xc1, 0x11, 0x00, 0x00, 0x00, 0x80, 0x08, 0x20, 0x62, 0x06, 0x47, 0x00,
+   0x00, 0x00, 0x00, 0x22, 0x80, 0x08, 0x18, 0x1c, 0x01, 0x00, 0x00, 0x00,
+   0x88, 0x00, 0x22, 0x66, 0x70, 0x04, 0x00, 0x00, 0x00, 0x20, 0x02, 0x88,
+   0xf0, 0x80, 0x23, 0x00, 0x00, 0x00, 0x80, 0x08, 0x20, 0x42, 0x06, 0x8e,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x11, 0x40, 0x84, 0x08, 0x30, 0x44,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc6, 0x00, 0x0c,
+   0x3c, 0x60, 0x02, 0x00, 0x00, 0x00, 0x30, 0x06, 0xc6, 0xc0, 0x81, 0x09,
+   0x00, 0x00, 0x00, 0xc0, 0x18, 0x30, 0x66, 0x0c, 0x26, 0x00, 0x00, 0x00,
+   0x00, 0x63, 0xc0, 0x18, 0x1c, 0x98, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01,
+   0x63, 0xc6, 0x60, 0x02, 0x00, 0x00, 0x00, 0x30, 0x06, 0x8c, 0xc1, 0x00,
+   0x13, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x30, 0xe6, 0x0c, 0x4c, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x80, 0x31, 0x60, 0xcc, 0x18, 0x38, 0xc6, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xc6, 0x00, 0x0c, 0x04, 0xe0,
+   0x01, 0x00, 0x00, 0x01, 0x30, 0x06, 0xc6, 0xa0, 0x81, 0x07, 0x00, 0x00,
+   0x04, 0xc0, 0x18, 0x30, 0x06, 0x0c, 0x1e, 0x00, 0x00, 0x10, 0x00, 0x63,
+   0xc0, 0x18, 0x1e, 0x78, 0x00, 0x00, 0x80, 0x00, 0x8c, 0x01, 0x63, 0xc0,
+   0xe0, 0x01, 0x00, 0x00, 0x02, 0x30, 0x06, 0x8c, 0xc1, 0x00, 0x0f, 0x00,
+   0x00, 0x08, 0xc0, 0x18, 0x30, 0x46, 0x06, 0x3c, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x80, 0x31, 0x60, 0xcc, 0x18, 0x3c, 0xc6, 0x00, 0xe0, 0x00, 0x00,
+   0xf0, 0xf0, 0x00, 0x0c, 0x00, 0xc6, 0x00, 0x0c, 0x1c, 0xc0, 0x01, 0x00,
+   0x00, 0x01, 0x30, 0x06, 0xc6, 0xb0, 0x01, 0x07, 0x00, 0x00, 0x04, 0xc0,
+   0x18, 0x30, 0x06, 0x0c, 0x1c, 0x00, 0x00, 0x10, 0x00, 0x63, 0xc0, 0x18,
+   0x1b, 0x70, 0x00, 0x00, 0x80, 0x00, 0x8c, 0x01, 0x63, 0xc0, 0xc0, 0x01,
+   0x00, 0x00, 0x02, 0x30, 0x06, 0x8c, 0xc1, 0x00, 0x0e, 0x00, 0x00, 0x08,
+   0xc0, 0x18, 0x30, 0x06, 0x06, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x80,
+   0x31, 0x60, 0xcc, 0x18, 0x36, 0xc6, 0x00, 0xe0, 0x00, 0x00, 0x88, 0x19,
+   0x01, 0x02, 0x00, 0xc6, 0x00, 0x0c, 0x64, 0x80, 0x01, 0x00, 0x00, 0x01,
+   0x30, 0x06, 0xc6, 0x98, 0x01, 0x06, 0x00, 0x00, 0x04, 0xc0, 0x18, 0x30,
+   0x06, 0x06, 0x18, 0x00, 0x00, 0x10, 0x00, 0x63, 0xc0, 0x98, 0x19, 0x60,
+   0x00, 0x00, 0x80, 0x00, 0x8c, 0x01, 0x63, 0x60, 0x80, 0x01, 0x00, 0x00,
+   0x02, 0x30, 0x06, 0x8c, 0xc1, 0x00, 0x0c, 0x00, 0x00, 0x08, 0xc0, 0x18,
+   0x30, 0x86, 0x03, 0x30, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x31, 0x60,
+   0xcc, 0x18, 0x33, 0xc6, 0x00, 0xe0, 0x00, 0x00, 0x04, 0x0f, 0x02, 0x02,
+   0x00, 0xc6, 0x00, 0x0c, 0xc0, 0xc0, 0x03, 0x04, 0x00, 0x01, 0x30, 0x06,
+   0xc6, 0x88, 0x01, 0x0f, 0x3c, 0x00, 0x04, 0xc0, 0x18, 0x30, 0x06, 0x03,
+   0x3c, 0x60, 0x00, 0x10, 0x00, 0x63, 0xc0, 0x98, 0x18, 0xf0, 0x00, 0x02,
+   0x80, 0x00, 0x8c, 0x01, 0x63, 0x30, 0xc0, 0x03, 0x1e, 0x00, 0x02, 0x30,
+   0x06, 0x8c, 0xc1, 0x00, 0x1e, 0x30, 0x00, 0x08, 0xc0, 0x18, 0x30, 0x06,
+   0x0c, 0x78, 0xe0, 0x03, 0x04, 0x00, 0x00, 0x80, 0x31, 0x60, 0xcc, 0x18,
+   0x31, 0xfc, 0x00, 0xe0, 0x00, 0x7f, 0x04, 0x06, 0x02, 0x0c, 0x00, 0xc6,
+   0x00, 0x0c, 0xc4, 0x20, 0x07, 0x06, 0xf0, 0x1f, 0x30, 0x06, 0xc6, 0xf8,
+   0x83, 0x1c, 0x24, 0xc0, 0x7f, 0xc0, 0x18, 0x30, 0x86, 0x01, 0x72, 0x90,
+   0x00, 0xff, 0x01, 0x63, 0xc0, 0x98, 0x3f, 0xc8, 0x01, 0x03, 0xf8, 0x0f,
+   0x8c, 0x01, 0x63, 0x18, 0x20, 0x07, 0x02, 0xe0, 0x3f, 0x30, 0x06, 0x8c,
+   0xc1, 0x00, 0x39, 0x48, 0x80, 0xff, 0xc0, 0x18, 0x30, 0x26, 0x0c, 0xe4,
+   0x20, 0x01, 0x18, 0x00, 0xf0, 0x87, 0x31, 0x60, 0xcc, 0x18, 0x7f, 0xc0,
+   0x00, 0xe0, 0x00, 0x00, 0x04, 0x0f, 0x02, 0x30, 0x00, 0xc6, 0x00, 0x0c,
+   0xc6, 0x10, 0x06, 0x04, 0x00, 0x01, 0x30, 0x06, 0xc6, 0x80, 0x41, 0x18,
+   0x60, 0x00, 0x04, 0xc0, 0x18, 0x30, 0xc6, 0x08, 0x61, 0x80, 0x00, 0x10,
+   0x00, 0x63, 0xc0, 0x18, 0x18, 0x84, 0x81, 0x02, 0x80, 0x00, 0x8c, 0x01,
+   0x63, 0x8c, 0x10, 0x06, 0x0e, 0x00, 0x02, 0x30, 0x06, 0x8c, 0xc1, 0x80,
+   0x30, 0x08, 0x00, 0x08, 0xc0, 0x18, 0x30, 0x66, 0x0c, 0xc0, 0x80, 0x00,
+   0x60, 0x00, 0x00, 0x80, 0x31, 0x60, 0xcc, 0x18, 0x30, 0xc6, 0x00, 0xe0,
+   0x00, 0x00, 0xc8, 0x19, 0x01, 0xc0, 0x00, 0x44, 0x18, 0x0c, 0x62, 0x18,
+   0x0e, 0x04, 0x00, 0x01, 0x20, 0x62, 0x44, 0x80, 0x61, 0x38, 0x20, 0x00,
+   0x04, 0x80, 0x88, 0x21, 0xe2, 0x0f, 0xe1, 0x60, 0x00, 0x10, 0x00, 0x22,
+   0x86, 0x08, 0x18, 0x86, 0x43, 0x02, 0x80, 0x00, 0x88, 0x18, 0x22, 0xfe,
+   0x18, 0x0e, 0x12, 0x00, 0x02, 0x20, 0x62, 0x88, 0xc0, 0xc0, 0x70, 0x38,
+   0x00, 0x08, 0x80, 0x88, 0x21, 0x62, 0x0c, 0xc2, 0x81, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x11, 0x43, 0x84, 0x08, 0x30, 0x44, 0x00, 0xe0, 0x00, 0x00,
+   0xf0, 0xe0, 0x00, 0x00, 0x03, 0x38, 0x18, 0x1f, 0x3c, 0x3c, 0x3e, 0x04,
+   0x00, 0x01, 0xc0, 0x61, 0x38, 0xc0, 0xf3, 0xf8, 0x10, 0x00, 0x04, 0x00,
+   0x87, 0xc1, 0xe1, 0xcf, 0xe3, 0x83, 0x00, 0x10, 0x00, 0x1c, 0x06, 0x07,
+   0x3c, 0x8f, 0xcf, 0x07, 0x80, 0x00, 0x70, 0x18, 0x1c, 0xfe, 0x3c, 0x3e,
+   0x30, 0x00, 0x02, 0xc0, 0x61, 0x70, 0xf0, 0xe1, 0xf1, 0x49, 0x00, 0x08,
+   0x00, 0x87, 0xc1, 0xc1, 0x87, 0xc7, 0xc7, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x0e, 0x83, 0x03, 0x07, 0x78, 0x3c, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x90, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x81, 0x01, 0x8f,
+   0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x07, 0x00, 0x3c, 0x06, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x1c, 0x70, 0xf0, 0x18, 0x00, 0x00, 0x00, 0xc0, 0x01,
+   0x70, 0xc0, 0xc0, 0x63, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xc0, 0x01, 0x06,
+   0x8f, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0e, 0x18, 0x3c, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x0e, 0x38, 0x60, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x80, 0x08, 0x20, 0x42, 0x06, 0x8e, 0x00, 0x00,
+   0x00, 0x00, 0x22, 0x80, 0x08, 0x1f, 0x38, 0x02, 0x00, 0x00, 0x00, 0x88,
+   0x00, 0x22, 0x88, 0xe0, 0x08, 0x00, 0x00, 0x00, 0x20, 0x02, 0x88, 0x30,
+   0x83, 0x23, 0x00, 0x00, 0x00, 0x00, 0x11, 0x20, 0x82, 0x19, 0x8e, 0x00,
+   0x00, 0x00, 0x00, 0x44, 0x00, 0x11, 0x1e, 0x38, 0x02, 0x00, 0x00, 0x18,
+   0x00, 0x00, 0x88, 0x00, 0x11, 0x44, 0x98, 0x01, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0xc0, 0x18, 0x30, 0xe6, 0x0c, 0x4c, 0x00, 0x00, 0x00, 0x00,
+   0x63, 0xc0, 0x18, 0x0f, 0x30, 0x01, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x63,
+   0x8c, 0xc1, 0x04, 0x00, 0x00, 0x00, 0x30, 0x06, 0x8c, 0x31, 0x06, 0x13,
+   0x00, 0x00, 0x00, 0x80, 0x31, 0x30, 0xc6, 0x18, 0x4c, 0x00, 0x00, 0x00,
+   0x00, 0xc6, 0x80, 0x31, 0x18, 0x30, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x8c, 0x81, 0x31, 0xc6, 0x8c, 0x81, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x06,
+   0xc0, 0x18, 0x30, 0x46, 0x06, 0x3c, 0x00, 0x00, 0x20, 0x00, 0x63, 0xc0,
+   0x18, 0x01, 0xf0, 0x00, 0x00, 0x80, 0x00, 0x8c, 0x01, 0x63, 0x9c, 0xc0,
+   0x03, 0x00, 0x00, 0x02, 0x30, 0x06, 0x8c, 0x01, 0x06, 0x0f, 0x00, 0x00,
+   0x08, 0x80, 0x31, 0x30, 0xc6, 0x00, 0x3c, 0x00, 0x00, 0x20, 0x00, 0xc6,
+   0x80, 0x31, 0x18, 0xf0, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x8c, 0x81,
+   0x31, 0xc6, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x31, 0x23, 0x80, 0x01, 0xc0, 0x18,
+   0x30, 0x06, 0x06, 0x38, 0x00, 0x00, 0x20, 0x00, 0x63, 0xc0, 0x18, 0x07,
+   0xe0, 0x00, 0x00, 0x80, 0x00, 0x8c, 0x01, 0x63, 0xf8, 0x80, 0x03, 0x00,
+   0x00, 0x02, 0x30, 0x06, 0x8c, 0x01, 0x06, 0x0e, 0x00, 0x00, 0x08, 0x80,
+   0x31, 0x30, 0xc6, 0x06, 0x38, 0x00, 0x00, 0x20, 0x00, 0xc6, 0x80, 0x31,
+   0x18, 0xe0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x8c, 0x81, 0x31, 0xc6,
+   0x6c, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x80, 0xe0, 0x41, 0x40, 0x00, 0xc0, 0x18, 0x30, 0x86,
+   0x03, 0x30, 0x00, 0x00, 0x20, 0x00, 0x63, 0xc0, 0x18, 0x19, 0xc0, 0x00,
+   0x00, 0x80, 0x00, 0x8c, 0x01, 0x63, 0xf0, 0x00, 0x03, 0x00, 0x00, 0x02,
+   0x30, 0x06, 0x8c, 0x01, 0x03, 0x0c, 0x00, 0x00, 0x08, 0x80, 0x31, 0x30,
+   0xc6, 0x19, 0x30, 0x00, 0x00, 0x20, 0x00, 0xc6, 0x80, 0x31, 0x18, 0xc0,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x8c, 0x81, 0x31, 0xc6, 0x9c, 0x21,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x80, 0xc0, 0x40, 0x40, 0x00, 0xc0, 0x18, 0x30, 0x06, 0x0c, 0x78,
+   0x80, 0x00, 0x20, 0x00, 0x63, 0xc0, 0x18, 0x30, 0xe0, 0x81, 0x07, 0x80,
+   0x00, 0x8c, 0x01, 0x63, 0xcc, 0x81, 0x07, 0x0c, 0x00, 0x02, 0x30, 0x06,
+   0x8c, 0x81, 0x01, 0x1e, 0x40, 0x00, 0x08, 0x80, 0x31, 0x30, 0xc6, 0x18,
+   0x78, 0xe0, 0x01, 0x20, 0x00, 0xc6, 0x80, 0x31, 0x18, 0xe0, 0x01, 0x03,
+   0x10, 0x00, 0x00, 0x00, 0x8c, 0x81, 0x31, 0xc6, 0x8c, 0x11, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xe0, 0x8f,
+   0xe0, 0x41, 0x80, 0x01, 0xc0, 0x18, 0x30, 0x26, 0x0c, 0xe4, 0xc0, 0x00,
+   0xfe, 0x03, 0x63, 0xc0, 0x18, 0x31, 0x90, 0x83, 0x04, 0xf8, 0x0f, 0x8c,
+   0x01, 0x63, 0x84, 0x41, 0x0e, 0x12, 0xe0, 0x3f, 0x30, 0x06, 0x8c, 0x81,
+   0x00, 0x39, 0x60, 0x80, 0xff, 0x80, 0x31, 0x30, 0xc6, 0x18, 0xe4, 0x20,
+   0x00, 0xfe, 0x03, 0xc6, 0x80, 0x31, 0x18, 0x90, 0x83, 0x04, 0x60, 0x00,
+   0x80, 0x3f, 0x8c, 0x81, 0x31, 0xc6, 0x8c, 0xf1, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x39, 0x23,
+   0x00, 0x06, 0xc0, 0x18, 0x30, 0x66, 0x0c, 0xc2, 0x80, 0x00, 0x20, 0x00,
+   0x63, 0xc0, 0x98, 0x31, 0x08, 0x03, 0x0c, 0x80, 0x00, 0x8c, 0x01, 0x63,
+   0x04, 0x21, 0x0c, 0x10, 0x00, 0x02, 0x30, 0x06, 0x8c, 0x41, 0x84, 0x30,
+   0x50, 0x00, 0x08, 0x80, 0x31, 0x30, 0xc6, 0x18, 0xc6, 0xe0, 0x00, 0x20,
+   0x00, 0xc6, 0x80, 0x31, 0x18, 0x08, 0x83, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x8c, 0x81, 0x31, 0xc6, 0x8c, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1c, 0x00, 0x18,
+   0x80, 0x88, 0x21, 0x62, 0x0c, 0xc3, 0x81, 0x00, 0x20, 0x00, 0x22, 0xcc,
+   0x88, 0x18, 0x0c, 0x07, 0x04, 0x80, 0x00, 0x88, 0x30, 0x22, 0x0c, 0x31,
+   0x1c, 0x0c, 0x00, 0x02, 0x20, 0xc2, 0x88, 0xe0, 0xc7, 0x70, 0x48, 0x00,
+   0x08, 0x00, 0x11, 0x23, 0x82, 0x18, 0xc3, 0x21, 0x01, 0x20, 0x00, 0x44,
+   0x0c, 0x11, 0x18, 0x0c, 0x87, 0x03, 0x00, 0x06, 0x00, 0x00, 0x88, 0x18,
+   0x11, 0x44, 0x88, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x87,
+   0xc1, 0xc1, 0x87, 0xc7, 0x87, 0x00, 0x20, 0x00, 0x1c, 0x0c, 0x07, 0x0f,
+   0x1e, 0x1f, 0x02, 0x80, 0x00, 0x70, 0x30, 0x1c, 0xf8, 0x78, 0x7c, 0x10,
+   0x00, 0x02, 0xc0, 0xc1, 0x70, 0xf0, 0xe7, 0xf1, 0xf9, 0x00, 0x08, 0x00,
+   0x0e, 0xc3, 0x01, 0x87, 0xc7, 0x07, 0x03, 0x20, 0x00, 0x38, 0x0c, 0x0e,
+   0x3e, 0x1e, 0x9f, 0x04, 0x00, 0x18, 0x00, 0x00, 0x70, 0x18, 0x0e, 0x38,
+   0x70, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x30, 0xe0, 0x31, 0x00,
+   0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x82, 0xc7, 0x00, 0x00, 0x00, 0x00,
+   0x0e, 0x80, 0x03, 0x0c, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x70, 0x00, 0x0e,
+   0x18, 0x78, 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x70, 0x60, 0xe0, 0x31,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xe0, 0xc0, 0x81, 0xc1, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x10, 0x01, 0x44, 0xcc, 0xc0, 0x11, 0x00, 0x00, 0x00,
+   0x40, 0x04, 0x10, 0x01, 0x03, 0x47, 0x00, 0x00, 0x00, 0x00, 0x11, 0x40,
+   0x04, 0x0f, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x11, 0x66, 0x70,
+   0x04, 0x00, 0x00, 0x00, 0x20, 0x02, 0x88, 0x98, 0xc1, 0x11, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x40, 0x04, 0x10, 0x21, 0x42, 0xc6, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x18, 0x03, 0xc6, 0x8c, 0x81, 0x09, 0x00, 0x00, 0x00, 0x60, 0x0c,
+   0x18, 0x83, 0x03, 0x26, 0x00, 0x00, 0x00, 0x80, 0x31, 0x60, 0x0c, 0x0c,
+   0x98, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x81, 0x31, 0xc6, 0x60, 0x02, 0x00,
+   0x00, 0x00, 0x30, 0x06, 0x8c, 0x19, 0x83, 0x09, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x60, 0x0c, 0x18, 0x33, 0xe6, 0x4c, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x87, 0x07, 0x60, 0x00, 0x18,
+   0x03, 0xc6, 0x80, 0x81, 0x07, 0x00, 0x00, 0x04, 0x60, 0x0c, 0x18, 0x43,
+   0x03, 0x1e, 0x00, 0x00, 0x10, 0x80, 0x31, 0x60, 0x0c, 0x0c, 0x78, 0x00,
+   0x00, 0x40, 0x00, 0x8c, 0x81, 0x31, 0xc0, 0xe0, 0x01, 0x00, 0x00, 0x01,
+   0x30, 0x06, 0x8c, 0x01, 0x83, 0x07, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60,
+   0x0c, 0x18, 0x33, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0xcc, 0x08, 0x18, 0x00, 0x18, 0x03, 0xc6,
+   0x80, 0x01, 0x07, 0x00, 0x00, 0x04, 0x60, 0x0c, 0x18, 0x63, 0x03, 0x1c,
+   0x00, 0x00, 0x10, 0x80, 0x31, 0x60, 0x0c, 0x0c, 0x70, 0x00, 0x00, 0x40,
+   0x00, 0x8c, 0x81, 0x31, 0xc0, 0xc0, 0x01, 0x00, 0x00, 0x01, 0x30, 0x06,
+   0x8c, 0x01, 0x03, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x60, 0x0c, 0x18,
+   0x33, 0x06, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x78, 0x10, 0x04, 0x00, 0x18, 0x03, 0xc6, 0xc0, 0x00,
+   0x06, 0x00, 0x00, 0x04, 0x60, 0x0c, 0x18, 0x33, 0x03, 0x18, 0x00, 0x00,
+   0x10, 0x80, 0x31, 0x60, 0x0c, 0x0c, 0x60, 0x00, 0x00, 0x40, 0x00, 0x8c,
+   0x81, 0x31, 0x60, 0x80, 0x01, 0x00, 0x00, 0x01, 0x30, 0x06, 0x8c, 0x81,
+   0x01, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x18, 0x33, 0x86,
+   0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x30, 0x10, 0x04, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x0f, 0x00,
+   0x00, 0x04, 0x60, 0x0c, 0x18, 0x13, 0x03, 0x3c, 0x00, 0x00, 0x10, 0x80,
+   0x31, 0x60, 0x0c, 0x0c, 0xf0, 0x00, 0x00, 0x40, 0x00, 0x8c, 0x81, 0x31,
+   0x30, 0xc0, 0x03, 0x00, 0x00, 0x01, 0x30, 0x06, 0x8c, 0xc1, 0x00, 0x0f,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x18, 0x33, 0x06, 0x0c, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x21, 0x78,
+   0x10, 0x18, 0x00, 0x18, 0x03, 0xc6, 0x30, 0x80, 0x1c, 0x10, 0xc0, 0x7f,
+   0x60, 0x0c, 0x18, 0xf3, 0x07, 0x72, 0x60, 0x00, 0xff, 0x81, 0x31, 0x60,
+   0x0c, 0x0c, 0xc8, 0x81, 0x01, 0xfc, 0x07, 0x8c, 0x81, 0x31, 0x10, 0x20,
+   0x07, 0x08, 0xf0, 0x1f, 0x30, 0x06, 0x8c, 0x61, 0x80, 0x1c, 0x3c, 0x00,
+   0x03, 0x00, 0xfc, 0x61, 0x0c, 0x18, 0x33, 0x26, 0x0c, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xce, 0x08, 0x60,
+   0x00, 0x18, 0x03, 0xc6, 0x18, 0x41, 0x18, 0x18, 0x00, 0x04, 0x60, 0x0c,
+   0x18, 0x03, 0x03, 0x61, 0x90, 0x00, 0x10, 0x80, 0x31, 0x60, 0x0c, 0x0c,
+   0x84, 0x41, 0x02, 0x40, 0x00, 0x8c, 0x81, 0x31, 0x88, 0x10, 0x06, 0x0c,
+   0x00, 0x01, 0x30, 0x06, 0x8c, 0x31, 0x42, 0x18, 0x04, 0x00, 0x0c, 0x00,
+   0x00, 0x60, 0x0c, 0x18, 0x33, 0x66, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x07, 0x80, 0x01, 0x10,
+   0x31, 0x44, 0xfc, 0x61, 0x38, 0x10, 0x00, 0x04, 0x40, 0x84, 0x11, 0x01,
+   0x03, 0xe1, 0x80, 0x01, 0x10, 0x00, 0x11, 0x46, 0x04, 0x0c, 0x86, 0x03,
+   0x02, 0x40, 0x00, 0x88, 0x18, 0x11, 0xfc, 0x18, 0x0e, 0x0a, 0x00, 0x01,
+   0x20, 0x62, 0x88, 0xf8, 0x63, 0x38, 0x1c, 0x00, 0x30, 0x00, 0x00, 0x40,
+   0xc4, 0x10, 0x21, 0x62, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x30, 0x38,
+   0xfc, 0xf1, 0xf8, 0x10, 0x00, 0x04, 0x80, 0x83, 0xe1, 0x80, 0xc7, 0xe3,
+   0x83, 0x00, 0x10, 0x00, 0x0e, 0x86, 0x03, 0x1f, 0x8f, 0x8f, 0x01, 0x40,
+   0x00, 0x70, 0x18, 0x0e, 0xfe, 0x3c, 0x3e, 0x09, 0x00, 0x01, 0xc0, 0x61,
+   0x70, 0xf8, 0xf3, 0xf8, 0x24, 0x00, 0xc0, 0x00, 0x00, 0x80, 0xc3, 0xe0,
+   0xc0, 0xc1, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xe0, 0xc0, 0x80, 0xc7,
+   0x00, 0x00, 0x00, 0x00, 0x0e, 0x80, 0x03, 0x06, 0x1e, 0x03, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x0e, 0x30, 0x78, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0x00, 0x1c, 0x38, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x40, 0x04, 0x10, 0x31, 0x03, 0x47, 0x00, 0x00,
+   0x00, 0x00, 0x11, 0x40, 0x04, 0x19, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x88,
+   0x00, 0x11, 0x3c, 0x70, 0x04, 0x00, 0x00, 0x30, 0x00, 0x00, 0x88, 0x00,
+   0x22, 0x44, 0xf0, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x60, 0x0c, 0x18, 0x33, 0x06, 0x26, 0x00, 0x00, 0x00, 0x80,
+   0x31, 0x60, 0x8c, 0x33, 0x98, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x81, 0x31,
+   0x30, 0x60, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x8c, 0x01, 0x63, 0xc6,
+   0xc0, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x06,
+   0x60, 0x0c, 0x18, 0x03, 0x06, 0x1e, 0x00, 0x00, 0x10, 0x80, 0x31, 0x60,
+   0x0c, 0x19, 0x78, 0x00, 0x00, 0x40, 0x00, 0x8c, 0x81, 0x31, 0x30, 0xe0,
+   0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x8c, 0x01, 0x63, 0xc6, 0xc0, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x23, 0x80, 0x01, 0x60, 0x0c,
+   0x18, 0x03, 0x06, 0x1c, 0x00, 0x00, 0x10, 0x80, 0x31, 0x60, 0x0c, 0x18,
+   0x70, 0x00, 0x00, 0x40, 0x00, 0x8c, 0x81, 0x31, 0x30, 0xc0, 0x01, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x63, 0xc6, 0xc0, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0xe0, 0x41, 0x40, 0x00, 0x60, 0x0c, 0x18, 0x03,
+   0x03, 0x18, 0x00, 0x00, 0x10, 0x80, 0x31, 0x60, 0x0c, 0x0e, 0x60, 0x00,
+   0x00, 0x40, 0x00, 0x8c, 0x81, 0x31, 0x30, 0x80, 0x01, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x8c, 0x01, 0x63, 0xc6, 0xc0, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x60, 0x0c, 0x18, 0x83, 0x01, 0x3c,
+   0x40, 0x00, 0x10, 0x80, 0x31, 0x60, 0x0c, 0x30, 0xf0, 0xc0, 0x03, 0x40,
+   0x00, 0x8c, 0x81, 0x31, 0x30, 0xc0, 0x03, 0x0f, 0x20, 0x00, 0x00, 0x00,
+   0x8c, 0x01, 0x63, 0xc6, 0xc0, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x87,
+   0xe0, 0x41, 0x80, 0x01, 0x60, 0x0c, 0x18, 0xc3, 0x00, 0x72, 0x60, 0x00,
+   0xff, 0x81, 0x31, 0x60, 0x8c, 0x30, 0xc8, 0x41, 0x02, 0xfc, 0x07, 0x8c,
+   0x81, 0x31, 0x30, 0x20, 0x07, 0x01, 0xc0, 0x00, 0x00, 0x7f, 0x8c, 0x01,
+   0x63, 0xc6, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x23,
+   0x00, 0x06, 0x60, 0x0c, 0x18, 0x63, 0x04, 0x61, 0x40, 0x00, 0x10, 0x80,
+   0x31, 0x60, 0x8c, 0x31, 0x84, 0x01, 0x06, 0x40, 0x00, 0x8c, 0x81, 0x31,
+   0x30, 0x10, 0x06, 0x07, 0x00, 0x03, 0x00, 0x00, 0x8c, 0x01, 0x63, 0xc6,
+   0xc0, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1c, 0x00, 0x18,
+   0x40, 0x84, 0x11, 0xf1, 0x87, 0xe1, 0x40, 0x00, 0x10, 0x00, 0x11, 0x46,
+   0x84, 0x31, 0x86, 0x03, 0x02, 0x40, 0x00, 0x88, 0x18, 0x11, 0x30, 0x18,
+   0x0e, 0x09, 0x00, 0x0c, 0x00, 0x00, 0x88, 0x18, 0x22, 0x44, 0xc0, 0xf0,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x80, 0x83,
+   0xe1, 0xf0, 0xc7, 0xe3, 0x43, 0x00, 0x10, 0x00, 0x0e, 0x86, 0x03, 0x1f,
+   0x8f, 0x0f, 0x01, 0x40, 0x00, 0x70, 0x18, 0x0e, 0x7c, 0x3c, 0x3e, 0x18,
+   0x00, 0x30, 0x00, 0x00, 0x70, 0x18, 0x1c, 0x38, 0xf0, 0xf1, 0x07, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x70, 0xe0, 0x80, 0x03,
+   0x03, 0x00, 0x00, 0x80, 0x03, 0xf8, 0xe3, 0x31, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0xf0, 0x07, 0x80, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x07,
+   0x8f, 0x01, 0x00, 0x00, 0x00, 0x38, 0x80, 0x3f, 0x00, 0x3c, 0x06, 0x00,
+   0x00, 0x00, 0xe0, 0x00, 0x38, 0x78, 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x01,
+   0x70, 0xf8, 0xe3, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x88, 0x10, 0x41, 0xc4, 0x0c, 0x00,
+   0x30, 0x40, 0x04, 0xf8, 0xc3, 0x11, 0x00, 0x00, 0x00, 0x80, 0x08, 0xf0,
+   0xc7, 0x07, 0x47, 0x00, 0x00, 0x00, 0x00, 0x22, 0x80, 0x08, 0x8e, 0x00,
+   0x00, 0x00, 0x00, 0x44, 0x80, 0x3f, 0x3e, 0x38, 0x02, 0x00, 0x00, 0x00,
+   0x10, 0x01, 0x44, 0x70, 0x04, 0x00, 0x00, 0x00, 0x20, 0x02, 0xc8, 0xf8,
+   0xc3, 0x11, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x06, 0x8c, 0x19, 0x63, 0xcc, 0x18, 0x00, 0x0c, 0x60,
+   0x0c, 0x08, 0x81, 0x09, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x10, 0xc2, 0x03,
+   0x26, 0x00, 0x00, 0x00, 0x00, 0x63, 0xc0, 0x18, 0x4c, 0x00, 0x00, 0x00,
+   0x00, 0xc6, 0x80, 0x10, 0x1e, 0x30, 0x01, 0x00, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0x60, 0x02, 0x00, 0x00, 0x00, 0x30, 0x06, 0x8c, 0x09, 0x81, 0x09,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x06, 0x8c, 0x19, 0x63, 0xcc, 0x18, 0x00, 0x03, 0x60, 0x0c, 0x88,
+   0x80, 0x07, 0x00, 0x00, 0x08, 0xc0, 0x18, 0x10, 0x41, 0x00, 0x1e, 0x00,
+   0x00, 0x20, 0x00, 0x63, 0xc0, 0x09, 0x3c, 0x00, 0x00, 0x40, 0x00, 0xc6,
+   0x80, 0x08, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x01, 0x18, 0x03, 0x4e, 0xe0,
+   0x01, 0x00, 0x00, 0x01, 0x30, 0x06, 0x8c, 0x09, 0x81, 0x07, 0x00, 0x00,
+   0x18, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06,
+   0x8c, 0x19, 0x63, 0x0c, 0x18, 0xc0, 0x00, 0x60, 0x0c, 0x80, 0x00, 0x07,
+   0x00, 0x00, 0x08, 0xc0, 0x18, 0x00, 0xc1, 0x01, 0x1c, 0x00, 0x00, 0x20,
+   0x00, 0x63, 0x80, 0x0f, 0x38, 0x00, 0x00, 0x40, 0x00, 0xc6, 0x00, 0x08,
+   0x0e, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x18, 0x03, 0x7c, 0xc0, 0x01, 0x00,
+   0x00, 0x01, 0x30, 0x06, 0x8c, 0x81, 0x00, 0x07, 0x00, 0x00, 0x06, 0x00,
+   0x31, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x8c, 0x19,
+   0x63, 0x0c, 0x0c, 0x20, 0x00, 0x60, 0x0c, 0x40, 0x00, 0x06, 0x00, 0x00,
+   0x08, 0xc0, 0x18, 0x80, 0x40, 0x06, 0x18, 0x00, 0x00, 0x20, 0x00, 0x63,
+   0x00, 0x0f, 0x30, 0x00, 0x00, 0x40, 0x00, 0xc6, 0x00, 0x04, 0x32, 0xc0,
+   0x00, 0x00, 0x00, 0x01, 0x18, 0x03, 0x78, 0x80, 0x01, 0x00, 0x00, 0x01,
+   0x30, 0x06, 0x8c, 0x41, 0x00, 0x06, 0x00, 0x00, 0x01, 0x80, 0xe0, 0x41,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x8c, 0xf1, 0xc3, 0x0f,
+   0x06, 0x20, 0x00, 0x60, 0x0c, 0x40, 0x00, 0x0f, 0x10, 0x00, 0x08, 0xc0,
+   0x18, 0x80, 0x00, 0x0c, 0x3c, 0xc0, 0x00, 0x20, 0x00, 0x63, 0xc0, 0x1c,
+   0x78, 0xc0, 0x00, 0x40, 0x00, 0xc6, 0x00, 0x04, 0x60, 0xe0, 0x01, 0x04,
+   0x00, 0x01, 0x18, 0x03, 0xe6, 0xc0, 0x03, 0x0f, 0x00, 0x01, 0x30, 0x06,
+   0xf8, 0x41, 0x00, 0x0f, 0x18, 0x00, 0x01, 0x80, 0xc0, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0x30, 0x06, 0x8c, 0x01, 0x03, 0x0c, 0x02, 0xc0,
+   0x00, 0x60, 0x0c, 0x60, 0x80, 0x1c, 0x18, 0x80, 0xff, 0xc0, 0x18, 0xc0,
+   0x40, 0x0c, 0x72, 0x20, 0x01, 0xfe, 0x03, 0x63, 0x40, 0x18, 0xe4, 0x20,
+   0x01, 0xfc, 0x07, 0xc6, 0x00, 0x06, 0x62, 0x90, 0x03, 0x06, 0xf0, 0x1f,
+   0x18, 0x03, 0xc2, 0x20, 0x07, 0x01, 0xf0, 0x1f, 0x30, 0x06, 0x80, 0x61,
+   0x80, 0x1c, 0x24, 0x00, 0x06, 0x80, 0xe0, 0x41, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x06, 0x8c, 0x19, 0x63, 0x0c, 0x11, 0x00, 0x03, 0x60,
+   0x0c, 0x60, 0x40, 0x18, 0x10, 0x00, 0x08, 0xc0, 0x18, 0xc0, 0x60, 0x0c,
+   0x61, 0x00, 0x03, 0x20, 0x00, 0x63, 0x40, 0x10, 0xc2, 0x00, 0x01, 0x40,
+   0x00, 0xc6, 0x00, 0x06, 0x63, 0x08, 0x03, 0x05, 0x00, 0x01, 0x18, 0x03,
+   0x82, 0x10, 0x06, 0x07, 0x00, 0x01, 0x30, 0x06, 0x8c, 0x61, 0x40, 0x18,
+   0x04, 0x00, 0x18, 0x00, 0x39, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x62, 0x88, 0x10, 0x41, 0x84, 0x1f, 0x00, 0x0c, 0x40, 0xc4, 0x60,
+   0x60, 0x38, 0x10, 0x00, 0x08, 0x80, 0x88, 0xc1, 0x20, 0x86, 0xe1, 0x00,
+   0x01, 0x20, 0x00, 0x22, 0x46, 0x10, 0xc3, 0xc1, 0x00, 0x40, 0x00, 0x44,
+   0x0c, 0x06, 0x31, 0x0c, 0x87, 0x04, 0x00, 0x01, 0x10, 0x31, 0x82, 0x18,
+   0x0e, 0x09, 0x00, 0x01, 0x20, 0x62, 0x88, 0x60, 0x60, 0x38, 0x3c, 0x00,
+   0x60, 0x00, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x61,
+   0x70, 0xf0, 0xc0, 0xc3, 0x1f, 0x00, 0x30, 0x80, 0xc3, 0x60, 0xf0, 0xf8,
+   0x10, 0x00, 0x08, 0x00, 0x87, 0xc1, 0xc0, 0xc3, 0xe3, 0x83, 0x00, 0x20,
+   0x00, 0x1c, 0x86, 0x8f, 0xc7, 0x07, 0x01, 0x40, 0x00, 0x38, 0x0c, 0x06,
+   0x1e, 0x1e, 0x9f, 0x0f, 0x00, 0x01, 0xe0, 0x30, 0x7c, 0x3c, 0x3e, 0x18,
+   0x00, 0x01, 0xc0, 0x61, 0x78, 0x60, 0xf0, 0xf8, 0x24, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x70,
+   0x60, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x30, 0xf0, 0x18, 0x00, 0x00,
+   0x00, 0x80, 0x03, 0xe0, 0x80, 0xc1, 0x63, 0x00, 0x00, 0x00, 0x00, 0x0e,
+   0x80, 0x03, 0x07, 0x8f, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0c, 0x0c,
+   0x78, 0x0c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x30, 0xe0, 0x31, 0x00,
+   0x00, 0x00, 0x80, 0x03, 0xe0, 0x80, 0x81, 0xc7, 0x00, 0x00, 0x00, 0x00,
+   0x0e, 0x80, 0x83, 0x3f, 0x1e, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x70,
+   0xe0, 0xc0, 0x00, 0xe0, 0x00, 0x00, 0x10, 0x01, 0x44, 0x88, 0x90, 0x01,
+   0x00, 0x06, 0x10, 0x01, 0x44, 0xcc, 0xe0, 0x08, 0x00, 0x00, 0x00, 0x40,
+   0x04, 0x10, 0x61, 0x86, 0x23, 0x00, 0x00, 0x00, 0x00, 0x11, 0x40, 0x84,
+   0x08, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x0f, 0x33, 0x70, 0x04,
+   0x00, 0x00, 0x00, 0x10, 0x01, 0x44, 0xcc, 0xc0, 0x11, 0x00, 0x00, 0x00,
+   0x40, 0x04, 0x10, 0xe1, 0x01, 0x47, 0x00, 0x00, 0x00, 0x00, 0x11, 0x40,
+   0x84, 0x3f, 0x1c, 0x01, 0x00, 0x00, 0x0c, 0x20, 0x02, 0x88, 0x10, 0x21,
+   0x03, 0xe0, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x8c, 0x39, 0x03, 0x80, 0x01,
+   0x18, 0x03, 0xc6, 0x8c, 0xc1, 0x04, 0x00, 0x00, 0x02, 0x60, 0x0c, 0x18,
+   0x33, 0x06, 0x13, 0x00, 0x00, 0x00, 0x80, 0x31, 0x60, 0xcc, 0x18, 0x4c,
+   0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x0c, 0x63, 0x60, 0x02, 0x00, 0x00,
+   0x00, 0x18, 0x03, 0xc6, 0x8c, 0x81, 0x09, 0x00, 0x00, 0x00, 0x60, 0x0c,
+   0x18, 0x83, 0x01, 0x26, 0x00, 0x00, 0x00, 0x80, 0x31, 0x60, 0x8c, 0x10,
+   0x98, 0x00, 0x00, 0x00, 0x03, 0x30, 0x06, 0x8c, 0x19, 0x23, 0x06, 0xe0,
+   0x00, 0x00, 0x18, 0x03, 0xc6, 0x8c, 0x91, 0x01, 0x60, 0x00, 0x18, 0x03,
+   0xc6, 0x80, 0xc1, 0x03, 0x00, 0x00, 0x02, 0x60, 0x0c, 0x18, 0x33, 0x00,
+   0x0f, 0x00, 0x00, 0x10, 0x80, 0x31, 0x60, 0xcc, 0x09, 0x3c, 0x00, 0x00,
+   0x40, 0x00, 0xc6, 0x00, 0x0c, 0x60, 0xe0, 0x01, 0x00, 0x00, 0x01, 0x18,
+   0x03, 0xc6, 0x80, 0x81, 0x07, 0x00, 0x00, 0x04, 0x60, 0x0c, 0x18, 0x83,
+   0x01, 0x1e, 0x00, 0x00, 0x10, 0x80, 0x31, 0x60, 0x8c, 0x08, 0x78, 0x00,
+   0x00, 0xc0, 0x00, 0x30, 0x06, 0x8c, 0x19, 0x23, 0x06, 0xe0, 0x00, 0x00,
+   0x18, 0x03, 0xc6, 0x8c, 0x81, 0x01, 0x18, 0x00, 0x18, 0x03, 0xc6, 0x80,
+   0x81, 0x03, 0x00, 0x00, 0x02, 0x60, 0x0c, 0x18, 0xb3, 0x01, 0x0e, 0x00,
+   0x00, 0x10, 0x80, 0x31, 0x60, 0x8c, 0x0f, 0x38, 0x00, 0x00, 0x40, 0x00,
+   0xc6, 0x00, 0x0c, 0x60, 0xc0, 0x01, 0x00, 0x00, 0x01, 0x18, 0x03, 0xc6,
+   0x80, 0x01, 0x07, 0x00, 0x00, 0x04, 0x60, 0x0c, 0x18, 0x83, 0x01, 0x1c,
+   0x00, 0x00, 0x10, 0x80, 0x31, 0x60, 0x0c, 0x08, 0x70, 0x00, 0x00, 0x30,
+   0x00, 0x30, 0x06, 0x8c, 0x19, 0x03, 0x06, 0xe0, 0x00, 0x00, 0x18, 0x03,
+   0xc6, 0x8c, 0xe1, 0x00, 0x04, 0x00, 0x18, 0x03, 0xc6, 0xc0, 0x00, 0x03,
+   0x00, 0x00, 0x02, 0x60, 0x0c, 0x18, 0x73, 0x06, 0x0c, 0x00, 0x00, 0x10,
+   0x80, 0x31, 0x60, 0x0c, 0x0f, 0x30, 0x00, 0x00, 0x40, 0x00, 0xc6, 0x00,
+   0x0c, 0x30, 0x80, 0x01, 0x00, 0x00, 0x01, 0x18, 0x03, 0xc6, 0xc0, 0x00,
+   0x06, 0x00, 0x00, 0x04, 0x60, 0x0c, 0x18, 0x83, 0x01, 0x18, 0x00, 0x00,
+   0x10, 0x80, 0x31, 0x60, 0x0c, 0x04, 0x60, 0x00, 0x00, 0x08, 0x00, 0x30,
+   0x06, 0x8c, 0x19, 0x03, 0x03, 0xe0, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x8c,
+   0x01, 0x03, 0x04, 0x00, 0x18, 0x03, 0xc6, 0x60, 0x80, 0x07, 0x00, 0x00,
+   0x02, 0x60, 0x0c, 0x18, 0x33, 0x06, 0x1e, 0x00, 0x00, 0x10, 0x80, 0x31,
+   0x60, 0xcc, 0x1c, 0x78, 0x00, 0x00, 0x40, 0x00, 0xc6, 0x00, 0x0c, 0x18,
+   0xc0, 0x03, 0x00, 0x00, 0x01, 0x18, 0x03, 0xc6, 0x60, 0x00, 0x0f, 0x00,
+   0x00, 0x04, 0x60, 0x0c, 0x18, 0x83, 0x01, 0x3c, 0x00, 0x00, 0x10, 0x80,
+   0x31, 0xc0, 0x0f, 0x04, 0xf0, 0x00, 0x00, 0x08, 0x00, 0x30, 0x06, 0x8c,
+   0x19, 0x83, 0x01, 0xe0, 0x00, 0x7f, 0x18, 0x03, 0xc6, 0x8c, 0x09, 0x03,
+   0x18, 0x00, 0x18, 0x03, 0xc6, 0x30, 0x40, 0x0e, 0x08, 0xe0, 0x3f, 0x60,
+   0x0c, 0x18, 0x33, 0x06, 0x39, 0x30, 0x00, 0xff, 0x81, 0x31, 0x60, 0x4c,
+   0x18, 0xe4, 0x80, 0x01, 0xfc, 0x07, 0xc6, 0x00, 0x0c, 0x08, 0x20, 0x07,
+   0x08, 0xf0, 0x1f, 0x18, 0x03, 0xc6, 0x30, 0x80, 0x1c, 0x3c, 0xc0, 0x7f,
+   0x60, 0x0c, 0x18, 0x83, 0x01, 0x72, 0x60, 0x00, 0xff, 0x81, 0x31, 0x00,
+   0x0c, 0x06, 0xc8, 0xc1, 0x07, 0x30, 0x00, 0x30, 0x06, 0x8c, 0x19, 0x83,
+   0x00, 0xe0, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x8c, 0x19, 0x03, 0x60, 0x00,
+   0x18, 0x03, 0xc6, 0x18, 0x21, 0x0c, 0x0c, 0x00, 0x02, 0x60, 0x0c, 0x18,
+   0x33, 0x86, 0x30, 0x48, 0x00, 0x10, 0x80, 0x31, 0x60, 0x4c, 0x10, 0xc2,
+   0x40, 0x02, 0x40, 0x00, 0xc6, 0x00, 0x0c, 0x44, 0x10, 0x06, 0x0c, 0x00,
+   0x01, 0x18, 0x03, 0xc6, 0x18, 0x41, 0x18, 0x04, 0x00, 0x04, 0x60, 0x0c,
+   0x18, 0x83, 0x01, 0x61, 0x90, 0x00, 0x10, 0x80, 0x31, 0x60, 0x0c, 0x06,
+   0x84, 0x41, 0x02, 0xc0, 0x00, 0x30, 0x06, 0x8c, 0x19, 0x43, 0x04, 0xe0,
+   0x00, 0x00, 0x10, 0x31, 0x44, 0x88, 0x18, 0x03, 0x80, 0x01, 0x10, 0x31,
+   0x44, 0xfc, 0x31, 0x1c, 0x08, 0x00, 0x02, 0x40, 0xc4, 0x10, 0x21, 0xc6,
+   0x70, 0xc0, 0x00, 0x10, 0x00, 0x11, 0x43, 0xc4, 0x10, 0xc3, 0x01, 0x02,
+   0x40, 0x00, 0x44, 0x0c, 0x0c, 0x7e, 0x18, 0x0e, 0x0a, 0x00, 0x01, 0x10,
+   0x61, 0x44, 0xfc, 0x61, 0x38, 0x1c, 0x00, 0x04, 0x40, 0xc4, 0x10, 0x81,
+   0x81, 0xe1, 0x10, 0x00, 0x10, 0x00, 0x11, 0x46, 0x04, 0x06, 0x86, 0x03,
+   0x01, 0x00, 0x03, 0x20, 0x62, 0x88, 0x10, 0xe1, 0x07, 0xe0, 0x00, 0x00,
+   0xe0, 0x30, 0x38, 0x70, 0xf0, 0x01, 0x00, 0x06, 0xe0, 0x30, 0x38, 0xfc,
+   0x79, 0x7c, 0x08, 0x00, 0x02, 0x80, 0xc3, 0xe0, 0xc0, 0xe1, 0xf1, 0x41,
+   0x00, 0x10, 0x00, 0x0e, 0x83, 0x83, 0x8f, 0xc7, 0x87, 0x01, 0x40, 0x00,
+   0x38, 0x0c, 0x1f, 0x7f, 0x3c, 0x3e, 0x09, 0x00, 0x01, 0xe0, 0x60, 0x38,
+   0xfc, 0xf1, 0xf8, 0x24, 0x00, 0x04, 0x80, 0xc3, 0xe0, 0xe0, 0xc7, 0xe3,
+   0x73, 0x00, 0x10, 0x00, 0x0e, 0xc6, 0x03, 0x06, 0x8f, 0x0f, 0x01, 0x00,
+   0x0c, 0xc0, 0x61, 0x70, 0xe0, 0xe0, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt5.xbm b/src/axiom-website/hyperdoc/bitmaps/opt5.xbm
new file mode 100644
index 0000000..e2d92f6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt5.xbm
@@ -0,0 +1,245 @@
+#define opt5_width 522
+#define opt5_height 44
+static char opt5_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xfc,
+   0x40, 0x78, 0x1c, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x70, 0xc0, 0x41, 0xf0,
+   0x38, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x38, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x60, 0x20, 0xf0, 0x38, 0x00, 0x00, 0x00, 0x40, 0x78, 0x1c, 0x00, 0x00,
+   0x00, 0xc0, 0x01, 0x70, 0x20, 0x78, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x78,
+   0x1c, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x0e,
+   0xc0, 0x81, 0xe0, 0x71, 0x00, 0xfc, 0x20, 0x70, 0x04, 0x00, 0x00, 0x00,
+   0x20, 0x02, 0x88, 0x30, 0x83, 0xe0, 0x08, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x08, 0x00, 0x00, 0x00, 0x40, 0x04, 0x98, 0x41, 0xe0, 0x08, 0x00, 0x00,
+   0x00, 0x20, 0x70, 0x04, 0x00, 0x00, 0x00, 0x20, 0x02, 0xcc, 0x40, 0x70,
+   0x04, 0x00, 0x00, 0x00, 0x10, 0x70, 0x04, 0x00, 0x00, 0x00, 0x98, 0x81,
+   0x23, 0x00, 0x00, 0x00, 0x00, 0x11, 0x30, 0x03, 0xc1, 0x11, 0x00, 0xfc,
+   0x20, 0x60, 0x02, 0x00, 0x00, 0x00, 0x30, 0x06, 0x8c, 0x31, 0x86, 0xc0,
+   0x04, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x60, 0x0c,
+   0x18, 0x43, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x20, 0x60, 0x02, 0x00, 0x00,
+   0x00, 0x30, 0x06, 0x8c, 0x41, 0x60, 0x02, 0x00, 0x00, 0x00, 0x10, 0x60,
+   0x02, 0x00, 0x00, 0x00, 0x18, 0x03, 0x13, 0x00, 0x00, 0x00, 0x80, 0x31,
+   0x30, 0x06, 0x81, 0x09, 0x00, 0xfc, 0x20, 0xe0, 0x01, 0x00, 0x00, 0x00,
+   0x30, 0x06, 0x8c, 0x01, 0x86, 0xc0, 0x03, 0x00, 0x00, 0x02, 0x40, 0xc0,
+   0x03, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x18, 0x43, 0xc0, 0x03, 0x00, 0x00,
+   0x02, 0x20, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x30, 0x06, 0x80, 0x41, 0xe0,
+   0x01, 0x00, 0x00, 0x01, 0x10, 0xe0, 0x01, 0x00, 0x00, 0x01, 0x00, 0x03,
+   0x0f, 0x00, 0x00, 0x00, 0x80, 0x31, 0x00, 0x06, 0x81, 0x07, 0x00, 0xfc,
+   0x10, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x30, 0x06, 0x8c, 0x01, 0x06, 0x81,
+   0x03, 0x00, 0x00, 0x02, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x60, 0x0c,
+   0x00, 0x83, 0x80, 0x03, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00, 0x00,
+   0x00, 0x30, 0x06, 0x80, 0x81, 0xc0, 0x01, 0x00, 0x00, 0x01, 0x08, 0xc0,
+   0x01, 0x00, 0x00, 0x01, 0x00, 0x03, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x31,
+   0x00, 0x06, 0x02, 0x07, 0x00, 0xfc, 0x10, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x30, 0x06, 0x8c, 0x01, 0x03, 0x01, 0x03, 0x00, 0x00, 0x02, 0x20, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x80, 0x81, 0x00, 0x03, 0x00, 0x00,
+   0x02, 0x10, 0x80, 0x01, 0x00, 0x00, 0x00, 0x30, 0x06, 0xc0, 0x80, 0x80,
+   0x01, 0x00, 0x00, 0x01, 0x08, 0x80, 0x01, 0x00, 0x00, 0x01, 0x80, 0x01,
+   0x0c, 0x00, 0x00, 0x00, 0x80, 0x31, 0x00, 0x03, 0x02, 0x06, 0x00, 0xfc,
+   0x10, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x8c, 0x81, 0x01, 0x81,
+   0x07, 0x00, 0x00, 0x02, 0x20, 0x80, 0x07, 0x00, 0x00, 0x00, 0x60, 0x0c,
+   0xc0, 0x80, 0x80, 0x07, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x03, 0x00, 0x00,
+   0x00, 0x30, 0x06, 0x60, 0x80, 0xc0, 0x03, 0x00, 0x00, 0x01, 0x08, 0xc0,
+   0x03, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x31,
+   0x80, 0x01, 0x02, 0x0f, 0x00, 0xfc, 0x10, 0x20, 0x07, 0x08, 0xc0, 0x1f,
+   0x30, 0x06, 0x8c, 0xc1, 0x00, 0x41, 0x0e, 0x08, 0xe0, 0x3f, 0x20, 0x40,
+   0x0e, 0x0c, 0xc0, 0x1f, 0x60, 0x0c, 0x40, 0x80, 0x40, 0x0e, 0x1c, 0xe0,
+   0x3f, 0x10, 0x20, 0x07, 0x0c, 0xc0, 0x1f, 0x30, 0x06, 0x30, 0x80, 0x20,
+   0x07, 0x06, 0xf0, 0x1f, 0x08, 0x20, 0x07, 0x08, 0xf0, 0x0f, 0x60, 0x00,
+   0x39, 0x30, 0x00, 0x7f, 0x80, 0x31, 0xc0, 0x00, 0x82, 0x1c, 0x20, 0xfc,
+   0x10, 0x10, 0x06, 0x0c, 0x00, 0x00, 0x30, 0x06, 0x8c, 0x61, 0x04, 0x61,
+   0x0c, 0x0c, 0x00, 0x02, 0x20, 0x20, 0x0c, 0x12, 0x00, 0x00, 0x60, 0x0c,
+   0x20, 0x82, 0x20, 0x0c, 0x32, 0x00, 0x02, 0x10, 0x10, 0x06, 0x12, 0x00,
+   0x00, 0x30, 0x06, 0x18, 0x81, 0x10, 0x06, 0x09, 0x00, 0x01, 0x08, 0x10,
+   0x06, 0x0c, 0x00, 0x01, 0x30, 0x82, 0x30, 0x48, 0x00, 0x00, 0x80, 0x31,
+   0x60, 0x04, 0x82, 0x18, 0x30, 0xfc, 0x10, 0x18, 0x0e, 0x08, 0x00, 0x00,
+   0x20, 0xc2, 0x88, 0xf0, 0x07, 0x31, 0x1c, 0x08, 0x00, 0x02, 0x00, 0x30,
+   0x1c, 0x30, 0x00, 0x00, 0x60, 0x84, 0xf0, 0x83, 0x30, 0x1c, 0x30, 0x00,
+   0x02, 0x10, 0x18, 0x0e, 0x10, 0x00, 0x00, 0x20, 0xc2, 0xfc, 0x81, 0x18,
+   0x0e, 0x08, 0x00, 0x01, 0x08, 0x18, 0x0e, 0x0a, 0x00, 0x01, 0xf8, 0xc3,
+   0x70, 0x40, 0x00, 0x00, 0x00, 0x11, 0xf3, 0x07, 0x42, 0x38, 0x28, 0xfc,
+   0x20, 0x3c, 0x1e, 0x08, 0x00, 0x00, 0xc0, 0xc1, 0x70, 0xf0, 0x87, 0x78,
+   0x3c, 0x08, 0x00, 0x02, 0x40, 0x78, 0x3c, 0x18, 0x00, 0x00, 0x80, 0xc3,
+   0xf8, 0x43, 0x78, 0x3c, 0x18, 0x00, 0x02, 0x20, 0x3c, 0x1e, 0x0c, 0x00,
+   0x00, 0xc0, 0xc1, 0xfc, 0x41, 0x3c, 0x1e, 0x06, 0x00, 0x01, 0x18, 0x3c,
+   0x1e, 0x09, 0x00, 0x01, 0xf8, 0xe3, 0xf1, 0x30, 0x00, 0x00, 0x00, 0x0e,
+   0xf3, 0x07, 0xf1, 0xf8, 0x24, 0xfc, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x02, 0x40, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x0c, 0x00,
+   0x02, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0x1f, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7c, 0xfc,
+   0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x26, 0x00, 0x00, 0x20, 0x00, 0x00, 0x12, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x09, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x20, 0xfc, 0x40, 0x00, 0x00, 0x1c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1e, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x70, 0xfc,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3c, 0x0e,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x08, 0x1e, 0x07, 0x00, 0x00, 0x00,
+   0x10, 0x1c, 0x00, 0x07, 0x10, 0x00, 0x00, 0xc0, 0xe3, 0x00, 0x10, 0x3c,
+   0x0e, 0x00, 0x00, 0x00, 0x10, 0x38, 0x00, 0x0e, 0x20, 0x00, 0x00, 0x00,
+   0x07, 0x8f, 0x03, 0x00, 0x00, 0x00, 0x3c, 0x0e, 0x80, 0xc0, 0xe3, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x38, 0x02, 0x00, 0x00, 0x00, 0x10, 0x01, 0x66,
+   0x10, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x08, 0x22, 0x80, 0x0c, 0x18, 0x00,
+   0x00, 0x80, 0x23, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x00, 0x08, 0x44,
+   0x00, 0x11, 0x30, 0x00, 0x00, 0xc0, 0x0c, 0x8e, 0x00, 0x00, 0x00, 0x00,
+   0x38, 0x02, 0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x30, 0x01,
+   0x00, 0x00, 0x00, 0x18, 0x03, 0xc6, 0x10, 0x98, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x63, 0xc0, 0x18, 0x1c, 0x00, 0x00, 0x00, 0x13, 0x00, 0x20, 0x30,
+   0x01, 0x00, 0x00, 0x00, 0x08, 0xc6, 0x80, 0x31, 0x38, 0x00, 0x00, 0xc0,
+   0x18, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x01, 0x13, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0xc0,
+   0x10, 0x78, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x63, 0xc0, 0x18, 0x1a, 0x00,
+   0x00, 0x00, 0x0f, 0x00, 0x20, 0xf0, 0x00, 0x00, 0x80, 0x00, 0x08, 0xc6,
+   0x80, 0x31, 0x34, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x00, 0x00, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x03, 0xc0, 0x20, 0x70, 0x00, 0x00, 0x40, 0x00,
+   0x04, 0x63, 0xc0, 0x18, 0x1b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x80, 0x00, 0x04, 0xc6, 0x80, 0x31, 0x36, 0x00, 0x00, 0x00,
+   0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x0e, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x60,
+   0x20, 0x60, 0x00, 0x00, 0x40, 0x00, 0x04, 0x63, 0xc0, 0x98, 0x19, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x40, 0xc0, 0x00, 0x00, 0x80, 0x00, 0x04, 0xc6,
+   0x80, 0x31, 0x33, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0xe0, 0x81,
+   0x07, 0x00, 0x00, 0x18, 0x03, 0x30, 0x20, 0xf0, 0xc0, 0x03, 0x40, 0x00,
+   0x04, 0x63, 0xc0, 0x98, 0x18, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x40, 0xe0,
+   0x01, 0x03, 0x80, 0x00, 0x04, 0xc6, 0x80, 0x31, 0x31, 0x00, 0x00, 0x00,
+   0x06, 0x78, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x81, 0x0f, 0x02, 0x1e, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xff, 0x04, 0x90, 0x83, 0x00, 0xf0, 0x07, 0x18, 0x03, 0x18,
+   0x20, 0xc8, 0x41, 0x00, 0xfc, 0x07, 0x04, 0x63, 0xc0, 0x98, 0x3f, 0xc0,
+   0x1f, 0x00, 0x39, 0x48, 0x40, 0x90, 0x83, 0x04, 0xf8, 0x0f, 0x04, 0xc6,
+   0x80, 0x31, 0x7f, 0x80, 0x3f, 0x00, 0x03, 0xe4, 0x20, 0x01, 0xfc, 0x01,
+   0x90, 0x83, 0x04, 0x02, 0x39, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x18, 0x83,
+   0x03, 0x00, 0x00, 0x18, 0x03, 0x8c, 0x20, 0x84, 0xc1, 0x01, 0x40, 0x00,
+   0x04, 0x63, 0xc0, 0x18, 0x18, 0x00, 0x00, 0x80, 0x30, 0x08, 0x40, 0x08,
+   0x83, 0x00, 0x80, 0x00, 0x04, 0xc6, 0x80, 0x31, 0x30, 0x00, 0x00, 0x80,
+   0x11, 0xc2, 0x20, 0x00, 0x00, 0x00, 0x08, 0x03, 0x02, 0x82, 0x30, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x04, 0x0c, 0x87, 0x04, 0x00, 0x00, 0x10, 0x31, 0xfc,
+   0x20, 0x86, 0x43, 0x02, 0x40, 0x00, 0x04, 0x22, 0x86, 0x08, 0x18, 0x00,
+   0x00, 0xc0, 0x70, 0x38, 0x40, 0x0c, 0x87, 0x03, 0x80, 0x00, 0x08, 0x44,
+   0x0c, 0x11, 0x30, 0x00, 0x00, 0xc0, 0x1f, 0xc3, 0xe1, 0x00, 0x00, 0x00,
+   0x0c, 0x07, 0x02, 0xc2, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1e, 0x1f,
+   0x0c, 0x00, 0x00, 0xe0, 0x30, 0xfe, 0x10, 0x8f, 0x07, 0x06, 0x40, 0x00,
+   0x08, 0x1c, 0x06, 0x07, 0x3c, 0x00, 0x00, 0xe0, 0xf1, 0x48, 0x20, 0x1e,
+   0x8f, 0x04, 0x80, 0x00, 0x08, 0x38, 0x0c, 0x0e, 0x78, 0x00, 0x00, 0xc0,
+   0x9f, 0xc7, 0x23, 0x01, 0x00, 0x00, 0x1e, 0x1f, 0x03, 0xe1, 0xf1, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x00, 0x40, 0x02, 0x40, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x48, 0x20, 0x00, 0x80, 0x04, 0x80, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt61.xbm b/src/axiom-website/hyperdoc/bitmaps/opt61.xbm
new file mode 100644
index 0000000..3df74d3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt61.xbm
@@ -0,0 +1,298 @@
+#define opt5c1_width 248
+#define opt5c1_height 114
+static char opt5c1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0xf0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1e, 0x03, 0x40, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x63, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0x80, 0x01, 0x08, 0x00, 0x00, 0x40, 0xe0, 0x08, 0x00, 0x00, 0x00,
+   0xc0, 0x83, 0x0f, 0x1c, 0x01, 0x80, 0xf0, 0x83, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x80, 0x08, 0xe0, 0x01, 0x0c, 0x00,
+   0x00, 0x40, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x83, 0x07, 0x98, 0x00,
+   0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
+   0x00, 0xc0, 0x18, 0x80, 0x01, 0x0e, 0x00, 0x00, 0x40, 0xc0, 0x03, 0x00,
+   0x00, 0x04, 0x00, 0x83, 0x00, 0x78, 0x00, 0x80, 0x00, 0xc0, 0x01, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x80, 0x01,
+   0x0f, 0x00, 0x00, 0x20, 0x80, 0x03, 0x00, 0x00, 0x04, 0x00, 0x83, 0x03,
+   0x70, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0e,
+   0x00, 0x00, 0x00, 0xc0, 0x18, 0x80, 0x81, 0x0d, 0x00, 0x00, 0x20, 0x00,
+   0x03, 0x00, 0x00, 0x04, 0x00, 0x83, 0x0c, 0x60, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x18,
+   0x80, 0xc1, 0x0c, 0x00, 0x00, 0x20, 0x80, 0x07, 0x00, 0x00, 0x04, 0x00,
+   0x03, 0x18, 0xf0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x1e, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x80, 0x41, 0x0c, 0x00, 0x00,
+   0x20, 0x40, 0x0e, 0x18, 0xc0, 0x7f, 0x00, 0x83, 0x18, 0xc8, 0x81, 0x01,
+   0x01, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x39, 0x20, 0x00, 0x7f,
+   0xc0, 0x18, 0x80, 0xc1, 0x1f, 0x00, 0x00, 0x20, 0x20, 0x0c, 0x24, 0x00,
+   0x04, 0x00, 0xc3, 0x18, 0x84, 0x41, 0x02, 0x01, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x80, 0x30, 0x30, 0x00, 0x00, 0xc0, 0x18, 0x80, 0x01, 0x0c,
+   0x00, 0x00, 0x40, 0x30, 0x1c, 0x20, 0x00, 0x04, 0x00, 0x43, 0x0c, 0x86,
+   0x03, 0x06, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x70, 0x20,
+   0x00, 0x00, 0x80, 0x08, 0x83, 0x01, 0x0c, 0x00, 0x00, 0x40, 0x78, 0x7c,
+   0x18, 0x00, 0x04, 0xc0, 0x87, 0x07, 0x8f, 0x0f, 0x82, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0xe0, 0xf1, 0x21, 0x00, 0x00, 0x00, 0x07, 0xe3,
+   0x03, 0x1e, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x30,
+   0xf0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x1e, 0x03, 0x40, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x63, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0x80, 0x01, 0x07, 0xcc, 0x20, 0xcc, 0xe0, 0x08, 0x00, 0x00, 0x00,
+   0xc0, 0x03, 0x0c, 0x1c, 0x01, 0x80, 0xf0, 0x83, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x80, 0x08, 0xe0, 0x81, 0x08, 0x8c,
+   0x21, 0x8c, 0xc1, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x98, 0x00,
+   0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
+   0x00, 0xc0, 0x18, 0x80, 0xc1, 0x18, 0x80, 0x21, 0x80, 0xc1, 0x03, 0x00,
+   0x00, 0x04, 0x00, 0x03, 0x0f, 0x78, 0x00, 0x80, 0x00, 0xc0, 0x01, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x80, 0xc1,
+   0x09, 0x80, 0x11, 0x80, 0x81, 0x03, 0x00, 0x00, 0x04, 0x00, 0x83, 0x0d,
+   0x70, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0e,
+   0x00, 0x00, 0x00, 0xc0, 0x18, 0x80, 0x81, 0x0f, 0xc0, 0x10, 0xc0, 0x00,
+   0x03, 0x00, 0x00, 0x04, 0x00, 0xc3, 0x0c, 0x60, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x18,
+   0x80, 0x01, 0x0f, 0x60, 0x10, 0x60, 0x80, 0x07, 0x18, 0x00, 0x04, 0x00,
+   0x43, 0x0c, 0xf0, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x1e, 0x20, 0x00, 0x00, 0xc0, 0x18, 0x80, 0xc1, 0x1c, 0x30, 0x10,
+   0x30, 0x40, 0x0e, 0x24, 0xc0, 0x7f, 0x00, 0xc3, 0x1f, 0xc8, 0x41, 0x02,
+   0x01, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x39, 0x30, 0x00, 0x7f,
+   0xc0, 0x18, 0x80, 0x41, 0x18, 0x18, 0x11, 0x18, 0x21, 0x0c, 0x20, 0x00,
+   0x04, 0x00, 0x03, 0x0c, 0x84, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x80, 0x30, 0x20, 0x00, 0x00, 0xc0, 0x18, 0x80, 0x41, 0x10,
+   0xfc, 0x21, 0xfc, 0x31, 0x1c, 0x18, 0x00, 0x04, 0x00, 0x03, 0x0c, 0x86,
+   0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x70, 0x20,
+   0x00, 0x00, 0x80, 0x08, 0x83, 0x41, 0x10, 0xfc, 0x21, 0xfc, 0x79, 0x7c,
+   0x20, 0x00, 0x04, 0xc0, 0x07, 0x1e, 0x8f, 0x0f, 0x81, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0xe0, 0xf1, 0x21, 0x00, 0x00, 0x00, 0x07, 0xe3,
+   0x83, 0x0f, 0x00, 0x20, 0x00, 0x00, 0x00, 0x24, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x84, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x83, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x40, 0x30, 0xf0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x03, 0x1e, 0x03, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x63, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x03, 0xc8, 0x20, 0xc8,
+   0xe0, 0x08, 0x00, 0x00, 0x00, 0xc0, 0x83, 0x0c, 0x1c, 0x01, 0x80, 0xf0,
+   0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x80,
+   0x08, 0x30, 0xc3, 0x0c, 0x9c, 0x21, 0x9c, 0xc1, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0xc3, 0x19, 0x98, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x30, 0xc6, 0x18, 0xc8,
+   0x20, 0xc8, 0xc0, 0x03, 0x00, 0x00, 0x04, 0x00, 0x83, 0x0c, 0x78, 0x00,
+   0x80, 0x00, 0xc0, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00,
+   0x00, 0xc0, 0x18, 0x00, 0x06, 0x18, 0xc0, 0x10, 0xc0, 0x80, 0x03, 0x00,
+   0x00, 0x04, 0x00, 0x03, 0x0c, 0x70, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x00, 0x06,
+   0x18, 0x70, 0x10, 0x70, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x03, 0x07,
+   0x60, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0xc0, 0x18, 0x00, 0x03, 0x0c, 0x80, 0x11, 0x80, 0x81,
+   0x07, 0x00, 0x00, 0x04, 0x00, 0x03, 0x18, 0xf0, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xc0, 0x18,
+   0x80, 0x01, 0x06, 0x84, 0x11, 0x84, 0x41, 0x0e, 0x18, 0xc0, 0x7f, 0x00,
+   0x43, 0x18, 0xc8, 0x81, 0x01, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00,
+   0x00, 0x39, 0x20, 0x00, 0x7f, 0xc0, 0x18, 0xc0, 0x00, 0x03, 0x8c, 0x11,
+   0x8c, 0x21, 0x0c, 0x24, 0x00, 0x04, 0x00, 0xc3, 0x18, 0x84, 0x41, 0x02,
+   0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x30, 0x30, 0x00, 0x00,
+   0xc0, 0x18, 0x60, 0x84, 0x11, 0x8c, 0x21, 0x8c, 0x31, 0x1c, 0x20, 0x00,
+   0x04, 0x00, 0xc3, 0x18, 0x86, 0x03, 0x06, 0x01, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0xc0, 0x70, 0x20, 0x00, 0x00, 0x80, 0x08, 0xf3, 0xc7, 0x1f,
+   0x78, 0x20, 0x78, 0x78, 0x7c, 0x18, 0x00, 0x04, 0xc0, 0x87, 0x07, 0x8f,
+   0x0f, 0x82, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xe0, 0xf1, 0x21,
+   0x00, 0x00, 0x00, 0x07, 0xf3, 0xc7, 0x1f, 0x00, 0x20, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x43, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x40, 0x80, 0xf0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x03, 0x1e, 0x03, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x63, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0xc0, 0x20, 0xc0,
+   0xe0, 0x08, 0x00, 0x00, 0x00, 0xc0, 0xc3, 0x0c, 0x1c, 0x01, 0x80, 0xf0,
+   0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x80,
+   0x08, 0x30, 0x83, 0x0f, 0xe0, 0x20, 0xe0, 0xc0, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0xc3, 0x18, 0x98, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x30, 0x86, 0x07, 0xf0,
+   0x20, 0xf0, 0xc0, 0x03, 0x00, 0x00, 0x04, 0x00, 0x03, 0x18, 0x78, 0x00,
+   0x80, 0x00, 0xc0, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00,
+   0x00, 0xc0, 0x18, 0x00, 0x86, 0x00, 0xd8, 0x10, 0xd8, 0x80, 0x03, 0x00,
+   0x00, 0x04, 0x00, 0x03, 0x18, 0x70, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x00, 0x86,
+   0x03, 0xcc, 0x10, 0xcc, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x03, 0x0c,
+   0x60, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0xc0, 0x18, 0x00, 0x83, 0x0c, 0xc4, 0x10, 0xc4, 0x80,
+   0x07, 0x18, 0x00, 0x04, 0x00, 0x03, 0x06, 0xf0, 0x80, 0x01, 0x01, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1e, 0x20, 0x00, 0x00, 0xc0, 0x18,
+   0x80, 0x01, 0x18, 0xfc, 0x11, 0xfc, 0x41, 0x0e, 0x24, 0xc0, 0x7f, 0x00,
+   0x03, 0x03, 0xc8, 0x41, 0x02, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00,
+   0x00, 0x39, 0x30, 0x00, 0x7f, 0xc0, 0x18, 0xc0, 0x80, 0x18, 0xc0, 0x10,
+   0xc0, 0x20, 0x0c, 0x20, 0x00, 0x04, 0x00, 0x83, 0x11, 0x84, 0x01, 0x06,
+   0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x30, 0x20, 0x00, 0x00,
+   0xc0, 0x18, 0x60, 0xc4, 0x18, 0xc0, 0x20, 0xc0, 0x30, 0x1c, 0x18, 0x00,
+   0x04, 0x00, 0xc3, 0x1f, 0x86, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0xc0, 0x70, 0x20, 0x00, 0x00, 0x80, 0x08, 0xf3, 0x47, 0x0c,
+   0xe0, 0x21, 0xe0, 0x79, 0x7c, 0x20, 0x00, 0x04, 0xc0, 0xc7, 0x1f, 0x8f,
+   0x0f, 0x81, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xe0, 0xf1, 0x21,
+   0x00, 0x00, 0x00, 0x07, 0xf3, 0x87, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00,
+   0x24, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xf0, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x1e, 0x03, 0x40, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x63, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0,
+   0x00, 0x07, 0xf8, 0x20, 0xf8, 0xe0, 0x08, 0x00, 0x00, 0x00, 0xc0, 0x83,
+   0x07, 0x1c, 0x01, 0x80, 0xf0, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x23, 0x00, 0x00, 0x00, 0x80, 0x08, 0x30, 0x83, 0x08, 0x78, 0x20, 0x38,
+   0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x98, 0x00, 0x80, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xc0,
+   0x18, 0x30, 0xc6, 0x18, 0x08, 0x20, 0x08, 0xc0, 0x03, 0x00, 0x00, 0x04,
+   0x00, 0x03, 0x06, 0x78, 0x00, 0x80, 0x00, 0xc0, 0x01, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x00, 0xc6, 0x18, 0x38,
+   0x10, 0x78, 0x80, 0x03, 0x00, 0x00, 0x04, 0x00, 0x03, 0x06, 0x70, 0x00,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
+   0x00, 0xc0, 0x18, 0x00, 0xc6, 0x18, 0xc8, 0x10, 0x88, 0x00, 0x03, 0x00,
+   0x00, 0x04, 0x00, 0x03, 0x06, 0x60, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x00, 0xc3,
+   0x18, 0x80, 0x11, 0x80, 0x81, 0x07, 0x00, 0x00, 0x04, 0x00, 0x03, 0x06,
+   0xf0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1e,
+   0x00, 0x00, 0x00, 0xc0, 0x18, 0x80, 0x81, 0x1f, 0x88, 0x11, 0x88, 0x41,
+   0x0e, 0x18, 0xc0, 0x7f, 0x00, 0x03, 0x06, 0xc8, 0x81, 0x01, 0x01, 0x00,
+   0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x39, 0x20, 0x00, 0x7f, 0xc0, 0x18,
+   0xc0, 0x00, 0x18, 0x8c, 0x11, 0x8c, 0x21, 0x0c, 0x24, 0x00, 0x04, 0x00,
+   0x03, 0x06, 0x84, 0x41, 0x02, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x80, 0x30, 0x30, 0x00, 0x00, 0xc0, 0x18, 0x61, 0x44, 0x18, 0xc4, 0x20,
+   0xc4, 0x30, 0x1c, 0x20, 0x00, 0x04, 0x00, 0x03, 0x06, 0x86, 0x03, 0x06,
+   0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x70, 0x20, 0x00, 0x00,
+   0x80, 0x08, 0xf3, 0xc7, 0x08, 0x78, 0x20, 0x78, 0x78, 0x7c, 0x18, 0x00,
+   0x04, 0xc0, 0x87, 0x0f, 0x8f, 0x0f, 0x82, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0xe0, 0xf1, 0x21, 0x00, 0x00, 0x00, 0x07, 0xf3, 0x87, 0x07,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+   0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt62.xbm b/src/axiom-website/hyperdoc/bitmaps/opt62.xbm
new file mode 100644
index 0000000..8e31b8f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt62.xbm
@@ -0,0 +1,313 @@
+#define opt5c2_width 253
+#define opt5c2_height 116
+static char opt5c2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x60, 0x40, 0x60, 0xf0, 0x18, 0x00, 0x00, 0x00, 0x30, 0x70, 0xe0,
+   0x31, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x06,
+   0x00, 0x00, 0x00, 0x70, 0x00, 0x0c, 0x30, 0xe0, 0x00, 0x98, 0x21, 0x98,
+   0xe1, 0x08, 0x00, 0x00, 0x00, 0x3c, 0x88, 0xc0, 0x11, 0x00, 0x08, 0x3f,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x00, 0x88,
+   0x00, 0x32, 0xcc, 0xe0, 0x00, 0x0c, 0x21, 0x0c, 0xc1, 0x04, 0x00, 0x00,
+   0x00, 0x30, 0x8c, 0x81, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x67, 0x8c, 0xe1,
+   0x00, 0x0c, 0x20, 0x0c, 0xc0, 0x03, 0x00, 0x00, 0x01, 0x30, 0x8c, 0x81,
+   0x07, 0x00, 0x08, 0x00, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x00, 0xf0, 0x00,
+   0x00, 0x00, 0x00, 0x8c, 0x01, 0x32, 0x80, 0xe1, 0x00, 0x6c, 0x10, 0x6c,
+   0x80, 0x03, 0x00, 0x00, 0x01, 0x30, 0x8c, 0x01, 0x07, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8c,
+   0x01, 0x30, 0x80, 0xe1, 0x00, 0x9c, 0x11, 0x9c, 0x01, 0x03, 0x00, 0x00,
+   0x01, 0x30, 0x8c, 0x01, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x1c, 0xc0, 0xe0,
+   0x00, 0x8c, 0x11, 0x8c, 0x81, 0x07, 0x18, 0x00, 0x01, 0x30, 0x8c, 0x01,
+   0x0f, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xe0, 0x01,
+   0x02, 0x00, 0x00, 0x8c, 0x01, 0x60, 0x60, 0xe0, 0x00, 0x8c, 0x11, 0x8c,
+   0x41, 0x0e, 0x24, 0xf0, 0x1f, 0x30, 0x8c, 0x81, 0x1c, 0x24, 0x10, 0x00,
+   0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x90, 0x03, 0x03, 0xf0, 0x07, 0x8c,
+   0x01, 0x61, 0x30, 0xe0, 0x00, 0x8c, 0x11, 0x8c, 0x21, 0x0c, 0x20, 0x00,
+   0x01, 0x30, 0x8c, 0x41, 0x18, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x08, 0x03, 0x02, 0x00, 0x00, 0x8c, 0x01, 0x63, 0x18, 0xe1,
+   0x00, 0x88, 0x21, 0x88, 0x31, 0x1c, 0x18, 0x00, 0x01, 0x30, 0x88, 0x60,
+   0x38, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0c, 0x07,
+   0x02, 0x00, 0x00, 0x88, 0x30, 0x63, 0xfc, 0xe1, 0x00, 0x70, 0x20, 0x70,
+   0x78, 0x7c, 0x20, 0x00, 0x01, 0x7c, 0x70, 0xf0, 0xf8, 0x10, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1e, 0x1f, 0x02, 0x00, 0x00, 0x70,
+   0x30, 0x1e, 0xfc, 0xe1, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x24, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x3c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0xfc, 0x21, 0xfe, 0xf0, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x70, 0xe0, 0x31, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0x70, 0x00, 0x0c, 0x00, 0xe0,
+   0x00, 0xfc, 0x11, 0xfe, 0xe0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x88, 0xc0,
+   0x11, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x02,
+   0x00, 0x00, 0x00, 0x88, 0x00, 0x32, 0xf8, 0xe0, 0x00, 0x84, 0x10, 0x42,
+   0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x81, 0x09, 0x00, 0x08, 0x3f,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x00, 0x8c,
+   0x01, 0x67, 0x78, 0xe0, 0x00, 0x44, 0x10, 0x22, 0xc0, 0x03, 0x00, 0x00,
+   0x01, 0x00, 0x8c, 0x81, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x32, 0x08, 0xe0,
+   0x00, 0x40, 0x08, 0x20, 0x80, 0x03, 0x00, 0x00, 0x01, 0x00, 0x8c, 0x01,
+   0x07, 0x00, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x8c, 0x01, 0x30, 0x38, 0xe0, 0x00, 0x20, 0x08, 0x10,
+   0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x8c, 0x01, 0x06, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x8c,
+   0x01, 0x1c, 0xc8, 0xe0, 0x00, 0x20, 0x08, 0x10, 0x80, 0x07, 0x00, 0x00,
+   0x01, 0x00, 0xf8, 0x01, 0x0f, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x60, 0x80, 0xe1,
+   0x00, 0x30, 0x08, 0x18, 0x40, 0x0e, 0x0c, 0xf0, 0x1f, 0x00, 0x80, 0x81,
+   0x1c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x90, 0x03,
+   0x02, 0xf0, 0x07, 0x8c, 0x01, 0x61, 0x88, 0xe1, 0x00, 0x30, 0x08, 0x18,
+   0x20, 0x0c, 0x12, 0x00, 0x01, 0x00, 0x84, 0x41, 0x18, 0x24, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x03, 0x03, 0x00, 0x00, 0x8c,
+   0x01, 0x63, 0x8c, 0xe1, 0x00, 0x30, 0x10, 0x18, 0x30, 0x1c, 0x10, 0x00,
+   0x01, 0x00, 0x8c, 0x60, 0x38, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x0c, 0x07, 0x02, 0x00, 0x00, 0x88, 0x30, 0x63, 0xc4, 0xe0,
+   0x00, 0x30, 0x10, 0x18, 0x78, 0x7c, 0x0c, 0x00, 0x01, 0x00, 0x78, 0xf0,
+   0xf8, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1e, 0x1f,
+   0x02, 0x00, 0x00, 0x70, 0x30, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x12, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x3c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x70, 0x20, 0x38, 0xf0, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x70, 0xe0, 0x31, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0x70, 0x00, 0x0c, 0x70, 0xe0,
+   0x00, 0x88, 0x10, 0x44, 0xe0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x88, 0xc0,
+   0x11, 0x00, 0x08, 0x3f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x02,
+   0x00, 0x00, 0x00, 0x88, 0x00, 0x32, 0x88, 0xe0, 0x00, 0x8c, 0x11, 0xc6,
+   0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x81, 0x09, 0x00, 0x08, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x00, 0x8c,
+   0x01, 0x67, 0x8c, 0xe1, 0x00, 0x9c, 0x10, 0x4e, 0xc0, 0x03, 0x00, 0x00,
+   0x01, 0x00, 0x9c, 0x80, 0x07, 0x00, 0x08, 0x00, 0x1c, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x32, 0x8c, 0xe1,
+   0x00, 0xf8, 0x08, 0x7c, 0x80, 0x03, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x00,
+   0x07, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xe0, 0x00,
+   0x00, 0x00, 0x00, 0x8c, 0x01, 0x30, 0x8c, 0xe1, 0x00, 0xf0, 0x08, 0x78,
+   0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0xf0, 0x00, 0x06, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x8c,
+   0x01, 0x1c, 0x8c, 0xe1, 0x00, 0xcc, 0x09, 0xe6, 0x80, 0x07, 0x0c, 0x00,
+   0x01, 0x00, 0xcc, 0x01, 0x0f, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0xe0, 0x01, 0x02, 0x00, 0x00, 0x8c, 0x01, 0x60, 0xf8, 0xe1,
+   0x00, 0x84, 0x09, 0xc2, 0x40, 0x0e, 0x12, 0xf0, 0x1f, 0x00, 0x84, 0x81,
+   0x1c, 0x24, 0x10, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x90, 0x03,
+   0x03, 0xf0, 0x07, 0x8c, 0x01, 0x61, 0x80, 0xe1, 0x00, 0x04, 0x09, 0x82,
+   0x20, 0x0c, 0x10, 0x00, 0x01, 0x00, 0x04, 0x41, 0x18, 0x60, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x03, 0x02, 0x00, 0x00, 0x8c,
+   0x01, 0x63, 0x84, 0xe1, 0x00, 0x04, 0x11, 0x82, 0x30, 0x1c, 0x0c, 0x00,
+   0x01, 0x00, 0x04, 0x61, 0x38, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x0c, 0x07, 0x02, 0x00, 0x00, 0x88, 0x30, 0x63, 0x8c, 0xe0,
+   0x00, 0xf8, 0x10, 0x7c, 0x78, 0x7c, 0x10, 0x00, 0x01, 0x00, 0xf8, 0xf0,
+   0xf8, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1e, 0x1f,
+   0x02, 0x00, 0x00, 0x70, 0x30, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x70, 0x20, 0xfe,
+   0xf0, 0x18, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xe1, 0x31, 0x00, 0x04, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0x70,
+   0x00, 0x0c, 0xfc, 0xe1, 0x00, 0x88, 0x10, 0xfe, 0xe0, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0xc1, 0x11, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x00, 0x88, 0x00, 0x32, 0xfc, 0xe1,
+   0x00, 0x8c, 0x11, 0x42, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x84, 0x80,
+   0x09, 0x00, 0x08, 0x3f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01,
+   0x00, 0x00, 0x00, 0x8c, 0x01, 0x67, 0x84, 0xe0, 0x00, 0x8c, 0x11, 0x22,
+   0xc0, 0x03, 0x00, 0x00, 0x01, 0x00, 0x44, 0x80, 0x07, 0x00, 0x08, 0x00,
+   0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x8c,
+   0x01, 0x32, 0x04, 0xe0, 0x00, 0x8c, 0x09, 0x20, 0x80, 0x03, 0x00, 0x00,
+   0x01, 0x00, 0x40, 0x00, 0x07, 0x00, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x30, 0x40, 0xe0,
+   0x00, 0x8c, 0x09, 0x10, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00,
+   0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x8c, 0x01, 0x1c, 0x20, 0xe0, 0x00, 0xf8, 0x09, 0x10,
+   0x80, 0x07, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x0f, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x8c,
+   0x01, 0x60, 0x20, 0xe0, 0x00, 0x80, 0x09, 0x18, 0x40, 0x0e, 0x0c, 0xf0,
+   0x1f, 0x00, 0x30, 0x80, 0x1c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x80, 0xff,
+   0x00, 0x00, 0x90, 0x03, 0x02, 0xf0, 0x07, 0x8c, 0x01, 0x61, 0x30, 0xe0,
+   0x00, 0x84, 0x09, 0x18, 0x20, 0x0c, 0x12, 0x00, 0x01, 0x00, 0x30, 0x40,
+   0x18, 0x24, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x03,
+   0x03, 0x00, 0x00, 0x8c, 0x01, 0x63, 0x30, 0xe0, 0x00, 0x8c, 0x10, 0x18,
+   0x30, 0x1c, 0x10, 0x00, 0x01, 0x00, 0x30, 0x60, 0x38, 0x60, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0c, 0x07, 0x02, 0x00, 0x00, 0x88,
+   0x30, 0x63, 0x30, 0xe0, 0x00, 0x78, 0x10, 0x18, 0x78, 0x7c, 0x0c, 0x00,
+   0x01, 0x00, 0x30, 0xf0, 0xf8, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x1e, 0x1f, 0x02, 0x00, 0x00, 0x70, 0x30, 0x1e, 0x30, 0xe0,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x70, 0x20, 0x30,
+   0xf0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0x31, 0x00, 0x04, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0x70,
+   0x00, 0x00, 0x70, 0xe0, 0x1e, 0x88, 0x10, 0xcc, 0xe0, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x98, 0xc1, 0x11, 0x00, 0x08, 0x3f, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x00, 0x88, 0x00, 0x3e, 0x88, 0xe0,
+   0x18, 0x8c, 0x11, 0xc6, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x81,
+   0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01,
+   0x00, 0x00, 0x00, 0x8c, 0x01, 0x1e, 0x8c, 0xe1, 0x18, 0x8c, 0x11, 0x06,
+   0xc0, 0x03, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x08, 0x00,
+   0x1c, 0x00, 0x00, 0x08, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x8c,
+   0x01, 0x02, 0x9c, 0xe0, 0x18, 0x8c, 0x09, 0x36, 0x80, 0x03, 0x00, 0x00,
+   0x01, 0x00, 0x6c, 0x00, 0x07, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x0e, 0xf8, 0xe0,
+   0x18, 0x8c, 0x09, 0xc6, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x9c, 0x01,
+   0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x8c, 0x01, 0x32, 0xf0, 0xe0, 0x18, 0x8c, 0x09, 0xc6,
+   0x80, 0x07, 0x0c, 0x00, 0x01, 0x00, 0x8c, 0x01, 0x0f, 0x18, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xe0, 0x01, 0x02, 0x00, 0x00, 0x8c,
+   0x01, 0x60, 0xcc, 0xe1, 0x18, 0x8c, 0x09, 0xc6, 0x40, 0x0e, 0x12, 0xf0,
+   0x1f, 0x00, 0x8c, 0x81, 0x1c, 0x24, 0x10, 0x00, 0x00, 0x00, 0x80, 0xff,
+   0x00, 0x00, 0x90, 0x03, 0x03, 0xf0, 0x07, 0x8c, 0x01, 0x62, 0x84, 0xe1,
+   0x18, 0x8c, 0x09, 0xc6, 0x20, 0x0c, 0x10, 0x00, 0x01, 0x00, 0x8c, 0x41,
+   0x18, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x03,
+   0x02, 0x00, 0x00, 0x8c, 0x01, 0x63, 0x04, 0xe1, 0x18, 0x88, 0x08, 0xc4,
+   0x30, 0x1c, 0x0c, 0x00, 0x01, 0x00, 0x88, 0x61, 0x38, 0x20, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0c, 0x07, 0x02, 0x00, 0x00, 0x88,
+   0x30, 0x31, 0x04, 0xe1, 0x3e, 0x70, 0x10, 0x38, 0x78, 0x7c, 0x10, 0x00,
+   0x01, 0x00, 0x70, 0xf0, 0xf8, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x1e, 0x1f, 0x02, 0x00, 0x00, 0x70, 0x30, 0x1e, 0xf8, 0xe0,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x48, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/opt63.xbm b/src/axiom-website/hyperdoc/bitmaps/opt63.xbm
new file mode 100644
index 0000000..052fc15
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/opt63.xbm
@@ -0,0 +1,315 @@
+#define opt5c3_width 251
+#define opt5c3_height 117
+static char opt5c3_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xc0, 0x00, 0x03, 0x01,
+   0x80, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x80, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x0e,
+   0xe0, 0x0f, 0x06, 0xf8, 0xf0, 0xc0, 0x83, 0xe0, 0x03, 0x47, 0x00, 0x00,
+   0x00, 0x00, 0x1f, 0x38, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x11, 0xe0, 0x0f, 0x19, 0xf8,
+   0xc0, 0x00, 0x83, 0xe0, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x30,
+   0x01, 0x00, 0xe1, 0x07, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x26, 0x00,
+   0x00, 0x00, 0x80, 0x31, 0x20, 0x84, 0x33, 0xf8, 0xc0, 0x00, 0x83, 0x20,
+   0x00, 0x1e, 0x00, 0x00, 0x10, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x01, 0x00,
+   0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x31,
+   0x20, 0x02, 0x19, 0xf8, 0xc0, 0x00, 0x43, 0xe0, 0x01, 0x1c, 0x00, 0x00,
+   0x10, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x02, 0x80, 0x03, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x31, 0x00, 0x02, 0x18, 0xf8,
+   0xc0, 0x00, 0x43, 0x20, 0x02, 0x18, 0x00, 0x00, 0x10, 0x00, 0x19, 0xc0,
+   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x80, 0x31, 0x00, 0x01, 0x0e, 0xf8, 0xc0, 0x00, 0x43, 0x00,
+   0x06, 0x3c, 0x00, 0x00, 0x10, 0x00, 0x30, 0xe0, 0x01, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x80, 0x31,
+   0x00, 0x01, 0x30, 0xf8, 0xc0, 0x00, 0x43, 0x20, 0x06, 0x72, 0x60, 0x00,
+   0xff, 0x01, 0x31, 0x90, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0xf0, 0x1f,
+   0x00, 0x00, 0x72, 0x40, 0x00, 0xfe, 0x80, 0x31, 0x80, 0x81, 0x30, 0xf8,
+   0xc0, 0x00, 0x43, 0x30, 0x06, 0x61, 0x90, 0x00, 0x10, 0x80, 0x31, 0x08,
+   0x83, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x61, 0x60,
+   0x00, 0x00, 0x80, 0x31, 0x80, 0x81, 0x31, 0xf8, 0xc0, 0x00, 0x43, 0x10,
+   0x83, 0xe1, 0x80, 0x00, 0x10, 0x80, 0x18, 0x0c, 0x07, 0x0c, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0xe1, 0x40, 0x00, 0x00, 0x00, 0x11,
+   0x86, 0x81, 0x31, 0xf8, 0xf0, 0xc1, 0x87, 0xe0, 0xc1, 0xe3, 0x63, 0x00,
+   0x10, 0x00, 0x0f, 0x1e, 0x1f, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0xc0, 0xe3, 0x43, 0x00, 0x00, 0x00, 0x0e, 0x86, 0x01, 0x1f, 0xf8,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xc0, 0x80, 0x01, 0x01,
+   0x82, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3c, 0x06, 0x80, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x0e,
+   0x80, 0x03, 0x0c, 0xf8, 0xf0, 0x60, 0x86, 0x00, 0x03, 0x47, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x38, 0x02, 0x00, 0xe1, 0x07, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x11, 0x40, 0x04, 0x33, 0xf8,
+   0xc0, 0x60, 0x8c, 0x80, 0x03, 0x26, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x30,
+   0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00,
+   0x00, 0x00, 0x80, 0x31, 0x60, 0x8c, 0x31, 0xf8, 0xc0, 0x00, 0x8c, 0xc0,
+   0x03, 0x1e, 0x00, 0x00, 0x10, 0x00, 0x1e, 0xf0, 0x00, 0x00, 0x01, 0x80,
+   0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x31,
+   0x60, 0x8c, 0x01, 0xf8, 0xc0, 0x00, 0x4c, 0x60, 0x03, 0x1c, 0x00, 0x00,
+   0x10, 0x00, 0x1b, 0xe0, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x31, 0x60, 0x8c, 0x0d, 0xf8,
+   0xc0, 0x00, 0x46, 0x30, 0x03, 0x18, 0x00, 0x00, 0x10, 0x80, 0x19, 0xc0,
+   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x80, 0x31, 0x60, 0x8c, 0x33, 0xf8, 0xc0, 0x00, 0x43, 0x10,
+   0x03, 0x3c, 0x60, 0x00, 0x10, 0x80, 0x18, 0xe0, 0x01, 0x03, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3c, 0x40, 0x00, 0x00, 0x80, 0x31,
+   0xc0, 0x8f, 0x31, 0xf8, 0xc0, 0x80, 0x41, 0xf0, 0x07, 0x72, 0x90, 0x00,
+   0xff, 0x81, 0x3f, 0x90, 0x83, 0x04, 0x02, 0x00, 0x00, 0x00, 0xf0, 0x1f,
+   0x00, 0x00, 0x72, 0x60, 0x00, 0xfe, 0x80, 0x31, 0x00, 0x8c, 0x31, 0xf8,
+   0xc0, 0xc0, 0x48, 0x00, 0x03, 0x61, 0x80, 0x00, 0x10, 0x00, 0x18, 0x08,
+   0x03, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x61, 0x40,
+   0x00, 0x00, 0x80, 0x31, 0x20, 0x8c, 0x31, 0xf8, 0xc0, 0xe0, 0x4f, 0x00,
+   0x83, 0xe1, 0x60, 0x00, 0x10, 0x00, 0x18, 0x0c, 0x07, 0x04, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0xe1, 0x40, 0x00, 0x00, 0x00, 0x11,
+   0x66, 0x04, 0x31, 0xf8, 0xf0, 0xe1, 0x8f, 0x80, 0xc7, 0xe3, 0x83, 0x00,
+   0x10, 0x00, 0x3c, 0x1e, 0x1f, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0xc0, 0xe3, 0x43, 0x00, 0x00, 0x00, 0x0e, 0xc6, 0x03, 0x0e, 0xf8,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x90, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xc0, 0x80, 0x01, 0xc1,
+   0x80, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3c, 0x06, 0x80, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x80, 0x01, 0x10, 0xf8, 0xf0, 0x40, 0x86, 0x20, 0x03, 0x47, 0x00, 0x00,
+   0x00, 0x00, 0x19, 0x38, 0x02, 0x00, 0xe1, 0x07, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x40, 0x06, 0x18, 0xf8,
+   0xc0, 0xe0, 0x8c, 0x70, 0x06, 0x26, 0x00, 0x00, 0x00, 0x80, 0x33, 0x30,
+   0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0xe0, 0x0c, 0x1c, 0xf8, 0xc0, 0x40, 0x86, 0x20,
+   0x03, 0x1e, 0x00, 0x00, 0x10, 0x00, 0x19, 0xf0, 0x00, 0x00, 0x01, 0x80,
+   0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x40, 0x06, 0x1e, 0xf8, 0xc0, 0x00, 0x46, 0x00, 0x03, 0x1c, 0x00, 0x00,
+   0x10, 0x00, 0x18, 0xe0, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x1b, 0xf8,
+   0xc0, 0x80, 0x43, 0xc0, 0x01, 0x18, 0x00, 0x00, 0x10, 0x00, 0x0e, 0xc0,
+   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x80, 0x83, 0x19, 0xf8, 0xc0, 0x00, 0x4c, 0x00,
+   0x06, 0x3c, 0x60, 0x00, 0x10, 0x00, 0x30, 0xe0, 0x01, 0x03, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3c, 0x40, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x8c, 0x18, 0xf8, 0xc0, 0x20, 0x4c, 0x10, 0x06, 0x72, 0x90, 0x00,
+   0xff, 0x81, 0x30, 0x90, 0x83, 0x04, 0x02, 0x00, 0x00, 0x00, 0xf0, 0x1f,
+   0x00, 0x00, 0x72, 0x60, 0x00, 0xfe, 0x00, 0x0c, 0x20, 0x8c, 0x3f, 0xf8,
+   0xc0, 0x60, 0x4c, 0x30, 0x06, 0x61, 0x80, 0x00, 0x10, 0x80, 0x31, 0x08,
+   0x03, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x61, 0x40,
+   0x00, 0x00, 0x00, 0x0c, 0x60, 0x0c, 0x18, 0xf8, 0xc0, 0x60, 0x4c, 0x30,
+   0x86, 0xe1, 0x60, 0x00, 0x10, 0x80, 0x31, 0x0c, 0x07, 0x04, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0xe1, 0x40, 0x00, 0x00, 0x00, 0x0c,
+   0x66, 0x0c, 0x18, 0xf8, 0xf0, 0xc1, 0x83, 0xe0, 0xc1, 0xe3, 0x83, 0x00,
+   0x10, 0x00, 0x0f, 0x1e, 0x1f, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0xc0, 0xe3, 0x43, 0x00, 0x00, 0x00, 0x1f, 0xc6, 0x03, 0x3c, 0xf8,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x90, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xc0, 0x00, 0x04, 0xc1, 0x80, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3c,
+   0x06, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc7, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x03, 0x00, 0xf8, 0xf0, 0x00, 0x86, 0x30,
+   0x03, 0x47, 0x00, 0x00, 0x00, 0x80, 0x19, 0x38, 0x02, 0x00, 0xe1, 0x07,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x80, 0x19,
+   0xc0, 0x03, 0x00, 0xf8, 0xc0, 0x00, 0x87, 0x30, 0x06, 0x26, 0x00, 0x00,
+   0x00, 0x80, 0x31, 0x30, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x80, 0x31, 0x00, 0x03, 0x00, 0xf8,
+   0xc0, 0x80, 0x87, 0x00, 0x06, 0x1e, 0x00, 0x00, 0x10, 0x00, 0x30, 0xf0,
+   0x00, 0x00, 0x01, 0x80, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0xf8, 0xc0, 0xc0, 0x46, 0x00,
+   0x06, 0x1c, 0x00, 0x00, 0x10, 0x00, 0x30, 0xe0, 0x00, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x00, 0x03, 0x00, 0xf8, 0xc0, 0x60, 0x46, 0x00, 0x03, 0x18, 0x00, 0x00,
+   0x10, 0x00, 0x18, 0xc0, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, 0xf8,
+   0xc0, 0x20, 0x46, 0x80, 0x01, 0x3c, 0x00, 0x00, 0x10, 0x00, 0x0c, 0xe0,
+   0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3c, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0xf8, 0xc0, 0xe0, 0x4f, 0xc0,
+   0x00, 0x72, 0x60, 0x00, 0xff, 0x01, 0x06, 0x90, 0x03, 0x03, 0x02, 0x00,
+   0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x72, 0x40, 0x00, 0xfe, 0x00, 0x06,
+   0x00, 0x03, 0x00, 0xf8, 0xc0, 0x00, 0x46, 0x60, 0x04, 0x61, 0x90, 0x00,
+   0x10, 0x00, 0x23, 0x08, 0x83, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x61, 0x60, 0x00, 0x00, 0x00, 0x23, 0x00, 0x03, 0x00, 0xf8,
+   0xc0, 0x00, 0x46, 0xf0, 0x87, 0xe1, 0x80, 0x00, 0x10, 0x80, 0x3f, 0x0c,
+   0x07, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0xe1, 0x40,
+   0x00, 0x00, 0x80, 0x3f, 0x06, 0x03, 0x00, 0xf8, 0xf0, 0x01, 0x8f, 0xf0,
+   0xc7, 0xe3, 0x63, 0x00, 0x10, 0x80, 0x3f, 0x1e, 0x1f, 0x04, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0xe3, 0x43, 0x00, 0x00, 0x80, 0x3f,
+   0xc6, 0x07, 0x00, 0xf8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x87, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xc0, 0x00, 0x00, 0x01, 0x80, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c,
+   0x06, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc7, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x80, 0x01, 0x0e, 0xf8, 0xf0, 0xc0, 0x87, 0x00,
+   0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0xe1, 0x07,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x40, 0x06, 0x11, 0xf8, 0xc0, 0xc0, 0x83, 0x00, 0x00, 0x26, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x8c, 0x31, 0xf8,
+   0xc0, 0x40, 0x80, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x10, 0x00, 0x00, 0xf0,
+   0x00, 0x00, 0x01, 0x80, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1e, 0x00,
+   0x00, 0x00, 0x00, 0x1e, 0x40, 0x86, 0x31, 0xf8, 0xc0, 0xc0, 0x41, 0x00,
+   0x00, 0x1c, 0x00, 0x00, 0x10, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1b,
+   0x00, 0x86, 0x31, 0xf8, 0xc0, 0x40, 0x46, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x10, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x80, 0x19, 0x80, 0x83, 0x31, 0xf8,
+   0xc0, 0x00, 0x4c, 0x00, 0x00, 0x3c, 0x60, 0x00, 0x10, 0x00, 0x00, 0xe0,
+   0x01, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3c, 0x40,
+   0x00, 0x00, 0x80, 0x18, 0x00, 0x0c, 0x3f, 0xf8, 0xc0, 0x40, 0x4c, 0x00,
+   0x00, 0x72, 0x90, 0x00, 0xff, 0x01, 0x00, 0x90, 0x83, 0x04, 0x02, 0x00,
+   0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x72, 0x60, 0x00, 0xfe, 0x80, 0x3f,
+   0x20, 0x0c, 0x30, 0xf8, 0xc0, 0x60, 0x4c, 0x00, 0x00, 0x61, 0x80, 0x00,
+   0x10, 0x00, 0x00, 0x08, 0x03, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x61, 0x40, 0x00, 0x00, 0x00, 0x18, 0x60, 0x8c, 0x30, 0xf8,
+   0xc0, 0x20, 0x46, 0x00, 0x80, 0xe1, 0x60, 0x00, 0x10, 0x00, 0x00, 0x0c,
+   0x07, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0xe1, 0x40,
+   0x00, 0x00, 0x00, 0x18, 0x66, 0x8c, 0x11, 0xf8, 0xf0, 0xc1, 0x83, 0x00,
+   0xc0, 0xe3, 0x83, 0x00, 0x10, 0x00, 0x00, 0x1e, 0x1f, 0x02, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0xe3, 0x43, 0x00, 0x00, 0x00, 0x3c,
+   0xc6, 0x03, 0x0f, 0xf8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x90, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8};
diff --git a/src/axiom-website/hyperdoc/bitmaps/parallel.bitmap b/src/axiom-website/hyperdoc/bitmaps/parallel.bitmap
new file mode 100644
index 0000000..3a46ad6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/parallel.bitmap
@@ -0,0 +1,6 @@
+#define parallel_width 16
+#define parallel_height 16
+static char parallel_bits[] = {
+   0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06,
+   0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06,
+   0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06};
diff --git a/src/axiom-website/hyperdoc/bitmaps/partial.bitmap b/src/axiom-website/hyperdoc/bitmaps/partial.bitmap
new file mode 100644
index 0000000..a042588
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/partial.bitmap
@@ -0,0 +1,8 @@
+#define partial_width 16
+#define partial_height 16
+#define partial_x_hot -1
+#define partial_y_hot -1
+static char partial_bits[] = {
+   0x00, 0x00, 0xe0, 0x03, 0xf0, 0x07, 0x10, 0x06, 0x00, 0x0c, 0x00, 0x0c,
+   0x00, 0x0c, 0xc0, 0x0f, 0xf0, 0x0f, 0x30, 0x0c, 0x18, 0x0c, 0x18, 0x0c,
+   0x18, 0x0c, 0x30, 0x06, 0xe0, 0x03, 0xc0, 0x01};
diff --git a/src/axiom-website/hyperdoc/bitmaps/pelzel.bitmap b/src/axiom-website/hyperdoc/bitmaps/pelzel.bitmap
new file mode 100644
index 0000000..e409110
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/pelzel.bitmap
@@ -0,0 +1,13 @@
+#define pelzel2_width 27
+#define pelzel2_height 24
+#define pelzel2_x_hot 0
+#define pelzel2_y_hot 0
+static char pelzel2_bits[] = {
+   0xff, 0xff, 0xff, 0x07, 0x01, 0x00, 0x00, 0x04, 0x1d, 0x00, 0x00, 0x04,
+   0x15, 0x00, 0x00, 0x04, 0x1d, 0x00, 0x00, 0x04, 0xc5, 0x01, 0x00, 0x04,
+   0x45, 0x00, 0x00, 0x04, 0xc1, 0x04, 0x00, 0x04, 0x41, 0x04, 0x00, 0x04,
+   0xc1, 0x05, 0x00, 0x04, 0x01, 0xc4, 0x01, 0x04, 0x01, 0x1c, 0x01, 0x04,
+   0x01, 0x80, 0x00, 0x04, 0x01, 0x40, 0x1c, 0x04, 0x01, 0xc0, 0x05, 0x04,
+   0x01, 0x00, 0x0c, 0x04, 0x01, 0x00, 0x44, 0x04, 0x01, 0x00, 0x5c, 0x04,
+   0x01, 0x00, 0x40, 0x04, 0x01, 0x00, 0x40, 0x04, 0x01, 0x00, 0xc0, 0x05,
+   0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x04, 0xff, 0xff, 0xff, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/phi-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/phi-cap.bitmap
new file mode 100644
index 0000000..94b681b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/phi-cap.bitmap
@@ -0,0 +1,8 @@
+#define Phi_width 16
+#define Phi_height 16
+#define Phi_x_hot -1
+#define Phi_y_hot -1
+static char Phi_bits[] = {
+   0xe0, 0x01, 0xc0, 0x00, 0xc0, 0x00, 0xf8, 0x07, 0xcc, 0x0c, 0xc6, 0x18,
+   0xc6, 0x18, 0xc6, 0x18, 0xc6, 0x18, 0xc6, 0x18, 0xcc, 0x0c, 0xf8, 0x07,
+   0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xe0, 0x01};
diff --git a/src/axiom-website/hyperdoc/bitmaps/phi.bitmap b/src/axiom-website/hyperdoc/bitmaps/phi.bitmap
new file mode 100644
index 0000000..86d70aa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/phi.bitmap
@@ -0,0 +1,8 @@
+#define phi_width 16
+#define phi_height 16
+#define phi_x_hot -1
+#define phi_y_hot -1
+static char phi_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0xf0, 0x07, 0xf8, 0x0f,
+   0x9c, 0x19, 0x8c, 0x19, 0xcc, 0x1c, 0xdc, 0x0e, 0xfc, 0x07, 0xe0, 0x01,
+   0x60, 0x00, 0x60, 0x00, 0x30, 0x00, 0x30, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/phi.xbm b/src/axiom-website/hyperdoc/bitmaps/phi.xbm
new file mode 100644
index 0000000..f8c4ddc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/phi.xbm
@@ -0,0 +1,7 @@
+#define phi_width 15
+#define phi_height 20
+static char phi_bits[] = {
+   0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0xc0, 0x07,
+   0x20, 0x09, 0x30, 0x19, 0x18, 0x19, 0x98, 0x18, 0x98, 0x18, 0x98, 0x0c,
+   0x50, 0x04, 0xe0, 0x03, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/pi-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/pi-cap.bitmap
new file mode 100644
index 0000000..171ff07
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/pi-cap.bitmap
@@ -0,0 +1,8 @@
+#define Pi_width 16
+#define Pi_height 16
+#define Pi_x_hot -1
+#define Pi_y_hot -1
+static char Pi_bits[] = {
+   0xfc, 0x3f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+   0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+   0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c};
diff --git a/src/axiom-website/hyperdoc/bitmaps/pi.bitmap b/src/axiom-website/hyperdoc/bitmaps/pi.bitmap
new file mode 100644
index 0000000..f8d8ed2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/pi.bitmap
@@ -0,0 +1,8 @@
+#define pi_width 16
+#define pi_height 16
+#define pi_x_hot -1
+#define pi_y_hot -1
+static char pi_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xf8, 0x7f, 0xfc, 0x3f, 0x6c, 0x06,
+   0x66, 0x06, 0x66, 0x06, 0x60, 0x06, 0x30, 0x06, 0x30, 0x06, 0x30, 0x1e,
+   0x30, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/pi.xbm b/src/axiom-website/hyperdoc/bitmaps/pi.xbm
new file mode 100644
index 0000000..4275833
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/pi.xbm
@@ -0,0 +1,6 @@
+#define pi_width 16
+#define pi_height 16
+static char pi_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x70, 0x02, 0x88, 0x01,
+   0x04, 0x00, 0x20, 0x01, 0x20, 0x01, 0x10, 0x01, 0x10, 0x01, 0x08, 0x01,
+   0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/pick.bitmap b/src/axiom-website/hyperdoc/bitmaps/pick.bitmap
new file mode 100644
index 0000000..29c8e1c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/pick.bitmap
@@ -0,0 +1,6 @@
+#define pick_width 16
+#define pick_height 16
+static char pick_bits[] = {
+   0xaa, 0xaa, 0xfd, 0x5f, 0xae, 0x8a, 0x55, 0x55, 0xae, 0x8a, 0x55, 0x5d,
+   0xae, 0x8e, 0x55, 0x57, 0xbe, 0x8b, 0xf5, 0x55, 0xee, 0x8a, 0x55, 0x55,
+   0xae, 0x8a, 0x01, 0x40, 0xaa, 0xaa, 0x55, 0x55};
diff --git a/src/axiom-website/hyperdoc/bitmaps/pick_old.bitmap b/src/axiom-website/hyperdoc/bitmaps/pick_old.bitmap
new file mode 100644
index 0000000..3f66e42
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/pick_old.bitmap
@@ -0,0 +1,6 @@
+#define Xxfbox_width 16
+#define Xxfbox_height 16
+static char Xxfbox_bits[] = {
+   0xff, 0xff, 0x01, 0x80, 0xfd, 0xbf, 0xfd, 0xbf, 0x3d, 0xbc, 0x7d, 0xbe,
+   0xed, 0xb7, 0xcd, 0xb3, 0xcd, 0xb3, 0xed, 0xb7, 0x7d, 0xbe, 0x3d, 0xbc,
+   0xfd, 0xbf, 0xfd, 0xbf, 0x01, 0x80, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/plusminus.xbm b/src/axiom-website/hyperdoc/bitmaps/plusminus.xbm
new file mode 100644
index 0000000..efca9ed
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/plusminus.xbm
@@ -0,0 +1,6 @@
+#define notequal_width 16
+#define notequal_height 16
+static char notequal_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
+   0xf8, 0x0f, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/prime.bitmap b/src/axiom-website/hyperdoc/bitmaps/prime.bitmap
new file mode 100644
index 0000000..8864dbb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/prime.bitmap
@@ -0,0 +1,6 @@
+#define prime_width 16
+#define prime_height 16
+static char prime_bits[] = {
+   0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x80, 0x01, 0x80, 0x01,
+   0xc0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/prod.bitmap b/src/axiom-website/hyperdoc/bitmaps/prod.bitmap
new file mode 100644
index 0000000..696f110
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/prod.bitmap
@@ -0,0 +1,6 @@
+#define Pi_width 16
+#define Pi_height 16
+static char Pi_bits[] = {
+   0xfc, 0x3f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+   0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+   0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/psi-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/psi-cap.bitmap
new file mode 100644
index 0000000..1617668
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/psi-cap.bitmap
@@ -0,0 +1,8 @@
+#define Psi_width 16
+#define Psi_height 16
+#define Psi_x_hot -1
+#define Psi_y_hot -1
+static char Psi_bits[] = {
+   0xc0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x86, 0x61, 0x8e, 0x71, 0x8c, 0x31,
+   0x8c, 0x31, 0x9c, 0x39, 0xf8, 0x1f, 0xf0, 0x0f, 0x80, 0x01, 0x80, 0x01,
+   0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xc0, 0x03};
diff --git a/src/axiom-website/hyperdoc/bitmaps/psi.bitmap b/src/axiom-website/hyperdoc/bitmaps/psi.bitmap
new file mode 100644
index 0000000..d400482
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/psi.bitmap
@@ -0,0 +1,8 @@
+#define psi_width 16
+#define psi_height 16
+#define psi_x_hot -1
+#define psi_y_hot -1
+static char psi_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc6, 0x18, 0xc6, 0x18,
+   0xc6, 0x1c, 0x6c, 0x0e, 0xfc, 0x07, 0xf8, 0x03, 0x60, 0x00, 0x70, 0x00,
+   0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/psi.png b/src/axiom-website/hyperdoc/bitmaps/psi.png
new file mode 100644
index 0000000..275035c
Binary files /dev/null and b/src/axiom-website/hyperdoc/bitmaps/psi.png differ
diff --git a/src/axiom-website/hyperdoc/bitmaps/psi.xbm b/src/axiom-website/hyperdoc/bitmaps/psi.xbm
new file mode 100644
index 0000000..65206b5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/psi.xbm
@@ -0,0 +1,7 @@
+#define psi_width 15
+#define psi_height 20
+static char psi_bits[] = {
+   0x00, 0x80, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x82, 0x38, 0xb2,
+   0x24, 0xb2, 0x30, 0x91, 0x30, 0x91, 0x18, 0x91, 0x98, 0x88, 0x98, 0x88,
+   0x98, 0x84, 0xf0, 0x83, 0x40, 0x80, 0x40, 0x80, 0x20, 0x80, 0x20, 0x80,
+   0x00, 0x80, 0x00, 0x80};
diff --git a/src/axiom-website/hyperdoc/bitmaps/px.bitmap b/src/axiom-website/hyperdoc/bitmaps/px.bitmap
new file mode 100644
index 0000000..bcabdda
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/px.bitmap
@@ -0,0 +1,9 @@
+#define px_width 25
+#define px_height 16
+static char px_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00,
+   0x40, 0x67, 0x00, 0x00, 0x40, 0x63, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00,
+   0x80, 0x61, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00,
+   0x80, 0x31, 0x1b, 0x00, 0x80, 0x99, 0x1f, 0x00, 0xc0, 0x8f, 0x16, 0x00,
+   0xc0, 0x00, 0x06, 0x00, 0xc0, 0x00, 0x12, 0x00, 0xc0, 0xc0, 0x12, 0x00,
+   0xe0, 0xc3, 0x0f, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/py.bitmap b/src/axiom-website/hyperdoc/bitmaps/py.bitmap
new file mode 100644
index 0000000..a9df891
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/py.bitmap
@@ -0,0 +1,9 @@
+#define py_width 25
+#define py_height 16
+static char py_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x40, 0x67, 0x00, 0x00,
+   0x40, 0x63, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00,
+   0x80, 0x61, 0x23, 0x00, 0x80, 0x31, 0x27, 0x00, 0x80, 0x99, 0x36, 0x00,
+   0xc0, 0x0f, 0x32, 0x00, 0xc0, 0x00, 0x13, 0x00, 0xc0, 0x00, 0x1b, 0x00,
+   0xc0, 0x00, 0x1e, 0x00, 0xf0, 0x01, 0x18, 0x00, 0x00, 0x80, 0x0d, 0x00,
+   0x00, 0x00, 0x07, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/quad.bitmap b/src/axiom-website/hyperdoc/bitmaps/quad.bitmap
new file mode 100644
index 0000000..9c36331
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/quad.bitmap
@@ -0,0 +1,6 @@
+#define quad_width 16
+#define quad_height 16
+static char quad_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x08, 0x04, 0x08, 0x04,
+   0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04,
+   0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0xf8, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/quit.bitmap b/src/axiom-website/hyperdoc/bitmaps/quit.bitmap
new file mode 100644
index 0000000..67989c4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/quit.bitmap
@@ -0,0 +1,15 @@
+#define quit_width 50
+#define quit_height 20
+static char quit_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0x7f, 0x04,
+   0x8c, 0xf1, 0x0f, 0x03, 0xc3, 0x7f, 0x0c, 0x86, 0xf1, 0x0f, 0x03, 0xc3,
+   0x00, 0x18, 0x82, 0x81, 0x01, 0x03, 0xc3, 0x00, 0x30, 0x83, 0x81, 0x01,
+   0x03, 0xc3, 0x00, 0x20, 0x81, 0x81, 0x01, 0x03, 0xc3, 0x00, 0xe0, 0x81,
+   0x81, 0x01, 0x03, 0xc3, 0x3f, 0xc0, 0x81, 0x81, 0x01, 0x03, 0xc3, 0x3f,
+   0xc0, 0x81, 0x81, 0x01, 0x03, 0xc3, 0x00, 0x60, 0x81, 0x81, 0x01, 0x03,
+   0xc3, 0x00, 0x30, 0x83, 0x81, 0x01, 0x03, 0xc3, 0x00, 0x10, 0x86, 0x81,
+   0x01, 0x03, 0xc3, 0x00, 0x18, 0x84, 0x81, 0x01, 0x03, 0xc3, 0x7f, 0x0c,
+   0x8c, 0x81, 0x01, 0x03, 0xc3, 0x7f, 0x04, 0x88, 0x81, 0x01, 0x03, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03};
diff --git a/src/axiom-website/hyperdoc/bitmaps/re-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/re-cap.bitmap
new file mode 100644
index 0000000..4c4fdfa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/re-cap.bitmap
@@ -0,0 +1,8 @@
+#define Re_width 16
+#define Re_height 16
+#define Re_x_hot -1
+#define Re_y_hot -1
+static char Re_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x1b, 0x0c, 0x19, 0x08, 0x19, 0x08,
+   0x19, 0x08, 0x19, 0x0c, 0x19, 0x04, 0xf8, 0x07, 0x1c, 0x04, 0x0c, 0x0c,
+   0x0e, 0x08, 0x06, 0x28, 0x06, 0x38, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/return.bitmap b/src/axiom-website/hyperdoc/bitmaps/return.bitmap
new file mode 100644
index 0000000..d5afa43
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/return.bitmap
@@ -0,0 +1,23 @@
+#define return_width 60
+#define return_height 30
+static char return_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xfe,
+   0x1f, 0xf0, 0xff, 0xfb, 0xfd, 0xff, 0x7f, 0xfe, 0x1f, 0xf0, 0xff, 0xfb,
+   0xfd, 0xff, 0x1f, 0xfe, 0x1f, 0xf0, 0xff, 0xfb, 0xfd, 0xff, 0x0f, 0xfe,
+   0x1f, 0xf0, 0xff, 0xfb, 0xfd, 0xff, 0x07, 0xfe, 0x1f, 0xf0, 0xff, 0xfb,
+   0xfd, 0xff, 0x01, 0xfe, 0x0f, 0xf0, 0xff, 0xfb, 0xfd, 0xff, 0x00, 0xfe,
+   0x07, 0xf0, 0xff, 0xfb, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xfb,
+   0xfd, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xfb, 0xfd, 0x0f, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0xfb, 0xfd, 0x07, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xfb,
+   0xfd, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfb, 0xfd, 0x1f, 0x00, 0x00,
+   0x00, 0xfe, 0xff, 0xfb, 0xfd, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x01, 0xfe,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x1f, 0xfe,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/return2.bitmap b/src/axiom-website/hyperdoc/bitmaps/return2.bitmap
new file mode 100644
index 0000000..474ddde
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/return2.bitmap
@@ -0,0 +1,23 @@
+#define return_width 60
+#define return_height 30
+static char return_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x07,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x1f, 0x00,
+   0xc0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xfb, 0xfd, 0x7f, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0xfb, 0xfd, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x8f,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xdf,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x1f, 0x00,
+   0xc0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/return3.bitmap b/src/axiom-website/hyperdoc/bitmaps/return3.bitmap
new file mode 100644
index 0000000..71e5113
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/return3.bitmap
@@ -0,0 +1,25 @@
+#define return3_width 60
+#define return3_height 30
+#define return3_x_hot -1
+#define return3_y_hot -1
+static char return3_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x9f, 0x0f, 0xf8,
+   0xfc, 0x79, 0x00, 0xff, 0x1f, 0x1f, 0x07, 0xf0, 0xf8, 0x71, 0x00, 0xfe,
+   0x1f, 0x1f, 0x07, 0xe0, 0xf0, 0x70, 0x00, 0xfe, 0x1f, 0x1f, 0xc7, 0xe3,
+   0xf0, 0x70, 0xfc, 0xff, 0x1f, 0x1f, 0xc7, 0xe3, 0xf0, 0x70, 0xfc, 0xff,
+   0x1f, 0x1f, 0xc7, 0xe3, 0x60, 0x70, 0xfc, 0xff, 0x1f, 0x1f, 0xc7, 0xe3,
+   0x60, 0x70, 0xfc, 0xff, 0x1f, 0x1f, 0xc7, 0xe3, 0x00, 0x70, 0xfc, 0xff,
+   0x1f, 0x1f, 0xc7, 0xe3, 0x08, 0x71, 0xfc, 0xff, 0x1f, 0x00, 0xc7, 0xe3,
+   0x08, 0x71, 0x80, 0xff, 0x1f, 0x00, 0xc7, 0xe3, 0x98, 0x71, 0x00, 0xff,
+   0x1f, 0x00, 0xc7, 0xe3, 0x98, 0x71, 0x00, 0xff, 0x1f, 0x1f, 0xc7, 0xe3,
+   0xf8, 0x71, 0xfc, 0xff, 0x1f, 0x1f, 0xc7, 0xe3, 0xf8, 0x71, 0xfc, 0xff,
+   0x1f, 0x1f, 0xc7, 0xe3, 0xf8, 0x71, 0xfc, 0xff, 0x1f, 0x1f, 0xc7, 0xe3,
+   0xf8, 0x71, 0xfc, 0xff, 0x1f, 0x1f, 0xc7, 0xe3, 0xf8, 0x71, 0xfc, 0xff,
+   0x1f, 0x1f, 0xc7, 0xe3, 0xf8, 0x71, 0xfc, 0xff, 0x1f, 0x1f, 0xc7, 0xe3,
+   0xf8, 0x71, 0xfc, 0xff, 0x1f, 0x1f, 0x07, 0xe0, 0xf8, 0x71, 0x00, 0xff,
+   0x1f, 0x1f, 0x0f, 0xe0, 0xf8, 0x71, 0x00, 0xfe, 0x3f, 0x3f, 0x1f, 0xf0,
+   0xf9, 0xf3, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/rho.bitmap b/src/axiom-website/hyperdoc/bitmaps/rho.bitmap
new file mode 100644
index 0000000..97cb7bd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/rho.bitmap
@@ -0,0 +1,8 @@
+#define rho_width 16
+#define rho_height 16
+#define rho_x_hot -1
+#define rho_y_hot -1
+static char rho_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xf0, 0x03, 0x38, 0x03,
+   0x1c, 0x06, 0x0c, 0x06, 0x0c, 0x06, 0x0c, 0x07, 0x9c, 0x03, 0xfc, 0x01,
+   0x7e, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/rho=r.bitmap b/src/axiom-website/hyperdoc/bitmaps/rho=r.bitmap
new file mode 100644
index 0000000..a3843ed
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/rho=r.bitmap
@@ -0,0 +1,12 @@
+#define rho=r_width 48
+#define rho=r_height 18
+static char rho=r_bits[] = {
+   0x00, 0x00, 0x00, 0x90, 0x01, 0x32, 0x00, 0x00, 0x00, 0x90, 0x01, 0x32,
+   0x00, 0x00, 0x00, 0x90, 0x01, 0x32, 0x00, 0x00, 0x00, 0x90, 0x01, 0x32,
+   0x70, 0xe0, 0x1f, 0x90, 0x6d, 0x32, 0xc8, 0xe0, 0x1f, 0x90, 0x69, 0x32,
+   0xc8, 0x00, 0x00, 0x90, 0x09, 0x32, 0x4c, 0x00, 0x00, 0x90, 0x0d, 0x32,
+   0x4c, 0xe0, 0x3f, 0x90, 0x0d, 0x32, 0x3c, 0x00, 0x00, 0x90, 0x05, 0x32,
+   0x04, 0x00, 0x00, 0x90, 0x01, 0x32, 0x06, 0x00, 0x00, 0x90, 0x01, 0x32,
+   0x02, 0x00, 0x00, 0x90, 0x01, 0x32, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/rhosq=.bitmap b/src/axiom-website/hyperdoc/bitmaps/rhosq=.bitmap
new file mode 100644
index 0000000..998849d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/rhosq=.bitmap
@@ -0,0 +1,37 @@
+#define rhosq=_width 125
+#define rhosq=_height 25
+static char rhosq=_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0xe0,
+   0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0d,
+   0x00, 0x00, 0xd0, 0xe0, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
+   0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x90, 0xe0, 0x00, 0x60, 0x00, 0x00,
+   0x90, 0x01, 0x64, 0x0c, 0x00, 0x00, 0x04, 0x4c, 0x06, 0x20, 0xc3, 0xe0,
+   0x00, 0x20, 0x00, 0x00, 0x90, 0x01, 0x64, 0x04, 0x00, 0x00, 0x0c, 0x44,
+   0x06, 0x20, 0x43, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x64, 0x00,
+   0x40, 0x00, 0x0c, 0x40, 0x06, 0x20, 0x03, 0xe0, 0x00, 0x78, 0x00, 0x00,
+   0x90, 0x01, 0x64, 0x0f, 0x40, 0x00, 0x08, 0x4f, 0x06, 0x20, 0xf3, 0xe0,
+   0xc0, 0x01, 0xe0, 0x1f, 0x90, 0xd9, 0x64, 0x00, 0x40, 0x00, 0x18, 0x40,
+   0xc6, 0x27, 0x03, 0xe0, 0x20, 0x03, 0xe0, 0x1f, 0x90, 0xd1, 0x64, 0x00,
+   0x40, 0x00, 0x18, 0x40, 0xa6, 0x27, 0x03, 0xe0, 0x20, 0x03, 0x00, 0x00,
+   0x90, 0x11, 0x64, 0x00, 0xfc, 0x07, 0x1c, 0x40, 0x86, 0x20, 0x03, 0xe0,
+   0x30, 0x01, 0x00, 0x00, 0x90, 0x19, 0x64, 0x00, 0x40, 0x00, 0x36, 0x40,
+   0x86, 0x20, 0x03, 0xe0, 0x30, 0x01, 0xe0, 0x3f, 0x90, 0x19, 0x64, 0x00,
+   0x40, 0x00, 0x33, 0x40, 0xe6, 0x20, 0x03, 0xe0, 0xf0, 0x00, 0x00, 0x00,
+   0x90, 0x09, 0x64, 0x00, 0x40, 0x00, 0x21, 0x40, 0xe6, 0x23, 0x03, 0xe0,
+   0x10, 0x00, 0x00, 0x00, 0x90, 0x01, 0x64, 0x00, 0x40, 0x00, 0x00, 0x40,
+   0x06, 0x20, 0x03, 0xe0, 0x18, 0x00, 0x00, 0x00, 0x90, 0x01, 0x64, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x06, 0x20, 0x03, 0xe0, 0x08, 0x00, 0x00, 0x00,
+   0x90, 0x01, 0x64, 0x00, 0x00, 0x00, 0x00, 0x40, 0x06, 0x20, 0x03, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x20, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s13aaf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s13aaf.bitmap
new file mode 100644
index 0000000..6155176
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s13aaf.bitmap
@@ -0,0 +1,67 @@
+#define s13aaf_width 133
+#define s13aaf_height 45
+static char s13aaf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c,
+   0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x5c, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x8c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80,
+   0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x1d, 0x00, 0x00, 0x00,
+   0xc0, 0x1f, 0x40, 0x00, 0x04, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x1f, 0x80, 0x01, 0x00, 0x80, 0x10, 0x20, 0x00, 0x08, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x10,
+   0x20, 0x00, 0x08, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00,
+   0x80, 0x01, 0x00, 0xc0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xc0, 0x02, 0x10, 0xf8,
+   0x10, 0xf8, 0x07, 0xc0, 0x01, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xf0, 0x8c,
+   0x00, 0xc0, 0x03, 0x10, 0xf4, 0x10, 0xf8, 0x07, 0xc0, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0xc8, 0xd8, 0x00, 0x40, 0x02, 0x10, 0x10, 0x10, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x3f, 0xc8, 0x48, 0x00, 0x60,
+   0xc0, 0x10, 0x10, 0x10, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0xcc, 0x4c, 0x00, 0x60, 0x88, 0x10, 0x1c, 0x10, 0xf8, 0x0f, 0xc0,
+   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x4c, 0xed, 0x00, 0xf0, 0x87, 0x10,
+   0x7c, 0x10, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf8,
+   0xf8, 0x00, 0x00, 0x80, 0x20, 0x00, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x08,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x41, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x11,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x80, 0x1d, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x00, 0x00, 0x00, 0x00,
+   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s13aaf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s13aaf1.bitmap
new file mode 100644
index 0000000..72b8f9e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s13aaf1.bitmap
@@ -0,0 +1,74 @@
+#define s13aaf1_width 180
+#define s13aaf1_height 37
+static char s13aaf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, 0x40,
+   0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xd9, 0x00, 0x00, 0xf8, 0x87, 0x05,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0x00, 0x98, 0x09, 0x87, 0x01, 0x00, 0x00, 0x80, 0x15, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x98, 0x08, 0x06, 0x01, 0xe0, 0x00, 0x80, 0x0f, 0x00, 0x0f,
+   0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x02, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x08, 0x06, 0x01, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x0c, 0x0c, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x08, 0x8d, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x0c, 0x04, 0x00, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0xf0, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x06, 0x04, 0x80, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46,
+   0x04, 0x80, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x98, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00,
+   0x80, 0x00, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0xf0, 0x00, 0x00, 0x00, 0xf0, 0xc3, 0x31, 0x00, 0x00, 0x7e, 0x00, 0xc0,
+   0x80, 0xec, 0x60, 0x00, 0xff, 0x3f, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0xa3, 0x31, 0x00, 0x00, 0x23, 0xc0, 0xc0, 0xc0,
+   0x6c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0xa3, 0x31, 0x00, 0x00, 0x23, 0xf0, 0xc0, 0x00, 0x0c,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x83, 0x31, 0x00, 0x00, 0x23, 0xc2, 0xc0, 0x00, 0x06, 0x60,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f,
+   0x8c, 0xc1, 0x18, 0x00, 0x00, 0x03, 0xc2, 0xc0, 0x00, 0x06, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c,
+   0xc1, 0x18, 0x00, 0x80, 0x01, 0xc1, 0xc0, 0xc0, 0x46, 0x60, 0x00, 0xff,
+   0x3f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xc5,
+   0x58, 0x00, 0x80, 0x81, 0xc1, 0x80, 0xc0, 0x27, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xc5, 0x5c,
+   0x0c, 0xe0, 0xff, 0xc1, 0x80, 0xc1, 0x3d, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x83, 0x3f, 0x0c,
+   0x00, 0x00, 0xc0, 0x80, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3b,
+   0x00, 0x00, 0x00, 0x70, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x03, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3f, 0x00,
+   0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x86, 0x36, 0x00, 0x00,
+   0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x60, 0x03, 0x06, 0x00, 0x00, 0x00,
+   0x30, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x12, 0x00, 0x00, 0x00, 0x30,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x00, 0xe0, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s13aaf2.bitmap b/src/axiom-website/hyperdoc/bitmaps/s13aaf2.bitmap
new file mode 100644
index 0000000..51333d7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s13aaf2.bitmap
@@ -0,0 +1,15 @@
+#define s13aaf2_width 70
+#define s13aaf2_height 16
+static char s13aaf2_bits[] = {
+   0x00, 0xff, 0x0f, 0x00, 0x02, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x0c,
+   0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x00, 0x01, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x06, 0x04, 0x80, 0x01, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x46, 0x04, 0x80, 0x01, 0x77, 0x60, 0x00, 0x00, 0x00, 0x46, 0x00,
+   0x80, 0x80, 0xec, 0x60, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0xc0, 0x6c,
+   0x60, 0x00, 0x00, 0x00, 0x23, 0xf0, 0xc0, 0x00, 0x0c, 0x60, 0x00, 0x00,
+   0x00, 0x23, 0xc0, 0xc0, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x23, 0xc2,
+   0xc0, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc0, 0xc0, 0x46,
+   0x60, 0x00, 0x00, 0x80, 0x01, 0xc1, 0xc0, 0xc0, 0x27, 0x60, 0x00, 0x00,
+   0x80, 0x81, 0xc1, 0x80, 0xc0, 0x3d, 0x60, 0x00, 0x00, 0xe0, 0xff, 0xc1,
+   0x80, 0x01, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x01, 0x00, 0x10, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s13acf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s13acf.bitmap
new file mode 100644
index 0000000..a3be30a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s13acf.bitmap
@@ -0,0 +1,111 @@
+#define s13acf_width 290
+#define s13acf_height 35
+static char s13acf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0xe3, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0xa6, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x82, 0x01, 0xc0, 0xc3, 0xe3, 0xc1, 0x18, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x08, 0x10, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x80, 0x04, 0x60, 0x66, 0x36, 0xc1, 0x19, 0x00, 0x80,
+   0x01, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0xf9, 0x1c, 0x08, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0xb0, 0x04, 0x30, 0x32, 0x3c, 0xa1, 0x09, 0x00,
+   0x80, 0x01, 0x00, 0x03, 0x00, 0x00, 0x60, 0xe0, 0x08, 0x0c, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0xf0, 0x03, 0x30, 0x30, 0xec, 0x81, 0x08,
+   0xff, 0x83, 0x01, 0x80, 0x01, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x04, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x30, 0x30, 0x9c, 0xc3,
+   0x1c, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x38, 0xc0, 0x00, 0x06,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x20, 0x24, 0x34,
+   0xc3, 0x1c, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x38, 0x80, 0x00,
+   0x06, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0xc0, 0xe3,
+   0xf7, 0x81, 0x1f, 0x00, 0xe0, 0x07, 0x80, 0x01, 0x00, 0x00, 0x18, 0x00,
+   0x1e, 0x02, 0xdc, 0x81, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x02, 0xc0, 0x00,
+   0xc0, 0xfc, 0x07, 0x70, 0x07, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x70, 0x0c, 0x00, 0x18,
+   0x00, 0x18, 0x03, 0xb2, 0x83, 0x01, 0xfc, 0xff, 0x00, 0x3f, 0x01, 0xc0,
+   0x00, 0xc0, 0x70, 0x06, 0xc8, 0x0e, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x68, 0x0c, 0x00,
+   0x18, 0x00, 0x18, 0x03, 0xb3, 0x81, 0x01, 0x00, 0x00, 0x80, 0xb1, 0x01,
+   0xc0, 0x00, 0xc0, 0x30, 0x06, 0xcc, 0x06, 0x00, 0x03, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x68, 0x0c,
+   0x00, 0x18, 0x00, 0x18, 0x03, 0x30, 0x80, 0x01, 0x00, 0x00, 0x80, 0xa0,
+   0x00, 0xff, 0x3f, 0xc0, 0x30, 0x06, 0xc0, 0x00, 0xfc, 0xff, 0x00, 0x30,
+   0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xc3, 0x60,
+   0x0c, 0x00, 0x38, 0x80, 0x18, 0x03, 0x18, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0xe0, 0x00, 0xff, 0x3f, 0xc0, 0x30, 0x06, 0x60, 0x00, 0xfc, 0xff, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63,
+   0x30, 0x06, 0x00, 0x38, 0x80, 0x18, 0x03, 0x18, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x60, 0x00, 0xc0, 0x00, 0xc0, 0x30, 0x06, 0x60, 0x00, 0x00, 0x03,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x63, 0x30, 0x06, 0x00, 0x30, 0x40, 0x18, 0x03, 0x1b, 0x81, 0x01, 0xfc,
+   0xff, 0x00, 0x60, 0x00, 0xc0, 0x00, 0xc0, 0x30, 0x06, 0x6c, 0x04, 0x00,
+   0x03, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x63, 0x31, 0x16, 0x00, 0x60, 0x60, 0x18, 0x02, 0x9f, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0xc0, 0x30, 0x06, 0x7c, 0x02,
+   0x00, 0x03, 0x00, 0x18, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x73, 0x31, 0x17, 0x00, 0xc0, 0x31, 0x3e, 0x06, 0xf7, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0xf0, 0x7d, 0x1f, 0xdc,
+   0x03, 0x00, 0x03, 0x00, 0x18, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0xe0, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x42, 0x00, 0x00, 0x00, 0x00, 0x30,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x42, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x18, 0x42, 0x00, 0x00, 0x00,
+   0x00, 0x68, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0d, 0x42, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x42, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66,
+   0x00, 0x00, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x3c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s13adf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s13adf.bitmap
new file mode 100644
index 0000000..6dc3e49
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s13adf.bitmap
@@ -0,0 +1,77 @@
+#define s13adf_width 170
+#define s13adf_height 40
+static char s13adf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xd8, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfc,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xb4, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x30, 0x00, 0x78, 0xe7, 0x07,
+   0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x09, 0x01, 0x02, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x90, 0x00, 0x4c, 0xc6, 0x0d, 0x9c, 0x01,
+   0xf0, 0x00, 0x00, 0x00, 0x30, 0x8f, 0x03, 0x01, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x96, 0x00, 0x4c, 0xc6, 0x08, 0x9a, 0x00, 0xc0, 0x00,
+   0x00, 0x00, 0x18, 0x0c, 0x81, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x7e, 0x00, 0x78, 0xc6, 0x08, 0x88, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x18, 0x0c, 0x80, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0xe4, 0xc6, 0x08, 0xcc, 0x01, 0x60, 0x00, 0x00, 0x00, 0x18, 0x08,
+   0xc0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xcc,
+   0xc6, 0x08, 0xcc, 0x01, 0x60, 0x00, 0x00, 0x00, 0x38, 0x00, 0xc0, 0x00,
+   0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x7c, 0xef, 0x1d,
+   0xf8, 0x01, 0x60, 0x00, 0x00, 0x00, 0xf8, 0xc0, 0x43, 0x80, 0x3b, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x3f, 0x1c, 0x03, 0x00, 0xf0, 0x07, 0x63, 0x40, 0x76, 0x30, 0x80, 0xff,
+   0x1f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x1a,
+   0x03, 0x00, 0xe0, 0x0f, 0x63, 0x60, 0x36, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0x1a, 0x03, 0x00,
+   0x00, 0x0e, 0x63, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xcf, 0x30, 0x18, 0x03, 0x00, 0x00, 0x0c,
+   0x63, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x18, 0x8c, 0x01, 0x00, 0x08, 0x0c, 0x63, 0x00,
+   0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x18, 0x8c, 0x01, 0x00, 0x08, 0x0c, 0x63, 0x60, 0x23, 0x30,
+   0x80, 0xff, 0x1f, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x58, 0x8c, 0x05, 0x00, 0x18, 0x0c, 0x43, 0xe0, 0x13, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x5c, 0xcc,
+   0x05, 0x00, 0x38, 0xc6, 0xc7, 0xe0, 0x1e, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0xc3, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0xf8, 0x03, 0x00,
+   0xc8, 0x03, 0xc0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x43, 0x08,
+   0x00, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x43, 0x08, 0x00, 0x00,
+   0xc0, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x43, 0x08, 0x00, 0x00, 0xa0, 0x09,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0xb0, 0x41, 0x08, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0xf0, 0x40, 0x08, 0x00, 0x00, 0xc0, 0x1c, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x0c, 0x00, 0x00, 0xc0, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07,
+   0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s14baf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s14baf.bitmap
new file mode 100644
index 0000000..94b28d3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s14baf.bitmap
@@ -0,0 +1,213 @@
+#define s14baf_width 500
+#define s14baf_height 40
+static char s14baf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xb0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0xe0, 0xf1, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x98, 0x69, 0x03,
+   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x00, 0x00, 0x00, 0x30, 0x13, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x80,
+   0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x30, 0x11, 0x0c, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x18, 0x20, 0x01, 0x00, 0x3c, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x30, 0x10,
+   0x0c, 0x02, 0x00, 0x78, 0x00, 0x00, 0x06, 0x00, 0x00, 0xe0, 0x03, 0x00,
+   0x00, 0xf8, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x0c, 0x2c, 0x01, 0x00, 0x36, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x39, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x18, 0x10, 0x1a, 0x01, 0x00, 0x6c, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x0c, 0xfc, 0x00,
+   0x18, 0x33, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x70,
+   0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x18, 0xe0, 0xf1, 0x01, 0x18, 0x66, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x30, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0x18, 0x33, 0xfe, 0x07, 0x03, 0x00, 0xfe, 0x87, 0x00,
+   0x00, 0x00, 0x38, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18,
+   0x66, 0xfc, 0x0f, 0x06, 0x00, 0xfe, 0x87, 0x00, 0x00, 0x00, 0x30, 0x30,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x51, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0xc0, 0x02, 0x00, 0x00, 0x1c, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x18, 0xa2, 0x00, 0x00, 0x06, 0x00, 0x00, 0xc0, 0x02, 0x00,
+   0x00, 0x30, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x59, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x0c, 0x60, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0xb2, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0xc0, 0x03, 0x00, 0x00, 0x30, 0x38, 0x04, 0xf8, 0x01, 0x80, 0x3b, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x3f, 0x3f, 0x00, 0xc0, 0x0f, 0x7c, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x0e,
+   0x60, 0x08, 0xf0, 0x03, 0x00, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3f, 0x7e, 0x00, 0x80,
+   0x1f, 0x7c, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x30, 0x1e, 0x06, 0x8c, 0x01,
+   0x40, 0x76, 0x30, 0x80, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0e, 0x60, 0x0c, 0x18, 0x03, 0x80, 0xec, 0x60, 0x00, 0xff,
+   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03,
+   0x06, 0x8c, 0x01, 0x60, 0x36, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x46,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x70, 0x0c, 0x18, 0x03, 0xc0, 0x6c,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x06, 0x86, 0x01, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00,
+   0xc0, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x70, 0x0c, 0x0c,
+   0x03, 0x00, 0x0c, 0x60, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x06, 0xc6, 0x00, 0x00, 0x03, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x30, 0x0c, 0x8c, 0x01, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x06, 0xc6, 0x00,
+   0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x00,
+   0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x38, 0x0c, 0x8c, 0x01, 0x00, 0x06, 0x60, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x06, 0xc6, 0x02, 0x60, 0x23, 0x30, 0x80, 0xff, 0x1f, 0xc0, 0x7f, 0x08,
+   0x00, 0x04, 0x00, 0x06, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x43,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x1d, 0x0c, 0x8c, 0x05, 0xc0, 0x46,
+   0x60, 0x00, 0xff, 0x3f, 0x80, 0xff, 0x10, 0x00, 0x08, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x04, 0xe6, 0x62, 0xe0, 0x13, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x43, 0x04, 0x00, 0x08, 0x00, 0x86, 0x19, 0x00, 0x16, 0x00, 0x00,
+   0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x2c, 0x0f, 0x08, 0xcc,
+   0xc5, 0xc0, 0x27, 0x60, 0x00, 0x00, 0x00, 0x00, 0x86, 0x08, 0x00, 0x10,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x0c, 0xfc, 0x61, 0xe0, 0x1e, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x83, 0x06, 0x00, 0x18, 0x00, 0x86, 0x19, 0x00,
+   0x1e, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xbc,
+   0x13, 0x18, 0xf8, 0xc3, 0xc0, 0x3d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x0d, 0x00, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+   0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x40,
+   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x83, 0x06, 0x3c, 0x18, 0x00,
+   0x86, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0xf0, 0x11, 0x18, 0x00, 0x80, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x0d, 0x78, 0x30, 0x00, 0x0c, 0x76, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x00, 0x40, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02,
+   0x36, 0x10, 0x00, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x1b, 0x10, 0x00, 0x80, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x6c, 0x20, 0x00, 0x0c, 0x7f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x02, 0x33, 0x10, 0x20, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x30, 0x00,
+   0x80, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x66, 0x20,
+   0x40, 0x0c, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x33, 0x10, 0x60, 0x83, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+   0x0f, 0x20, 0x00, 0x40, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x04, 0x66, 0x20, 0xc0, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x51, 0x10, 0xe0,
+   0x81, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x04, 0xa2, 0x20, 0xc0, 0x03, 0x24, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02,
+   0x59, 0x10, 0x00, 0x80, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0xb2, 0x20, 0x00, 0x80, 0x25,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x0f, 0x06, 0x3f, 0x18, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x0c, 0x7e, 0x30,
+   0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s15adf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s15adf.bitmap
new file mode 100644
index 0000000..5598966
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s15adf.bitmap
@@ -0,0 +1,75 @@
+#define s15adf_width 150
+#define s15adf_height 45
+static char s15adf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03,
+   0x00, 0x00, 0x00, 0x18, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x78, 0x7e, 0x36,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x0c, 0x00, 0x00, 0xcc, 0xc2, 0x61, 0x00, 0x00, 0x00, 0x80, 0x60,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x4c,
+   0x82, 0x41, 0x00, 0x00, 0x00, 0x80, 0xb0, 0x00, 0x3c, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x82, 0x41, 0x00, 0x00, 0x00,
+   0xf0, 0xf9, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x06, 0x42, 0x23, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x18, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x3c, 0x3e, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x09, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xff, 0x43, 0x00, 0x00,
+   0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x0f, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0xe0,
+   0x01, 0xc0, 0xcf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x80, 0x11, 0x00, 0xe0, 0x00, 0x60, 0x0c, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x11,
+   0x00, 0x00, 0x00, 0x60, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x0c,
+   0x03, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x06, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x03,
+   0x00, 0x00, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x30, 0x96, 0x09, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0xc0, 0x18, 0x00,
+   0x00, 0x00, 0x30, 0x97, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x8f, 0x07,
+   0x03, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0xf1, 0x07, 0x00, 0xc3, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0x07, 0x00, 0xe3, 0x0f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0xa8, 0x00, 0x10, 0xa3, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0xa0, 0x00, 0xb0,
+   0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0x60, 0xb0, 0x00, 0xf0, 0x80, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x31, 0xb0,
+   0x00, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x90, 0x01, 0x00, 0xf0, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s15aef.bitmap b/src/axiom-website/hyperdoc/bitmaps/s15aef.bitmap
new file mode 100644
index 0000000..d073597
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s15aef.bitmap
@@ -0,0 +1,65 @@
+#define s15aef_width 137
+#define s15aef_height 41
+static char s15aef_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x1d, 0x00, 0x00, 0x00, 0x00,
+   0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00,
+   0xcf, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x98, 0x01, 0x00, 0x80, 0x59, 0x1b, 0x00, 0x00, 0x00, 0x20,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x80,
+   0x09, 0x03, 0x00, 0x00, 0x00, 0x20, 0x2c, 0x00, 0x0f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x09, 0x00, 0x00, 0x00, 0x7c,
+   0x3e, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0,
+   0x60, 0x09, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0xc0, 0xff, 0x10, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x10, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
+   0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xc0,
+   0x00, 0x00, 0xc0, 0x07, 0x00, 0x78, 0x00, 0xf0, 0xf3, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x60, 0x04, 0x00, 0x38,
+   0x00, 0x18, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x18, 0xc3, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00,
+   0x00, 0x0c, 0xc3, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0xc0,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x61, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x8c, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x60,
+   0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x8c, 0x65, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x30, 0x00, 0x30, 0x06, 0x00, 0x00,
+   0x00, 0xcc, 0x65, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
+   0xcc, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xe3, 0xc1, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xfe, 0x00, 0x60,
+   0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0xff, 0x00, 0x60, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x15, 0x00, 0x62,
+   0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x0c, 0x14, 0x00, 0x36, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x16, 0x00, 0x1e,
+   0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x06, 0x16, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x32, 0x00, 0x00,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17acf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17acf.bitmap
new file mode 100644
index 0000000..f252b85
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17acf.bitmap
@@ -0,0 +1,13 @@
+#define s17acf_width 52
+#define s17acf_height 16
+static char s17acf_bits[] = {
+   0xfc, 0xe0, 0x01, 0x08, 0x00, 0x20, 0x00, 0x70, 0x40, 0x00, 0x0c, 0x00,
+   0x60, 0x00, 0x60, 0x20, 0x00, 0x04, 0x00, 0xc0, 0x00, 0xe0, 0x10, 0x00,
+   0x06, 0xdc, 0x81, 0x00, 0xc0, 0x18, 0x00, 0x06, 0xb2, 0x83, 0x01, 0xc0,
+   0x0c, 0x00, 0x02, 0xb3, 0x81, 0x01, 0xc0, 0x07, 0x06, 0x03, 0x30, 0x80,
+   0x01, 0x80, 0x83, 0x19, 0x03, 0x18, 0x80, 0x01, 0x80, 0x81, 0x19, 0x03,
+   0x18, 0x80, 0x01, 0x80, 0x81, 0x10, 0x03, 0x1b, 0x81, 0x01, 0x80, 0x81,
+   0x10, 0x03, 0x9f, 0x80, 0x01, 0xc0, 0x80, 0x10, 0x03, 0xf7, 0x80, 0x01,
+   0xc0, 0x80, 0x10, 0x02, 0x00, 0xc0, 0x00, 0xf0, 0x83, 0x10, 0x06, 0x00,
+   0xe0, 0x00, 0x00, 0x80, 0x19, 0x06, 0x00, 0x60, 0x00, 0x00, 0x00, 0x0f,
+   0x04, 0x00, 0x20, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17adf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17adf.bitmap
new file mode 100644
index 0000000..b1945f1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17adf.bitmap
@@ -0,0 +1,13 @@
+#define s17adf_width 52
+#define s17adf_height 16
+static char s17adf_bits[] = {
+   0xfc, 0xe0, 0x01, 0x08, 0x00, 0x20, 0x00, 0x70, 0x40, 0x00, 0x0c, 0x00,
+   0x60, 0x00, 0x60, 0x20, 0x00, 0x06, 0x00, 0xc0, 0x00, 0xe0, 0x10, 0x00,
+   0x02, 0x00, 0x80, 0x00, 0xc0, 0x18, 0x00, 0x02, 0xdc, 0x81, 0x01, 0xc0,
+   0x0c, 0x00, 0x02, 0xb2, 0x83, 0x01, 0xc0, 0x07, 0x06, 0x03, 0xb3, 0x81,
+   0x01, 0x80, 0x83, 0x07, 0x03, 0x30, 0x80, 0x01, 0x80, 0x01, 0x06, 0x03,
+   0x18, 0x80, 0x01, 0x80, 0x01, 0x06, 0x03, 0x18, 0x80, 0x01, 0x80, 0x01,
+   0x06, 0x03, 0x1b, 0x81, 0x01, 0xc0, 0x00, 0x06, 0x03, 0x9f, 0x80, 0x01,
+   0xc0, 0x00, 0x06, 0x02, 0xf7, 0xc0, 0x00, 0xf0, 0x03, 0x06, 0x06, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x60, 0x00, 0x00, 0x80, 0x1f,
+   0x04, 0x00, 0x20, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17aef.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17aef.bitmap
new file mode 100644
index 0000000..0ce7fca
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17aef.bitmap
@@ -0,0 +1,13 @@
+#define s17aef_width 55
+#define s17aef_height 16
+static char s17aef_bits[] = {
+   0x00, 0xfc, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00,
+   0x80, 0x01, 0x00, 0x30, 0x00, 0x10, 0x00, 0x80, 0x03, 0x00, 0x30, 0x00,
+   0x18, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x18, 0x70, 0x07, 0x06, 0x00,
+   0x18, 0x00, 0x08, 0xc8, 0x0e, 0x06, 0x00, 0x18, 0x18, 0x0c, 0xcc, 0x06,
+   0x06, 0x00, 0x18, 0x66, 0x0c, 0xc0, 0x00, 0x06, 0x00, 0x18, 0x66, 0x0c,
+   0x60, 0x00, 0x06, 0x00, 0x0c, 0x42, 0x0c, 0x60, 0x00, 0x06, 0x40, 0x0c,
+   0x42, 0x0c, 0x6c, 0x04, 0x06, 0xe0, 0x0c, 0x42, 0x0c, 0x7c, 0x02, 0x06,
+   0x60, 0x06, 0x42, 0x08, 0xdc, 0x03, 0x03, 0x60, 0x07, 0x42, 0x18, 0x00,
+   0x00, 0x01, 0xc0, 0x01, 0x66, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x3c,
+   0x10, 0x00, 0x80, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17aef1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17aef1.bitmap
new file mode 100644
index 0000000..e9ca6ce
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17aef1.bitmap
@@ -0,0 +1,13 @@
+#define s17aef1_width 52
+#define s17aef1_height 16
+static char s17aef1_bits[] = {
+   0x80, 0x1f, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
+   0x30, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00,
+   0x03, 0x00, 0x40, 0x00, 0x00, 0x06, 0x00, 0x03, 0xee, 0xc0, 0x00, 0x00,
+   0x03, 0x00, 0x01, 0xd9, 0xc1, 0x00, 0x00, 0x03, 0x83, 0x81, 0xd9, 0xc0,
+   0x00, 0x00, 0xc3, 0x8c, 0x01, 0x18, 0xc0, 0x00, 0x00, 0xc3, 0x8c, 0x01,
+   0x0c, 0xc0, 0x00, 0x80, 0x41, 0x88, 0x01, 0x0c, 0xc0, 0x00, 0x88, 0x41,
+   0x88, 0x81, 0x8d, 0xc0, 0x00, 0x9c, 0x41, 0x88, 0x81, 0x4f, 0xc0, 0x00,
+   0xcc, 0x40, 0x08, 0x81, 0x7b, 0x40, 0x00, 0xec, 0x40, 0x08, 0x03, 0x00,
+   0x60, 0x00, 0x38, 0xc0, 0x0c, 0x03, 0x00, 0x30, 0x00, 0x00, 0x80, 0x07,
+   0x02, 0x00, 0x10, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17aff.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17aff.bitmap
new file mode 100644
index 0000000..834f4e9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17aff.bitmap
@@ -0,0 +1,13 @@
+#define s17aff_width 52
+#define s17aff_height 16
+static char s17aff_bits[] = {
+   0x00, 0x3f, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00,
+   0x60, 0x00, 0x00, 0x0c, 0x00, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00,
+   0x06, 0x00, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x06, 0xdc, 0x81, 0x00, 0x00,
+   0x06, 0x00, 0x02, 0xb2, 0x83, 0x01, 0x00, 0x06, 0x06, 0x03, 0xb3, 0x81,
+   0x01, 0x00, 0x86, 0x07, 0x03, 0x30, 0x80, 0x01, 0x00, 0x06, 0x06, 0x03,
+   0x18, 0x80, 0x01, 0x00, 0x03, 0x06, 0x03, 0x18, 0x80, 0x01, 0x10, 0x03,
+   0x06, 0x03, 0x1b, 0x81, 0x01, 0x38, 0x03, 0x06, 0x03, 0x9f, 0x80, 0x01,
+   0x98, 0x01, 0x06, 0x02, 0xf7, 0x80, 0x00, 0xd8, 0x01, 0x06, 0x06, 0x00,
+   0xc0, 0x00, 0x70, 0x00, 0x06, 0x06, 0x00, 0x60, 0x00, 0x00, 0x80, 0x1f,
+   0x04, 0x00, 0x20, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17aff1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17aff1.bitmap
new file mode 100644
index 0000000..8cd6d6a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17aff1.bitmap
@@ -0,0 +1,13 @@
+#define s17aff1_width 52
+#define s17aff1_height 16
+static char s17aff1_bits[] = {
+   0x00, 0x3f, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00,
+   0x60, 0x00, 0x00, 0x0c, 0x00, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00,
+   0x06, 0x00, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x06, 0xdc, 0x81, 0x01, 0x00,
+   0x06, 0x00, 0x02, 0xb2, 0x83, 0x01, 0x00, 0x06, 0x06, 0x03, 0xb3, 0x81,
+   0x01, 0x00, 0x86, 0x07, 0x03, 0x30, 0x80, 0x01, 0x00, 0x06, 0x06, 0x03,
+   0x18, 0x80, 0x01, 0x00, 0x03, 0x06, 0x03, 0x18, 0x80, 0x01, 0x10, 0x03,
+   0x06, 0x03, 0x1b, 0x81, 0x01, 0x38, 0x03, 0x06, 0x03, 0x9f, 0x80, 0x01,
+   0x98, 0x01, 0x06, 0x02, 0xf7, 0xc0, 0x00, 0xd8, 0x01, 0x06, 0x06, 0x00,
+   0xe0, 0x00, 0x70, 0x00, 0x06, 0x06, 0x00, 0x60, 0x00, 0x00, 0x80, 0x1f,
+   0x04, 0x00, 0x20, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17dcf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17dcf.bitmap
new file mode 100644
index 0000000..127c07a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17dcf.bitmap
@@ -0,0 +1,17 @@
+#define 1_width 75
+#define 1_height 16
+static char 1_bits[] = {
+   0xf8, 0xc1, 0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0xe0, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0xc0, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x00, 0x30, 0x00, 0xc0, 0x21, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x30, 0x00, 0x80, 0x31, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38,
+   0x21, 0x00, 0x80, 0x19, 0x00, 0x00, 0x00, 0x00, 0x10, 0xf8, 0x61, 0x00,
+   0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc4, 0x60, 0x00, 0x00, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x30, 0x60, 0x00, 0x00, 0x03, 0x67, 0x60, 0xc0, 0x0e,
+   0x18, 0x18, 0x60, 0x00, 0x00, 0x03, 0x66, 0x60, 0xc0, 0x1b, 0x18, 0x8c,
+   0x60, 0x00, 0x80, 0x01, 0x22, 0x60, 0xa0, 0x19, 0x18, 0xfe, 0x70, 0x00,
+   0x80, 0x01, 0x32, 0xfc, 0x83, 0x18, 0x10, 0x72, 0x30, 0x00, 0xe0, 0x07,
+   0x1b, 0x60, 0xc0, 0x28, 0x30, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0f, 0x60,
+   0xc0, 0x2c, 0x30, 0x00, 0x18, 0x00, 0x00, 0x00, 0x07, 0x60, 0x40, 0x1c,
+   0x20, 0x00, 0x08, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17def.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17def.bitmap
new file mode 100644
index 0000000..9fa2d59
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17def.bitmap
@@ -0,0 +1,17 @@
+#define 1_width 75
+#define 1_height 16
+static char 1_bits[] = {
+   0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x0c, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x4e,
+   0x0c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7e, 0x08, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x31, 0x18, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x0c, 0x18, 0x00, 0x80, 0xe1, 0x0c, 0x18, 0xd8, 0x01,
+   0x06, 0x06, 0x18, 0x00, 0x88, 0xc1, 0x0c, 0x18, 0x78, 0x03, 0x06, 0x23,
+   0x18, 0x00, 0x9c, 0x41, 0x04, 0x18, 0x34, 0x03, 0x86, 0x3f, 0x18, 0x00,
+   0xcc, 0x40, 0x06, 0xff, 0x10, 0x03, 0x84, 0x1c, 0x0c, 0x00, 0xec, 0x60,
+   0x03, 0x18, 0x18, 0x05, 0x0c, 0x00, 0x06, 0x00, 0x38, 0xe0, 0x01, 0x18,
+   0x98, 0x05, 0x0c, 0x00, 0x06, 0x00, 0x00, 0xe0, 0x00, 0x18, 0x88, 0x03,
+   0x08, 0x00, 0x02, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17dlf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17dlf.bitmap
new file mode 100644
index 0000000..111e318
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17dlf.bitmap
@@ -0,0 +1,31 @@
+#define 1_width 81
+#define 1_height 30
+static char 1_bits[] = {
+   0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x81,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa0, 0x81, 0x00,
+   0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x80, 0x81, 0x00, 0x00,
+   0x04, 0x00, 0x06, 0x00, 0xc0, 0xcf, 0x4f, 0x80, 0x80, 0x00, 0x00, 0x02,
+   0x00, 0x0c, 0x00, 0x00, 0x83, 0x41, 0x80, 0x80, 0x00, 0x00, 0x03, 0x00,
+   0x08, 0x00, 0x00, 0x83, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x01, 0x00, 0x18,
+   0x00, 0x80, 0x81, 0xc1, 0xc0, 0xc0, 0x00, 0x80, 0x01, 0x00, 0x10, 0x00,
+   0x80, 0x81, 0x81, 0x58, 0x40, 0x00, 0x80, 0x01, 0x00, 0x30, 0x00, 0x80,
+   0xc1, 0x00, 0x79, 0x20, 0x00, 0x80, 0x00, 0x27, 0x30, 0x00, 0x80, 0xff,
+   0x00, 0x02, 0x10, 0x00, 0xc0, 0x00, 0x3f, 0x30, 0x00, 0xc0, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x80, 0x18, 0x30, 0x00, 0xc0, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x0c, 0x30, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x06, 0x30, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x0c, 0x00,
+   0xc0, 0x00, 0x03, 0x30, 0x00, 0x60, 0x60, 0x00, 0x00, 0x0c, 0x00, 0xc0,
+   0x80, 0x11, 0x30, 0x00, 0x60, 0x60, 0xe0, 0x0c, 0x0c, 0xd8, 0x81, 0xc0,
+   0x1f, 0x30, 0x00, 0xf8, 0xfd, 0xc0, 0x0c, 0x0c, 0x78, 0x83, 0x41, 0x0e,
+   0x30, 0x00, 0x00, 0x00, 0x40, 0x04, 0x0c, 0x34, 0x83, 0x01, 0x00, 0x10,
+   0x00, 0x00, 0x00, 0x40, 0xc6, 0xff, 0x10, 0x03, 0x01, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x60, 0x03, 0x0c, 0x18, 0x05, 0x03, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0xe0, 0x01, 0x0c, 0x98, 0x05, 0x02, 0x00, 0x0c, 0x00, 0x00, 0x00,
+   0xe0, 0x00, 0x0c, 0x88, 0x03, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17dlf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17dlf1.bitmap
new file mode 100644
index 0000000..762035d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17dlf1.bitmap
@@ -0,0 +1,28 @@
+#define s17dlf1_width 80
+#define s17dlf1_height 29
+static char s17dlf1_bits[] = {
+   0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x78,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0xc0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0x60, 0x80, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00,
+   0x20, 0x60, 0x80, 0x00, 0x00, 0x01, 0x80, 0x01, 0xe0, 0xe7, 0x27, 0x60,
+   0x80, 0x00, 0x80, 0x00, 0x00, 0x03, 0x80, 0xc1, 0x20, 0x60, 0x80, 0x00,
+   0xc0, 0x00, 0x00, 0x02, 0x80, 0xc1, 0x60, 0xf8, 0xc1, 0x00, 0x40, 0x00,
+   0x00, 0x06, 0xc0, 0xc0, 0x60, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x00, 0x04,
+   0xc0, 0xc0, 0x40, 0x00, 0x40, 0x00, 0x60, 0x00, 0x00, 0x0c, 0xc0, 0x60,
+   0x80, 0x00, 0x20, 0x00, 0x20, 0x80, 0x13, 0x0c, 0xc0, 0x7f, 0x00, 0x01,
+   0x10, 0x00, 0x30, 0x80, 0x1f, 0x0c, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x40, 0x0c, 0x0c, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+   0x06, 0x0c, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x0c,
+   0x60, 0x30, 0x00, 0x00, 0x03, 0x00, 0x30, 0x80, 0x01, 0x0c, 0x30, 0x30,
+   0x00, 0x00, 0x03, 0x00, 0x30, 0xc0, 0x08, 0x0c, 0x30, 0x30, 0x38, 0x03,
+   0x03, 0x76, 0x20, 0xe0, 0x0f, 0x0c, 0xf8, 0x7e, 0x30, 0x03, 0x03, 0xde,
+   0x60, 0x20, 0x07, 0x0c, 0x00, 0x00, 0x10, 0x01, 0x03, 0xcd, 0x60, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x90, 0xf1, 0x3f, 0xc4, 0x40, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0xd8, 0x00, 0x03, 0x46, 0xc1, 0x00, 0x00, 0x02, 0x00, 0x00,
+   0x78, 0x00, 0x03, 0x66, 0x81, 0x00, 0x00, 0x03, 0x00, 0x00, 0x38, 0x00,
+   0x03, 0xe2, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s17dlf2.bitmap b/src/axiom-website/hyperdoc/bitmaps/s17dlf2.bitmap
new file mode 100644
index 0000000..578d74f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s17dlf2.bitmap
@@ -0,0 +1,28 @@
+#define s17dlf2_width 80
+#define s17dlf2_height 29
+static char s17dlf2_bits[] = {
+   0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x98,
+   0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x98, 0xc1, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x98, 0xc1, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x20, 0xc0, 0x80, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00,
+   0x20, 0xc0, 0x80, 0x00, 0x00, 0x02, 0x80, 0x01, 0xe0, 0xe7, 0x27, 0x20,
+   0x81, 0x00, 0x00, 0x01, 0x00, 0x03, 0x80, 0xc1, 0x20, 0x10, 0x81, 0x00,
+   0x80, 0x01, 0x00, 0x02, 0x80, 0xc1, 0x60, 0xf8, 0xc1, 0x00, 0x80, 0x00,
+   0x00, 0x06, 0xc0, 0xc0, 0x60, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x04,
+   0xc0, 0xc0, 0x40, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x60,
+   0x80, 0x00, 0x20, 0x00, 0x40, 0x80, 0x13, 0x0c, 0xc0, 0x7f, 0x00, 0x01,
+   0x10, 0x00, 0x60, 0x80, 0x1f, 0x0c, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0x40, 0x0c, 0x0c, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x06, 0x0c, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x03, 0x0c,
+   0x60, 0x30, 0x00, 0x00, 0x06, 0x00, 0x60, 0x80, 0x01, 0x0c, 0x30, 0x30,
+   0x00, 0x00, 0x06, 0x00, 0x60, 0xc0, 0x08, 0x0c, 0x30, 0x30, 0x38, 0x03,
+   0x06, 0x76, 0x40, 0xe0, 0x0f, 0x0c, 0xfc, 0x7e, 0x30, 0x03, 0x06, 0xde,
+   0xc0, 0x20, 0x07, 0x0c, 0x00, 0x00, 0x10, 0x01, 0x06, 0xcd, 0xc0, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x90, 0xe1, 0x7f, 0xc4, 0x80, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0xd8, 0x00, 0x06, 0x46, 0x81, 0x01, 0x00, 0x02, 0x00, 0x00,
+   0x78, 0x00, 0x06, 0x66, 0x01, 0x01, 0x00, 0x03, 0x00, 0x00, 0x38, 0x00,
+   0x06, 0xe2, 0x00, 0x02, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s18acf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s18acf.bitmap
new file mode 100644
index 0000000..2d47ce0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s18acf.bitmap
@@ -0,0 +1,28 @@
+#define s18acf_width 70
+#define s18acf_height 33
+static char s18acf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x18, 0x00, 0x00, 0x80, 0x1f, 0x1f, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x06, 0x06, 0x00, 0x06, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x01,
+   0x00, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x03, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x13, 0x00, 0x00, 0x01, 0xee, 0xc0, 0x00, 0x00, 0x00, 0x3b, 0x00,
+   0x80, 0x01, 0xd9, 0xc1, 0x00, 0x00, 0x80, 0x37, 0x80, 0x81, 0x81, 0xd9,
+   0xc0, 0x00, 0x00, 0x80, 0x63, 0x60, 0x86, 0x01, 0x18, 0xc0, 0x00, 0x00,
+   0x80, 0x61, 0x60, 0x86, 0x01, 0x0c, 0xc0, 0x00, 0x00, 0x80, 0xe1, 0x20,
+   0x84, 0x01, 0x0c, 0xc0, 0x00, 0x00, 0xc0, 0xc0, 0x20, 0x84, 0x81, 0x8d,
+   0xc0, 0x00, 0x00, 0xc0, 0xc0, 0x20, 0x04, 0x81, 0x4f, 0xc0, 0x30, 0x00,
+   0xf0, 0xe3, 0x23, 0x04, 0x83, 0x7b, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x20,
+   0x04, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x02, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x06, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s18acf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s18acf1.bitmap
new file mode 100644
index 0000000..b5dc6ce
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s18acf1.bitmap
@@ -0,0 +1,14 @@
+#define s18acf1_width 60
+#define s18acf1_height 16
+static char s18acf1_bits[] = {
+   0x80, 0x1f, 0x1f, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x06, 0x06, 0x00,
+   0x06, 0x00, 0x30, 0x00, 0x00, 0x06, 0x01, 0x00, 0x02, 0x00, 0x60, 0x00,
+   0x00, 0xc3, 0x00, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x63, 0x00, 0x00,
+   0x03, 0xee, 0xc0, 0x00, 0x00, 0x13, 0x00, 0x00, 0x01, 0xd9, 0xc1, 0x00,
+   0x00, 0x3b, 0x80, 0x81, 0x81, 0xd9, 0xc0, 0x00, 0x80, 0x37, 0x60, 0x86,
+   0x01, 0x18, 0xc0, 0x00, 0x80, 0x63, 0x60, 0x86, 0x01, 0x0c, 0xc0, 0x00,
+   0x80, 0x61, 0x20, 0x84, 0x01, 0x0c, 0xc0, 0x00, 0x80, 0xe1, 0x20, 0x84,
+   0x81, 0x8d, 0xc0, 0x00, 0xc0, 0xc0, 0x20, 0x84, 0x81, 0x4f, 0x40, 0x00,
+   0xc0, 0xc0, 0x20, 0x04, 0x81, 0x7b, 0x60, 0x00, 0xf0, 0xe3, 0x23, 0x04,
+   0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x60, 0x06, 0x03, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0xc0, 0x03, 0x02, 0x00, 0x10, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s18adf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s18adf.bitmap
new file mode 100644
index 0000000..54288ba
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s18adf.bitmap
@@ -0,0 +1,28 @@
+#define s18adf_width 70
+#define s18adf_height 33
+static char s18adf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x18, 0x00, 0x00, 0x80, 0x1f, 0x1f, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x06, 0x06, 0x00, 0x06, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x01,
+   0x00, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x03, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00,
+   0x00, 0x13, 0x00, 0x00, 0x01, 0xee, 0xc0, 0x00, 0x00, 0x00, 0x3b, 0x00,
+   0x80, 0x01, 0xd9, 0xc1, 0x00, 0x00, 0x80, 0x37, 0x80, 0x81, 0x81, 0xd9,
+   0xc0, 0x00, 0x00, 0x80, 0x63, 0xe0, 0x81, 0x01, 0x18, 0xc0, 0x00, 0x00,
+   0x80, 0x61, 0x80, 0x81, 0x01, 0x0c, 0xc0, 0x00, 0x00, 0x80, 0xe1, 0x80,
+   0x81, 0x01, 0x0c, 0xc0, 0x00, 0x00, 0xc0, 0xc0, 0x80, 0x81, 0x81, 0x8d,
+   0xc0, 0x00, 0x00, 0xc0, 0xc0, 0x80, 0x01, 0x81, 0x4f, 0xc0, 0x30, 0x00,
+   0xf0, 0xe3, 0x83, 0x01, 0x83, 0x7b, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x80,
+   0x01, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x02, 0x00,
+   0x60, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x06, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s18adf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s18adf1.bitmap
new file mode 100644
index 0000000..be3f202
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s18adf1.bitmap
@@ -0,0 +1,14 @@
+#define s18adf1_width 60
+#define s18adf1_height 16
+static char s18adf1_bits[] = {
+   0x80, 0x1f, 0x1f, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x06, 0x06, 0x00,
+   0x06, 0x00, 0x30, 0x00, 0x00, 0x06, 0x01, 0x00, 0x02, 0x00, 0x60, 0x00,
+   0x00, 0xc3, 0x00, 0x00, 0x03, 0x00, 0x60, 0x00, 0x00, 0x63, 0x00, 0x00,
+   0x03, 0xee, 0xe0, 0x00, 0x00, 0x13, 0x00, 0x00, 0x01, 0xd9, 0xc1, 0x00,
+   0x00, 0x3b, 0x80, 0x81, 0x81, 0xd9, 0xc0, 0x00, 0x80, 0x37, 0xe0, 0x81,
+   0x01, 0x18, 0xc0, 0x00, 0x80, 0x63, 0x80, 0x81, 0x01, 0x0c, 0xc0, 0x00,
+   0x80, 0x61, 0x80, 0x81, 0x01, 0x0c, 0xc0, 0x00, 0x80, 0xe1, 0x80, 0x81,
+   0x81, 0x8d, 0xc0, 0x00, 0xc0, 0xc0, 0x80, 0x81, 0x81, 0x4f, 0x60, 0x00,
+   0xc0, 0xc0, 0x80, 0x01, 0x81, 0x7b, 0x60, 0x00, 0xf0, 0xe3, 0x83, 0x01,
+   0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x01, 0x03, 0x00, 0x30, 0x00,
+   0x00, 0x00, 0xe0, 0x07, 0x02, 0x00, 0x10, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s18aef.bitmap b/src/axiom-website/hyperdoc/bitmaps/s18aef.bitmap
new file mode 100644
index 0000000..f05c9e1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s18aef.bitmap
@@ -0,0 +1,23 @@
+#define s18aef_width 58
+#define s18aef_height 30
+static char s18aef_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x3f, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x03,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0xee, 0xc0, 0x00, 0x00,
+   0x00, 0x06, 0x80, 0x01, 0xd9, 0xc1, 0x00, 0x00, 0x00, 0x03, 0x83, 0x81,
+   0xd9, 0xc0, 0x00, 0x00, 0x00, 0xc3, 0x8c, 0x01, 0x18, 0xc0, 0x00, 0x00,
+   0x00, 0xc3, 0x8c, 0x01, 0x0c, 0xc0, 0x00, 0x00, 0x00, 0x43, 0x88, 0x01,
+   0x0c, 0xc0, 0x00, 0x00, 0x80, 0x41, 0x88, 0x81, 0x8d, 0xc0, 0x00, 0x00,
+   0x80, 0x41, 0x08, 0x81, 0x4f, 0xc0, 0x30, 0x00, 0xe0, 0x47, 0x08, 0x83,
+   0x7b, 0xc0, 0x30, 0x00, 0x00, 0x40, 0x08, 0x03, 0x00, 0x40, 0x00, 0x00,
+   0x00, 0xc0, 0x0c, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x07, 0x06,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s18aef1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s18aef1.bitmap
new file mode 100644
index 0000000..627a33c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s18aef1.bitmap
@@ -0,0 +1,13 @@
+#define s18aef1_width 52
+#define s18aef1_height 16
+static char s18aef1_bits[] = {
+   0xc0, 0x0f, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x01, 0x00,
+   0x0c, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x18, 0x00, 0x80, 0x01, 0xc0,
+   0x00, 0x00, 0x10, 0x00, 0x80, 0x01, 0xc0, 0x80, 0x3b, 0x30, 0x00, 0x80,
+   0x01, 0x40, 0x40, 0x76, 0x30, 0x00, 0x80, 0xc1, 0x60, 0x60, 0x36, 0x30,
+   0x00, 0xc0, 0x30, 0x63, 0x00, 0x06, 0x30, 0x00, 0xc0, 0x30, 0x63, 0x00,
+   0x03, 0x30, 0x00, 0xc0, 0x10, 0x62, 0x00, 0x03, 0x30, 0x00, 0xc0, 0x10,
+   0x62, 0x60, 0x23, 0x30, 0x00, 0x60, 0x10, 0x62, 0xe0, 0x13, 0x38, 0x00,
+   0x60, 0x10, 0x42, 0xe0, 0x1e, 0x18, 0x00, 0xf8, 0x11, 0xc2, 0x00, 0x00,
+   0x1c, 0x00, 0x00, 0x30, 0xc3, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xe0, 0x81,
+   0x00, 0x00, 0x04, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s18aff.bitmap b/src/axiom-website/hyperdoc/bitmaps/s18aff.bitmap
new file mode 100644
index 0000000..033ba87
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s18aff.bitmap
@@ -0,0 +1,23 @@
+#define s18aff_width 58
+#define s18aff_height 30
+static char s18aff_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x3f, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x60, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x03,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0xee, 0xc0, 0x00, 0x00,
+   0x00, 0x06, 0x80, 0x01, 0xd9, 0xc1, 0x00, 0x00, 0x00, 0x03, 0x83, 0x81,
+   0xd9, 0xc0, 0x00, 0x00, 0x00, 0xc3, 0x83, 0x01, 0x18, 0xc0, 0x00, 0x00,
+   0x00, 0x03, 0x83, 0x01, 0x0c, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x83, 0x01,
+   0x0c, 0xc0, 0x00, 0x00, 0x80, 0x01, 0x83, 0x81, 0x8d, 0xc0, 0x00, 0x00,
+   0x80, 0x01, 0x03, 0x81, 0x4f, 0xc0, 0x30, 0x00, 0xe0, 0x07, 0x03, 0x83,
+   0x7b, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x06,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s18aff1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s18aff1.bitmap
new file mode 100644
index 0000000..8801a74
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s18aff1.bitmap
@@ -0,0 +1,13 @@
+#define s18aff1_width 52
+#define s18aff1_height 16
+static char s18aff1_bits[] = {
+   0xc0, 0x0f, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x01, 0x00,
+   0x0c, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x1c, 0x00, 0x80, 0x01, 0xc0,
+   0x00, 0x00, 0x18, 0x00, 0x80, 0x01, 0xc0, 0x80, 0x3b, 0x30, 0x00, 0x80,
+   0x01, 0x40, 0x40, 0x76, 0x30, 0x00, 0x80, 0xc1, 0x60, 0x60, 0x36, 0x30,
+   0x00, 0xc0, 0xf0, 0x60, 0x00, 0x06, 0x30, 0x00, 0xc0, 0xc0, 0x60, 0x00,
+   0x03, 0x30, 0x00, 0xc0, 0xc0, 0x60, 0x00, 0x03, 0x30, 0x00, 0xc0, 0xc0,
+   0x60, 0x60, 0x23, 0x30, 0x00, 0x60, 0xc0, 0x60, 0xe0, 0x13, 0x10, 0x00,
+   0x60, 0xc0, 0x40, 0xe0, 0x1e, 0x18, 0x00, 0xf8, 0xc1, 0xc0, 0x00, 0x00,
+   0x1c, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xf0, 0x83,
+   0x00, 0x00, 0x04, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s18dcf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s18dcf.bitmap
new file mode 100644
index 0000000..b156fae
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s18dcf.bitmap
@@ -0,0 +1,18 @@
+#define s18dcf_width 85
+#define s18dcf_height 16
+static char s18dcf_bits[] = {
+   0x00, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00,
+   0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x30,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x18, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xc0, 0x00, 0x00, 0x18, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x70, 0xc2, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0xf0, 0x83, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0x88, 0x81, 0x01, 0x00, 0xbc, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0xc0, 0x80, 0x01, 0x00, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x60, 0x80, 0x01, 0x00, 0x0c, 0x03, 0x67, 0xc0, 0xc0, 0x0e, 0x0c, 0x30,
+   0x80, 0x01, 0x00, 0x0c, 0x07, 0x66, 0xc0, 0xc0, 0x1b, 0x0c, 0x18, 0x81,
+   0x01, 0x00, 0x06, 0x06, 0x22, 0xc0, 0xa0, 0x19, 0x1c, 0xfc, 0xc1, 0x00,
+   0x00, 0x06, 0x06, 0x32, 0xf8, 0x87, 0x18, 0x18, 0xe4, 0xc0, 0x00, 0x80,
+   0x1f, 0x1f, 0x1b, 0xc0, 0xc0, 0x28, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x0f, 0xc0, 0xc0, 0x2c, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x07, 0xc0, 0x40, 0x1c, 0x20, 0x00, 0x20, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s18def.bitmap b/src/axiom-website/hyperdoc/bitmaps/s18def.bitmap
new file mode 100644
index 0000000..21caef9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s18def.bitmap
@@ -0,0 +1,17 @@
+#define s18def_width 80
+#define s18def_height 16
+static char s18def_bits[] = {
+   0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+   0x0c, 0x00, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x38,
+   0xc1, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf8, 0x81, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc4, 0x80, 0x01, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x30, 0x80, 0x01, 0x00, 0x0c, 0x67, 0x60, 0xc0, 0x0e,
+   0x06, 0x18, 0x80, 0x01, 0x00, 0x0c, 0x66, 0x60, 0xc0, 0x1b, 0x06, 0x8c,
+   0x80, 0x01, 0x00, 0x06, 0x22, 0x60, 0xa0, 0x19, 0x0e, 0xfe, 0xc0, 0x01,
+   0x00, 0x06, 0x32, 0xfc, 0x83, 0x18, 0x0c, 0x72, 0xc0, 0x00, 0x80, 0x1f,
+   0x1b, 0x60, 0xc0, 0x28, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, 0x0f, 0x60,
+   0xc0, 0x2c, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, 0x07, 0x60, 0x40, 0x1c,
+   0x10, 0x00, 0x20, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s21baf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s21baf.bitmap
new file mode 100644
index 0000000..71abb23
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s21baf.bitmap
@@ -0,0 +1,170 @@
+#define s21baf_width 308
+#define s21baf_height 64
+static char s21baf_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc1,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xe7,0x67,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x80,0x26,0x1c,0x06,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x1e,0x00,0x00,0xc0,0x26,0x18,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xc3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0xc0,0x20,0x18,
+ 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x18,0x00,0x00,0xc0,0x20,0x34,0x02,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,
+ 0x60,0xc0,0xe3,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf8,0xf9,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x18,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,
+ 0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x60,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x61,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x18,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x86,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,
+ 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0x30,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc6,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x18,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,
+ 0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x80,
+ 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x38,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe6,0xb2,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x0c,0x00,
+ 0x00,0x00,0x00,0xfe,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xf1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x80,0xff,
+ 0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x06,0x03,0x00,0x30,0x00,0x00,0x00,
+ 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x00,0x06,0x03,0x00,0x10,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x03,0x03,0x00,0x18,
+ 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0x00,0x00,0x83,0x03,0x00,0x18,0x00,0x00,0x00,0x00,0x60,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0xc3,
+ 0x01,0x00,0x08,0x70,0x07,0x00,0xc7,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0xff,0x00,0x00,0x0c,0xc8,0x0e,0x80,
+ 0xc6,0x60,0x00,0xff,0x3f,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x80,0x61,0x00,0x7f,0x0c,0xcc,0x06,0x80,0xc6,0x60,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x80,0x61,0xc0,0x30,0x0c,
+ 0xc0,0x00,0x00,0xc6,0x60,0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x0e,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x3f,0xf0,0x00,0x80,0x61,0x60,0x20,0x0c,0x60,0x00,0x00,0x63,0x60,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x80,0x61,
+ 0x70,0x20,0x0c,0x60,0x00,0x00,0x63,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xc0,0x60,0x34,0x00,0x0c,0x6c,0x04,0x00,
+ 0x63,0x60,0x00,0xff,0x3f,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0xc0,0x60,0x36,0x00,0x08,0x7c,0x82,0x01,0x73,0x60,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xf0,0xe3,0x32,0x10,0x18,
+ 0xdc,0x83,0x01,0x3e,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
+ 0x80,0x00,0xf0,0x00,0x00,0xc0,0x31,0x10,0x18,0x00,0x00,0x01,0x30,0x20,0x00,
+ 0x00,0x00,0x00,0x3e,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xf0,0x00,0x00,0x00,
+ 0x20,0x08,0x10,0x00,0x00,0x81,0x31,0x30,0x00,0x00,0x00,0x00,0x63,0x00,0x00,
+ 0x07,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x03,0xf0,0x00,0x00,0x00,0xc0,0x07,0x30,0x00,0x00,0x81,
+ 0x19,0x10,0x00,0x00,0x00,0x00,0xc3,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
+ 0x08,0x03,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x02,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x80,0x80,0x0f,0x18,0x00,0x00,0x00,0x00,
+ 0xc7,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x0c,0x03,0x00,0x03,0x00,0x00,
+ 0x20,0x60,0x00,0x60,0x00,0x00,0x00,0x06,0xf0,0x00,0x00,0x00,0x00,0x00,0x40,
+ 0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0xc7,0x00,0x80,0x03,0x00,0x00,
+ 0x00,0x00,0x00,0x04,0x03,0x00,0x03,0x00,0x00,0x30,0x60,0x00,0x60,0x00,0x00,
+ 0x00,0x04,0xf0,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x04,0x00,
+ 0x00,0x00,0x00,0xc0,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x06,0x03,0x00,
+ 0x03,0x00,0x00,0x30,0x60,0x00,0x60,0x00,0x00,0x00,0x0c,0xf0,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x80,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0xe2,0x07,0x00,0x03,0x00,0xee,0x10,0xfc,0x00,
+ 0x60,0x00,0xe0,0x18,0x0c,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x83,0x01,0x00,0x03,0x00,0xd9,0x19,0x30,0x00,0x60,0x00,0xd0,0x18,0x0c,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x30,0x00,0x80,0x01,0x00,0x00,0x00,0x80,0x00,0x81,0x01,0x00,0x03,0x80,0xd9,
+ 0x18,0x30,0x00,0x60,0x00,0xd0,0x18,0x0c,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0xc0,0xc1,0x00,0x00,
+ 0x00,0xe0,0x81,0x81,0x01,0xfc,0xff,0x00,0x18,0x18,0x30,0x80,0xff,0x1f,0xc0,
+ 0x18,0x0c,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x8c,0x00,0xc0,0x30,0x03,0x00,0x00,0xa0,0x81,0xc0,0x00,0xfc,
+ 0xff,0x00,0x0c,0x18,0x18,0x80,0xff,0x1f,0x60,0x0c,0x0c,0xf0,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x00,0xc0,
+ 0x30,0x03,0x00,0x00,0x80,0xc3,0xc0,0x00,0x00,0x03,0x00,0x0c,0x18,0x18,0x00,
+ 0x60,0x00,0x60,0x0c,0x0c,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0x10,0x02,0x00,0x00,0x00,0x43,
+ 0xc0,0x04,0x00,0x03,0x80,0x8d,0x18,0x98,0x00,0x60,0x00,0x60,0x0c,0x0c,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0x00,0x60,0x10,0x02,0x00,0x00,0x00,0x63,0xc0,0x02,0x00,0x03,0x80,0x4f,
+ 0x10,0x58,0x00,0x60,0x00,0x60,0x0e,0x0c,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x10,0x02,0x00,
+ 0x00,0x00,0x26,0xc0,0x03,0x00,0x03,0x80,0x7b,0x30,0x78,0x00,0x60,0x00,0xc0,
+ 0x07,0x0c,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x36,0x10,0x02,0x00,0x00,0x00,0x36,0x00,0x00,0x00,
+ 0x03,0x00,0x00,0x30,0x00,0x00,0x60,0x00,0x00,0x06,0x04,0xf0,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,
+ 0x10,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x03,0x00,0x00,0x20,0x00,0x00,
+ 0x60,0x00,0x30,0x06,0x06,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x03,0x00,0x00,0x00,0x1c,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x30,0x03,0x02,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x40,0x00,0x00,0x00,0x00,0xf0,0x01,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0x01,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x80,0x00,0xf0,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s21baf.bitmap.wrong b/src/axiom-website/hyperdoc/bitmaps/s21baf.bitmap.wrong
new file mode 100644
index 0000000..048290d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s21baf.bitmap.wrong
@@ -0,0 +1,132 @@
+#define s21baf_width 340
+#define s21baf_height 36
+static char s21baf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x03, 0x00, 0x78, 0x7e, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0xcc, 0xc2, 0x61,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x06, 0x00, 0x4c, 0x82, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0c,
+   0x82, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0xff, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x06, 0x42, 0x23, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x63, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x06,
+   0x00, 0x06, 0x3c, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x30, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x06, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x23, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x70, 0x0c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x83, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x70, 0x06, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xf5,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3,
+   0x01, 0x00, 0x10, 0xe0, 0x0e, 0x00, 0x8e, 0x01, 0xc0, 0x09, 0x0c, 0x00,
+   0x00, 0x00, 0xe0, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x18, 0x90, 0x1d,
+   0x00, 0x8d, 0x01, 0xc0, 0x0f, 0x0c, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x61, 0xc0, 0x3f, 0x18, 0x98, 0x0d, 0x00, 0x8d, 0x01, 0x20, 0x06,
+   0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x80, 0x61, 0x18,
+   0x80, 0x01, 0x00, 0x8c, 0x01, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x00, 0xf0,
+   0x1f, 0x00, 0x06, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0x1f, 0x00, 0x80, 0x61, 0x80, 0x61, 0x18, 0xc0, 0x00, 0x00, 0xc6, 0x00,
+   0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0xc0,
+   0x60, 0x18, 0xc0, 0x00, 0x00, 0xc6, 0x00, 0xc0, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0xc4, 0x60, 0x18, 0xd8, 0x08, 0x00,
+   0xc6, 0x00, 0x60, 0x04, 0x0c, 0xe0, 0xff, 0x07, 0xc0, 0x01, 0x00, 0x83,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xc0,
+   0x60, 0xc6, 0x60, 0x10, 0xf8, 0x04, 0x03, 0xe6, 0x30, 0xf0, 0x07, 0x0c,
+   0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x63, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe3, 0xc2, 0x70, 0x30, 0xb8,
+   0x07, 0x03, 0x7c, 0x30, 0x90, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x60, 0x06,
+   0x00, 0x63, 0x06, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x61, 0x30, 0x30, 0x00, 0x00, 0x02, 0x60, 0x20, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x23, 0x04, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18,
+   0x20, 0x00, 0x00, 0x02, 0x63, 0x20, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x00, 0x23, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00,
+   0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80,
+   0xc0, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x60, 0x00, 0x00, 0x02, 0x33,
+   0x20, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x10, 0x23, 0x04,
+   0x00, 0x00, 0x00, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00,
+   0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x61, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x1f, 0x10, 0x00, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0xb0, 0x21, 0x04, 0x00, 0x00, 0x00, 0x60, 0x08,
+   0x08, 0x18, 0x00, 0x80, 0x20, 0x10, 0x30, 0x00, 0x00, 0x21, 0x20, 0x60,
+   0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x04, 0xf0,
+   0x20, 0x04, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x08, 0x18, 0x00, 0x80, 0x31,
+   0x10, 0x30, 0x00, 0x00, 0x33, 0x20, 0x60, 0x00, 0x00, 0xc6, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00,
+   0x30, 0x0c, 0x1f, 0x18, 0x60, 0x87, 0x31, 0x3e, 0x30, 0x60, 0x04, 0x33,
+   0x7c, 0x60, 0x00, 0x0b, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x07, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x30, 0x04, 0x0c, 0x18, 0xf0,
+   0x07, 0x11, 0x18, 0x30, 0xe0, 0x04, 0x12, 0x30, 0x60, 0x80, 0x07, 0x24,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x18, 0x04, 0x04, 0x18, 0xd0, 0x06, 0x11, 0x08, 0x30, 0xd0,
+   0x06, 0x12, 0x10, 0x60, 0x00, 0x06, 0xe4, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x18, 0x04, 0x84,
+   0xff, 0xc1, 0x00, 0x11, 0x08, 0xff, 0x43, 0x06, 0x12, 0x10, 0xfe, 0x07,
+   0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x1a, 0x0c, 0x04, 0x16, 0x18, 0x40, 0x02, 0x11, 0x2c,
+   0x30, 0x60, 0x02, 0x12, 0x58, 0x60, 0x80, 0x05, 0x04, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0c,
+   0x04, 0x1e, 0x18, 0x58, 0x02, 0x11, 0x3c, 0x30, 0x60, 0x03, 0x12, 0x78,
+   0x60, 0xc0, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x0c, 0x0e, 0x18, 0xf8, 0x81,
+   0x31, 0x1c, 0x30, 0xc0, 0x03, 0x33, 0x38, 0x60, 0x60, 0x03, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x06, 0x0c, 0x00, 0x18, 0x00, 0x80, 0x31, 0x00, 0x30, 0x00, 0x03,
+   0x33, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x08, 0x00, 0x18,
+   0x00, 0x80, 0x20, 0x00, 0x30, 0xb0, 0x01, 0x21, 0x00, 0x60, 0x00, 0x00,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x03, 0x10, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00,
+   0xe0, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x20,
+   0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s21baf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s21baf1.bitmap
new file mode 100644
index 0000000..96c324c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s21baf1.bitmap
@@ -0,0 +1,24 @@
+#define s21baf1_width 79
+#define s21baf1_height 25
+static char s21baf1_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x7f, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x06, 0x80, 0xc1, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x80, 0xc1, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0c,
+ 0xc0, 0xc0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc0, 0xe0,
+ 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x70, 0x00, 0x00,
+ 0x02, 0xdc, 0x01, 0xc0, 0x31, 0x18, 0xc0, 0x3f, 0x00, 0x00, 0x03, 0xb2,
+ 0x03, 0xa0, 0x31, 0x18, 0x60, 0x18, 0xc0, 0x1f, 0x03, 0xb3, 0x01, 0xa0,
+ 0x31, 0x18, 0x60, 0x18, 0x30, 0x0c, 0x03, 0x30, 0x00, 0x80, 0x31, 0x18,
+ 0x60, 0x18, 0x18, 0x08, 0x03, 0x18, 0x00, 0xc0, 0x18, 0x18, 0x60, 0x18,
+ 0x1c, 0x08, 0x03, 0x18, 0x00, 0xc0, 0x18, 0x18, 0x30, 0x18, 0x0d, 0x00,
+ 0x03, 0x1b, 0x01, 0xc0, 0x18, 0x18, 0x30, 0x98, 0x0d, 0x00, 0x02, 0x9f,
+ 0x60, 0xc0, 0x1c, 0x18, 0xfc, 0xb8, 0x0c, 0x04, 0x06, 0xf7, 0x60, 0x80,
+ 0x0f, 0x18, 0x00, 0x70, 0x0c, 0x04, 0x06, 0x00, 0x40, 0x00, 0x0c, 0x08,
+ 0x00, 0x00, 0x08, 0x02, 0x04, 0x00, 0x40, 0x60, 0x0c, 0x0c, 0x00, 0x00,
+ 0xf0, 0x01, 0x0c, 0x00, 0x40, 0x60, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x20, 0xe0, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/src/axiom-website/hyperdoc/bitmaps/s21baf1.bitmap.wrong b/src/axiom-website/hyperdoc/bitmaps/s21baf1.bitmap.wrong
new file mode 100644
index 0000000..18ff4bd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s21baf1.bitmap.wrong
@@ -0,0 +1,27 @@
+#define s21baf1_width 105
+#define s21baf1_height 20
+static char s21baf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x80, 0xff, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x03, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x03, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x83,
+   0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0xc3, 0x01, 0x00, 0x10, 0xe0, 0x0e, 0x00, 0x8e, 0x01, 0xc0, 0x09,
+   0x0c, 0x00, 0x00, 0xff, 0x00, 0x00, 0x18, 0x90, 0x1d, 0x00, 0x8d, 0x01,
+   0xc0, 0x0f, 0x0c, 0x00, 0x80, 0x61, 0xc0, 0x3f, 0x18, 0x98, 0x0d, 0x00,
+   0x8d, 0x01, 0x20, 0x06, 0x0c, 0x00, 0x80, 0x61, 0x80, 0x61, 0x18, 0x80,
+   0x01, 0x00, 0x8c, 0x01, 0x00, 0x03, 0x0c, 0x00, 0x80, 0x61, 0x80, 0x61,
+   0x18, 0xc0, 0x00, 0x00, 0xc6, 0x00, 0x80, 0x01, 0x0c, 0x00, 0x80, 0x61,
+   0xc0, 0x60, 0x18, 0xc0, 0x00, 0x00, 0xc6, 0x00, 0xc0, 0x00, 0x0c, 0x00,
+   0xc0, 0x60, 0xc4, 0x60, 0x18, 0xd8, 0x08, 0x00, 0xc6, 0x00, 0x60, 0x04,
+   0x0c, 0x00, 0xc0, 0x60, 0xc6, 0x60, 0x10, 0xf8, 0x04, 0x03, 0xe6, 0x30,
+   0xf0, 0x07, 0x0c, 0x00, 0xf0, 0xe3, 0xc2, 0x70, 0x30, 0xb8, 0x07, 0x03,
+   0x7c, 0x30, 0x90, 0x03, 0x0c, 0x00, 0x00, 0xc0, 0x61, 0x30, 0x30, 0x00,
+   0x00, 0x02, 0x60, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x60, 0x18,
+   0x20, 0x00, 0x00, 0x02, 0x63, 0x20, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0xf8, 0x0f, 0x60, 0x00, 0x00, 0x02, 0x33, 0x20, 0x00, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x1f, 0x10, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s21bbf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s21bbf.bitmap
new file mode 100644
index 0000000..2f72b55
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s21bbf.bitmap
@@ -0,0 +1,161 @@
+#define s21bbf_width 335
+#define s21bbf_height 45
+static char s21bbf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0e, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x1e, 0x3f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x33, 0xe1, 0x30, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x00, 0x13, 0xc1, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x03, 0xc1, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x07, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x80, 0x01, 0xa1, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x06, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x80, 0x01, 0x1e, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x03, 0x03, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x94, 0x05, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x03, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x96, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc3, 0x01, 0x00, 0x08, 0x70, 0x07, 0x00, 0xc7, 0x00, 0xe0, 0x04,
+   0x06, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x8f, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x0c, 0xc8,
+   0x0e, 0x80, 0xc6, 0x00, 0xe0, 0x07, 0x06, 0xf0, 0xff, 0x03, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x61, 0xc0, 0x7f, 0x0c, 0xcc, 0x06, 0x80, 0xc6, 0x00, 0x10, 0x03,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x80, 0x61, 0x0c, 0xc0,
+   0x00, 0x00, 0xc6, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0xf8, 0x0f,
+   0x80, 0x01, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00,
+   0x80, 0x61, 0x80, 0x61, 0x0c, 0x60, 0x00, 0x00, 0x63, 0x00, 0xc0, 0x00,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0xc0, 0x24, 0x0c, 0x60,
+   0x00, 0x00, 0x63, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x60, 0xc4, 0x07, 0x0c, 0x6c, 0x04, 0x00, 0x63, 0x00, 0x30, 0x02,
+   0x06, 0xf0, 0xff, 0x03, 0xe0, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xc0, 0x60, 0xc6, 0x04, 0x08, 0x7c,
+   0x82, 0x01, 0x73, 0x18, 0xf8, 0x03, 0x06, 0x00, 0x00, 0x00, 0x30, 0x03,
+   0xc0, 0x30, 0x03, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf0, 0xe3, 0xc2, 0x04, 0x18, 0xdc, 0x83, 0x01, 0x3e, 0x18, 0xc8, 0x01,
+   0x06, 0x00, 0x00, 0x00, 0x30, 0x03, 0xc0, 0x30, 0x03, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x61, 0x00, 0x18, 0x00,
+   0x00, 0x01, 0x30, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x03,
+   0xc0, 0x10, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x60, 0x00, 0x10, 0x00, 0x00, 0x81, 0x31, 0x10, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x10, 0x02, 0x00, 0x00, 0x00,
+   0x60, 0x10, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x20, 0x40,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x30, 0x00,
+   0x00, 0x81, 0x19, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0xc4, 0x10, 0x02, 0x00, 0x00, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x20,
+   0x10, 0x00, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x80, 0x0f, 0x08, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x80, 0x01, 0x6c, 0x10, 0x02, 0x00, 0x00, 0x00,
+   0x30, 0x04, 0x02, 0x0c, 0x00, 0x40, 0x08, 0x08, 0x18, 0x00, 0x80, 0x10,
+   0x10, 0x30, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02,
+   0x3c, 0x10, 0x02, 0x00, 0x00, 0x00, 0x30, 0x06, 0x02, 0x0c, 0x00, 0xc0,
+   0x0c, 0x08, 0x18, 0x00, 0x80, 0x19, 0x10, 0x30, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00,
+   0x18, 0xc6, 0x07, 0x0c, 0xd8, 0xc1, 0x0c, 0x1f, 0x18, 0x30, 0x82, 0x19,
+   0x3e, 0x30, 0x80, 0x85, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03,
+   0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x18, 0x02, 0x03, 0x0c, 0xfc, 0x81,
+   0x04, 0x0c, 0x18, 0x70, 0x02, 0x09, 0x18, 0x30, 0xc0, 0x03, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+   0x0c, 0x02, 0x01, 0x0c, 0xb4, 0x81, 0x04, 0x04, 0x18, 0x68, 0x03, 0x09,
+   0x08, 0x30, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x02, 0xc1, 0xff, 0x30, 0x80,
+   0x04, 0x84, 0xff, 0x21, 0x03, 0x09, 0x08, 0xff, 0x83, 0x01, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d,
+   0x06, 0x82, 0x05, 0x0c, 0x90, 0x80, 0x04, 0x16, 0x18, 0x30, 0x01, 0x09,
+   0x2c, 0x30, 0xc0, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x06, 0x82, 0x07, 0x0c, 0x96, 0x80,
+   0x04, 0x1e, 0x18, 0xb0, 0x01, 0x09, 0x3c, 0x30, 0x60, 0x02, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+   0x03, 0x86, 0x03, 0x0c, 0x7e, 0xc0, 0x0c, 0x0e, 0x18, 0xe0, 0x81, 0x19,
+   0x1c, 0x30, 0xb0, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x06, 0x00, 0x0c, 0x00, 0xc0,
+   0x0c, 0x00, 0x18, 0x80, 0x81, 0x19, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0,
+   0x01, 0x04, 0x00, 0x0c, 0x00, 0x40, 0x08, 0x00, 0x18, 0xd8, 0x80, 0x10,
+   0x00, 0x30, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x08, 0x00, 0x00, 0x00, 0x20,
+   0x10, 0x00, 0x00, 0x70, 0x40, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x20, 0x40,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s21bbf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s21bbf1.bitmap
new file mode 100644
index 0000000..07cb8b1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s21bbf1.bitmap
@@ -0,0 +1,50 @@
+#define s21bbf1_width 110
+#define s21bbf1_height 40
+static char s21bbf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x03, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x83,
+   0x03, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0xc3, 0x01, 0x00, 0x08, 0x70, 0x07, 0x00, 0xc7, 0x00, 0xe0, 0x04,
+   0x06, 0x00, 0x00, 0xff, 0x00, 0x00, 0x0c, 0xc8, 0x0e, 0x80, 0xc6, 0x00,
+   0xe0, 0x07, 0x06, 0x00, 0x80, 0x61, 0xc0, 0x7f, 0x0c, 0xcc, 0x06, 0x80,
+   0xc6, 0x00, 0x10, 0x03, 0x06, 0x00, 0x80, 0x61, 0x80, 0x61, 0x0c, 0xc0,
+   0x00, 0x00, 0xc6, 0x00, 0x80, 0x01, 0x06, 0x00, 0x80, 0x61, 0x80, 0x61,
+   0x0c, 0x60, 0x00, 0x00, 0x63, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x80, 0x61,
+   0xc0, 0x24, 0x0c, 0x60, 0x00, 0x00, 0x63, 0x00, 0x60, 0x00, 0x06, 0x00,
+   0xc0, 0x60, 0xc4, 0x07, 0x0c, 0x6c, 0x04, 0x00, 0x63, 0x00, 0x30, 0x02,
+   0x06, 0x00, 0xc0, 0x60, 0xc6, 0x04, 0x08, 0x7c, 0x82, 0x01, 0x73, 0x18,
+   0xf8, 0x03, 0x06, 0x00, 0xf0, 0xe3, 0xc2, 0x04, 0x18, 0xdc, 0x83, 0x01,
+   0x3e, 0x18, 0xc8, 0x01, 0x06, 0x00, 0x00, 0xc0, 0x61, 0x00, 0x18, 0x00,
+   0x00, 0x01, 0x30, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x10, 0x00, 0x00, 0x81, 0x31, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+   0xf8, 0x01, 0x30, 0x00, 0x00, 0x81, 0x19, 0x10, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x80, 0x0f, 0x08, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s21bcf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s21bcf.bitmap
new file mode 100644
index 0000000..46c334f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s21bcf.bitmap
@@ -0,0 +1,183 @@
+#define s21bcf_width 340
+#define s21bcf_height 50
+static char s21bcf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x06, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x9e, 0x9f, 0x0d, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01,
+   0x00, 0xb3, 0x70, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x93, 0x60, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x83, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x80, 0x81, 0xd0,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x18,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x8f, 0x0f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00, 0x08, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xcc, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x1c, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2d, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, 0x0c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x9c,
+   0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x64, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0x70, 0x00, 0x00, 0x04, 0xb8, 0x03, 0x80, 0x63, 0x00,
+   0x70, 0x02, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00,
+   0x00, 0x06, 0x64, 0x07, 0x40, 0x63, 0x00, 0xf0, 0x03, 0x03, 0xf8, 0xff,
+   0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0xf0, 0x0f, 0x06, 0x66, 0x03, 0x40,
+   0x63, 0x00, 0x88, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+   0x18, 0x60, 0x18, 0x06, 0x60, 0x00, 0x00, 0x63, 0x00, 0xc0, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0xfc, 0x07, 0x80, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x60, 0x18, 0x60, 0x18, 0x06, 0x30,
+   0x00, 0x80, 0x31, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x60, 0x18, 0x30, 0x18, 0x06, 0x30, 0x00, 0x80, 0x31, 0x00, 0x30,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x31, 0x18,
+   0x06, 0x36, 0x02, 0x80, 0x31, 0x00, 0x18, 0x01, 0x03, 0xf8, 0xff, 0x01,
+   0x70, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0x03, 0x00, 0x30, 0x98, 0x31, 0x18, 0x04, 0x3e, 0xc1, 0x80, 0x39,
+   0x0c, 0xfc, 0x01, 0x03, 0x00, 0x00, 0x00, 0x98, 0x01, 0xc0, 0x98, 0x01,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xb8,
+   0x30, 0x1c, 0x0c, 0xee, 0xc1, 0x00, 0x1f, 0x0c, 0xe4, 0x00, 0x03, 0x00,
+   0x00, 0x00, 0x98, 0x01, 0xc0, 0x98, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x18, 0x0c, 0x0c, 0x00, 0x80,
+   0x00, 0x18, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x98, 0x01, 0xc0,
+   0x08, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x06, 0x08, 0x00, 0x80, 0xc0, 0x18, 0x08, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x08, 0x01, 0x00, 0x00, 0x00,
+   0x30, 0x08, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x10, 0x20,
+   0x00, 0x00, 0x00, 0x20, 0x70, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x18,
+   0x00, 0x80, 0xc0, 0x0c, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0xc4, 0x08, 0x01, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00,
+   0x10, 0x10, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x40, 0xd8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, 0xc0, 0x07, 0x04,
+   0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x6c, 0x08, 0x01, 0x00,
+   0x00, 0x00, 0x18, 0x02, 0x02, 0x06, 0x00, 0x20, 0x08, 0x04, 0x0c, 0x00,
+   0x40, 0x08, 0x08, 0x18, 0x00, 0x80, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x01, 0x3c, 0x08, 0x01, 0x00, 0x00, 0x00, 0x18, 0x03, 0x02,
+   0x06, 0x00, 0x60, 0x0c, 0x04, 0x0c, 0x00, 0xc0, 0x0c, 0x08, 0x18, 0x00,
+   0x80, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x98,
+   0x01, 0x00, 0x00, 0x00, 0x0c, 0xc3, 0x07, 0x06, 0xd8, 0x61, 0x8c, 0x0f,
+   0x0c, 0x18, 0xc1, 0x0c, 0x1f, 0x18, 0xc0, 0x82, 0x81, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x01, 0x03, 0x06, 0xfc, 0x41, 0x04, 0x06, 0x0c, 0x38, 0x81, 0x04, 0x0c,
+   0x18, 0xe0, 0x01, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x01, 0x01, 0x06, 0xb4, 0x41,
+   0x04, 0x02, 0x0c, 0xb4, 0x81, 0x04, 0x04, 0x18, 0x80, 0x01, 0xf9, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x07, 0x06, 0x01, 0xe1, 0x7f, 0x30, 0x40, 0x04, 0xc2, 0xff, 0x90, 0x81,
+   0x04, 0x84, 0xff, 0xc1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x03, 0x81, 0x05, 0x06,
+   0x90, 0x40, 0x04, 0x0b, 0x0c, 0x98, 0x80, 0x04, 0x16, 0x18, 0x60, 0x01,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x0e, 0x03, 0x81, 0x07, 0x06, 0x96, 0x40, 0x04, 0x0f, 0x0c,
+   0xd8, 0x80, 0x04, 0x1e, 0x18, 0x30, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x83,
+   0x03, 0x06, 0x7e, 0x60, 0x0c, 0x07, 0x0c, 0xf0, 0xc0, 0x0c, 0x0e, 0x18,
+   0xd8, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x03, 0x00, 0x06, 0x00, 0x60, 0x0c,
+   0x00, 0x0c, 0xc0, 0xc0, 0x0c, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8,
+   0x00, 0x02, 0x00, 0x06, 0x00, 0x20, 0x08, 0x00, 0x0c, 0x6c, 0x40, 0x08,
+   0x00, 0x18, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x00, 0x00,
+   0x10, 0x10, 0x00, 0x00, 0x38, 0x20, 0x10, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x70, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00,
+   0x10, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s21bcf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s21bcf1.bitmap
new file mode 100644
index 0000000..1b12ab6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s21bcf1.bitmap
@@ -0,0 +1,44 @@
+#define s21bcf1_width 105
+#define s21bcf1_height 35
+static char s21bcf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xc1,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+   0xc0, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0xc0, 0xe0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x03, 0x00, 0xc0, 0x70, 0x00, 0x00, 0x04, 0xb8, 0x03, 0x80,
+   0x63, 0x00, 0x70, 0x02, 0x03, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x06, 0x64,
+   0x07, 0x40, 0x63, 0x00, 0xf0, 0x03, 0x03, 0x00, 0x60, 0x18, 0xf0, 0x0f,
+   0x06, 0x66, 0x03, 0x40, 0x63, 0x00, 0x88, 0x01, 0x03, 0x00, 0x60, 0x18,
+   0x60, 0x18, 0x06, 0x60, 0x00, 0x00, 0x63, 0x00, 0xc0, 0x00, 0x03, 0x00,
+   0x60, 0x18, 0x60, 0x18, 0x06, 0x30, 0x00, 0x80, 0x31, 0x00, 0x60, 0x00,
+   0x03, 0x00, 0x60, 0x18, 0x30, 0x18, 0x06, 0x30, 0x00, 0x80, 0x31, 0x00,
+   0x30, 0x00, 0x03, 0x00, 0x30, 0x18, 0x31, 0x18, 0x06, 0x36, 0x02, 0x80,
+   0x31, 0x00, 0x18, 0x01, 0x03, 0x00, 0x30, 0x98, 0x31, 0x18, 0x04, 0x3e,
+   0xc1, 0x80, 0x39, 0x0c, 0xfc, 0x01, 0x03, 0x00, 0xfc, 0xb8, 0x30, 0x1c,
+   0x0c, 0xee, 0xc1, 0x00, 0x1f, 0x0c, 0xe4, 0x00, 0x03, 0x00, 0x00, 0x70,
+   0x18, 0x0c, 0x0c, 0x00, 0x80, 0x00, 0x18, 0x08, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x18, 0x06, 0x08, 0x00, 0x80, 0xc0, 0x18, 0x08, 0x00, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x18, 0x00, 0x80, 0xc0, 0x0c, 0x08,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, 0xc0,
+   0x07, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s21bdf.bitmap b/src/axiom-website/hyperdoc/bitmaps/s21bdf.bitmap
new file mode 100644
index 0000000..24974b2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s21bdf.bitmap
@@ -0,0 +1,208 @@
+#define s21bdf_width 390
+#define s21bdf_height 50
+static char s21bdf_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0x01, 0x00, 0x1e, 0x3f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x30, 0x03, 0x00, 0x33, 0xe1, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x13, 0xc1, 0x20, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0xc1, 0x20, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x7f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x80, 0x01, 0xa1, 0x11, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x30,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xc1, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0x1e, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xc1, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xcc, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xc0, 0xc0, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x06, 0x80, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x44, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x64, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x00, 0x80, 0x00, 0x77, 0x00, 0x70,
+   0x0c, 0x00, 0x4e, 0x00, 0x80, 0x07, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x03,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0xc0, 0x80, 0xec, 0x00,
+   0x68, 0x0c, 0x00, 0x7e, 0x00, 0xc0, 0x0c, 0x06, 0xf8, 0xff, 0x01, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0xe0, 0xc3, 0xc0, 0x6c,
+   0x00, 0x68, 0x0c, 0x00, 0x31, 0x00, 0x60, 0x0c, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x80, 0xc1, 0x00,
+   0x0c, 0x00, 0x60, 0x0c, 0x00, 0x18, 0x00, 0x60, 0x0c, 0x06, 0x00, 0x00,
+   0x00, 0xf8, 0x0f, 0x80, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x60, 0x18, 0x80, 0xc1,
+   0x00, 0x06, 0x00, 0x30, 0x06, 0x00, 0x0c, 0x00, 0x30, 0x0c, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0xc0,
+   0xc0, 0x00, 0x06, 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, 0x30, 0x0c, 0x06,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18,
+   0xc1, 0xc0, 0xc0, 0x46, 0x00, 0x30, 0x06, 0x00, 0x23, 0x00, 0x30, 0x06,
+   0x06, 0xf8, 0xff, 0x01, 0xe0, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x30,
+   0x98, 0xc1, 0x80, 0xc0, 0x27, 0x18, 0x30, 0x87, 0x81, 0x3f, 0x18, 0x30,
+   0x03, 0x06, 0x00, 0x00, 0x00, 0x30, 0x03, 0xc0, 0x30, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xb8, 0xc0, 0x80, 0xc1, 0x3d, 0x18, 0xe0, 0x83, 0x81, 0x1c, 0x18,
+   0xf8, 0x01, 0x06, 0x00, 0x00, 0x00, 0x30, 0x03, 0xc0, 0x30, 0x03, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x70, 0x6c, 0x80, 0x01, 0x00, 0x10, 0x00, 0x03, 0x01, 0x00,
+   0x10, 0x18, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x03, 0xc0, 0x10, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x01, 0x00, 0x10, 0x18, 0x03, 0x01,
+   0x00, 0x10, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x10,
+   0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x60, 0x10, 0x00,
+   0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x03, 0x00, 0x10, 0x98, 0x01,
+   0x01, 0x00, 0x10, 0x18, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc4,
+   0x10, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x60, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0xf8,
+   0x80, 0x00, 0x00, 0x08, 0x0c, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x01,
+   0x6c, 0x10, 0x02, 0x00, 0x00, 0x01, 0x01, 0x03, 0x00, 0x08, 0x00, 0x30,
+   0x04, 0x04, 0x0c, 0x00, 0x40, 0x10, 0x08, 0x18, 0x00, 0x80, 0x20, 0x10,
+   0x30, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x40,
+   0x02, 0x3c, 0x10, 0x02, 0x00, 0x80, 0x01, 0x01, 0x03, 0x00, 0x18, 0x00,
+   0x30, 0x06, 0x04, 0x0c, 0x00, 0xc0, 0x18, 0x08, 0x18, 0x00, 0x80, 0x31,
+   0x10, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x20, 0x02, 0x00, 0x30, 0x03, 0x00, 0x80, 0xe1, 0x03, 0x03, 0x70, 0x18,
+   0x00, 0x18, 0x86, 0x0f, 0x0c, 0xb0, 0xc3, 0x18, 0x1f, 0x18, 0x30, 0x82,
+   0x31, 0x3e, 0x30, 0x80, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0x03, 0x00, 0xe0, 0x01, 0x00, 0x80, 0x80, 0x01, 0x03, 0x58,
+   0x10, 0x00, 0x18, 0x02, 0x06, 0x0c, 0xf8, 0x83, 0x08, 0x0c, 0x18, 0x70,
+   0x02, 0x11, 0x18, 0x30, 0xc0, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x03,
+   0xcc, 0x10, 0x04, 0x0c, 0x02, 0x02, 0x0c, 0x68, 0x83, 0x08, 0x04, 0x18,
+   0x68, 0x03, 0x11, 0x08, 0x30, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xf0,
+   0x3f, 0xcc, 0x10, 0x0f, 0x0c, 0x02, 0xc2, 0xff, 0x60, 0x80, 0x08, 0x84,
+   0xff, 0x21, 0x03, 0x11, 0x08, 0xff, 0x83, 0x01, 0x02, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0,
+   0x02, 0x03, 0x44, 0x10, 0x0d, 0x06, 0x02, 0x0b, 0x0c, 0x20, 0x81, 0x08,
+   0x16, 0x18, 0x30, 0x01, 0x11, 0x2c, 0x30, 0xc0, 0x02, 0x02, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0xc0, 0x03, 0x03, 0x64, 0x10, 0x1c, 0x06, 0x02, 0x0f, 0x0c, 0x2c, 0x81,
+   0x08, 0x1e, 0x18, 0xb0, 0x01, 0x11, 0x3c, 0x30, 0x60, 0x02, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0xc1, 0x01, 0x03, 0x3e, 0x18, 0x18, 0x03, 0x06, 0x07, 0x0c, 0xfc,
+   0xc0, 0x18, 0x0e, 0x18, 0xe0, 0x81, 0x31, 0x1c, 0x30, 0xb0, 0x01, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0x01, 0x00, 0x03, 0x06, 0x18, 0x18, 0x03, 0x06, 0x00, 0x0c,
+   0x00, 0xc0, 0x18, 0x00, 0x18, 0x80, 0x81, 0x31, 0x00, 0x30, 0x00, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x02, 0x08, 0xb0, 0x01, 0x04, 0x00,
+   0x0c, 0x00, 0x40, 0x10, 0x00, 0x18, 0xd8, 0x80, 0x20, 0x00, 0x30, 0x00,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x04, 0xb0, 0x01, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x70, 0x40, 0x40, 0x00, 0x00,
+   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00,
+   0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/s21bdf1.bitmap b/src/axiom-website/hyperdoc/bitmaps/s21bdf1.bitmap
new file mode 100644
index 0000000..4612d1d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/s21bdf1.bitmap
@@ -0,0 +1,60 @@
+#define s21bdf1_width 130
+#define s21bdf1_height 40
+static char s21bdf1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
+   0x80, 0xc1, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xc0, 0xc0,
+   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xc0, 0x70, 0x00, 0x80,
+   0x00, 0x77, 0x00, 0x70, 0x0c, 0x00, 0x4e, 0x00, 0x80, 0x07, 0x06, 0x00,
+   0x00, 0xc0, 0x3f, 0x00, 0xc0, 0x80, 0xec, 0x00, 0x68, 0x0c, 0x00, 0x7e,
+   0x00, 0xc0, 0x0c, 0x06, 0x00, 0x00, 0x60, 0x18, 0xe0, 0xc3, 0xc0, 0x6c,
+   0x00, 0x68, 0x0c, 0x00, 0x31, 0x00, 0x60, 0x0c, 0x06, 0x00, 0x00, 0x60,
+   0x18, 0x80, 0xc1, 0x00, 0x0c, 0x00, 0x60, 0x0c, 0x00, 0x18, 0x00, 0x60,
+   0x0c, 0x06, 0x00, 0x00, 0x60, 0x18, 0x80, 0xc1, 0x00, 0x06, 0x00, 0x30,
+   0x06, 0x00, 0x0c, 0x00, 0x30, 0x0c, 0x06, 0x00, 0x00, 0x60, 0x18, 0xc0,
+   0xc0, 0x00, 0x06, 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, 0x30, 0x0c, 0x06,
+   0x00, 0x00, 0x30, 0x18, 0xc1, 0xc0, 0xc0, 0x46, 0x00, 0x30, 0x06, 0x00,
+   0x23, 0x00, 0x30, 0x06, 0x06, 0x00, 0x00, 0x30, 0x98, 0xc1, 0x80, 0xc0,
+   0x27, 0x18, 0x30, 0x87, 0x81, 0x3f, 0x18, 0x30, 0x03, 0x06, 0x00, 0x00,
+   0xfc, 0xb8, 0xc0, 0x80, 0xc1, 0x3d, 0x18, 0xe0, 0x83, 0x81, 0x1c, 0x18,
+   0xf8, 0x01, 0x06, 0x00, 0x00, 0x00, 0x70, 0x6c, 0x80, 0x01, 0x00, 0x10,
+   0x00, 0x03, 0x01, 0x00, 0x10, 0x18, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+   0x6c, 0x00, 0x01, 0x00, 0x10, 0x18, 0x03, 0x01, 0x00, 0x10, 0x18, 0x00,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x03, 0x00, 0x10, 0x98, 0x01,
+   0x01, 0x00, 0x10, 0x18, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x08, 0xf8, 0x80, 0x00, 0x00, 0x08, 0x0c, 0x80, 0x01, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x0c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sdown.bitmap b/src/axiom-website/hyperdoc/bitmaps/sdown.bitmap
new file mode 100644
index 0000000..c16c607
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sdown.bitmap
@@ -0,0 +1,9 @@
+#define sdown_width 21
+#define sdown_height 21
+static char sdown_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xf0,
+   0x03, 0x00, 0xf8, 0x07, 0x00, 0xfc, 0x0f, 0x00, 0xfe, 0x1f, 0x00, 0xff,
+   0x3f, 0x80, 0xff, 0x7f, 0xc0, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xf1, 0xff,
+   0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sdown.bm b/src/axiom-website/hyperdoc/bitmaps/sdown.bm
new file mode 100644
index 0000000..c16c607
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sdown.bm
@@ -0,0 +1,9 @@
+#define sdown_width 21
+#define sdown_height 21
+static char sdown_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xf0,
+   0x03, 0x00, 0xf8, 0x07, 0x00, 0xfc, 0x0f, 0x00, 0xfe, 0x1f, 0x00, 0xff,
+   0x3f, 0x80, 0xff, 0x7f, 0xc0, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xf1, 0xff,
+   0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sdown3d.bitmap b/src/axiom-website/hyperdoc/bitmaps/sdown3d.bitmap
new file mode 100644
index 0000000..e34dc10
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sdown3d.bitmap
@@ -0,0 +1,9 @@
+#define sdown3d_width 21
+#define sdown3d_height 21
+static char sdown3d_bits[] = {
+   0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x15, 0x02, 0x00, 0x0c, 0x51, 0x55, 0x15,
+   0xaa, 0xaa, 0x0e, 0x51, 0x5f, 0x15, 0xaa, 0xae, 0x0e, 0x51, 0x5f, 0x15,
+   0xaa, 0xae, 0x0e, 0x51, 0x5f, 0x15, 0xea, 0xff, 0x0e, 0xd1, 0x7f, 0x15,
+   0xaa, 0xbf, 0x0e, 0x51, 0x5f, 0x15, 0xaa, 0xae, 0x0e, 0x51, 0x55, 0x15,
+   0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x15, 0xfe, 0xff, 0x0f, 0x55, 0x55, 0x15,
+   0xaa, 0xaa, 0x0a};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sdown3dpr.bitmap b/src/axiom-website/hyperdoc/bitmaps/sdown3dpr.bitmap
new file mode 100644
index 0000000..6ce090b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sdown3dpr.bitmap
@@ -0,0 +1,9 @@
+#define sdown3dpr_width 21
+#define sdown3dpr_height 21
+static char sdown3dpr_bits[] = {
+   0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x15, 0xfe, 0xff, 0x0f, 0x55, 0x55, 0x11,
+   0xae, 0xaa, 0x0a, 0x55, 0x55, 0x11, 0xae, 0xbe, 0x0a, 0x55, 0x5d, 0x11,
+   0xae, 0xbe, 0x0a, 0x55, 0x5d, 0x11, 0xae, 0xbe, 0x0a, 0xd5, 0xff, 0x11,
+   0xae, 0xff, 0x0a, 0x55, 0x7f, 0x11, 0xae, 0xbe, 0x0a, 0x55, 0x5d, 0x11,
+   0xae, 0xaa, 0x0a, 0x55, 0x55, 0x11, 0x06, 0x00, 0x08, 0x55, 0x55, 0x15,
+   0xaa, 0xaa, 0x0a};
diff --git a/src/axiom-website/hyperdoc/bitmaps/si-integral.bitmap b/src/axiom-website/hyperdoc/bitmaps/si-integral.bitmap
new file mode 100644
index 0000000..a259e74
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/si-integral.bitmap
@@ -0,0 +1,19 @@
+#define si-integral_width 35
+#define si-integral_height 38
+static char si-integral_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x11, 0x02, 0x00, 0x00, 0xc0,
+   0x69, 0x01, 0x00, 0x00, 0x60, 0xc4, 0x08, 0x00, 0x00, 0x20, 0xc0, 0x08,
+   0x00, 0x00, 0x20, 0x38, 0x07, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1c,
+   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+   0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
+   0x0e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb0, 0xd0, 0x00, 0x00, 0x00, 0x60,
+   0xd0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sigma-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/sigma-cap.bitmap
new file mode 100644
index 0000000..78c6306
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sigma-cap.bitmap
@@ -0,0 +1,8 @@
+#define Sigma_width 16
+#define Sigma_height 16
+#define Sigma_x_hot -1
+#define Sigma_y_hot -1
+static char Sigma_bits[] = {
+   0xfc, 0x3f, 0x0c, 0x20, 0x0c, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00,
+   0x40, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x40, 0x00, 0x60, 0x00, 0x30, 0x00,
+   0x18, 0x00, 0x0c, 0x00, 0x0c, 0x20, 0xfc, 0x3f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sigma.bitmap b/src/axiom-website/hyperdoc/bitmaps/sigma.bitmap
new file mode 100644
index 0000000..838d15e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sigma.bitmap
@@ -0,0 +1,8 @@
+#define sigma_width 16
+#define sigma_height 16
+#define sigma_x_hot -1
+#define sigma_y_hot -1
+static char sigma_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0xf8, 0x1f, 0x9c, 0x03,
+   0x0e, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0xce, 0x01, 0xfc, 0x00,
+   0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/smile.bitmap b/src/axiom-website/hyperdoc/bitmaps/smile.bitmap
new file mode 100644
index 0000000..dab8f31
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/smile.bitmap
@@ -0,0 +1,15 @@
+#define smile_width 50
+#define smile_height 20
+static char smile_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01,
+   0x22, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x41, 0x00, 0x00, 0x00, 0x00,
+   0x08, 0x02, 0x41, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x02, 0x5d, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x01, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c,
+   0xd8, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x80, 0x06, 0x00, 0x00,
+   0x00, 0x1a, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x32, 0x00, 0x40, 0x00,
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfc, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x19, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/source.bitmap b/src/axiom-website/hyperdoc/bitmaps/source.bitmap
new file mode 100644
index 0000000..82b89fd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/source.bitmap
@@ -0,0 +1,8 @@
+#define source_width 16
+#define source_height 16
+#define source_x_hot 8
+#define source_y_hot 0
+static char source_bits[] = {
+   0x80, 0x03, 0xc0, 0x07, 0x00, 0x01, 0xe0, 0x0f, 0x70, 0x1c, 0x18, 0x30,
+   0x2c, 0x60, 0x4e, 0xec, 0x86, 0xce, 0x86, 0xc7, 0x06, 0xc3, 0x0e, 0xe0,
+   0x0c, 0x60, 0x18, 0x30, 0x70, 0x1c, 0xe0, 0x0f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/subtwo.bitmap b/src/axiom-website/hyperdoc/bitmaps/subtwo.bitmap
new file mode 100644
index 0000000..157c1cf
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/subtwo.bitmap
@@ -0,0 +1,8 @@
+#define subtwo_width 16
+#define subtwo_height 16
+#define subtwo_x_hot -1
+#define subtwo_y_hot -1
+static char subtwo_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7c, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sum.bitmap b/src/axiom-website/hyperdoc/bitmaps/sum.bitmap
new file mode 100644
index 0000000..d5c6779
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sum.bitmap
@@ -0,0 +1,6 @@
+#define Sigma_width 16
+#define Sigma_height 16
+static char Sigma_bits[] = {
+   0xfc, 0x3f, 0x0c, 0x20, 0x08, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00,
+   0x40, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x40, 0x00, 0x60, 0x00, 0x30, 0x00,
+   0x10, 0x00, 0x08, 0x00, 0x0c, 0x20, 0xfc, 0x3f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sum.bm b/src/axiom-website/hyperdoc/bitmaps/sum.bm
new file mode 100644
index 0000000..da7736d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sum.bm
@@ -0,0 +1,8 @@
+#define sum_width 16
+#define sum_height 16
+#define sum_x_hot 9
+#define sum_y_hot 8
+static char sum_bits[] = {
+   0xf0, 0x0f, 0x10, 0x08, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x01,
+   0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x80, 0x00,
+   0x40, 0x00, 0x20, 0x00, 0x10, 0x08, 0xf0, 0x0f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sup.bitmap b/src/axiom-website/hyperdoc/bitmaps/sup.bitmap
new file mode 100644
index 0000000..1b5f823
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sup.bitmap
@@ -0,0 +1,9 @@
+#define sup_width 21
+#define sup_height 21
+static char sup_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xfb, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xe0, 0xff, 0x7f, 0xc0, 0xff,
+   0x3f, 0x80, 0xff, 0x1f, 0x00, 0xff, 0x0f, 0x00, 0xfe, 0x07, 0x00, 0xfc,
+   0x03, 0x00, 0xf8, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sup.bm b/src/axiom-website/hyperdoc/bitmaps/sup.bm
new file mode 100644
index 0000000..1b5f823
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sup.bm
@@ -0,0 +1,9 @@
+#define sup_width 21
+#define sup_height 21
+static char sup_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xfb, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xe0, 0xff, 0x7f, 0xc0, 0xff,
+   0x3f, 0x80, 0xff, 0x1f, 0x00, 0xff, 0x0f, 0x00, 0xfe, 0x07, 0x00, 0xfc,
+   0x03, 0x00, 0xf8, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sup3d.bitmap b/src/axiom-website/hyperdoc/bitmaps/sup3d.bitmap
new file mode 100644
index 0000000..c1dd285
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sup3d.bitmap
@@ -0,0 +1,9 @@
+#define sup3d_width 21
+#define sup3d_height 21
+static char sup3d_bits[] = {
+   0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x15, 0x02, 0x00, 0x0c, 0x51, 0x55, 0x15,
+   0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x15, 0xaa, 0xae, 0x0e, 0x51, 0x5f, 0x15,
+   0xaa, 0xbf, 0x0e, 0xd1, 0x7f, 0x15, 0xea, 0xff, 0x0e, 0x51, 0x5f, 0x15,
+   0xaa, 0xae, 0x0e, 0x51, 0x5f, 0x15, 0xaa, 0xae, 0x0e, 0x51, 0x5f, 0x15,
+   0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x15, 0xfa, 0xff, 0x0f, 0x55, 0x55, 0x15,
+   0xaa, 0xaa, 0x0a};
diff --git a/src/axiom-website/hyperdoc/bitmaps/sup3dpr.bitmap b/src/axiom-website/hyperdoc/bitmaps/sup3dpr.bitmap
new file mode 100644
index 0000000..2617792
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/sup3dpr.bitmap
@@ -0,0 +1,9 @@
+#define sup3dpr_width 21
+#define sup3dpr_height 21
+static char sup3dpr_bits[] = {
+   0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x15, 0xfe, 0xff, 0x0f, 0x55, 0x55, 0x11,
+   0xae, 0xaa, 0x0a, 0x55, 0x55, 0x11, 0xae, 0xaa, 0x0a, 0x55, 0x5d, 0x11,
+   0xae, 0xbe, 0x0a, 0x55, 0x7f, 0x11, 0xae, 0xff, 0x0a, 0xd5, 0xff, 0x11,
+   0xae, 0xbe, 0x0a, 0x55, 0x5d, 0x11, 0xae, 0xbe, 0x0a, 0x55, 0x5d, 0x11,
+   0xae, 0xbe, 0x0a, 0x55, 0x55, 0x11, 0x06, 0x00, 0x08, 0x55, 0x55, 0x15,
+   0xaa, 0xaa, 0x0a};
diff --git a/src/axiom-website/hyperdoc/bitmaps/surd.bitmap b/src/axiom-website/hyperdoc/bitmaps/surd.bitmap
new file mode 100644
index 0000000..afe3109
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/surd.bitmap
@@ -0,0 +1,8 @@
+#define surd_width 16
+#define surd_height 16
+#define surd_x_hot -1
+#define surd_y_hot -1
+static char surd_bits[] = {
+   0x00, 0x00, 0x00, 0x60, 0x00, 0x30, 0x00, 0x10, 0x00, 0x18, 0x00, 0x08,
+   0x00, 0x0c, 0x00, 0x04, 0x00, 0x06, 0x07, 0x02, 0x04, 0x03, 0x0c, 0x01,
+   0x98, 0x01, 0x90, 0x00, 0xf0, 0x00, 0x60, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/tau.bitmap b/src/axiom-website/hyperdoc/bitmaps/tau.bitmap
new file mode 100644
index 0000000..2f6146c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/tau.bitmap
@@ -0,0 +1,8 @@
+#define tau_width 16
+#define tau_height 16
+#define tau_x_hot -1
+#define tau_y_hot -1
+static char tau_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0xf8, 0x1f, 0x9c, 0x01,
+   0xce, 0x00, 0xc6, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x30, 0x00,
+   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/tear.bitmap b/src/axiom-website/hyperdoc/bitmaps/tear.bitmap
new file mode 100644
index 0000000..cb43a0c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/tear.bitmap
@@ -0,0 +1,23 @@
+#define tear_width 60
+#define tear_height 30
+static char tear_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0b, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b,
+   0xfd, 0x01, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x0b, 0xfd, 0x01, 0x00, 0xe0,
+   0x03, 0x00, 0xf0, 0x0b, 0xfd, 0x01, 0x00, 0x40, 0x0e, 0x00, 0xf0, 0x0b,
+   0xfd, 0x71, 0xfe, 0xcc, 0x38, 0xe6, 0xf1, 0x0b, 0xfd, 0x01, 0x00, 0x80,
+   0xe0, 0x00, 0xf0, 0x0b, 0xfd, 0x01, 0x00, 0x80, 0x81, 0x03, 0xf0, 0x0b,
+   0xfd, 0xf1, 0x3c, 0x3f, 0x01, 0x8e, 0xf1, 0x0b, 0xfd, 0x01, 0x00, 0x00,
+   0x03, 0x38, 0xf0, 0x0b, 0xfd, 0x01, 0x00, 0x00, 0x02, 0xe0, 0xf0, 0x0b,
+   0xfd, 0xf1, 0xf3, 0x73, 0x06, 0x80, 0xf3, 0x0b, 0xfd, 0x01, 0x00, 0x00,
+   0x04, 0x00, 0xf6, 0x0b, 0xfd, 0x01, 0x00, 0x00, 0x0c, 0xf0, 0xff, 0x0b,
+   0xfd, 0xf1, 0x3c, 0x9f, 0x09, 0x9f, 0xf1, 0x0b, 0xfd, 0x01, 0x00, 0x00,
+   0xf8, 0x01, 0xf0, 0x0b, 0xfd, 0x01, 0x00, 0x00, 0x10, 0x00, 0xf0, 0x0b,
+   0xfd, 0xf1, 0x99, 0xfc, 0x3c, 0xee, 0xf1, 0x0b, 0xfd, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0xf0, 0x0b, 0xfd, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b,
+   0xfd, 0x81, 0xff, 0x01, 0x3f, 0x7e, 0xf0, 0x0b, 0xfd, 0xf9, 0xff, 0x3f,
+   0x00, 0xff, 0xf3, 0x0b, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/theta-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/theta-cap.bitmap
new file mode 100644
index 0000000..f0017b6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/theta-cap.bitmap
@@ -0,0 +1,8 @@
+#define Theta_width 16
+#define Theta_height 16
+#define Theta_x_hot -1
+#define Theta_y_hot -1
+static char Theta_bits[] = {
+   0xc0, 0x07, 0xf0, 0x1f, 0x38, 0x38, 0x18, 0x30, 0x0c, 0x60, 0x0c, 0x60,
+   0x0c, 0x60, 0xfc, 0x7f, 0xfc, 0x7f, 0x0c, 0x60, 0x0c, 0x60, 0x0c, 0x60,
+   0x18, 0x30, 0x38, 0x38, 0xf0, 0x1f, 0xe0, 0x0f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/theta.bitmap b/src/axiom-website/hyperdoc/bitmaps/theta.bitmap
new file mode 100644
index 0000000..616c839
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/theta.bitmap
@@ -0,0 +1,8 @@
+#define theta_width 16
+#define theta_height 16
+#define theta_x_hot -1
+#define theta_y_hot -1
+static char theta_bits[] = {
+   0xc0, 0x03, 0xe0, 0x07, 0x60, 0x0c, 0x60, 0x0c, 0x60, 0x0c, 0xc0, 0x0c,
+   0x80, 0x1f, 0x30, 0x0f, 0x18, 0x03, 0x18, 0x03, 0x8c, 0x01, 0xfc, 0x01,
+   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/top.bitmap b/src/axiom-website/hyperdoc/bitmaps/top.bitmap
new file mode 100644
index 0000000..7b0ed8a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/top.bitmap
@@ -0,0 +1,6 @@
+#define top_width 16
+#define top_height 16
+static char top_bits[] = {
+   0xfc, 0x3f, 0xfc, 0x3f, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+   0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+   0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01};
diff --git a/src/axiom-website/hyperdoc/bitmaps/triangle.bitmap b/src/axiom-website/hyperdoc/bitmaps/triangle.bitmap
new file mode 100644
index 0000000..669046d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/triangle.bitmap
@@ -0,0 +1,6 @@
+#define triangle_width 16
+#define triangle_height 16
+static char triangle_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x40, 0x02,
+   0x40, 0x02, 0x20, 0x04, 0x20, 0x04, 0x10, 0x04, 0x10, 0x08, 0x08, 0x08,
+   0x08, 0x10, 0x04, 0x10, 0x04, 0x20, 0xfc, 0x3f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/uij.bitmap b/src/axiom-website/hyperdoc/bitmaps/uij.bitmap
new file mode 100644
index 0000000..9e5a1c5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/uij.bitmap
@@ -0,0 +1,9 @@
+#define uij_width 25
+#define uij_height 16
+static char uij_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x1c, 0x03, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x00,
+   0x1a, 0x83, 0xc1, 0x00, 0x18, 0x83, 0x40, 0x00, 0x8c, 0x01, 0x00, 0x00,
+   0x8c, 0x61, 0x30, 0x00, 0x8c, 0xe5, 0x70, 0x00, 0xcc, 0xd5, 0x68, 0x00,
+   0xf8, 0x43, 0x60, 0x00, 0x00, 0xe0, 0x20, 0x00, 0x00, 0xa0, 0x20, 0x00,
+   0x00, 0xe0, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x16, 0x00,
+   0x00, 0x00, 0x1e, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/uj.bitmap b/src/axiom-website/hyperdoc/bitmaps/uj.bitmap
new file mode 100644
index 0000000..15a4949
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/uj.bitmap
@@ -0,0 +1,7 @@
+#define uj_width 20
+#define uj_height 16
+static char uj_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x03, 0x00, 0x1a, 0x03, 0x06,
+   0x1a, 0x03, 0x02, 0x18, 0x03, 0x00, 0x8c, 0x81, 0x01, 0x8c, 0x81, 0x03,
+   0x8c, 0x45, 0x03, 0xcc, 0x05, 0x03, 0xf8, 0x03, 0x01, 0x00, 0x00, 0x01,
+   0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xf0, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/unpick.bitmap b/src/axiom-website/hyperdoc/bitmaps/unpick.bitmap
new file mode 100644
index 0000000..33d4d21
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/unpick.bitmap
@@ -0,0 +1,6 @@
+#define unpick_width 16
+#define unpick_height 16
+static char unpick_bits[] = {
+   0x55, 0x55, 0x02, 0xe0, 0x51, 0x75, 0xaa, 0xea, 0x51, 0x75, 0xaa, 0xea,
+   0x51, 0x75, 0xaa, 0xea, 0x51, 0x75, 0xaa, 0xea, 0x51, 0x75, 0xaa, 0xea,
+   0x51, 0x75, 0xfe, 0xff, 0xff, 0x7f, 0xaa, 0xaa};
diff --git a/src/axiom-website/hyperdoc/bitmaps/unpick_old.bitmap b/src/axiom-website/hyperdoc/bitmaps/unpick_old.bitmap
new file mode 100644
index 0000000..99f977d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/unpick_old.bitmap
@@ -0,0 +1,6 @@
+#define Xopenfbox_width 16
+#define Xopenfbox_height 16
+static char Xopenfbox_bits[] = {
+   0xff, 0xff, 0x01, 0x80, 0xfd, 0xbf, 0xfd, 0xbf, 0x0d, 0xb0, 0x0d, 0xb0,
+   0x0d, 0xb0, 0x0d, 0xb0, 0x0d, 0xb0, 0x0d, 0xb0, 0x0d, 0xb0, 0x0d, 0xb0,
+   0xfd, 0xbf, 0xfd, 0xbf, 0x01, 0x80, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/up.bitmap b/src/axiom-website/hyperdoc/bitmaps/up.bitmap
new file mode 100644
index 0000000..0e9bf95
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/up.bitmap
@@ -0,0 +1,23 @@
+#define up_width 60
+#define up_height 30
+static char up_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xcf,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x7f, 0x00,
+   0xf8, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x07, 0x00,
+   0x80, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfb, 0xfd, 0x7f, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01,
+   0xfe, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01,
+   0xfe, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01,
+   0xfe, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01,
+   0xfe, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/up2.bitmap b/src/axiom-website/hyperdoc/bitmaps/up2.bitmap
new file mode 100644
index 0000000..97dc84e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/up2.bitmap
@@ -0,0 +1,23 @@
+#define up2_width 60
+#define up2_height 30
+static char up2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xf7, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4,
+   0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xfa, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xf5, 0xfa, 0x87, 0xff, 0xe1, 0x0f, 0xc0, 0xff, 0xf5,
+   0xfa, 0x87, 0xff, 0xe1, 0x0f, 0x80, 0xff, 0xf5, 0xfa, 0xcf, 0xff, 0xf3,
+   0xcf, 0x9f, 0xff, 0xf5, 0xfa, 0xcf, 0xff, 0xf3, 0xcf, 0x3f, 0xff, 0xf5,
+   0xfa, 0xcf, 0xff, 0xf3, 0xcf, 0x3f, 0xff, 0xf5, 0xfa, 0xcf, 0xff, 0xf3,
+   0xcf, 0x3f, 0xff, 0xf5, 0xfa, 0xcf, 0xff, 0xf3, 0xcf, 0x3f, 0xff, 0xf5,
+   0xfa, 0xcf, 0xff, 0xf3, 0xcf, 0x9f, 0xff, 0xf5, 0xfa, 0xcf, 0xff, 0xf3,
+   0x0f, 0x80, 0xff, 0xf5, 0xfa, 0xcf, 0xff, 0xf3, 0x0f, 0xc0, 0xff, 0xf5,
+   0xfa, 0xcf, 0xff, 0xf3, 0xcf, 0xff, 0xff, 0xf5, 0xfa, 0x8f, 0xff, 0xf1,
+   0xcf, 0xff, 0xff, 0xf5, 0xfa, 0x1f, 0xff, 0xf8, 0xcf, 0xff, 0xe1, 0xf5,
+   0xfa, 0x3f, 0x7e, 0xfc, 0xcf, 0xff, 0xc0, 0xf5, 0xfa, 0x7f, 0x00, 0xfe,
+   0x87, 0x7f, 0x92, 0xf5, 0xfa, 0xff, 0x00, 0xff, 0x87, 0x3f, 0x33, 0xf5,
+   0xfa, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x73, 0xf5, 0xfa, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xf3, 0xf5, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf5,
+   0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf5, 0xfa, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xf3, 0xf5, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/up3.bitmap b/src/axiom-website/hyperdoc/bitmaps/up3.bitmap
new file mode 100644
index 0000000..81bccb5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/up3.bitmap
@@ -0,0 +1,23 @@
+#define up3_width 60
+#define up3_height 30
+static char up3_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
+   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/up3d.bitmap b/src/axiom-website/hyperdoc/bitmaps/up3d.bitmap
new file mode 100644
index 0000000..f1f5c67
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/up3d.bitmap
@@ -0,0 +1,23 @@
+#define up3_width 60
+#define up3_height 30
+static char up3_bits[] = {
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xfa,
+   0xab, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0xfd, 0x57, 0x55, 0x55, 0x07,
+   0xaa, 0xaa, 0xaa, 0xff, 0xbf, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0xd5, 0xff,
+   0x7f, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xfa, 0xff, 0xff, 0xab, 0xaa, 0x0e,
+   0x51, 0x55, 0xfd, 0xff, 0xff, 0x57, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xff,
+   0xbf, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0xd5, 0xff, 0x7f, 0x55, 0x55, 0x07,
+   0xaa, 0xaa, 0xaa, 0xff, 0xbf, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0xd5, 0xff,
+   0x7f, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xff, 0xbf, 0xaa, 0xaa, 0x0e,
+   0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x07,
+   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0x51, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0x07, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e,
+   0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0x0f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05};
diff --git a/src/axiom-website/hyperdoc/bitmaps/up3di.bitmap b/src/axiom-website/hyperdoc/bitmaps/up3di.bitmap
new file mode 100644
index 0000000..599d83b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/up3di.bitmap
@@ -0,0 +1,23 @@
+#define up3di_width 60
+#define up3di_height 30
+static char up3di_bits[] = {
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf5, 0xaa, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xfa, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3,
+   0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xf8, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0xf1, 0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xf8,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf1, 0xae, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xf8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf1,
+   0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xf8, 0x55, 0x55, 0x55, 0x05,
+   0x54, 0x55, 0x55, 0xf1, 0xae, 0xaa, 0xaa, 0x02, 0xa8, 0xaa, 0xaa, 0xf8,
+   0x55, 0x55, 0x55, 0x00, 0x40, 0x55, 0x55, 0xf1, 0xae, 0xaa, 0x2a, 0x00,
+   0x80, 0xaa, 0xaa, 0xf8, 0x55, 0x55, 0x05, 0x00, 0x00, 0x54, 0x55, 0xf1,
+   0xae, 0xaa, 0x02, 0x00, 0x00, 0xa8, 0xaa, 0xf8, 0x55, 0x55, 0x55, 0x00,
+   0x40, 0x55, 0x55, 0xf1, 0xae, 0xaa, 0x2a, 0x00, 0x80, 0xaa, 0xaa, 0xf8,
+   0x55, 0x55, 0x55, 0x00, 0x40, 0x55, 0x55, 0xf1, 0xae, 0xaa, 0x2a, 0x00,
+   0x80, 0xaa, 0xaa, 0xf8, 0x55, 0x55, 0x55, 0x00, 0x40, 0x55, 0x55, 0xf1,
+   0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xf8, 0x55, 0x55, 0x55, 0x55,
+   0x55, 0x55, 0x55, 0xf1, 0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xf8,
+   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf1, 0xae, 0xaa, 0xaa, 0xaa,
+   0xaa, 0xaa, 0xaa, 0xf8, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xf1,
+   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xfa};
diff --git a/src/axiom-website/hyperdoc/bitmaps/updots.bitmap b/src/axiom-website/hyperdoc/bitmaps/updots.bitmap
new file mode 100644
index 0000000..9876bd4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/updots.bitmap
@@ -0,0 +1,23 @@
+#define return3_width 60
+#define return3_height 30
+static char return3_bits[] = {
+   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x07,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x1f, 0x00,
+   0xc0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xfb, 0xfd, 0xff, 0x3f, 0x00,
+   0xe0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x8f,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x8f,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x3f, 0x00,
+   0xe0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/upsilon-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/upsilon-cap.bitmap
new file mode 100644
index 0000000..6c6b1aa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/upsilon-cap.bitmap
@@ -0,0 +1,8 @@
+#define Upsilon_width 16
+#define Upsilon_height 16
+#define Upsilon_x_hot -1
+#define Upsilon_y_hot -1
+static char Upsilon_bits[] = {
+   0x18, 0x18, 0x3c, 0x3c, 0x6c, 0x32, 0xc4, 0x23, 0x84, 0x21, 0x80, 0x01,
+   0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+   0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xc0, 0x03};
diff --git a/src/axiom-website/hyperdoc/bitmaps/upsilon.bitmap b/src/axiom-website/hyperdoc/bitmaps/upsilon.bitmap
new file mode 100644
index 0000000..bdb59e6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/upsilon.bitmap
@@ -0,0 +1,8 @@
+#define upsilon_width 16
+#define upsilon_height 16
+#define upsilon_x_hot -1
+#define upsilon_y_hot -1
+static char upsilon_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x1e, 0x3c, 0x1a, 0x0e,
+   0x18, 0x06, 0x18, 0x06, 0x18, 0x06, 0x18, 0x06, 0x38, 0x07, 0xf0, 0x03,
+   0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/wr.bitmap b/src/axiom-website/hyperdoc/bitmaps/wr.bitmap
new file mode 100644
index 0000000..c454dd4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/wr.bitmap
@@ -0,0 +1,9 @@
+#define wr_width 25
+#define wr_height 16
+static char wr_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x70, 0xcc, 0x00, 0x00, 0x68, 0xcc, 0x00, 0x00, 0x68, 0x8c, 0x00, 0x00,
+   0x60, 0x8c, 0x00, 0x00, 0x30, 0x86, 0x00, 0x00, 0x30, 0xc6, 0x00, 0x00,
+   0x30, 0x46, 0x6c, 0x00, 0x30, 0x66, 0xdc, 0x00, 0xe0, 0x3d, 0x5a, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00,
+   0x00, 0x00, 0x04, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/x1.xbm b/src/axiom-website/hyperdoc/bitmaps/x1.xbm
new file mode 100644
index 0000000..7dfb5d3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/x1.xbm
@@ -0,0 +1,24 @@
+#define x1_width 81
+#define x1_height 22
+static char x1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00,
+   0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x70, 0xfe, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfe, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x1c, 0x00, 0xc0, 0xc0, 0x41, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x10,
+   0x22, 0x00, 0xf0, 0x20, 0x42, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x10, 0x63,
+   0x00, 0xc0, 0x30, 0x46, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x10, 0x63, 0x00,
+   0xc0, 0x30, 0x46, 0xfe, 0x70, 0x06, 0x00, 0x00, 0x10, 0x63, 0x00, 0xc0,
+   0x30, 0x46, 0xfe, 0x60, 0x02, 0xf8, 0x1f, 0x10, 0x63, 0x00, 0xc0, 0x30,
+   0x46, 0xfe, 0xc0, 0x01, 0x00, 0x00, 0x10, 0x63, 0x00, 0xc0, 0x30, 0x46,
+   0xfe, 0x80, 0x01, 0x00, 0x00, 0x10, 0x63, 0x00, 0xc0, 0x30, 0x46, 0xfe,
+   0x40, 0x03, 0xf8, 0x1f, 0x10, 0x63, 0x00, 0xc0, 0x30, 0x46, 0xfe, 0x20,
+   0x06, 0x00, 0x00, 0x10, 0x22, 0xcc, 0xc0, 0x20, 0x42, 0xfe, 0x30, 0x0e,
+   0x00, 0x00, 0x10, 0x1c, 0xcc, 0xf0, 0xc1, 0x41, 0xfe, 0x00, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfe, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x70,
+   0x00, 0x00, 0x00, 0x00, 0x70, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xfe};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xbar.bitmap b/src/axiom-website/hyperdoc/bitmaps/xbar.bitmap
new file mode 100644
index 0000000..5f58377
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xbar.bitmap
@@ -0,0 +1,6 @@
+#define xbar_width 16
+#define xbar_height 16
+static char xbar_bits[] = {
+   0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0e, 0x90, 0x1d,
+   0x98, 0x0d, 0x80, 0x01, 0xc0, 0x00, 0xc0, 0x00, 0xd8, 0x08, 0xf8, 0x04,
+   0xb8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xdesp.bitmap b/src/axiom-website/hyperdoc/bitmaps/xdesp.bitmap
new file mode 100644
index 0000000..87a89bc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xdesp.bitmap
@@ -0,0 +1,6 @@
+#define Xcrazed_width 16
+#define Xcrazed_height 16
+static char Xcrazed_bits[] = {
+   0xe0, 0x07, 0x18, 0x18, 0x04, 0x20, 0x72, 0x4e, 0x8a, 0x51, 0x29, 0x94,
+   0x89, 0x91, 0x71, 0x8e, 0x01, 0x80, 0xe1, 0x87, 0x11, 0x88, 0x0a, 0x50,
+   0xf2, 0x4f, 0x04, 0x20, 0x18, 0x18, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xe.xbm b/src/axiom-website/hyperdoc/bitmaps/xe.xbm
new file mode 100644
index 0000000..28abcc6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xe.xbm
@@ -0,0 +1,14 @@
+#define xe_width 47
+#define xe_height 22
+static char xe_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x80,
+   0xe0, 0x10, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x09, 0x00, 0x00, 0x00, 0x80,
+   0xc0, 0x05, 0x00, 0x00, 0x00, 0x80, 0x80, 0x03, 0x00, 0x00, 0x00, 0x80,
+   0x00, 0x07, 0x00, 0x00, 0x00, 0x81, 0x80, 0x07, 0x00, 0x00, 0x80, 0x81,
+   0x40, 0x0e, 0x00, 0x00, 0x80, 0x81, 0x20, 0x0c, 0x00, 0x00, 0x80, 0x81,
+   0x10, 0x1c, 0x00, 0x00, 0x80, 0x81, 0x38, 0x78, 0x7c, 0x77, 0xf8, 0x81,
+   0x00, 0x00, 0x46, 0xce, 0x8c, 0x81, 0x00, 0x00, 0x46, 0xc6, 0x8c, 0x81,
+   0x00, 0x00, 0x3e, 0xc6, 0x8c, 0x81, 0x00, 0x00, 0x06, 0xc6, 0x8c, 0x81,
+   0x00, 0x00, 0x46, 0xc6, 0x8c, 0x81, 0x00, 0x00, 0x3c, 0x8e, 0x79, 0x83,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xfbox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xfbox.bitmap
new file mode 100644
index 0000000..d101d8e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xfbox.bitmap
@@ -0,0 +1,6 @@
+#define Xfbox_width 16
+#define Xfbox_height 16
+static char Xfbox_bits[] = {
+   0xff, 0xff, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
+   0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
+   0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xfcirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xfcirc.bitmap
new file mode 100644
index 0000000..3037cc9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xfcirc.bitmap
@@ -0,0 +1,6 @@
+#define Xopencirc_width 16
+#define Xopencirc_height 16
+static char Xopencirc_bits[] = {
+   0xe0, 0x07, 0x18, 0x18, 0x04, 0x20, 0x02, 0x40, 0x02, 0x40, 0x01, 0x80,
+   0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x40,
+   0x02, 0x40, 0x04, 0x20, 0x18, 0x18, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xfullbox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xfullbox.bitmap
new file mode 100644
index 0000000..6573234
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xfullbox.bitmap
@@ -0,0 +1,6 @@
+#define Xfbox_width 16
+#define Xfbox_height 16
+static char Xfbox_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f,
+   0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f,
+   0xfc, 0x3f, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xfullcirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xfullcirc.bitmap
new file mode 100644
index 0000000..3677b88
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xfullcirc.bitmap
@@ -0,0 +1,6 @@
+#define Xfullcirc_width 16
+#define Xfullcirc_height 16
+static char Xfullcirc_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xf0, 0x0f, 0xf8, 0x1f,
+   0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf0, 0x0f,
+   0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xfullfbox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xfullfbox.bitmap
new file mode 100644
index 0000000..01ec060
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xfullfbox.bitmap
@@ -0,0 +1,6 @@
+#define npick_width 16
+#define npick_height 16
+static char npick_bits[] = {
+   0xff, 0xff, 0x01, 0x80, 0xfd, 0xbf, 0xfd, 0xbf, 0xfd, 0xbf, 0xfd, 0xbf,
+   0xfd, 0xbf, 0xfd, 0xbf, 0xfd, 0xbf, 0xfd, 0xbf, 0xfd, 0xbf, 0xfd, 0xbf,
+   0xfd, 0xbf, 0xfd, 0xbf, 0x01, 0x80, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xfullfcirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xfullfcirc.bitmap
new file mode 100644
index 0000000..c936f26
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xfullfcirc.bitmap
@@ -0,0 +1,6 @@
+#define Xfullcirc_width 16
+#define Xfullcirc_height 16
+static char Xfullcirc_bits[] = {
+   0xe0, 0x07, 0x18, 0x18, 0x04, 0x20, 0xe2, 0x47, 0xf2, 0x4f, 0xf9, 0x9f,
+   0xf9, 0x9f, 0xf9, 0x9f, 0xf9, 0x9f, 0xf9, 0x9f, 0xf9, 0x9f, 0xf2, 0x4f,
+   0xe2, 0x47, 0x04, 0x20, 0x18, 0x18, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xgreybox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xgreybox.bitmap
new file mode 100644
index 0000000..da26c27
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xgreybox.bitmap
@@ -0,0 +1,6 @@
+#define Xgreybox_width 16
+#define Xgreybox_height 16
+static char Xgreybox_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xfc, 0x3f, 0xac, 0x3a, 0x5c, 0x35,
+   0xac, 0x3a, 0x5c, 0x35, 0xac, 0x3a, 0x5c, 0x35, 0xac, 0x3a, 0x5c, 0x35,
+   0xfc, 0x3f, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xgreycirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xgreycirc.bitmap
new file mode 100644
index 0000000..7fe1313
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xgreycirc.bitmap
@@ -0,0 +1,6 @@
+#define Xgreycirc_width 16
+#define Xgreycirc_height 16
+static char Xgreycirc_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xf0, 0x0f, 0xb8, 0x1a,
+   0x58, 0x1d, 0xb8, 0x1a, 0x58, 0x1d, 0xb8, 0x1a, 0x58, 0x1d, 0xf0, 0x0f,
+   0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xgreyfbox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xgreyfbox.bitmap
new file mode 100644
index 0000000..6847308
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xgreyfbox.bitmap
@@ -0,0 +1,6 @@
+#define Xgreyfbox_width 16
+#define Xgreyfbox_height 16
+static char Xgreyfbox_bits[] = {
+   0xff, 0xff, 0x01, 0x80, 0xfd, 0xbf, 0xfd, 0xbf, 0xad, 0xba, 0x5d, 0xb5,
+   0xad, 0xba, 0x5d, 0xb5, 0xad, 0xba, 0x5d, 0xb5, 0xad, 0xba, 0x5d, 0xb5,
+   0xfd, 0xbf, 0xfd, 0xbf, 0x01, 0x80, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xgreyfcirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xgreyfcirc.bitmap
new file mode 100644
index 0000000..b0c7861
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xgreyfcirc.bitmap
@@ -0,0 +1,6 @@
+#define Xgreycirc_width 16
+#define Xgreycirc_height 16
+static char Xgreycirc_bits[] = {
+   0xe0, 0x07, 0x18, 0x18, 0x04, 0x20, 0xe2, 0x47, 0xf2, 0x4f, 0xb9, 0x9a,
+   0x59, 0x9d, 0xb9, 0x9a, 0x59, 0x9d, 0xb9, 0x9a, 0x59, 0x9d, 0xf2, 0x4f,
+   0xe2, 0x47, 0x04, 0x20, 0x18, 0x18, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xhappy.bitmap b/src/axiom-website/hyperdoc/bitmaps/xhappy.bitmap
new file mode 100644
index 0000000..808e6a6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xhappy.bitmap
@@ -0,0 +1,6 @@
+#define Xhappy_width 16
+#define Xhappy_height 16
+static char Xhappy_bits[] = {
+   0xe0, 0x07, 0x18, 0x18, 0x04, 0x20, 0x02, 0x40, 0x32, 0x4c, 0x31, 0x8c,
+   0x01, 0x80, 0x01, 0x80, 0x09, 0x90, 0x19, 0x98, 0xf1, 0x8f, 0xe2, 0x47,
+   0x02, 0x40, 0x04, 0x20, 0x18, 0x18, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xi-cap.bitmap b/src/axiom-website/hyperdoc/bitmaps/xi-cap.bitmap
new file mode 100644
index 0000000..d327114
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xi-cap.bitmap
@@ -0,0 +1,8 @@
+#define Xi_width 16
+#define Xi_height 16
+#define Xi_x_hot -1
+#define Xi_y_hot -1
+static char Xi_bits[] = {
+   0xfc, 0x3f, 0xfc, 0x3f, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x10, 0x08, 0xf0, 0x0f, 0xf0, 0x0f, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x04, 0x20, 0xfc, 0x3f, 0xfc, 0x3f};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xi.bitmap b/src/axiom-website/hyperdoc/bitmaps/xi.bitmap
new file mode 100644
index 0000000..59af9ed
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xi.bitmap
@@ -0,0 +1,6 @@
+#define xi_width 16
+#define xi_height 16
+static char xi_bits[] = {
+ 0x18,0x00,0x8c,0x00,0xfc,0x01,0xf8,0x01,0x0c,0x00,0x0c,0x00,0x8c,0x00,0xf8,
+ 0x01,0xf8,0x01,0x0c,0x00,0x0c,0x00,0x3c,0x00,0xf0,0x00,0xc0,0x00,0xfe,0x00,
+ 0x38,0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xii.bitmap b/src/axiom-website/hyperdoc/bitmaps/xii.bitmap
new file mode 100644
index 0000000..2dc930c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xii.bitmap
@@ -0,0 +1,6 @@
+#define xii_width 16
+#define xii_height 16
+static char xii_bits[] = {
+   0x18, 0x00, 0x8c, 0x00, 0xfc, 0x01, 0xf8, 0x01, 0x0c, 0x00, 0x0c, 0x00,
+   0x8c, 0x30, 0xf8, 0x11, 0xf8, 0x01, 0x0c, 0x18, 0x0c, 0x38, 0x3c, 0x34,
+   0xf0, 0x10, 0xc0, 0x38, 0xfe, 0x28, 0x38, 0x38};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xiii.bitmap b/src/axiom-website/hyperdoc/bitmaps/xiii.bitmap
new file mode 100644
index 0000000..a31fde3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xiii.bitmap
@@ -0,0 +1,6 @@
+#define xiii_width 16
+#define xiii_height 16
+static char xiii_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x03, 0x64, 0x07, 0x66, 0xc3,
+   0x60, 0x40, 0x30, 0x00, 0x30, 0x30, 0x36, 0x72, 0x3e, 0x69, 0xee, 0x21,
+   0x00, 0x70, 0x00, 0x50, 0x00, 0x70, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xj.bitmap b/src/axiom-website/hyperdoc/bitmaps/xj.bitmap
new file mode 100644
index 0000000..5f813b1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xj.bitmap
@@ -0,0 +1,8 @@
+#define xj_width 16
+#define xj_height 16
+#define xj_x_hot -1
+#define xj_y_hot -1
+static char xj_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xb8, 0x43, 0x64, 0x07,
+   0x66, 0x63, 0x60, 0xe0, 0x30, 0xd0, 0x30, 0xc0, 0x36, 0x42, 0x3e, 0x41,
+   0xee, 0x61, 0x00, 0x60, 0x00, 0x28, 0x00, 0x38};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xmax.bitmap b/src/axiom-website/hyperdoc/bitmaps/xmax.bitmap
new file mode 100644
index 0000000..029df05
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xmax.bitmap
@@ -0,0 +1,11 @@
+#define xmax_width 45
+#define xmax_height 16
+static char xmax_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0xc8, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x06, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x60, 0xe0, 0xe7, 0x78, 0x9c, 0x03, 0x6c, 0xc4, 0x9d, 0xd9, 0x98, 0x01,
+   0x7c, 0xc2, 0x88, 0x89, 0xf1, 0x00, 0xdc, 0xc3, 0x88, 0xf1, 0x61, 0x00,
+   0x00, 0xc0, 0x88, 0x99, 0xf1, 0x00, 0x00, 0xc0, 0x88, 0x89, 0xd3, 0x00,
+   0x00, 0xe0, 0xdd, 0xfb, 0x9f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xmin.bitmap b/src/axiom-website/hyperdoc/bitmaps/xmin.bitmap
new file mode 100644
index 0000000..f513649
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xmin.bitmap
@@ -0,0 +1,11 @@
+#define xmin_width 45
+#define xmin_height 16
+static char xmin_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x00, 0x00, 0x00,
+   0x90, 0x1d, 0x00, 0x10, 0x00, 0x00, 0x98, 0x0d, 0x00, 0x30, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xc0, 0xc0, 0xcf, 0x39, 0x3f, 0x00, 0xd8, 0x88, 0x3b, 0x33, 0x6e, 0x00,
+   0xf8, 0x84, 0x11, 0x33, 0x46, 0x00, 0xb8, 0x87, 0x11, 0x33, 0x46, 0x00,
+   0x00, 0x80, 0x11, 0x33, 0x46, 0x00, 0x00, 0x80, 0x11, 0x33, 0x46, 0x00,
+   0x00, 0xc0, 0xbb, 0x7f, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xnobox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xnobox.bitmap
new file mode 100644
index 0000000..9b464f4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xnobox.bitmap
@@ -0,0 +1,6 @@
+#define Xnobox_width 16
+#define Xnobox_height 16
+static char Xnobox_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xnocirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xnocirc.bitmap
new file mode 100644
index 0000000..70747ae
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xnocirc.bitmap
@@ -0,0 +1,6 @@
+#define Xnoface_width 16
+#define Xnoface_height 16
+static char Xnoface_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xnoface.bitmap b/src/axiom-website/hyperdoc/bitmaps/xnoface.bitmap
new file mode 100644
index 0000000..70747ae
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xnoface.bitmap
@@ -0,0 +1,6 @@
+#define Xnoface_width 16
+#define Xnoface_height 16
+static char Xnoface_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xopenbox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xopenbox.bitmap
new file mode 100644
index 0000000..9bbd1ed
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xopenbox.bitmap
@@ -0,0 +1,6 @@
+#define Xobox_width 16
+#define Xobox_height 16
+static char Xobox_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xfc, 0x3f, 0x0c, 0x30, 0x0c, 0x30,
+   0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30,
+   0xfc, 0x3f, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xopencirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xopencirc.bitmap
new file mode 100644
index 0000000..7504e13
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xopencirc.bitmap
@@ -0,0 +1,6 @@
+#define Xopencirc_width 16
+#define Xopencirc_height 16
+static char Xopencirc_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xf0, 0x0f, 0x38, 0x1c,
+   0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x1c, 0xf0, 0x0f,
+   0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xopenfbox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xopenfbox.bitmap
new file mode 100644
index 0000000..99f977d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xopenfbox.bitmap
@@ -0,0 +1,6 @@
+#define Xopenfbox_width 16
+#define Xopenfbox_height 16
+static char Xopenfbox_bits[] = {
+   0xff, 0xff, 0x01, 0x80, 0xfd, 0xbf, 0xfd, 0xbf, 0x0d, 0xb0, 0x0d, 0xb0,
+   0x0d, 0xb0, 0x0d, 0xb0, 0x0d, 0xb0, 0x0d, 0xb0, 0x0d, 0xb0, 0x0d, 0xb0,
+   0xfd, 0xbf, 0xfd, 0xbf, 0x01, 0x80, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xopenfcirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xopenfcirc.bitmap
new file mode 100644
index 0000000..baec8ab
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xopenfcirc.bitmap
@@ -0,0 +1,6 @@
+#define Xoocirc_width 16
+#define Xoocirc_height 16
+static char Xoocirc_bits[] = {
+   0xe0, 0x07, 0x18, 0x18, 0x04, 0x20, 0xe2, 0x47, 0xf2, 0x4f, 0x39, 0x9c,
+   0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x39, 0x9c, 0xf2, 0x4f,
+   0xe2, 0x47, 0x04, 0x20, 0x18, 0x18, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xperv.bitmap b/src/axiom-website/hyperdoc/bitmaps/xperv.bitmap
new file mode 100644
index 0000000..18803b2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xperv.bitmap
@@ -0,0 +1,6 @@
+#define Xperv_width 16
+#define Xperv_height 16
+static char Xperv_bits[] = {
+   0xe0, 0x07, 0x18, 0x18, 0x24, 0x24, 0x62, 0x46, 0xc2, 0x43, 0xb1, 0x8d,
+   0x31, 0x8c, 0x01, 0xa0, 0x01, 0xb0, 0x01, 0x98, 0x01, 0x8c, 0xe2, 0x47,
+   0x02, 0x40, 0x04, 0x20, 0x18, 0x18, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xq.bitmap b/src/axiom-website/hyperdoc/bitmaps/xq.bitmap
new file mode 100644
index 0000000..5f6dd66
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xq.bitmap
@@ -0,0 +1,9 @@
+#define xq_width 30
+#define xq_height 16
+static char xq_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x3b, 0x00, 0x00, 0x40, 0x76, 0x00, 0x00,
+   0x60, 0x36, 0x58, 0x00, 0x00, 0x06, 0x6c, 0x00, 0x00, 0x03, 0x26, 0x00,
+   0x00, 0x03, 0x26, 0x00, 0x60, 0x23, 0x32, 0x00, 0xe0, 0x13, 0x32, 0x00,
+   0xe0, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x00, 0x3c, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xr.bitmap b/src/axiom-website/hyperdoc/bitmaps/xr.bitmap
new file mode 100644
index 0000000..86208f5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xr.bitmap
@@ -0,0 +1,7 @@
+#define xr_width 20
+#define xr_height 16
+static char xr_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00,
+   0xc8, 0x0e, 0x00, 0xcc, 0x06, 0x00, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x00,
+   0x60, 0x00, 0x00, 0x6c, 0xc4, 0x06, 0x7c, 0xc2, 0x0d, 0xdc, 0xa3, 0x05,
+   0x00, 0x80, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xs.xbm b/src/axiom-website/hyperdoc/bitmaps/xs.xbm
new file mode 100644
index 0000000..8ed23aa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xs.xbm
@@ -0,0 +1,18 @@
+#define xs_width 58
+#define xs_height 22
+static char xs_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xe0, 0xc0, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0xc0, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x17, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xfc, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x1a, 0x00, 0x08,
+   0x00, 0x00, 0x04, 0xfc, 0x00, 0x39, 0x00, 0x0c, 0x00, 0x00, 0x06, 0xfc,
+   0x80, 0x70, 0x00, 0x3e, 0x00, 0x00, 0x1f, 0xfc, 0x40, 0xe0, 0xf0, 0x3e,
+   0x3e, 0x6e, 0x1f, 0xfc, 0x60, 0xc0, 0x89, 0x0c, 0x62, 0xdc, 0x06, 0xfc,
+   0x00, 0x00, 0x38, 0x0c, 0x70, 0x0c, 0x06, 0xfc, 0x00, 0x00, 0xf0, 0x0c,
+   0x6e, 0x0c, 0x06, 0xfc, 0x00, 0x00, 0x80, 0x4c, 0x63, 0x0c, 0x26, 0xfc,
+   0x00, 0x00, 0x88, 0x4c, 0x73, 0x0c, 0x26, 0xfc, 0x00, 0x00, 0x78, 0x38,
+   0xee, 0x1e, 0x1c, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xsad.bitmap b/src/axiom-website/hyperdoc/bitmaps/xsad.bitmap
new file mode 100644
index 0000000..0fcf6ba
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xsad.bitmap
@@ -0,0 +1,6 @@
+#define Xsad_width 16
+#define Xsad_height 16
+static char Xsad_bits[] = {
+   0xe0, 0x07, 0x18, 0x18, 0x04, 0x20, 0x02, 0x40, 0x32, 0x4c, 0x31, 0x8c,
+   0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xe1, 0x87, 0xf1, 0x8f, 0x1a, 0x58,
+   0x02, 0x40, 0x04, 0x20, 0x18, 0x18, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xtickbox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xtickbox.bitmap
new file mode 100644
index 0000000..ffad87c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xtickbox.bitmap
@@ -0,0 +1,6 @@
+#define Xtickbox_width 16
+#define Xtickbox_height 16
+static char Xtickbox_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0xdf, 0xfc, 0xef, 0x0c, 0x70, 0x2c, 0x38,
+   0x6c, 0x1c, 0xec, 0x2e, 0xcc, 0x37, 0x8c, 0x33, 0x0c, 0x31, 0x0c, 0x30,
+   0xfc, 0x3f, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xtickcirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xtickcirc.bitmap
new file mode 100644
index 0000000..9b0dd46
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xtickcirc.bitmap
@@ -0,0 +1,6 @@
+#define Xtickcirc_width 16
+#define Xtickcirc_height 16
+static char Xtickcirc_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe7, 0xf0, 0x77, 0x18, 0x38,
+   0x68, 0x1c, 0xe8, 0x0e, 0xc8, 0x17, 0x98, 0x1b, 0x38, 0x1d, 0xf0, 0x0f,
+   0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xtickfbox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xtickfbox.bitmap
new file mode 100644
index 0000000..67568c9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xtickfbox.bitmap
@@ -0,0 +1,6 @@
+#define Xtickfbox_width 16
+#define Xtickfbox_height 16
+static char Xtickfbox_bits[] = {
+   0xff, 0xff, 0x01, 0x00, 0xfd, 0xdf, 0xfd, 0xef, 0x0d, 0x70, 0x2d, 0xb8,
+   0x6d, 0x9c, 0xed, 0xae, 0xcd, 0xb7, 0x8d, 0xb3, 0x0d, 0xb1, 0x0d, 0xb0,
+   0xfd, 0xbf, 0xfd, 0xbf, 0x01, 0x80, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xtickfcirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xtickfcirc.bitmap
new file mode 100644
index 0000000..33ff16a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xtickfcirc.bitmap
@@ -0,0 +1,6 @@
+#define Xtickfcirc_width 16
+#define Xtickfcirc_height 16
+static char Xtickfcirc_bits[] = {
+   0xe0, 0x07, 0x18, 0x18, 0x04, 0xc0, 0xe2, 0xe7, 0xf2, 0x77, 0x19, 0xb8,
+   0x69, 0x9c, 0xe9, 0x8e, 0xc9, 0x97, 0x99, 0x9b, 0x39, 0x9d, 0xf2, 0x4f,
+   0xe2, 0x47, 0x04, 0x20, 0x18, 0x18, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xxbox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xxbox.bitmap
new file mode 100644
index 0000000..884b49a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xxbox.bitmap
@@ -0,0 +1,6 @@
+#define Xxbox_width 16
+#define Xxbox_height 16
+static char Xxbox_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xfc, 0x3f, 0x3c, 0x3c, 0x7c, 0x3e,
+   0xec, 0x37, 0xcc, 0x33, 0xcc, 0x33, 0xec, 0x37, 0x7c, 0x3e, 0x3c, 0x3c,
+   0xfc, 0x3f, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xxcirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xxcirc.bitmap
new file mode 100644
index 0000000..cfb9658
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xxcirc.bitmap
@@ -0,0 +1,6 @@
+#define Xxcirc_width 16
+#define Xxcirc_height 16
+static char Xxcirc_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xf0, 0x0f, 0x78, 0x1e,
+   0xf8, 0x1f, 0xd8, 0x1b, 0xd8, 0x1b, 0xf8, 0x1f, 0x78, 0x1e, 0xf0, 0x0f,
+   0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xxfbox.bitmap b/src/axiom-website/hyperdoc/bitmaps/xxfbox.bitmap
new file mode 100644
index 0000000..3f66e42
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xxfbox.bitmap
@@ -0,0 +1,6 @@
+#define Xxfbox_width 16
+#define Xxfbox_height 16
+static char Xxfbox_bits[] = {
+   0xff, 0xff, 0x01, 0x80, 0xfd, 0xbf, 0xfd, 0xbf, 0x3d, 0xbc, 0x7d, 0xbe,
+   0xed, 0xb7, 0xcd, 0xb3, 0xcd, 0xb3, 0xed, 0xb7, 0x7d, 0xbe, 0x3d, 0xbc,
+   0xfd, 0xbf, 0xfd, 0xbf, 0x01, 0x80, 0xff, 0xff};
diff --git a/src/axiom-website/hyperdoc/bitmaps/xxfcirc.bitmap b/src/axiom-website/hyperdoc/bitmaps/xxfcirc.bitmap
new file mode 100644
index 0000000..82ae526
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/xxfcirc.bitmap
@@ -0,0 +1,6 @@
+#define Xxfcirc_width 16
+#define Xxfcirc_height 16
+static char Xxfcirc_bits[] = {
+   0xe0, 0x07, 0x18, 0x18, 0x04, 0x20, 0xe2, 0x47, 0xf2, 0x4f, 0x79, 0x9e,
+   0xf9, 0x9f, 0xd9, 0x9b, 0xd9, 0x9b, 0xf9, 0x9f, 0x79, 0x9e, 0xf2, 0x4f,
+   0xe2, 0x47, 0x04, 0x20, 0x18, 0x18, 0xe0, 0x07};
diff --git a/src/axiom-website/hyperdoc/bitmaps/y1.xbm b/src/axiom-website/hyperdoc/bitmaps/y1.xbm
new file mode 100644
index 0000000..8b777dd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/y1.xbm
@@ -0,0 +1,83 @@
+#define y1_width 114
+#define y1_height 64
+static char y1_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x80, 0x0f,
+   0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x7c, 0xfc, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x40, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0xc0, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0xf0, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x40, 0xfc,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0,
+   0x00, 0x40, 0xfc, 0x04, 0x00, 0xc7, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0xc0, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x46, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x26,
+   0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x40, 0xfc,
+   0x04, 0x00, 0x24, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0,
+   0x00, 0x40, 0xfc, 0x04, 0x00, 0x1c, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0xc0, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x18, 0x10, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x08,
+   0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0xf0, 0x01, 0x40, 0xfc,
+   0x04, 0x00, 0x08, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x40, 0xfc, 0x04, 0x80, 0x09, 0x3c, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x07, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x40, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x40, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0xe0, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x01, 0x40, 0xfc, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18, 0x03, 0x40, 0xfc,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18,
+   0x03, 0x40, 0xfc, 0x04, 0x00, 0xc7, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x18, 0x03, 0x40, 0xfc, 0x04, 0x00, 0x46, 0x00, 0x00, 0x08,
+   0x00, 0xff, 0x03, 0x20, 0x00, 0x18, 0x03, 0x40, 0xfc, 0x04, 0x00, 0x26,
+   0x38, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18, 0x03, 0x40, 0xfc,
+   0x04, 0x00, 0x24, 0x64, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18,
+   0x03, 0x40, 0xfc, 0x04, 0x00, 0x1c, 0x20, 0x00, 0x08, 0x00, 0xff, 0x03,
+   0x20, 0x00, 0x18, 0x03, 0x40, 0xfc, 0x04, 0x00, 0x18, 0x20, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x01, 0x40, 0xfc, 0x04, 0x00, 0x08,
+   0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x00, 0x40, 0xfc,
+   0x04, 0x00, 0x08, 0x48, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x40, 0xfc, 0x04, 0x80, 0x09, 0x3c, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x07, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x40, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x40, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0xe0, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x01, 0x40, 0xfc, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18, 0x03, 0x40, 0xfc,
+   0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18,
+   0x03, 0x40, 0xfc, 0x04, 0x00, 0xc7, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x18, 0x03, 0x40, 0xfc, 0x04, 0x00, 0x46, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x18, 0x03, 0x40, 0xfc, 0x04, 0x00, 0x26,
+   0x38, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18, 0x03, 0x40, 0xfc,
+   0x04, 0x00, 0x24, 0x24, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18,
+   0x03, 0x40, 0xfc, 0x04, 0x00, 0x1c, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x18, 0x03, 0x40, 0xfc, 0x04, 0x00, 0x18, 0x38, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x01, 0x40, 0xfc, 0x04, 0x00, 0x08,
+   0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x00, 0x40, 0xfc,
+   0x04, 0x00, 0x08, 0x24, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+   0x00, 0x40, 0xfc, 0x04, 0x80, 0x09, 0x3c, 0x00, 0x08, 0x00, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x07, 0x00, 0x00, 0x08,
+   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc, 0x04, 0x00, 0x00,
+   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xfc,
+   0xfc, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00,
+   0x00, 0x7c, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc};
diff --git a/src/axiom-website/hyperdoc/bitmaps/y2.xbm b/src/axiom-website/hyperdoc/bitmaps/y2.xbm
new file mode 100644
index 0000000..41a99f6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/y2.xbm
@@ -0,0 +1,99 @@
+#define y2_width 138
+#define y2_height 64
+static char y2_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0xf8, 0x01, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00,
+   0x80, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x70, 0x00, 0x7e,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x88, 0x00, 0x3e, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x8c, 0x01, 0x02,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x8c, 0x01, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0xe0, 0x18, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x8c, 0x01, 0x1e,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0xc0, 0x08, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x8c, 0x01, 0x30, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0xc0, 0x04, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x8c, 0x01, 0x60,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x80, 0x04, 0x02, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x8c, 0x01, 0x62, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x80, 0x03, 0x03, 0x08, 0x00, 0x00, 0x20, 0x00, 0x8c, 0x01, 0x63,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x03, 0x02, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x88, 0x30, 0x33, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x01, 0x02, 0x08, 0x00, 0x00, 0x20, 0x00, 0x70, 0x30, 0x1e,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x01, 0x02, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x30, 0x01, 0x02, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x80, 0x07, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x70, 0x00, 0x7e,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x88, 0x00, 0x3e, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x8c, 0x01, 0x02,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x8c, 0x01, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0xe0, 0x18, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x8c, 0x01, 0x1e,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0xc0, 0x08, 0x00, 0x08, 0xf0,
+   0x3f, 0x20, 0x00, 0x8c, 0x01, 0x30, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0xc0, 0x04, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x8c, 0x01, 0x60,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x80, 0x04, 0x07, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x8c, 0x01, 0x62, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x80, 0x83, 0x0c, 0x08, 0xf0, 0x3f, 0x20, 0x00, 0x8c, 0x01, 0x63,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x03, 0x04, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x88, 0x30, 0x33, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x01, 0x04, 0x08, 0x00, 0x00, 0x20, 0x00, 0x70, 0x30, 0x1e,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x01, 0x02, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x30, 0x01, 0x09, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x80, 0x07, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x80, 0x03, 0xe0, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x40, 0x04, 0x90, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x60, 0x0c, 0x18, 0x03,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x60, 0x0c, 0x18, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0xe0, 0x18, 0x00, 0x08, 0x00, 0x00, 0x20, 0x60, 0x0c, 0x00, 0xe3,
+   0x0f, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0xc0, 0x08, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x60, 0x0c, 0x80, 0xc1, 0x06, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0xc0, 0x04, 0x00, 0x08, 0x00, 0x00, 0x20, 0x60, 0x0c, 0xc0, 0xc0,
+   0x06, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x80, 0x04, 0x07, 0x08, 0x00,
+   0x00, 0x20, 0x60, 0x0c, 0x40, 0x62, 0x06, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x80, 0x83, 0x04, 0x08, 0x00, 0x00, 0x20, 0x60, 0x0c, 0x20, 0x62,
+   0x06, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x03, 0x04, 0x08, 0x00,
+   0x00, 0x20, 0x40, 0x84, 0xf1, 0x33, 0x06, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x01, 0x07, 0x08, 0x00, 0x00, 0x20, 0x80, 0x83, 0xf9, 0x33,
+   0x06, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x01, 0x04, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x30, 0x81, 0x04, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x80, 0x07, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x08, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
+   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xfc,
+   0xf8, 0x01, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00,
+   0x80, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc};
diff --git a/src/axiom-website/hyperdoc/bitmaps/y3.xbm b/src/axiom-website/hyperdoc/bitmaps/y3.xbm
new file mode 100644
index 0000000..02cb913
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/y3.xbm
@@ -0,0 +1,62 @@
+#define y3_width 123
+#define y3_height 44
+static char y3_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x3c, 0x00, 0x00,
+   0x3c, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0c, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x8e, 0x01, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x8c, 0x00,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x4c, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0c, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x48, 0x00, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x38, 0x10,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x30, 0x18, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0c, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x10, 0x10, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x10, 0x10,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x13, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0c, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x0e, 0x10, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x1f, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x38,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x00, 0x00, 0x20, 0xe0, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x00, 0x00, 0x20, 0xe0, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x8e, 0x01, 0x20, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x8c, 0x00, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x4c, 0x00,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x48, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x80, 0x01, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x38, 0x38, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x30, 0x64,
+   0x20, 0x00, 0x00, 0x20, 0xf0, 0x83, 0x01, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x10, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x80, 0x01, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x10, 0x20, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x13, 0x10,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x0e, 0x48, 0x20, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x03, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x3c, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00,
+   0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x3c, 0x00, 0x00,
+   0x3c, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf8,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ye.xbm b/src/axiom-website/hyperdoc/bitmaps/ye.xbm
new file mode 100644
index 0000000..dece921
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ye.xbm
@@ -0,0 +1,15 @@
+#define ye_width 46
+#define ye_height 24
+static char ye_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x78, 0x30, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x10, 0x00, 0x00, 0x00, 0xc0,
+   0xe0, 0x08, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x09, 0x00, 0x00, 0x00, 0xc0,
+   0xc0, 0x05, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x03, 0x00, 0x00, 0x80, 0xc0,
+   0x00, 0x03, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x03, 0x00, 0x00, 0xc0, 0xc0,
+   0x00, 0x03, 0x00, 0x00, 0xc0, 0xc0, 0x80, 0x03, 0x00, 0x00, 0xc0, 0xc0,
+   0xc0, 0x87, 0xc7, 0x1d, 0xfc, 0xc0, 0x00, 0xc0, 0x88, 0x33, 0xc6, 0xc0,
+   0x00, 0xc0, 0x88, 0x31, 0xc6, 0xc0, 0x00, 0xc0, 0x87, 0x31, 0xc6, 0xc0,
+   0x00, 0xc0, 0x80, 0x31, 0xc6, 0xc0, 0x00, 0xc0, 0x88, 0x31, 0xc6, 0xc0,
+   0x00, 0x80, 0x87, 0x73, 0xb8, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0};
diff --git a/src/axiom-website/hyperdoc/bitmaps/yi.bitmap b/src/axiom-website/hyperdoc/bitmaps/yi.bitmap
new file mode 100644
index 0000000..734511d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/yi.bitmap
@@ -0,0 +1,6 @@
+#define yi_width 16
+#define yi_height 16
+static char yi_bits[] = {
+   0x00, 0x00, 0x1c, 0x03, 0x1a, 0x03, 0x1a, 0x03, 0x18, 0x03, 0x8c, 0x61,
+   0x8c, 0x21, 0x8c, 0x01, 0xcc, 0x19, 0xf8, 0x38, 0xc0, 0x34, 0xc6, 0x10,
+   0x66, 0x38, 0x3e, 0x28, 0x00, 0x38, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/yr.bitmap b/src/axiom-website/hyperdoc/bitmaps/yr.bitmap
new file mode 100644
index 0000000..c78a9c8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/yr.bitmap
@@ -0,0 +1,7 @@
+#define yr_width 20
+#define yr_height 16
+static char yr_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x06, 0x00,
+   0x34, 0x06, 0x00, 0x34, 0x06, 0x00, 0x30, 0x06, 0x00, 0x18, 0x03, 0x00,
+   0x18, 0x03, 0x00, 0x18, 0x63, 0x03, 0x98, 0xe3, 0x06, 0xf0, 0xd1, 0x02,
+   0x80, 0x41, 0x00, 0x8c, 0x61, 0x00, 0xcc, 0x60, 0x00, 0x7c, 0x20, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/ys.xbm b/src/axiom-website/hyperdoc/bitmaps/ys.xbm
new file mode 100644
index 0000000..ce11343
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/ys.xbm
@@ -0,0 +1,16 @@
+#define ys_width 56
+#define ys_height 21
+static char ys_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x09, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xc0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x03, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x03,
+   0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0xf0, 0x00,
+   0x80, 0x83, 0xf7, 0xf0, 0x71, 0xf7, 0x00, 0xc0, 0x47, 0x64, 0x08, 0xe3,
+   0x66, 0x00, 0x00, 0xc0, 0x61, 0x80, 0x63, 0x60, 0x00, 0x00, 0x80, 0x67,
+   0x70, 0x63, 0x60, 0x00, 0x00, 0x00, 0x66, 0x1a, 0x63, 0x60, 0x02, 0x00,
+   0x40, 0x64, 0x9a, 0x63, 0x60, 0x02, 0x00, 0xc0, 0xc3, 0x71, 0xf7, 0xc1,
+   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/zeta.bitmap b/src/axiom-website/hyperdoc/bitmaps/zeta.bitmap
new file mode 100644
index 0000000..295161b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/zeta.bitmap
@@ -0,0 +1,6 @@
+#define zeta_width 16
+#define zeta_height 16
+static char zeta_bits[] = {
+ 0x04,0x00,0x06,0x02,0x0c,0x07,0xfc,0x07,0xf0,0x00,0x38,0x00,0x18,0x00,0x18,
+ 0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x70,0x00,0xe0,0x00,0xc0,0x00,0x68,0x00,
+ 0x38,0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/zetak.bitmap b/src/axiom-website/hyperdoc/bitmaps/zetak.bitmap
new file mode 100644
index 0000000..4a05e11
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/zetak.bitmap
@@ -0,0 +1,9 @@
+#define zetak_width 25
+#define zetak_height 16
+static char zetak_bits[] = {
+   0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00,
+   0xe0, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+   0x10, 0xe0, 0x00, 0x00, 0x18, 0x40, 0x00, 0x00, 0x18, 0x40, 0x00, 0x00,
+   0x18, 0x60, 0x03, 0x00, 0x30, 0xe0, 0x07, 0x00, 0xf0, 0xe1, 0x02, 0x00,
+   0xc0, 0xe3, 0x00, 0x00, 0x00, 0xb7, 0x02, 0x00, 0x00, 0xb6, 0x02, 0x00,
+   0xc0, 0x93, 0x03, 0x00};
diff --git a/src/axiom-website/hyperdoc/bitmaps/zk.bitmap b/src/axiom-website/hyperdoc/bitmaps/zk.bitmap
new file mode 100644
index 0000000..c062474
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bitmaps/zk.bitmap
@@ -0,0 +1,9 @@
+#define zk_width 25
+#define zk_height 16
+static char zk_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0xc0, 0x09, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00,
+   0x20, 0xc6, 0x01, 0x00, 0x00, 0x83, 0x00, 0x00, 0x80, 0x81, 0x00, 0x00,
+   0xc0, 0xc0, 0x06, 0x00, 0x60, 0xc4, 0x0f, 0x00, 0xf0, 0xc7, 0x05, 0x00,
+   0x90, 0xc3, 0x01, 0x00, 0x00, 0x60, 0x05, 0x00, 0x00, 0x60, 0x05, 0x00,
+   0x00, 0x20, 0x07, 0x00};
diff --git a/src/axiom-website/hyperdoc/bookvol11.pamphlet b/src/axiom-website/hyperdoc/bookvol11.pamphlet
new file mode 100644
index 0000000..bd004ea
--- /dev/null
+++ b/src/axiom-website/hyperdoc/bookvol11.pamphlet
@@ -0,0 +1,43045 @@
+\documentclass{book}
+\usepackage{axiom}
+\usepackage{makeidx}
+\makeindex
+\usepackage{graphicx}
+\begin{document}
+\begin{titlepage}
+\center{\includegraphics{ps/axiomfront.ps}}
+\vskip 0.1in
+\includegraphics{ps/bluebayou.ps}\\
+\vskip 0.1in
+{\Huge{The 30 Year Horizon}}
+\vskip 0.1in
+$$
+\begin{array}{lll}
+Manuel\ Bronstein      & William\ Burge   & Timothy\ Daly \\
+James\ Davenport       & Michael\ Dewar   & Martin\ Dunstan \\
+Albrecht\ Fortenbacher & Patrizia\ Gianni & Johannes\ Grabmeier \\
+Jocelyn\ Guidry        & Richard\ Jenks   & Larry\ Lambe \\
+Michael\ Monagan       & Scott\ Morrison  & William\ Sit \\
+Jonathan\ Steinbach    & Robert\ Sutor    & Barry\ Trager \\
+Stephen\ Watt          & Jim\ Wen         & Clifton\ Williamson
+\end{array}
+$$
+\center{\large{VOLUME 11: BROWSER}}
+\end{titlepage}
+\pagenumbering{roman}
+\begin{verbatim}
+Portions Copyright (c) 2007 Timothy Daly
+Portions Copyright (c) 2007 Alfredo Portes
+Portions Copyright (c) 2007 Arthur Ralfs
+
+The Blue Bayou image Copyright (c) 2004 Jocelyn Guidry
+
+This book is licensed as follows:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    - Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    - Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in
+      the documentation and/or other materials provided with the
+      distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+\end{verbatim}
+
+Inclusion of names in the list of credits is based on historical
+information and is as accurate as possible. Inclusion of names
+does not in any way imply an endorsement but represents historical
+influence on Axiom development.
+\vfill
+\eject
+\begin{tabular}{lll}
+Cyril Alberga         & Roy Adler             & Richard Anderson\\
+George Andrews        & Henry Baker           & Stephen Balzac\\
+Yurij Baransky        & David R. Barton       & Gerald Baumgartner\\
+Gilbert Baumslag      & Fred Blair            & Vladimir Bondarenko\\
+Mark Botch            & Alexandre Bouyer      & Peter A. Broadbery\\
+Martin Brock          & Manuel Bronstein      & Florian Bundschuh\\
+William Burge         & Quentin Carpent       & Bob Caviness\\
+Bruce Char            & Cheekai Chin          & David V. Chudnovsky\\
+Gregory V. Chudnovsky & Josh Cohen            & Christophe Conil\\
+Don Coppersmith       & George Corliss        & Robert Corless\\
+Gary Cornell          & Meino Cramer          & Claire Di Crescenzo\\
+Timothy Daly Sr.      & Timothy Daly Jr.      & James H. Davenport\\
+Jean Della Dora       & Gabriel Dos Reis      & Michael Dewar\\
+Claire DiCrescendo    & Sam Dooley            & Lionel Ducos\\
+Martin Dunstan        & Brian Dupee           & Dominique Duval\\
+Robert Edwards        & Heow Eide-Goodman     & Lars Erickson\\
+Richard Fateman       & Bertfried Fauser      & Stuart Feldman\\
+Brian Ford            & Albrecht Fortenbacher & George Frances\\
+Constantine Frangos   & Timothy Freeman       & Korrinn Fu\\
+Marc Gaetano          & Rudiger Gebauer       & Kathy Gerber\\
+Patricia Gianni       & Holger Gollan         & Teresa Gomez-Diaz\\
+Laureano Gonzalez-Vega& Stephen Gortler       & Johannes Grabmeier\\
+Matt Grayson          & James Griesmer        & Vladimir Grinberg\\
+Oswald Gschnitzer     & Jocelyn Guidry        & Steve Hague\\
+Vilya Harvey          & Satoshi Hamaguchi     & Martin Hassner\\
+Ralf Hemmecke         & Henderson             & Antoine Hersen\\
+Pietro Iglio          & Richard Jenks         & Kai Kaminski\\
+Grant Keady           & Tony Kennedy          & Paul Kosinski\\
+Klaus Kusche          & Bernhard Kutzler      & Larry Lambe\\
+Frederic Lehobey      & Michel Levaud         & Howard Levy\\
+Rudiger Loos          & Michael Lucks         & Richard Luczak\\
+Camm Maguire          & Bob McElrath          & Michael McGettrick\\
+Ian Meikle            & David Mentre          & Victor S. Miller\\
+Gerard Milmeister     & Mohammed Mobarak      & H. Michael Moeller\\
+Michael Monagan       & Marc Moreno-Maza      & Scott Morrison\\
+Mark Murray           & William Naylor        & C. Andrew Neff\\
+John Nelder           & Godfrey Nolan         & Arthur Norman\\
+Jinzhong Niu          & Michael O'Connor      & Kostas Oikonomou\\
+Julian A. Padget      & Bill Page             & Jaap Weel\\
+Susan Pelzel          & Michel Petitot        & Didier Pinchon\\
+Claude Quitte         & Norman Ramsey         & Michael Richardson\\
+Renaud Rioboo         & Jean Rivlin           & Nicolas Robidoux\\
+Simon Robinson        & Michael Rothstein     & Martin Rubey\\
+Philip Santas         & Alfred Scheerhorn     & William Schelter\\
+Gerhard Schneider     & Martin Schoenert      & Marshall Schor\\
+Fritz Schwarz         & Nick Simicich         & William Sit\\
+Elena Smirnova        & Jonathan Steinbach    & Christine Sundaresan\\
+Robert Sutor          & Moss E. Sweedler      & Eugene Surowitz\\
+James Thatcher        & Baldir Thomas         & Mike Thomas\\
+Dylan Thurston        & Barry Trager          & Themos T. Tsikas\\
+Gregory Vanuxem       & Bernhard Wall         & Stephen Watt\\
+Juergen Weiss         & M. Weller             & Mark Wegman\\
+James Wen             & Thorsten Werther      & Michael Wester\\
+John M. Wiley         & Berhard Will          & Clifton J. Williamson\\
+Stephen Wilson        & Shmuel Winograd       & Robert Wisbauer\\
+Sandra Wityak         & Waldemar Wiwianka     & Knut Wolf\\
+Clifford Yapp         & David Yun             & Richard Zippel\\
+Evelyn Zoernack       & Bruno Zuercher        & Dan Zwillinger 
+\end{tabular}
+\eject
+\tableofcontents
+\vfill
+\eject
+\setlength{\parindent}{0em}
+\setlength{\parskip}{1ex}
+{\Large{\bf New Foreword}}
+\vskip .25in
+
+On October 1, 2001 Axiom was withdrawn from the market and ended
+life as a commercial product.
+On September 3, 2002 Axiom was released under the Modified BSD
+license, including this document.
+On August 27, 2003 Axiom was released as free and open source
+software available for download from the Free Software Foundation's
+website, Savannah.
+
+Work on Axiom has had the generous support of the Center for 
+Algorithms and Interactive Scientific Computation (CAISS) at
+City College of New York. Special thanks go to Dr. Gilbert 
+Baumslag for his support of the long term goal.
+
+The online version of this documentation is roughly 1000 pages.
+In order to make printed versions we've broken it up into three
+volumes. The first volume is tutorial in nature. The second volume
+is for programmers. The third volume is reference material. We've
+also added a fourth volume for developers. All of these changes
+represent an experiment in print-on-demand delivery of documentation.
+Time will tell whether the experiment succeeded.
+
+Axiom has been in existence for over thirty years. It is estimated to
+contain about three hundred man-years of research and has, as of
+September 3, 2003, 143 people listed in the credits. All of these
+people have contributed directly or indirectly to making Axiom
+available.  Axiom is being passed to the next generation. I'm looking
+forward to future milestones.
+
+With that in mind I've introduced the theme of the ``30 year horizon''.
+We must invent the tools that support the Computational Mathematician
+working 30 years from now. How will research be done when every bit of
+mathematical knowledge is online and instantly available? What happens
+when we scale Axiom by a factor of 100, giving us 1.1 million domains?
+How can we integrate theory with code? How will we integrate theorems
+and proofs of the mathematics with space-time complexity proofs and
+running code? What visualization tools are needed? How do we support
+the conceptual structures and semantics of mathematics in effective
+ways? How do we support results from the sciences? How do we teach
+the next generation to be effective Computational Mathematicians?
+
+The ``30 year horizon'' is much nearer than it appears.
+
+\vskip .25in
+%\noindent
+Tim Daly\\
+CAISS, City College of New York\\
+November 10, 2003 ((iHy))
+\vfill
+\eject
+\pagenumbering{arabic}
+\setcounter{chapter}{0} % Chapter 1
+\chapter{Overview}
+This book contains the Firefox browser AJAX routines.
+
+\section{Build Instructions}
+\begin{verbatim}
+  mkdir -p /home/silver/bitmaps
+  cp bookvol11.pamphlet /home/silver
+  cd /home/silver
+  export AXIOM=(where)
+  export PATH=$AXIOM/bin/lib:$AXIOM/bin:$PATH
+  notangle -t8 bookvol11.pamphlet > Makefile
+  make -j 10
+  axiom -nox
+   -> )set mes auto off
+   -> )set out mathml on
+   -> axServer(8085,multiServ)$AXSERV
+
+ Now start your browser and go to:
+   file:///home/silver/rootpage.xhtml
+ and then do:
+   Basic Commands -> Calculus -> Differentiate -> Continue
+   Basic Commands -> Matrix -> Continue
+
+ You should see the result of the differentiate appear inline in the
+ page. You can change the values in the text areas, click continue,
+ and see the new result.
+\end{verbatim}
+
+\section{The Makefile}
+<<*>>=
+TANGLE=${AXIOM}/bin/lib/notangle
+
+%.xhtml: bookvol11.pamphlet
+	@ echo making $*.xhtml
+	@ ${TANGLE} -R"$*.xhtml" bookvol11.pamphlet > $*.xhtml
+
+<<PAGES>>
+
+all: ${PAGES}
+	@ mkdir -p bitmaps
+	@ ${TANGLE} -R"axiom1.bitmap" bookvol11.pamphlet >bitmaps/axiom1.bitmap
+	@ ${TANGLE} -R"rcm3720.input" bookvol11.pamphlet >rcm3720.input
+	@ ${TANGLE} -R"strang.input" bookvol11.pamphlet >strang.input
+	@ ${TANGLE} -R"signatures.txt" bookvol11.pamphlet >signatures.txt
+
+clean:
+	@ rm -rf bitmaps
+	@ rm -f *.xhtml
+	@ rm -f rcm3720.input
+	@ rm -f signatures.txt
+@
+
+\section{Building new pages}
+To add a new page you need to create a page with the default layout below
+and add the name of the page to the PAGES variable below.
+
+Most of the pages have a default layout of the form:
+\begin{verbatim}
+\subsection{pagename.xhtml}
+<<pagename.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Page subtitle goes here</div>
+  <hr/>
+your basic page text goes here.
+<<page foot>>
+@
+\end{verbatim}
+There are several things to observe here:
+<ol>
+ <li>Each page lives in its own subsection and its own chunk.</li>
+ <li>The pagename and the chunkname are the same</li>
+ <li>The chunk includes the @<<standard head>></li>
+ <li>The chunk includes the @<<page head>></li>
+ <li>The chunk includes the @<<page foot>></li>
+</ol>
+The default page layout cannot communicate with Axiom.
+
+\subsection{Communicating with Axiom}
+If your page needs to communicate with Axiom you need to add some
+information in the header of the page.
+The default page that talks to Axiom has the form:
+\begin{verbatim}
+\subsection{pagename.xhtml}
+@<<pagename.xhtml>>=
+@<<standard head>>
+  <script type="text/javascript">
+@<<handlefreevars>>
+@<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+@<<page head>>
+  <div align="center">Page subtitle goes here</div>
+  <hr/>
+your text goes here
+your communication blocks go here
+@<<page foot>>
+\end{verbatim}
+
+\subsection{Handling statements with no free variables}
+Use a makeRequest call with a parameter of the id.
+Note that the div with id of ``ansXX'' will get replaced
+automatically and the ``ans'' prefix is required.
+\begin{verbatim}
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="sin(x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+\end{verbatim}
+
+\subsection{Handling statements with free variables}
+Free variables exist are used in statements but they are defined in
+other statements. To make sure the free variables have the correct
+values you need to include an explicit list of the other ids that
+need to be executed {\sl before} this statement. You do this with 
+a call to ``handleFree''. It expects a list, enclosed in brackets,
+of the ids to execute in order. Be certain that the current id is
+at the end of the list.
+\begin{verbatim}
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p9','p10']);"
+    value="roman y" />
+  <div id="ansp10"><div></div></div>
+ </li>
+\end{verbatim}
+
+\subsection{Handling domain database lookups}
+Use an anchor tag of the form:
+\begin{verbatim}
+<a href="db.xhtml?Vector">Vector</a>
+\end{verbatim}
+This will be interpreted by Axiom to mean that you want to do a
+lookup on a domain, category, or package whose name follows the 
+question mark. Note that the domain name should NOT be an abbreviation.
+
+\subsection{Handling )show domain}
+Use a block containing a showcall of the form:
+\begin{verbatim}
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="showcall('p17');"
+   value=")show DoubleFloat"/>
+  <div id="ansp17"><div></div></div>
+ </li>
+\end{verbatim}
+Note that the ``)show'' must be at the beginning of the line
+and that there can only be one space between the word show and
+the following argument.
+
+\subsection{Handling lisp expressions}
+Use a block containing a lispcall of the form:
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="lispcall('p2');"
+    value="(GETDATABASE '|Matrix| 'CONSTRUCTORMODEMAP)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+Note that this works but you can easily blow away your Axiom 
+session with random statements. Let the coder beware.
+
+\subsection{Handling expressions that have no output}
+Use the CSS class=``noresult'' tag on the input form.
+This causes the item to show up in black text. It is
+still executable and is generally executed by handleFree
+calls because it contains definitions. However, things like
+function definitions in Axiom return no interesting output
+so there is no point in clicking on them.
+\begin{verbatim}
+ <li>
+  <input type="submit" id="p5" class="noresult" 
+    onclick="makeRequest('p5');"
+    value=")set streams calculate 5" />
+  <div id="ansp5"><div></div></div>
+ </li>
+\end{verbatim}
+
+
+\section{Defined Pages}
+Every page in this file is extracted by the Makefile. This is the list
+of pages that will be extracted. It is organized roughly in the hierarchy
+that you see in the browser pages. This is convention and is not required.
+
+The page hierarchy (used by the Makefile) is:
+<<PAGES>>=
+PAGES=rootpage.xhtml \
+        commandline.xhtml \
+        basiccommand.xhtml \
+        tutorial.xhtml \
+        jenks.xhtml \
+          calculus.xhtml \
+            differentiate.xhtml \
+            indefiniteintegral.xhtml \
+            definiteintegral.xhtml \
+            basiclimit.xhtml \
+              reallimit.xhtml \
+              complexlimit.xhtml \
+              summation.xhtml \
+          bcmatrix.xhtml \
+          bcexpand.xhtml \
+          draw.xhtml \
+            draw2donevariable.xhtml \
+            draw2ddefinedcurve.xhtml \
+            draw2dpolynomialequation.xhtml \
+            draw3dtwovariable.xhtml \
+            draw3ddefinedtube.xhtml \
+            draw3ddefinedsurface.xhtml \
+          series.xhtml \
+            seriesexpand.xhtml \
+            taylorseries.xhtml \
+            laurentseries.xhtml \
+            puiseuxseries.xhtml \
+          solve.xhtml \
+            solvelinearequations.xhtml \
+            solvelinearmatrix.xhtml \
+            solvesystempolynomials.xhtml \
+            solvesinglepolynomial.xhtml \
+        topreferencepage.xhtml \
+          releasenotes.xhtml \
+          usersguidepage.xhtml \
+          aldorusersguidepage.xhtml \
+          foundationlibrarydocpage.xhtml \
+          topicspage.xhtml \
+            cats.xhtml \
+            dlmf.xhtml \
+            dlmfapproximations.xhtml \
+            dlmfasymptoticexpansions.xhtml \
+            dlmfbarnesgfunction.xhtml \
+            dlmfbetafunction.xhtml \
+            dlmfcontinuedfractions.xhtml \
+            dlmfdefinitions.xhtml \
+            dlmffunctionrelations.xhtml \
+            dlmfgraphics.xhtml \
+            dlmfinequalities.xhtml \
+            dlmfinfiniteproducts.xhtml \
+            dlmfintegrals.xhtml \
+            dlmfintegralrepresentations.xhtml \
+            dlmfmathematicalapplications.xhtml \
+            dlmfmethodsofcomputation.xhtml \
+            dlmfmultidimensionalintegral.xhtml \
+            dlmfnotation.xhtml \
+            dlmfphysicalapplications.xhtml \
+            dlmfpolygammafunctions.xhtml \
+            dlmfqgammaandbetafunctions.xhtml \
+            dlmfseriesexpansions.xhtml \
+            dlmfsums.xhtml \
+            dlmfsoftware.xhtml \
+            dlmfspecialvaluesandextrema.xhtml \
+            dlmftables.xhtml \
+          uglangpage.xhtml \
+          examplesexposedpage.xhtml \
+          ugsyscmdpage.xhtml \
+          operations.xhtml \
+          dblookup.xhtml \
+            dbcharacteristic.xhtml \
+              dbcomplexcomplex.xhtml \
+              dbcomplexconjugate.xhtml \
+              dbcomplexfactor.xhtml \
+              dbcompleximag.xhtml \
+              dbcomplexnorm.xhtml \
+              dbcomplexreal.xhtml \
+            dbcomplexdoublefloat.xhtml \
+            dbcomplexfloat.xhtml \
+            dbcomplexinteger.xhtml \
+            dbexpressioninteger.xhtml \
+            dbfractioninteger.xhtml \
+            dbfractionpolynomialinteger.xhtml \
+            dbopbinary.xhtml \
+            dbopacos.xhtml \
+            dbopacosh.xhtml \
+            dbopacot.xhtml \
+            dbopacoth.xhtml \
+            dbopacsc.xhtml \
+            dbopacsch.xhtml \
+            dbopaddmod.xhtml \
+            dbopairyai.xhtml \
+            dbopairybi.xhtml \
+            dbopapproximants.xhtml \
+            dbopasin.xhtml \
+            dbopasinh.xhtml \
+            dbopasec.xhtml \
+            dbopasech.xhtml \
+            dbopatan.xhtml \
+            dbopatanh.xhtml \
+            dbopbesseli.xhtml \
+            dbopbesselj.xhtml \
+            dbopbesselk.xhtml \
+            dbopbessely.xhtml \
+            dbopbeta.xhtml \
+            dbopcardinalnumber.xhtml \
+            dbopcoefficient.xhtml \
+            dbopcoefficients.xhtml \
+            dbopcoerce.xhtml \
+            dbopcolumn.xhtml \
+            dbopcompactfraction.xhtml \
+            dbopcomplexeigenvectors.xhtml \
+            dbopcomplexelementary.xhtml \
+            dbopcomplexintegrate.xhtml \
+            dbopcomplexlimit.xhtml \
+            dbopcomplexsolve.xhtml \
+            dbopcontent.xhtml \
+            dbopcontinuedfraction.xhtml \
+            dbopconvergents.xhtml \
+            dbopcopy.xhtml \
+            dbopcos.xhtml \
+            dbopcosh.xhtml \
+            dbopcot.xhtml \
+            dbopcoth.xhtml \
+            dbopcount.xhtml \
+            dbopcountableq.xhtml \
+            dbopcsc.xhtml \
+            dbopcsch.xhtml \
+            dbopcycleragits.xhtml \
+            dbopd.xhtml \
+            dbopdecimal.xhtml \
+            dbopdefiningpolynomial.xhtml \
+            dbopdegree.xhtml \
+            dbopdenom.xhtml \
+            dbopdeterminant.xhtml \
+            dbopdiagonalmatrix.xhtml \
+            dbopdigamma.xhtml \
+            dbopdigits.xhtml \
+            dbopdimension.xhtml \
+            dbopdivide.xhtml \
+            dbopeigenmatrix.xhtml \
+            dbopeigenvalues.xhtml \
+            dbopeigenvector.xhtml \
+            dbopeigenvectors.xhtml \
+            dbopelt.xhtml \
+            dbopeval.xhtml \
+            dbopevenq.xhtml \
+            dbopexp.xhtml \
+            dbopfactor.xhtml \
+            dbopfactorfraction.xhtml \
+            dbopfiniteq.xhtml \
+            dbopfirstdenom.xhtml \
+            dbopfirstnumer.xhtml \
+            dbopfractragits.xhtml \
+            dbopgamma.xhtml \
+            dbopgcd.xhtml \
+            dbophex.xhtml \
+            dbophorizconcat.xhtml \
+            dbophtrigs.xhtml \
+            dbophypergeometric0f1.xhtml \
+            dbopinteger.xhtml \
+            dbopintegrate.xhtml \
+            dbopinverse.xhtml \
+            dbopinvmod.xhtml \
+            dboplaurent.xhtml \
+            dboplcm.xhtml \
+            dbopleadingcoefficient.xhtml \
+            dbopleadingmonomial.xhtml \
+            dboplength.xhtml \
+            dboplimit.xhtml \
+            dboplog.xhtml \
+            dboploggamma.xhtml \
+            dbopmainvariable.xhtml \
+            dbopmap.xhtml \
+            dbopmapbang.xhtml \
+            dbopmatrix.xhtml \
+            dbopmax.xhtml \
+            dbopmemberq.xhtml \
+            dbopmin.xhtml \
+            dbopminimumdegree.xhtml \
+            dbopminus.xhtml \
+            dbopmonicdivide.xhtml \
+            dbopmulmod.xhtml \
+            dbopncols.xhtml \
+            dbopnew.xhtml \
+            dbopnorm.xhtml \
+            dbopnrows.xhtml \
+            dbopnthfractionalterm.xhtml \
+            dbopnthroot.xhtml \
+            dbopnullity.xhtml \
+            dbopnullspace.xhtml \
+            dbopnumberoffractionalterms.xhtml \
+            dbopnumer.xhtml \
+            dbopnumeric.xhtml \
+            dbopoperator.xhtml \
+            dboporthonormalbasis.xhtml \
+            dboppadicfraction.xhtml \
+            dboppartialfraction.xhtml \
+            dboppartialquotients.xhtml \
+            dboppattern.xhtml \
+            dboppermanent.xhtml \
+            dboppi.xhtml \
+            dbopplus.xhtml \
+            dboppolygamma.xhtml \
+            dboppositiveremainder.xhtml \
+            dbopprefixragits.xhtml \
+            dbopprimefactor.xhtml \
+            dboppuiseux.xhtml \
+            dbopqelt.xhtml \
+            dbopqseteltbang.xhtml \
+            dbopquatern.xhtml \
+            dbopquo.xhtml \
+            dbopradicaleigenvectors.xhtml \
+            dbopradicalsolve.xhtml \
+            dboprank.xhtml \
+            dbopratdenom.xhtml \
+            dboprealeigenvectors.xhtml \
+            dboprealelementary.xhtml \
+            dbopreduce.xhtml \
+            dbopreductum.xhtml \
+            dboprem.xhtml \
+            dbopresetvariableorder.xhtml \
+            dbopresultant.xhtml \
+            dboprootof.xhtml \
+            dboprootsimp.xhtml \
+            dboprootsof.xhtml \
+            dboprow.xhtml \
+            dboprowechelon.xhtml \
+            dbopsetcolumnbang.xhtml \
+            dbopsetelt.xhtml \
+            dbopseteltbang.xhtml \
+            dbopsetrowbang.xhtml \
+            dbopsetsubmatrixbang.xhtml \
+            dbopsimplify.xhtml\
+            dbopsec.xhtml \
+            dbopsech.xhtml \
+            dbopseries.xhtml \
+            dbopseriessolve.xhtml \
+            dbopsin.xhtml \
+            dbopsingleintegerand.xhtml \
+            dbopsingleintegernot.xhtml \
+            dbopsingleintegeror.xhtml \
+            dbopsingleintegerxor.xhtml \
+            dbopsinh.xhtml \
+            dbopsetvariableorder.xhtml \
+            dbopsolve.xhtml \
+            dbopsqrt.xhtml \
+            dbopstar.xhtml \
+            dbopstarstar.xhtml \
+            dbopsubmatrix.xhtml \
+            dbopsubmatrix.xhtml \
+            dbopsubmod.xhtml \
+            dboptan.xhtml \
+            dboptanh.xhtml \
+            dboptaylor.xhtml \
+            dboptimes.xhtml \
+            dboptotaldegree.xhtml \
+            dboptrace.xhtml \
+            dboptranspose.xhtml \
+            dboptrigs.xhtml \
+            dbopvariables.xhtml \
+            dbopvectorise.xhtml \
+            dbopvectorspace.xhtml \
+            dbopvertconcat.xhtml \
+            dbopwholepart.xhtml \
+            dbopwholeragits.xhtml \
+            dbopzeroof.xhtml \
+            dbopzerosof.xhtml \
+            dbpolynomialinteger.xhtml \
+            dbpolynomialfractioninteger.xhtml \
+          systemvariables.xhtml \
+          glossarypage.xhtml \
+          htxtoppage.xhtml \
+          refsearchpage.xhtml \
+        topicspage.xhtml \
+          numberspage.xhtml \
+            numintegers.xhtml \
+              numgeneralinfo.xhtml \
+              numfactorization.xhtml \
+              numfunctions.xhtml \
+              numexamples.xhtml \
+              numproblems.xhtml \
+            numfractions.xhtml \
+              numrationalnumbers.xhtml \
+              numquotientfields.xhtml \
+            nummachinefloats.xhtml \
+            numfloat.xhtml \
+            numcomplexnumbers.xhtml \
+            numfinitefields.xhtml \
+            numnumericfunctions.xhtml \
+            numcardinalnumbers.xhtml \
+            nummachinesizedintegers.xhtml \
+            numromannumerals.xhtml \
+            numcontinuedfractions.xhtml \
+            numpartialfractions.xhtml \
+            numquaternions.xhtml \
+            numoctonions.xhtml \
+            numrepeatingdecimals.xhtml \
+            numrepeatingbinaryexpansions.xhtml \
+            numrepeatinghexexpansions.xhtml \
+            numotherbases.xhtml \
+          polynomialpage.xhtml \
+            polybasicfunctions.xhtml \
+            polysubstitutions.xhtml \
+            polyfactorization.xhtml \
+              polyfactorization1.xhtml \
+              polyfactorization2.xhtml \
+              polyfactorization3.xhtml \
+              polyfactorization4.xhtml \
+            polygcdandfriends.xhtml \
+            polyroots.xhtml \
+              polyroots1.xhtml \
+              polyroots2.xhtml \
+              polyroots3.xhtml \
+              polyroots4.xhtml \
+            polyspecifictypes.xhtml \
+              polyspecifictypes1.xhtml \
+                factored.xhtml \
+              polyspecifictypes2.xhtml \
+              polyspecifictypes3.xhtml \
+              polyspecifictypes4.xhtml \
+          functionpage.xhtml \
+            funrationalfunctions.xhtml \
+            funalgebraicfunctions.xhtml \
+            funelementaryfunctions.xhtml \
+            funsimplification.xhtml \
+            funpatternmatching.xhtml \
+            funoperatoralgebra.xhtml \
+          equationpage.xhtml \
+            equsystemlinear.xhtml \
+            equdifferential.xhtml \
+              equdifferentiallinear.xhtml \
+              equdifferentialnonlinear.xhtml \
+              equdifferentialpowerseries.xhtml \
+          calculuspage.xhtml \
+            callimits.xhtml \
+            calderivatives.xhtml \
+            calintegrals.xhtml \
+            calmoreintegrals.xhtml \
+            callaplace.xhtml \
+            calseries.xhtml \
+              calseries1.xhtml \
+              calseries2.xhtml \
+              calseries3.xhtml \
+              calseries4.xhtml \
+              calseries5.xhtml \
+              calseries6.xhtml \
+              calseries7.xhtml \
+              calseries8.xhtml \
+          linalgpage.xhtml \
+            linintro.xhtml \
+            lincreate.xhtml \
+            linoperations.xhtml \
+            lineigen.xhtml \
+            linhilbert.xhtml \
+            linpermaent.xhtml \
+            linvectors.xhtml \
+            linsquarematrices.xhtml \
+            lin1darrays.xhtml \
+            lin2darrays.xhtml \
+            linconversion.xhtml \
+          graphicspage.xhtml \
+            graphexamples.xhtml \
+            graph2d.xhtml \
+            graph3d.xhtml \
+            graphviewports.xhtml \
+          algebrapage.xhtml \
+            algnumbertheory.xhtml \
+            alggrouptheory.xhtml \
+          cryptopage.xhtml \
+            cryptoclass1.xhtml \
+            cryptoclass2.xhtml \
+            cryptoclass3.xhtml \
+            cryptoclass4.xhtml \
+            cryptoclass5.xhtml \
+            cryptoclass6.xhtml \
+            cryptoclass7.xhtml \
+            cryptoclass8.xhtml \
+            cryptoclass9.xhtml \
+            cryptoclass10.xhtml \
+            cryptoclass11.xhtml \
+          ocwmit18085.xhtml \
+            ocwmit18085lecture1.xhtml \
+            ocwmit18085lecture2.xhtml \
+        man0page.xhtml \
+        topexamplepage.xhtml \
+        topsettingspage.xhtml \
+        axiomfonts.xhtml \
+        pagelist.xhtml \
+        pagematrix.xhtml \
+        pageonedimensionalarray.xhtml \
+        pagepermanent.xhtml \
+        pageset.xhtml \
+        pagesquarematrix.xhtml \
+        pagetable.xhtml \
+        pagetwodimensionalarray.xhtml \
+        pagevector.xhtml 
+
+@
+
+\section{The Standard Layout}
+Generally a page has a standard layout using a couple of chunks
+to minimize the typing. The defined chunks are:
+\begin{itemize}
+\item ``standard head'' which includes the head element, xmlns, meta, and
+title element. It also contains the ``style'' element for CSS information.
+\item ``page head'' contains the banner information
+\item ``page foot'' contains the trailing page information and the
+body-end and html-end tags
+\end{itemize}
+So the basic layout looks like
+\begin{verbatim}
+@<<standard head>>
+    (local and general javascript goes here)
+ </head>
+ <body>
+@<<page head>>
+    (local page definition goes here)
+@<<page foot>>
+\end{verbatim}
+So all you need to worry about are the actual page forms and the
+javascript to fetch those forms.
+
+For ``active pages'', that is those that communicate with Axiom
+they generally define a javascript function called ``commandline''
+which formats the request to be sent to the host. You also need to
+include the ``axiom talker'' chunk. Note that ``axiom talker''
+expects the ``commandline'' function to exist and calls it. Thus,
+for the page that handles differentiation calls to Axiom we add 
+the local javascript:
+\begin{verbatim}
+
+  <script type="text/javascript">
+   function commandline(arg) {
+    return(document.getElementById('comm').value);
+   }
+@<<axiom talker>>
+  </script>
+
+\end{verbatim}
+This defined the ``commandline'' function and embeds the ``axiom talker''.
+The ``commandline'' function knows how to fetch fields from the rest of
+the page and format them into a single Axiom string. This is page
+specific code. For example, this shows a single input line which
+will be sent to the host when the ``Continue'' is pressed:
+\begin{verbatim}
+  <form id="commreq">
+    <p>
+      Type an input command line to Axiom:<br/>
+      <input type="text" id="comm" name="command" size="80"/>
+     @<<continue button>>
+    </p>
+  </form>
+ @<<answer field>>
+\end{verbatim}
+
+Note that the commandline function takes an argument which it gets
+from the caller, makeRequest. This argument can be used to distinguish
+which button was pressed.
+
+The {\bf div} section with {\bf id=``mathAns''} is replaced by the
+result sent from the server.
+
+\section{Cascading Style Sheet}
+This is the standard CSS style section that gets included with every
+page. We do this here but it could be a separate style sheet. It 
+hardly matters either way as the style sheet is trivial.
+\begin{verbatim}
+\end{verbatim}
+<<style>>=
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+@
+
+\section{standard head}
+This is the standard head section. It is used on pages that do not
+include javascript. Note that it does NOT include the </head> so
+the javascript can be added easily.
+<<standard head>>=
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+<<style>>
+@
+This is the standard page header.
+<<page head>>=
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+@
+This is the standard page foot.
+<<page foot>>=
+ </body>
+</html>
+@
+This is the standard continue button
+<<continue button>>=
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+@
+This is where to place the math answer
+<<answer field>>=
+  <div id="mathAns"><div></div></div>
+@
+
+\section{Javascript functions}
+\subsection{Show only mathml}
+This function will show only the mathml result in the response.
+It is useful for particular pages that have lists of equations
+where all you care about are the answers.
+<<showonlymathml>>=
+<![CDATA[
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will pick up the mathml and put it into 'indiv'
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+    var mymathstr = mystr[3].concat("</div>");
+    // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var mymath = mathRange.createContextualFragment(mymathstr);
+    mathBox.appendChild(mymath);
+    // now we need to format it properly
+    // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+  }
+]]>
+@
+
+\subsection{Show Full Answer}
+This function will show the full answer in the response including the
+step number, the command, the mathml and the type. The algebra portion
+is currently ignored.
+<<showfullanswer>>=
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+@
+
+\subsection{Handle Free Variables}
+<<handlefreevars>>=
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+@
+\subsection{axiom talker}
+<<axiom talker>>=
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+@
+
+\section{Pages}
+<<testpage.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Test Page</div>
+  <hr/>
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="showcall('p1');"
+   value="Integer" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="showcall('p2');"
+    value="(GETDATABASE '|Matrix| 'CONSTRUCTORMODEMAP)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="showcall('p3');"
+   value="(progn (setq |$options| '((|operations|))) (|show| '|Integer|))" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+
+<<page foot>>
+@
+%%A
+\subsection{axiomfonts.xhtml}
+<<axiomfonts.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Special Font Characters</div>
+  <hr/>
+<table>
+ <tr valign="top">
+  <th width="80" align="left">Character</th>
+  <th width="80" align="left">Decimal</th>
+  <th width="80" align="left">Hex</th>
+  <th width="80" align="left">Entity</th>
+  <th align="left">Name</th>
+ </tr>
+ <tr valign="top">
+  <td>&#x00391;</td>
+  <td>913</td>
+  <td>00391</td>
+  <td>&amp;Alpha;</td>
+  <td>greek capital letter alpha</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00392;</td>
+  <td>914</td>
+  <td>00392</td>
+  <td>&amp;Beta;</td>
+  <td>greek capital letter beta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00393;</td>
+  <td>915</td>
+  <td>00393</td>
+  <td>&amp;Gamma;</td>
+  <td>greek capital letter gamma</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00394;</td>
+  <td>916</td>
+  <td>00394</td>
+  <td>&amp;Delta;</td>
+  <td>greek capital letter delta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00395;</td>
+  <td>917</td>
+  <td>00395</td>
+  <td>&amp;Epsilon;</td>
+  <td>greek capital letter epsilon</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00396;</td>
+  <td>918</td>
+  <td>00396</td>
+  <td>&amp;Zeta;</td>
+  <td>greek capital letter zeta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00397;</td>
+  <td>919</td>
+  <td>00397</td>
+  <td>&amp;Eta;</td>
+  <td>greek capital letter eta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00398;</td>
+  <td>920</td>
+  <td>00398</td>
+  <td>&amp;Theta;</td>
+  <td>greek capital letter theta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x00399;</td>
+  <td>921</td>
+  <td>00399</td>
+  <td>&amp;Iota;</td>
+  <td>greek capital letter iota</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039A;</td>
+  <td>922</td>
+  <td>0039A</td>
+  <td>&amp;Kappa;</td>
+  <td>greek capital letter kappa</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039B;</td>
+  <td>923</td>
+  <td>0039B</td>
+  <td>&amp;Lambda;</td>
+  <td>greek capital letter lambda</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039C;</td>
+  <td>924</td>
+  <td>0039C</td>
+  <td>&amp;Mu;</td>
+  <td>greek capital letter mu</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039D;</td>
+  <td>925</td>
+  <td>0039D</td>
+  <td>&amp;Nu;</td>
+  <td>greek capital letter nu</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039E;</td>
+  <td>926</td>
+  <td>0039E</td>
+  <td>&amp;Xi;</td>
+  <td>greek capital letter xi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0039F;</td>
+  <td>927</td>
+  <td>0039F</td>
+  <td>&amp;Omicron;</td>
+  <td>greek capital letter omicron</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A0;</td>
+  <td>928</td>
+  <td>003A0</td>
+  <td>&amp;Pi;</td>
+  <td>greek capital letter pi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A1;</td>
+  <td>929</td>
+  <td>003A1</td>
+  <td>&amp;Rho;</td>
+  <td>greek capital letter rho</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A3;</td>
+  <td>931</td>
+  <td>003A3</td>
+  <td>&amp;Sigma;</td>
+  <td>greek capital letter sigma</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A4;</td>
+  <td>932</td>
+  <td>003A4</td>
+  <td>&amp;Tau;</td>
+  <td>greek capital letter tau</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A5;</td>
+  <td>933</td>
+  <td>003A5</td>
+  <td>&amp;Upsilon;</td>
+  <td>greek capital letter upsilon</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A6;</td>
+  <td>934</td>
+  <td>003A6</td>
+  <td>&amp;Phi;</td>
+  <td>greek capital letter phi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A7;</td>
+  <td>935</td>
+  <td>003A7</td>
+  <td>&amp;Chi;</td>
+  <td>greek capital letter chi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A8;</td>
+  <td>936</td>
+  <td>003A8</td>
+  <td>&amp;Psi;</td>
+  <td>greek capital letter psi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003A9;</td>
+  <td>937</td>
+  <td>003A9</td>
+  <td>&amp;Omega;</td>
+  <td>greek capital letter omega</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B1;</td>
+  <td>945</td>
+  <td>003B1</td>
+  <td>&amp;alpha;</td>
+  <td>greek small letter alpha</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B2;</td>
+  <td>946</td>
+  <td>003B2</td>
+  <td>&amp;beta;</td>
+  <td>greek small letter beta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B3;</td>
+  <td>947</td>
+  <td>003B3</td>
+  <td>&amp;gamma;</td>
+  <td>greek small letter gamma</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B4;</td>
+  <td>948</td>
+  <td>003B4</td>
+  <td>&amp;delta;</td>
+  <td>greek small letter delta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B5;</td>
+  <td>949</td>
+  <td>003B5</td>
+  <td>&amp;epsilon;</td>
+  <td>greek small letter epsilon</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B6;</td>
+  <td>950</td>
+  <td>003B6</td>
+  <td>&amp;zeta;</td>
+  <td>greek small letter zeta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B7;</td>
+  <td>951</td>
+  <td>003B7</td>
+  <td>&amp;eta;</td>
+  <td>greek small letter eta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B8;</td>
+  <td>952</td>
+  <td>003B8</td>
+  <td>&amp;theta;</td>
+  <td>greek small letter theta</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003B9;</td>
+  <td>953</td>
+  <td>003B9</td>
+  <td>&amp;iota;</td>
+  <td>greek small letter iota</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BA;</td>
+  <td>954</td>
+  <td>003BA</td>
+  <td>&amp;kappa;</td>
+  <td>greek small letter kappa</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BB;</td>
+  <td>955</td>
+  <td>003BB</td>
+  <td>&amp;lambda;</td>
+  <td>greek small letter lambda</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BC;</td>
+  <td>956</td>
+  <td>003BC</td>
+  <td>&amp;mu;</td>
+  <td>greek small letter mu</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BD;</td>
+  <td>957</td>
+  <td>003BD</td>
+  <td>&amp;nu;</td>
+  <td>greek small letter nu</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BE;</td>
+  <td>958</td>
+  <td>003BE</td>
+  <td>&amp;xi;</td>
+  <td>greek small letter xi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003BF;</td>
+  <td>959</td>
+  <td>003BF</td>
+  <td>&amp;omicron;</td>
+  <td>greek small letter omicron</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C0;</td>
+  <td>960</td>
+  <td>003C0</td>
+  <td>&amp;pi;</td>
+  <td>greek small letter pi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C1;</td>
+  <td>961</td>
+  <td>003C1</td>
+  <td>&amp;rho;</td>
+  <td>greek small letter rho</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C2;</td>
+  <td>962</td>
+  <td>003C2</td>
+  <td>&amp;sigmaf;</td>
+  <td>greek small letter final sigma</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C3;</td>
+  <td>963</td>
+  <td>003C3</td>
+  <td>&amp;sigma;</td>
+  <td>greek small letter sigma</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C4;</td>
+  <td>964</td>
+  <td>003C4</td>
+  <td>&amp;tau;</td>
+  <td>greek small letter tau</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C5;</td>
+  <td>965</td>
+  <td>003C5</td>
+  <td>&amp;upsilon;</td>
+  <td>greek small letter upsilon</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C6;</td>
+  <td>966</td>
+  <td>003C6</td>
+  <td>&amp;phi;</td>
+  <td>greek small letter phi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C7;</td>
+  <td>967</td>
+  <td>003C7</td>
+  <td>&amp;chi;</td>
+  <td>greek small letter chi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C8;</td>
+  <td>968</td>
+  <td>003C8</td>
+  <td>&amp;psi;</td>
+  <td>greek small letter psi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C9;</td>
+  <td>969</td>
+  <td>003C9</td>
+  <td>&amp;omega;</td>
+  <td>greek small letter omega</td>
+ </tr>
+ <tr><td>----</td><td>----</td><td>----</td><td>----</td><td>----</td></tr>
+ <tr valign="top">
+  <td>&#x000AF;</td>
+  <td>175</td>
+  <td>000AF</td>
+  <td>&amp;macr;</td>
+  <td>macron</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x000B1;</td>
+  <td>177</td>
+  <td>000B1</td>
+  <td>&amp;plusmn;</td>
+  <td>plus-or-minus sign</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x000D7;</td>
+  <td>215</td>
+  <td>000D7</td>
+  <td></td>
+  <td>multiplication sign</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x000E8;</td>
+  <td>232</td>
+  <td>000E8</td>
+  <td>&amp;egrave;</td>
+  <td>latin small letter e with grave</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003C0;</td>
+  <td>960</td>
+  <td>003C0</td>
+  <td>&amp;pi;</td>
+  <td>greek small letter pi</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x003D5;</td>
+  <td>981</td>
+  <td>003D5</td>
+  <td></td>
+  <td>greek phi symbol</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02026;</td>
+  <td>8230</td>
+  <td>02026</td>
+  <td>&amp;hellip;</td>
+  <td>horizontal ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x022EF;</td>
+  <td>8943</td>
+  <td>022EF</td>
+  <td></td>
+  <td>midline horizontal ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02032;</td>
+  <td>8242</td>
+  <td>02032</td>
+  <td>&amp;prime;</td>
+  <td>prime</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02061;</td>
+  <td>8289</td>
+  <td>02061</td>
+  <td></td>
+  <td>function application</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02062;</td>
+  <td>8290</td>
+  <td>02062</td>
+  <td></td>
+  <td>invisible times</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02102;</td>
+  <td>8450</td>
+  <td>02102</td>
+  <td></td>
+  <td>doube-struck captial c</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0210D;</td>
+  <td>8461</td>
+  <td>0210D</td>
+  <td></td>
+  <td>double-struck captial h</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02111;</td>
+  <td>8465</td>
+  <td>02111</td>
+  <td>&amp;image;</td>
+  <td>black-letter captial i</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02113;</td>
+  <td>8467</td>
+  <td>02113</td>
+  <td></td>
+  <td>script small l</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02115;</td>
+  <td>8469</td>
+  <td>02115</td>
+  <td></td>
+  <td>double-struck captial n</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02119;</td>
+  <td>8473</td>
+  <td>02119</td>
+  <td></td>
+  <td>double-struck captial p</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0211A;</td>
+  <td>8474</td>
+  <td>0211A</td>
+  <td></td>
+  <td>double-struck captial q</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0211C;</td>
+  <td>8476</td>
+  <td>0211C</td>
+  <td>&amp;real;</td>
+  <td>black-letter captial r</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x0211D;</td>
+  <td>8477</td>
+  <td>0211D</td>
+  <td></td>
+  <td>double-struck captial r</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02124;</td>
+  <td>8484</td>
+  <td>02124</td>
+  <td></td>
+  <td>double-struck captial z</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02145;</td>
+  <td>8517</td>
+  <td>02145</td>
+  <td></td>
+  <td>doube-struck captial d</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02146;</td>
+  <td>8518</td>
+  <td>02146</td>
+  <td></td>
+  <td>double-struck italic small d</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02147;</td>
+  <td>8519</td>
+  <td>02147</td>
+  <td></td>
+  <td>double-struck italic small e</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02148;</td>
+  <td>8520</td>
+  <td>02148</td>
+  <td></td>
+  <td>double-struck italic small i</td>
+ </tr>
+ <tr valign="top">
+  <td>&#x02192;</td>
+  <td>8594</td>
+  <td>02192</td>
+  <td>&amp;rarr;</td>
+  <td>rightwards arrow</td>
+ </tr>
+ <tr><td>----</td><td>----</td><td>----</td><td>----</td><td>----</td></tr>
+ <tr valign="top">
+  <td>&#8704;</td>
+  <td>8704</td>
+  <td>2200</td>
+  <td>&amp;forall;</td>
+  <td>for all</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8705;</td>
+  <td>8705</td>
+  <td>2201</td>
+  <td></td>
+  <td>complement</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8706;</td>
+  <td>8706</td>
+  <td>2202</td>
+  <td>&amp;part;</td>
+  <td>partial differential</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8707;</td>
+  <td>8707</td>
+  <td>2203</td>
+  <td>&amp;exist;</td>
+  <td>there exists</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8708;</td>
+  <td>8708</td>
+  <td>2204</td>
+  <td></td>
+  <td>there does not exist</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8709;</td>
+  <td>8709</td>
+  <td>2205</td>
+  <td>&amp;empty;</td>
+  <td>empty set</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8710;</td>
+  <td>8710</td>
+  <td>2206</td>
+  <td></td>
+  <td>increment</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8711;</td>
+  <td>8711</td>
+  <td>2207</td>
+  <td>&amp;nabla;</td>
+  <td>nabla</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8712;</td>
+  <td>8712</td>
+  <td>2208</td>
+  <td>&amp;isin;</td>
+  <td>element of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8713;</td>
+  <td>8713</td>
+  <td>2209</td>
+  <td>&amp;notin;</td>
+  <td>not an element of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8714;</td>
+  <td>8714</td>
+  <td>220A</td>
+  <td></td>
+  <td>small element of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8715;</td>
+  <td>8715</td>
+  <td>220B</td>
+  <td>&amp;ni;</td>
+  <td>contains as member</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8716;</td>
+  <td>8716</td>
+  <td>220C</td>
+  <td></td>
+  <td>does not contain as member</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8717;</td>
+  <td>8717</td>
+  <td>220D</td>
+  <td></td>
+  <td>small contains as member</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8718;</td>
+  <td>8718</td>
+  <td>220E</td>
+  <td></td>
+  <td>end of proof</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8719;</td>
+  <td>8719</td>
+  <td>220F</td>
+  <td>&amp;prod;</td>
+  <td>n-ary product</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8720;</td>
+  <td>8720</td>
+  <td>2210</td>
+  <td></td>
+  <td>n-ary coproduct</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8721;</td>
+  <td>8721</td>
+  <td>2211</td>
+  <td>&amp;sum;</td>
+  <td>n-ary summation</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8722;</td>
+  <td>8722</td>
+  <td>2212</td>
+  <td>&amp;minus;</td>
+  <td>minus sign</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8723;</td>
+  <td>8723</td>
+  <td>2213</td>
+  <td></td>
+  <td>minus-or-plus sign</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8724;</td>
+  <td>8724</td>
+  <td>2214</td>
+  <td></td>
+  <td>dot plus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8725;</td>
+  <td>8725</td>
+  <td>2215</td>
+  <td></td>
+  <td>division slash</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8726;</td>
+  <td>8726</td>
+  <td>2216</td>
+  <td></td>
+  <td>set minus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8727;</td>
+  <td>8727</td>
+  <td>2217</td>
+  <td>&amp;lowast;</td>
+  <td>asterisk operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8728;</td>
+  <td>8728</td>
+  <td>2218</td>
+  <td></td>
+  <td>ring operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8729;</td>
+  <td>8729</td>
+  <td>2219</td>
+  <td></td>
+  <td>bullet operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8730;</td>
+  <td>8730</td>
+  <td>221A</td>
+  <td>&amp;radic;</td>
+  <td>square root</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8731;</td>
+  <td>8731</td>
+  <td>221B</td>
+  <td></td>
+  <td>cube root</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8732;</td>
+  <td>8732</td>
+  <td>221C</td>
+  <td></td>
+  <td>fourth root</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8733;</td>
+  <td>8733</td>
+  <td>221D</td>
+  <td>&amp;prop;</td>
+  <td>proportional to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8734;</td>
+  <td>8734</td>
+  <td>221E</td>
+  <td>&amp;infin;</td>
+  <td>infinity</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8735;</td>
+  <td>8735</td>
+  <td>221F</td>
+  <td></td>
+  <td>right angle</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8736;</td>
+  <td>8736</td>
+  <td>2220</td>
+  <td>&amp;ang;</td>
+  <td>angle</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8737;</td>
+  <td>8737</td>
+  <td>2221</td>
+  <td></td>
+  <td>measured angle</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8738;</td>
+  <td>8738</td>
+  <td>2222</td>
+  <td></td>
+  <td>spherical angle</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8739;</td>
+  <td>8739</td>
+  <td>2223</td>
+  <td></td>
+  <td>divides</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8740;</td>
+  <td>8740</td>
+  <td>2224</td>
+  <td></td>
+  <td>does not divide</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8741;</td>
+  <td>8741</td>
+  <td>2225</td>
+  <td></td>
+  <td>parallel to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8742;</td>
+  <td>8742</td>
+  <td>2226</td>
+  <td></td>
+  <td>not parallel to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8743;</td>
+  <td>8743</td>
+  <td>2227</td>
+  <td>&amp;and;</td>
+  <td>logical and</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8744;</td>
+  <td>8744</td>
+  <td>2228</td>
+  <td>&amp;or;</td>
+  <td>logical or</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8745;</td>
+  <td>8745</td>
+  <td>2229</td>
+  <td>&amp;cap;</td>
+  <td>intersection</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8746;</td>
+  <td>8746</td>
+  <td>222A</td>
+  <td>&amp;cup;</td>
+  <td>union</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8747;</td>
+  <td>8747</td>
+  <td>222B</td>
+  <td>&amp;int;</td>
+  <td>integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8748;</td>
+  <td>8748</td>
+  <td>222C</td>
+  <td></td>
+  <td>double integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8749;</td>
+  <td>8749</td>
+  <td>222D</td>
+  <td></td>
+  <td>triple integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8750;</td>
+  <td>8750</td>
+  <td>222E</td>
+  <td></td>
+  <td>contour integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8751;</td>
+  <td>8751</td>
+  <td>222F</td>
+  <td></td>
+  <td>surface integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8752;</td>
+  <td>8752</td>
+  <td>2230</td>
+  <td></td>
+  <td>volume integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8753;</td>
+  <td>8753</td>
+  <td>2231</td>
+  <td></td>
+  <td>clockwise integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8754;</td>
+  <td>8754</td>
+  <td>2232</td>
+  <td></td>
+  <td>clockwise contour integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8755;</td>
+  <td>8755</td>
+  <td>2233</td>
+  <td></td>
+  <td>anticlockwise contour integral</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8756;</td>
+  <td>8756</td>
+  <td>2234</td>
+  <td>&amp;there4;</td>
+  <td>therefore</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8757;</td>
+  <td>8757</td>
+  <td>2235</td>
+  <td></td>
+  <td>because</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8758;</td>
+  <td>8758</td>
+  <td>2236</td>
+  <td></td>
+  <td>ratio</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8759;</td>
+  <td>8759</td>
+  <td>2237</td>
+  <td></td>
+  <td>proportion</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8760;</td>
+  <td>8760</td>
+  <td>2238</td>
+  <td></td>
+  <td>dot minus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8761;</td>
+  <td>8761</td>
+  <td>2239</td>
+  <td></td>
+  <td>excess</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8762;</td>
+  <td>8762</td>
+  <td>223A</td>
+  <td></td>
+  <td>geometric proportion</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8763;</td>
+  <td>8763</td>
+  <td>223B</td>
+  <td></td>
+  <td>homothetic</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8764;</td>
+  <td>8764</td>
+  <td>223C</td>
+  <td>&amp;sim;</td>
+  <td>tilde operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8765;</td>
+  <td>8765</td>
+  <td>223D</td>
+  <td></td>
+  <td>reversed tilde</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8766;</td>
+  <td>8766</td>
+  <td>223E</td>
+  <td></td>
+  <td>inverted lazy S</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8767;</td>
+  <td>8767</td>
+  <td>223F</td>
+  <td></td>
+  <td>sine wave</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8768;</td>
+  <td>8768</td>
+  <td>2240</td>
+  <td></td>
+  <td>wreath products</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8769;</td>
+  <td>8769</td>
+  <td>2241</td>
+  <td></td>
+  <td>not tilde</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8770;</td>
+  <td>8770</td>
+  <td>2242</td>
+  <td></td>
+  <td>minus tilde</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8771;</td>
+  <td>8771</td>
+  <td>2243</td>
+  <td></td>
+  <td>asymptotically equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8772;</td>
+  <td>8772</td>
+  <td>2244</td>
+  <td></td>
+  <td>not asymptotically equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8773;</td>
+  <td>8773</td>
+  <td>2245</td>
+  <td>&amp;cong;</td>
+  <td>approximately equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8774;</td>
+  <td>8774</td>
+  <td>2246</td>
+  <td></td>
+  <td>approximately but not actually equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8775;</td>
+  <td>8775</td>
+  <td>2247</td>
+  <td></td>
+  <td>neither approximately nor actually equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8776;</td>
+  <td>8776</td>
+  <td>2248</td>
+  <td>&amp;asymp;</td>
+  <td>almost equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8777;</td>
+  <td>8777</td>
+  <td>2249</td>
+  <td></td>
+  <td>not almost equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8778;</td>
+  <td>8778</td>
+  <td>224A</td>
+  <td></td>
+  <td>almost equal or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8779;</td>
+  <td>8779</td>
+  <td>224B</td>
+  <td></td>
+  <td>triple tilde</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8780;</td>
+  <td>8780</td>
+  <td>224C</td>
+  <td></td>
+  <td>all equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8781;</td>
+  <td>8781</td>
+  <td>224D</td>
+  <td></td>
+  <td>equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8782;</td>
+  <td>8782</td>
+  <td>224E</td>
+  <td></td>
+  <td>geometrically equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8783;</td>
+  <td>8783</td>
+  <td>224F</td>
+  <td></td>
+  <td>difference between</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8784;</td>
+  <td>8784</td>
+  <td>2250</td>
+  <td></td>
+  <td>approaches the limit</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8785;</td>
+  <td>8785</td>
+  <td>2251</td>
+  <td></td>
+  <td>geometrically equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8786;</td>
+  <td>8786</td>
+  <td>2252</td>
+  <td></td>
+  <td>approximately equal to or the image of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8787;</td>
+  <td>8787</td>
+  <td>2253</td>
+  <td></td>
+  <td>image of or approximately equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8788;</td>
+  <td>8788</td>
+  <td>2254</td>
+  <td></td>
+  <td>colon equals</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8789;</td>
+  <td>8789</td>
+  <td>2255</td>
+  <td></td>
+  <td>equals colon</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8790;</td>
+  <td>8790</td>
+  <td>2256</td>
+  <td></td>
+  <td>ring in equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8791;</td>
+  <td>8791</td>
+  <td>2257</td>
+  <td></td>
+  <td>ring equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8792;</td>
+  <td>8792</td>
+  <td>2258</td>
+  <td></td>
+  <td>corresponds to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8793;</td>
+  <td>8793</td>
+  <td>2259</td>
+  <td></td>
+  <td>estimates</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8794;</td>
+  <td>8794</td>
+  <td>225A</td>
+  <td></td>
+  <td>equiangular to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8795;</td>
+  <td>8795</td>
+  <td>225B</td>
+  <td></td>
+  <td>star equals</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8796;</td>
+  <td>8796</td>
+  <td>225C</td>
+  <td></td>
+  <td>delta equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8797;</td>
+  <td>8797</td>
+  <td>225D</td>
+  <td></td>
+  <td>equal to by definition</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8798;</td>
+  <td>8798</td>
+  <td>225E</td>
+  <td></td>
+  <td>measured by</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8799;</td>
+  <td>8799</td>
+  <td>225F</td>
+  <td></td>
+  <td>questioned equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8800;</td>
+  <td>8800</td>
+  <td>2260</td>
+  <td>&amp;ne;</td>
+  <td>not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8801;</td>
+  <td>8801</td>
+  <td>2261</td>
+  <td>&amp;equiv;</td>
+  <td>identical to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8802;</td>
+  <td>8802</td>
+  <td>2262</td>
+  <td></td>
+  <td>not identical to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8803;</td>
+  <td>8803</td>
+  <td>2263</td>
+  <td></td>
+  <td>strictly equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8804;</td>
+  <td>8804</td>
+  <td>2264</td>
+  <td>&amp;le;</td>
+  <td>less-than or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8805;</td>
+  <td>8805</td>
+  <td>2265</td>
+  <td>&amp;ge;</td>
+  <td>greater-than or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8806;</td>
+  <td>8806</td>
+  <td>2266</td>
+  <td></td>
+  <td>less-than over equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8807;</td>
+  <td>8807</td>
+  <td>2267</td>
+  <td></td>
+  <td>greater-than over equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8808;</td>
+  <td>8808</td>
+  <td>2268</td>
+  <td></td>
+  <td>less-than but not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8809;</td>
+  <td>8809</td>
+  <td>2269</td>
+  <td></td>
+  <td>greater-than but not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8810;</td>
+  <td>8810</td>
+  <td>226A</td>
+  <td></td>
+  <td>much less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8811;</td>
+  <td>8811</td>
+  <td>226B</td>
+  <td></td>
+  <td>much greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8812;</td>
+  <td>8812</td>
+  <td>226C</td>
+  <td></td>
+  <td>between</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8813;</td>
+  <td>8813</td>
+  <td>226D</td>
+  <td></td>
+  <td>not equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8814;</td>
+  <td>8814</td>
+  <td>226E</td>
+  <td></td>
+  <td>not less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8815;</td>
+  <td>8815</td>
+  <td>226F</td>
+  <td></td>
+  <td>not greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8816;</td>
+  <td>8816</td>
+  <td>2270</td>
+  <td></td>
+  <td>neither less-than nor equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8817;</td>
+  <td>8817</td>
+  <td>2271</td>
+  <td></td>
+  <td>neither greater-than nor equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8818;</td>
+  <td>8818</td>
+  <td>2272</td>
+  <td></td>
+  <td>less-than or equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8819;</td>
+  <td>8819</td>
+  <td>2273</td>
+  <td></td>
+  <td>greater-than or equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8820;</td>
+  <td>8820</td>
+  <td>2274</td>
+  <td></td>
+  <td>neither less-than nor equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8821;</td>
+  <td>8821</td>
+  <td>2275</td>
+  <td></td>
+  <td>neither greater-than nor equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8822;</td>
+  <td>8822</td>
+  <td>2276</td>
+  <td></td>
+  <td>less-than or greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8823;</td>
+  <td>8823</td>
+  <td>2277</td>
+  <td></td>
+  <td>greater-than or less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8824;</td>
+  <td>8824</td>
+  <td>2278</td>
+  <td></td>
+  <td>neither less-than nor greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8825;</td>
+  <td>8825</td>
+  <td>2279</td>
+  <td></td>
+  <td>neither greater-than nor less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8826;</td>
+  <td>8826</td>
+  <td>227A</td>
+  <td></td>
+  <td>precedes</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8827;</td>
+  <td>8827</td>
+  <td>227B</td>
+  <td></td>
+  <td>succeeds</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8828;</td>
+  <td>8828</td>
+  <td>227C</td>
+  <td></td>
+  <td>precedes or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8829;</td>
+  <td>8829</td>
+  <td>227D</td>
+  <td></td>
+  <td>succeeds or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8830;</td>
+  <td>8830</td>
+  <td>227E</td>
+  <td></td>
+  <td>precedes or equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8831;</td>
+  <td>8831</td>
+  <td>227F</td>
+  <td></td>
+  <td>succeeds or equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8832;</td>
+  <td>8832</td>
+  <td>2280</td>
+  <td></td>
+  <td>does not precede</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8833;</td>
+  <td>8833</td>
+  <td>2281</td>
+  <td></td>
+  <td>does not succeed</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8834;</td>
+  <td>8834</td>
+  <td>2282</td>
+  <td>&amp;sub;</td>
+  <td>subset of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8835;</td>
+  <td>8835</td>
+  <td>2283</td>
+  <td>&amp;sup;</td>
+  <td>superset of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8836;</td>
+  <td>8836</td>
+  <td>2284</td>
+  <td>&amp;nsub;</td>
+  <td>not a subset of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8837;</td>
+  <td>8837</td>
+  <td>2285</td>
+  <td></td>
+  <td>not a superset of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8838;</td>
+  <td>8838</td>
+  <td>2286</td>
+  <td>&amp;sube;</td>
+  <td>subset of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8839;</td>
+  <td>8839</td>
+  <td>2287</td>
+  <td>&amp;supe;</td>
+  <td>superset of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8840;</td>
+  <td>8840</td>
+  <td>2288</td>
+  <td></td>
+  <td>neither a subset of nor equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8841;</td>
+  <td>8841</td>
+  <td>2289</td>
+  <td></td>
+  <td>neither a superset of nor equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8842;</td>
+  <td>8842</td>
+  <td>228A</td>
+  <td></td>
+  <td>subset of with not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8843;</td>
+  <td>8843</td>
+  <td>228B</td>
+  <td></td>
+  <td>superset of with not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8844;</td>
+  <td>8844</td>
+  <td>228C</td>
+  <td></td>
+  <td>multiset</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8845;</td>
+  <td>8845</td>
+  <td>228D</td>
+  <td></td>
+  <td>multiset multiplication</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8846;</td>
+  <td>8846</td>
+  <td>228E</td>
+  <td></td>
+  <td>multiset union</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8847;</td>
+  <td>8847</td>
+  <td>228F</td>
+  <td></td>
+  <td>square image of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8848;</td>
+  <td>8848</td>
+  <td>2290</td>
+  <td></td>
+  <td>square original of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8849;</td>
+  <td>8849</td>
+  <td>2291</td>
+  <td></td>
+  <td>square image of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8850;</td>
+  <td>8850</td>
+  <td>2292</td>
+  <td></td>
+  <td>square original of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8851;</td>
+  <td>8851</td>
+  <td>2293</td>
+  <td></td>
+  <td>square cap</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8852;</td>
+  <td>8852</td>
+  <td>2294</td>
+  <td></td>
+  <td>square cup</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8853;</td>
+  <td>8853</td>
+  <td>2295</td>
+  <td>&amp;oplus;</td>
+  <td>circled plus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8854;</td>
+  <td>8854</td>
+  <td>2296</td>
+  <td></td>
+  <td>circled minus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8855;</td>
+  <td>8855</td>
+  <td>2297</td>
+  <td>&amp;otimes;</td>
+  <td>circled times</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8856;</td>
+  <td>8856</td>
+  <td>2298</td>
+  <td></td>
+  <td>circled division slash</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8857;</td>
+  <td>8857</td>
+  <td>2299</td>
+  <td></td>
+  <td>circled dot operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8858;</td>
+  <td>8858</td>
+  <td>229A</td>
+  <td></td>
+  <td>circled ring operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8859;</td>
+  <td>8859</td>
+  <td>229B</td>
+  <td></td>
+  <td>circled asterisk operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8860;</td>
+  <td>8860</td>
+  <td>229C</td>
+  <td></td>
+  <td>circled equals</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8861;</td>
+  <td>8861</td>
+  <td>229D</td>
+  <td></td>
+  <td>circled dash</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8862;</td>
+  <td>8862</td>
+  <td>229E</td>
+  <td></td>
+  <td>squared plus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8863;</td>
+  <td>8863</td>
+  <td>229F</td>
+  <td></td>
+  <td>squared minus</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8864;</td>
+  <td>8864</td>
+  <td>22A0</td>
+  <td></td>
+  <td>squared times</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8865;</td>
+  <td>8865</td>
+  <td>22A1</td>
+  <td></td>
+  <td>squared dot operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8866;</td>
+  <td>8866</td>
+  <td>22A2</td>
+  <td></td>
+  <td>right tack</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8867;</td>
+  <td>8867</td>
+  <td>22A3</td>
+  <td></td>
+  <td>left tack</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8868;</td>
+  <td>8868</td>
+  <td>22A4</td>
+  <td></td>
+  <td>down tack</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8869;</td>
+  <td>8869</td>
+  <td>22A5</td>
+  <td>&amp;perp;</td>
+  <td>up tack</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8870;</td>
+  <td>8870</td>
+  <td>22A6</td>
+  <td></td>
+  <td>assertion</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8871;</td>
+  <td>8871</td>
+  <td>22A7</td>
+  <td></td>
+  <td>models</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8872;</td>
+  <td>8872</td>
+  <td>22A8</td>
+  <td></td>
+  <td>true</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8873;</td>
+  <td>8873</td>
+  <td>22A9</td>
+  <td></td>
+  <td>forces</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8874;</td>
+  <td>8874</td>
+  <td>22AA</td>
+  <td></td>
+  <td>triple vertical bar right turnstile</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8875;</td>
+  <td>8875</td>
+  <td>22AB</td>
+  <td></td>
+  <td>double vertical bar double right turnstile</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8876;</td>
+  <td>8876</td>
+  <td>22AC</td>
+  <td></td>
+  <td>does not prove</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8877;</td>
+  <td>8877</td>
+  <td>22AD</td>
+  <td></td>
+  <td>not true</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8878;</td>
+  <td>8878</td>
+  <td>22AE</td>
+  <td></td>
+  <td>does not force</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8879;</td>
+  <td>8879</td>
+  <td>22AF</td>
+  <td></td>
+  <td>negated double vertical bar double right turnstile</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8880;</td>
+  <td>8880</td>
+  <td>22B0</td>
+  <td></td>
+  <td>precedes under relation</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8881;</td>
+  <td>8881</td>
+  <td>22B1</td>
+  <td></td>
+  <td>succeeds under relation</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8882;</td>
+  <td>8882</td>
+  <td>22B2</td>
+  <td></td>
+  <td>normal subgroup of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8883;</td>
+  <td>8883</td>
+  <td>22B3</td>
+  <td></td>
+  <td>contains as normal subgroup</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8884;</td>
+  <td>8884</td>
+  <td>22B4</td>
+  <td></td>
+  <td>normal subgroup of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8885;</td>
+  <td>8885</td>
+  <td>22B5</td>
+  <td></td>
+  <td>contains as normal subgroup or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8886;</td>
+  <td>8886</td>
+  <td>22B6</td>
+  <td></td>
+  <td>original of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8887;</td>
+  <td>8887</td>
+  <td>22B7</td>
+  <td></td>
+  <td>image of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8888;</td>
+  <td>8888</td>
+  <td>22B8</td>
+  <td></td>
+  <td>multimap</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8889;</td>
+  <td>8889</td>
+  <td>22B9</td>
+  <td></td>
+  <td>hermitian conjugate matrix</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8890;</td>
+  <td>8890</td>
+  <td>22BA</td>
+  <td></td>
+  <td>intercalate</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8891;</td>
+  <td>8891</td>
+  <td>22BB</td>
+  <td></td>
+  <td>xor</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8892;</td>
+  <td>8892</td>
+  <td>22BC</td>
+  <td></td>
+  <td>nand</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8893;</td>
+  <td>8893</td>
+  <td>22BD</td>
+  <td></td>
+  <td>nor</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8894;</td>
+  <td>8894</td>
+  <td>22BE</td>
+  <td></td>
+  <td>right angle with arc</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8895;</td>
+  <td>8895</td>
+  <td>22BF</td>
+  <td></td>
+  <td>right triangle</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8896;</td>
+  <td>8896</td>
+  <td>22C0</td>
+  <td></td>
+  <td>n-ary logical and</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8897;</td>
+  <td>8897</td>
+  <td>22C1</td>
+  <td></td>
+  <td>n-ary logical or</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8898;</td>
+  <td>8898</td>
+  <td>22C2</td>
+  <td></td>
+  <td>n-ary intersection</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8899;</td>
+  <td>8899</td>
+  <td>22C3</td>
+  <td></td>
+  <td>n-ary union</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8900;</td>
+  <td>8900</td>
+  <td>22C4</td>
+  <td></td>
+  <td>diamond operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8901;</td>
+  <td>8901</td>
+  <td>22C5</td>
+  <td>&amp;sdot;</td>
+  <td>dot operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8902;</td>
+  <td>8902</td>
+  <td>22C6</td>
+  <td></td>
+  <td>star operator</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8903;</td>
+  <td>8903</td>
+  <td>22C7</td>
+  <td></td>
+  <td>division times</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8904;</td>
+  <td>8904</td>
+  <td>22C8</td>
+  <td></td>
+  <td>bowtie</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8905;</td>
+  <td>8905</td>
+  <td>22C9</td>
+  <td></td>
+  <td>left normal factor semidirect product</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8906;</td>
+  <td>8906</td>
+  <td>22CA</td>
+  <td></td>
+  <td>right normal factor semidirect product</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8907;</td>
+  <td>8907</td>
+  <td>22CB</td>
+  <td></td>
+  <td>left semidirect product</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8908;</td>
+  <td>8908</td>
+  <td>22CC</td>
+  <td></td>
+  <td>right semidirect product</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8909;</td>
+  <td>8909</td>
+  <td>22CD</td>
+  <td></td>
+  <td>reversed tilde equals</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8910;</td>
+  <td>8910</td>
+  <td>22CE</td>
+  <td></td>
+  <td>curly logical or</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8911;</td>
+  <td>8911</td>
+  <td>22CF</td>
+  <td></td>
+  <td>curly logical and</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8912;</td>
+  <td>8912</td>
+  <td>22D0</td>
+  <td></td>
+  <td>double subset</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8913;</td>
+  <td>8913</td>
+  <td>22D1</td>
+  <td></td>
+  <td>double superset</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8914;</td>
+  <td>8914</td>
+  <td>22D2</td>
+  <td></td>
+  <td>double intersection</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8915;</td>
+  <td>8915</td>
+  <td>22D3</td>
+  <td></td>
+  <td>double union</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8916;</td>
+  <td>8916</td>
+  <td>22D4</td>
+  <td></td>
+  <td>pitchfork</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8917;</td>
+  <td>8917</td>
+  <td>22D5</td>
+  <td></td>
+  <td>equal and parallel to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8918;</td>
+  <td>8918</td>
+  <td>22D6</td>
+  <td></td>
+  <td>less-than with dot</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8919;</td>
+  <td>8919</td>
+  <td>22D7</td>
+  <td></td>
+  <td>greater-than with dot</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8920;</td>
+  <td>8920</td>
+  <td>22D8</td>
+  <td></td>
+  <td>very much less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8921;</td>
+  <td>8921</td>
+  <td>22D9</td>
+  <td></td>
+  <td>very much greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8922;</td>
+  <td>8922</td>
+  <td>22DA</td>
+  <td></td>
+  <td>less-than equal to or greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8923;</td>
+  <td>8923</td>
+  <td>22DB</td>
+  <td></td>
+  <td>greater-than equal to or less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8924;</td>
+  <td>8924</td>
+  <td>22DC</td>
+  <td></td>
+  <td>equal to or less-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8925;</td>
+  <td>8925</td>
+  <td>22DD</td>
+  <td></td>
+  <td>equal to or greater-than</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8926;</td>
+  <td>8926</td>
+  <td>22DE</td>
+  <td></td>
+  <td>equal to or precedes</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8927;</td>
+  <td>8927</td>
+  <td>22DF</td>
+  <td></td>
+  <td>equal to or succeeds</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8928;</td>
+  <td>8928</td>
+  <td>22E0</td>
+  <td></td>
+  <td>does not precede or equal</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8929;</td>
+  <td>8929</td>
+  <td>22E1</td>
+  <td></td>
+  <td>does not succeed or equal</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8930;</td>
+  <td>8930</td>
+  <td>22E2</td>
+  <td></td>
+  <td>not square image of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8931;</td>
+  <td>8931</td>
+  <td>22E3</td>
+  <td></td>
+  <td>not square original of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8932;</td>
+  <td>8932</td>
+  <td>22E4</td>
+  <td></td>
+  <td>square image of or not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8933;</td>
+  <td>8933</td>
+  <td>22E5</td>
+  <td></td>
+  <td>square original of or not equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8934;</td>
+  <td>8934</td>
+  <td>22E6</td>
+  <td></td>
+  <td>less-than but not equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8935;</td>
+  <td>8935</td>
+  <td>22E7</td>
+  <td></td>
+  <td>greater-than but not equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8936;</td>
+  <td>8936</td>
+  <td>22E8</td>
+  <td></td>
+  <td>precedes but not equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8937;</td>
+  <td>8937</td>
+  <td>22E9</td>
+  <td></td>
+  <td>succeeds but not equivalent to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8938;</td>
+  <td>8938</td>
+  <td>22EA</td>
+  <td></td>
+  <td>not normal subgroup of</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8939;</td>
+  <td>8939</td>
+  <td>22EB</td>
+  <td></td>
+  <td>does not contain as normal subgroup</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8940;</td>
+  <td>8940</td>
+  <td>22EC</td>
+  <td></td>
+  <td>not normal subgroup of or equal to</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8941;</td>
+  <td>8941</td>
+  <td>22ED</td>
+  <td></td>
+  <td>does not contain as normal subgroup or equal</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8942;</td>
+  <td>8942</td>
+  <td>22EE</td>
+  <td></td>
+  <td>vertical ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8943;</td>
+  <td>8943</td>
+  <td>22EF</td>
+  <td></td>
+  <td>midline horizontal ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8944;</td>
+  <td>8944</td>
+  <td>22F0</td>
+  <td></td>
+  <td>up right diagonal ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8945;</td>
+  <td>8945</td>
+  <td>22F1</td>
+  <td></td>
+  <td>down right diagonal ellipsis</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8946;</td>
+  <td>8946</td>
+  <td>22F2</td>
+  <td></td>
+  <td>element of with long horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8947;</td>
+  <td>8947</td>
+  <td>22F3</td>
+  <td></td>
+  <td>element of with vertical bar at end of horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8948;</td>
+  <td>8948</td>
+  <td>22F4</td>
+  <td></td>
+  <td>small element of with vertical bar at end of horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8949;</td>
+  <td>8949</td>
+  <td>22F5</td>
+  <td></td>
+  <td>element of with dot above</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8950;</td>
+  <td>8950</td>
+  <td>22F6</td>
+  <td></td>
+  <td>element of with overbar</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8951;</td>
+  <td>8951</td>
+  <td>22F7</td>
+  <td></td>
+  <td>small element of with overbar</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8952;</td>
+  <td>8952</td>
+  <td>22F8</td>
+  <td></td>
+  <td>element of with underbar</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8953;</td>
+  <td>8953</td>
+  <td>22F9</td>
+  <td></td>
+  <td>element of with two horizontal strokes</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8954;</td>
+  <td>8954</td>
+  <td>22FA</td>
+  <td></td>
+  <td>contains with long horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8955;</td>
+  <td>8955</td>
+  <td>22FB</td>
+  <td></td>
+  <td>contains with vertical bar at end of horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8956;</td>
+  <td>8956</td>
+  <td>22FC</td>
+  <td></td>
+  <td>small contains with vertical bar at end of horizontal stroke</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8957;</td>
+  <td>8957</td>
+  <td>22FD</td>
+  <td></td>
+  <td>contains with overbar</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8958;</td>
+  <td>8958</td>
+  <td>22FE</td>
+  <td></td>
+  <td>small contains with overbar</td>
+ </tr>
+ <tr valign="top">
+  <td>&#8959;</td>
+  <td>8959</td>
+  <td>22FF</td>
+  <td></td>
+  <td>z notation bag membership</td>
+ </tr>
+</table>
+<<page foot>>
+@
+
+\subsection{aldorusersguidepage.xhtml}
+<<aldorusersguidepage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+aldorusersguidepage not implemented
+<<page foot>>
+@
+
+\subsection{algebrapage.xhtml}
+<<algebrapage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+Axiom provides various facilities for treating topics in 
+abstract algebra
+  <table>
+   <tr>
+    <td>
+     <a href="algnumbertheory.xhtml">Number Theory</a>
+    </td>
+    <td>
+     Topics in algebraic number theory
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="alggrouptheory.xhtml">Group Theory</a>
+    </td>
+    <td>
+     Permuation groups; representation theory
+    </td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{alggrouptheory.xhtml}
+<<alggrouptheory.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      alggrouptheory not implemented
+<<page foot>>
+@
+
+\subsection{algnumbertheory.xhtml}
+<<algnumbertheory.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      algnumbertheory not implemented
+<<page foot>>
+@
+
+%%B
+\subsection{basiccommand.xhtml}
+<<basiccommand.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td>
+     <a href="calculus.xhtml">
+      <b>Calculus</b>
+     </a>
+    </td>
+    <td>Compute integrals, derivatives, or limits</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="/home/silver/bcmatrix.xhtml">
+      <b>Matrix</b>
+     </a>
+    </td>
+    <td>Create a matrix</td>
+   </tr>
+   <tr>
+    <td><a href="bcexpand.xhtml"><b>Operations</b></a></td>
+    <td>Expand, factor, simplify, substitute, etc.</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="draw.xhtml">
+      <b>Draw</b>
+     </a>
+    </td>
+    <td>Create 2D or 3D plots.</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="series.xhtml">
+      <b>Series</b>
+     </a>
+    </td>
+    <td>Create a power series</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="solve.xhtml">
+      <b>Solve</b>
+     </a>
+    </td>
+    <td>Solve an equation or system of equations</td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{basiclimit.xhtml}
+<<basiclimit.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+   What kind of limit do you want to compute?:<br/>
+   <a href="/home/silver/reallimit.xhtml">
+    <b>A real limit</b>
+   </a><br/>
+   The limit as the variable approaches a real value along the real axis
+   <br/><br/>
+   <a href="/home/silver/complexlimit.xhtml">
+    <b>A complex limit</b>
+   </a><br/>
+   The limit as the variable approaches a complex value along any path in
+   the complex plane.
+<<page foot>>
+@
+
+\subsection{bcexpand.xhtml}
+<<bcexpand.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+Simplification
+<ul>
+<li>Simplify Expressions</li>
+<li>Simplify Radicals</li>
+<li>Factor Expressions</li>
+<li>Factor Complex</li>
+<li>Expand Expressions</li>
+<li>Expand Logarithms</li>
+<li>Contract Logarithms</li>
+<li>Simpify Trigonometrics</li>
+<li>Reduce Trigonometrics</li>
+<li>Expand Trigonometrics</li>
+<li>Canonical Trigonometrics</li>
+<li>Complex to rectangular</li>
+<li>Complex to polar</li>
+<li>Complex to exponentials</li>
+<li>Exponentials to complex</li>
+</ul>
+Calculus
+<ul>
+<li>Integrate</li>
+<li>Risch Integrate</li>
+<li>Change Variable</li>
+<li>Differentiate</li>
+<li>Find Limit</li>
+<li>Get Series</li>
+<li>Pade Approximation</li>
+<li>Calculate Sum</li>
+<li>Calculate Product</li>
+<li>Laplace Transform</li>
+<li>Inverse Laplace Transform</li>
+<li>Greatest Common Divisor</li>
+<li>Least Common Multiple</li>
+<li>Divide Polynomials</li>
+<li>Partial Fractions</li>
+<li>Continued Fractions</li>
+</ul>
+Algebra
+<ul>
+<li>Generate Matrix</li>
+<li>Enter Matrix</li>
+<li>Invert Matrix</li>
+<li>Characteristic Polynomial</li>
+<li>Determinant</li>
+<li>Eigenvalues</li>
+<li>Eigenvectors</li>
+<li>Adjoint Matrix</li>
+<li>Transpose Matrix</li>
+</ul>
+Equations
+<ul>
+<li>Solve</li>
+<li>Solve Numerically</li>
+<li>Roots of Polynomials</li>
+<li>Real Roots of Polynomials</li>
+<li>Solve Linear Systems</li>
+<li>Solve Algebraic System</li>
+<li>Eliminate Variable</li>
+</ul>
+Ordinary Differential Equations
+<ul>
+<li>Solve ODE</li>
+<li>Solve Initial Value Problem</li>
+<li>Solve Boundary Value Problem</li>
+<li>Solve ODE with Laplace</li>
+</ul>
+Data Structures
+<ul>
+<li>Record</li>
+<li>List</li>
+<li>Set</li>
+</ul>
+<<page foot>>
+@
+
+\subsection{bcmatrix.xhtml}
+<<bcmatrix.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<![CDATA[
+   function byformula() {
+      // find out how many rows and columns, must be positive and nonzero
+    var rcnt = parseInt(document.getElementById('rowcnt').value);
+     if (rcnt <= 0) {
+      alert("Rows must be positive and non-zero -- defaulting to 1");
+      rcnt = 1;
+      document.getElementById('rowcnt').value=1;
+      return(false);
+     }
+    var ccnt = parseInt(document.getElementById('colcnt').value);
+     if (ccnt <= 0) {
+      alert("Columns must be positive and non-zero -- defaulting to 1");
+      ccnt = 1;
+      document.getElementById('colcnt').value=1;
+      return(false);
+     }
+      // remove the question and the buttons
+    var quest = document.getElementById('question');
+    var clicks = document.getElementById('clicks');
+    quest.removeChild(clicks);
+    var tbl = document.getElementById('form2');
+    var tblsize = tbl.rows.length;
+      // make the row variable question
+      // row variable left cell
+    var row = tbl.insertRow(tblsize);
+    var cell = row.insertCell(0);
+    var tnode = document.createTextNode("Enter the row variable");
+    cell.appendChild(tnode);
+      // row variable right cell
+    cell = row.insertCell(1);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'rowvar';
+    tnode.id = 'rowvar';
+    tnode.size=10;
+    tnode.value='i';
+    tnode.tabindex=21;
+    cell.appendChild(tnode);
+      // make the column variable question
+      // column variable left cell
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the column variable");
+    cell.appendChild(tnode);
+      // column variable right cell
+    cell = row.insertCell(1);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'colvar';
+    tnode.id = 'colvar';
+    tnode.size=10;
+    tnode.tabindex=22;
+    tnode.value='j';
+    cell.appendChild(tnode);
+      // make the formula question
+      // column variable left cell
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the formulas for the elements");
+    cell.appendChild(tnode);
+      // formula input field
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'formula1';
+    tnode.id = 'formula1';
+    tnode.size=50;
+    tnode.value = '1/(x-i-j-1)';
+    tnode.tabindex=23;
+    cell.appendChild(tnode);
+      // insert the continue button
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'button';
+    tnode.id = 'contbutton';
+    tnode.value = 'Continue';
+    tnode.setAttribute("onclick","makeRequest('formula');");
+    tnode.tabindex=24;
+    cell.appendChild(tnode);
+    return(false);
+   }
+   function byelement() {
+      // find out how many rows and columns, must be positive and nonzero
+    var rcnt = parseInt(document.getElementById('rowcnt').value);
+     if (rcnt <= 0) {
+      alert("Rows must be positive and non-zero -- defaulting to 1");
+      rcnt = 1;
+      document.getElementById('rowcnt').value=1;
+      return(false);
+     }
+    var ccnt = parseInt(document.getElementById('colcnt').value);
+     if (ccnt <= 0) {
+      alert("Columns must be positive and non-zero -- defaulting to 1");
+      ccnt = 1;
+      document.getElementById('colcnt').value=1;
+      return(false);
+     }
+      // remove the question and the buttons
+    var quest = document.getElementById('question');
+    var clicks = document.getElementById('clicks');
+    quest.removeChild(clicks);
+      // write "Elements"
+    var tbl = document.getElementById('form2');
+    var tblsize = tbl.rows.length;
+    var row = tbl.insertRow(tblsize);
+    var thecell = row.insertCell(0);
+    var tnode = document.createTextNode("Elements");
+    thecell.appendChild(tnode);
+      // create input boxes for the matrix values
+    tblsize = tblsize + 1;
+    for (var i = 0 ; i < rcnt ; i++) {
+     row = tbl.insertRow(tblsize);
+     for (var j = 0 ; j < ccnt ; j++) {
+      thecell = row.insertCell(j);
+      tnode = document.createElement('input');
+      tnode.type = 'text';
+      tnode.name = 'a'+i+'c'+j;
+      tnode.id = 'a'+i+'c'+j;
+      tnode.size=10;
+      tnode.tabindex=20+(i*10)+j;
+      thecell.appendChild(tnode);
+     }
+     tblsize = tblsize + 1;
+    }
+      // insert the continue button
+    row = tbl.insertRow(tblsize);
+    thecell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'button';
+    tnode.id = 'contbutton';
+    tnode.value = 'Continue';
+    tnode.setAttribute("onclick","makeRequest('element');");
+    thecell.appendChild(tnode);
+    return(false);
+   }
+   function commandline(arg) {
+    if (arg == 'element') {
+     var rcnt = parseInt(document.getElementById('rowcnt').value);
+     var ccnt = parseInt(document.getElementById('colcnt').value);
+     var cmdhead = 'matrix([';
+     var cmdtail = '])';
+      for (var i = 0 ; i < rcnt ; i++) {
+      var listbody = '[';
+      for (var j = 0 ; j < ccnt ; j++) {
+       var aij = document.getElementById('a'+i+'c'+j).value;
+       listbody = listbody+aij;
+       if (j != (ccnt - 1)) {
+        listbody = listbody+',';
+       }
+      }
+      listbody = listbody+']';
+      if (i != (rcnt - 1)) {
+       listbody = listbody+',';
+      }
+      cmdhead = cmdhead+listbody;
+     }
+     cmd = cmdhead+cmdtail;
+     return(cmd);
+    } else {
+     var rcnt = parseInt(document.getElementById('rowcnt').value);
+     var ccnt = parseInt(document.getElementById('colcnt').value);
+     var cmdhead = 'matrix([[';
+     var cmdtail = '])';
+     var formula = document.getElementById('formula1').value;
+     var rowv = document.getElementById('rowvar').value;
+     var colv = document.getElementById('colvar').value;
+     var cmd = cmdhead+formula+' for '+colv+' in 1..'+ccnt+']'+
+                               ' for '+rowv+' in 1..'+rcnt+cmdtail;
+     return(cmd);
+    }
+   }
+]]>
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+Enter the size of the matrix:
+<table id="form2">
+ <tr>
+  <td size="10">Rows</td>
+  <td><input type="text" id="rowcnt" tabindex="10" size="10" value="2"/></td>
+ </tr>
+ <tr>
+  <td>Columns</td>
+  <td><input type="text" id="colcnt" tabindex="20" size="10" value="3"/></td>
+ </tr>
+</table>
+<div id="question">
+ <div id="clicks">
+  How would you like to enter the matrix elements?
+  <center>
+   <input type="button" value="By Formula" onclick="byformula();"/>
+   <input type="button" value="By Element" onclick="byelement();"/>
+  </center>
+ </div>
+</div>
+<<answer field>>
+<<page foot>>
+@
+
+%%C
+\subsection{calculus.xhtml}
+<<calculus.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td>
+     <a href="/home/silver/differentiate.xhtml">
+      <b>Differentiate</b>
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td><a href="/home/silver/indefiniteintegral.xhtml">
+      <b>Do an Indefinite Integral</b></a></td>
+   </tr>
+   <tr>
+    <td><a href="/home/silver/definiteintegral.xhtml">
+     <b>Do a Definite Integral</b></a></td>
+   </tr>
+   <tr>
+    <td><a href="basiclimit.xhtml"><b>Find a limit</b></a></td>
+   </tr>
+   <tr>
+    <td><a href="/home/silver/summation.xhtml">
+      <b>Do a summation</b>
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td><a href="(|bcProduct|).xhtml"><b>Compute a product</b></a></td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{calculuspage.xhtml}
+<<calculuspage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td>
+     <a href="callimits.xhtml">Limits</a>
+    </td>
+    <td>
+     Compute limits of functional expressions
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="calderivatives.xhtml">Derivatives</a>
+    </td>
+    <td>
+     Compute derivatives and partial derivatives
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="calintegrals.xhtml">Integrals</a>
+    </td>
+    <td>
+     Introduction to Axiom's symbolic integration
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="calmoreintegrals.xhtml">More Integrals</a>
+    </td>
+    <td>
+     More information about symbolic integration
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="callaplace.xhtml">Laplace</a>
+    </td>
+    <td>
+     Computing Laplace transforms
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="calseries.xhtml">Series</a>
+    </td>
+    <td>
+     Compute series expansions of expressions
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="equdifferential.xhtml">Differential Equations</a>
+    </td>
+    <td>
+     Solve differential equations
+    </td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{calderivatives.xhtml}
+<<calderivatives.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Derivatives</div>
+  <hr/>
+Use the Axiom function <a href="dbopd.xhtml">D</a> to differentiate an
+expression. 
+
+To find the derivative of an expression f with respect to a variable x,
+enter D(f,x).
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=exp exp x" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="D(f,x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+An optional third argument n in <a href="dbopd.xhtml">D</a> asks Axiom for 
+the nth derivative of f. This finds the fourth derivative of f with 
+respect to x.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="D(f,x,4)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+You can also compute partial derivatives by specifying the order of 
+differentiation.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="g:=sin(x^2+y)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="D(g,y)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p4','p6']);"
+    value="D(g,[y,y,x,x])" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Axiom can manipulate the derivatives (partial or iterated) of expressions
+involving formal operators. All the dependencies must be explicit. This
+returns 0 since F (so far) does not explicitly depend on x.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="D(F,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Suppose that we have F a function of x, y, and z, where x and y are 
+themselves functions of z. Start by declaring that F, x, and y are
+operators.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="F:=operator 'F; x:=operator 'x; y:=operator 'y" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+You can use F, x, and y in expressions.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p8','p9']);"
+    value="a:=F(x z, y z, z^2)+x y(z+1)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+Differentiate formally with respect to z. The formal derivatives appearing
+in dadz are not just formal symbols, but do represent derivatives of x, y, and
+F.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p8','p9','p10']);"
+    value="dadz:=D(a,z)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+You can evaluate the above for particular functional values of F, x, and y.
+If x(z) is exp(z) and y(z) is log(z+1), then this evaluates dadz.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p8','p9','p10','p11']);"
+    value="eval(eval(dadz,'x,z+->exp z),'y,z+->log(z+1))" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+You obtain the same result by first evaluating a and then differentiating.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p8','p9','p10','p12']);"
+    value="m:=eval(eval(a,'x,z+->exp z),'y,z+->log(z+1))" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p8','p9','p10','p12','p13']);"
+    value="D(m,z)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{calintegrals.xhtml}
+<<calintegrals.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Integration</div>
+  <hr/>
+Axiom has extensive library facilities for integration.
+
+The first example is the integration of a fraction with a denominator that
+factors into a quadratic and a quartic irreducible polynomial. The usual
+partial fraction approach used by most other computer algebra systems either
+fails or introduces expensive unneeded algebraic numbers.
+
+We use a factorization-free algorithm.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="integrate((x^2+2*x+1)/((x+1)^6+1),x)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+When real parameters are present, the form of the integral can depend on the
+signs of some expressions.
+
+Rather than query the user or make sign assumptions, Axiom returns all
+possible answers.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="integrate(1/(x^2+a),x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The <a href="dbopintegrate.xhtml">integrate</a> operation generally assumes
+that all parameters are real. The only exception is when the integrand has
+complex valued quantities.
+
+If the parameter is complex instead of real, then the notion of sign is
+undefined and there is a unique answer. You can request this answer by
+"prepending" the word "complex" to the command name.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="complexIntegrate(1/(x^2+a),x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The following two examples illustrate the limitations of table-based
+approaches. The two integrands are very similar, but the answer to one of
+them requires the addition of two new algebraic numbers.
+
+This is the easy one. The next one looks very similar but the answer is
+much more complicated.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="integrate(x^3/(a+b*x)^(1/3),x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Only an algorithmic approach is guaranteed to find what new constants must
+be added in order to find a solution.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="integrate(1/(x^3*(a+b*x)^(1/3)),x)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Some computer algebra systems use heuristics or table-driven approaches to
+integration. When these systems cannot determine the answer to an
+integration problem, they reply "I don't know". Axiom uses an algorithm
+for integration that conclusively proves that an integral cannot be expressed
+in terms of elementary functions.
+
+When Axiom returns an integral sign, it has proved that no answer exists as
+an elementary function.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="integrate(log(1+sqrt(a*x+b))/x,x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Axiom can handle complicated mixed functions much beyond what you can find
+in tables. Whenever possible, Axiom tries to express the answer using the
+functions present in the integrand.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b))/(sqrt(x+b)*(x+cosh(1+sqrt(x+b)))),x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+A strong structure-checking algorithm in Axiom finds hidden algebraic 
+relationships between functions.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="integrate(tan(atan(x)/3),x)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+The discovery of this algebraic relationship is necessary for correct
+integration of this function. Here are the details:
+<ol>
+ <li>
+  If x=tan(t) and g=tan(t/3) then the following algebraic relationship is true:
+<pre>
+      g^3 - 3xg^2 - 3g + x = 0    
+</pre>
+ </li>
+ <li>
+  Integrate g using this algebraic relation; this produces:
+<pre>
+((24g^2-8)log(3g^2-1) + (81x^2+24)g^2 + 72xg - 27x^2 - 16) / (54g^2 - 18)
+</pre>
+ </li>
+ <li>
+  Rationalize the denominator, producing:
+<pre>
+     (8log(3g^2-1) - 3g^2 + 18xg + 16)/18
+</pre>
+  Replace g by the initial definition g=tan(arctan(x)/3) to produce the
+final result.
+ </li>
+</ol>
+This is an example of a mixed function where the algebraic layer is over
+the transcendental one.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="integrate((x+1)/(x*(x+log x)^(3/2)),x)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+While incomplete for non-elementary functions, Axiom can handle some of them.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="integrate(exp(-x^2)*erf(x)/(erf(x)^3-erf(x)^2-erf(x)+1),x)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+More examples of Axiom's integration capabilities are discussed in
+<a href="axbook/section-8.8.xhtml">Integration</a>.
+<<page foot>>
+@
+
+\subsection{callaplace.xhtml}
+<<callaplace.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Laplace Transforms</div>
+  <hr/>
+Axiom can compute some forward Laplace transforms, mostly of elementary
+functions not involving logarithms, although some cases of special functions
+are handled. To compute the forward Laplace transform of F(t) with respect
+to t and express the result as f(s), issue the command laplace(F(t),t,s).
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="laplace(sin(a*t)*cosh(a*t)-cos(a*t)*sinh(a*t),t,s)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Here are some other non-trivial examples.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="laplace((exp(a*t)-exp(b*t))/t,t,s)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="laplace(2/t*(1-cos(a*t)),t,s)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="laplace(exp(-a*t)*sin(b*t)/b^2,t,s)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="laplace((cos(a*t)-cos(b*t))/t,t,s)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Axiom also knows about a few special functions.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="laplace(exp(a*t+b)*Ei(c*t),t,s)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="laplace(a*Ci(b*t)+c*Si(d*t),t,s)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+When Axiom does not know about a particular transform, it keeps it as a
+formal transform in the answer.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="laplace(sin(a*t)-a*t*cos(a*t)+exp(t^2),t,s)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{callimits.xhtml}
+<<callimits.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Limits</div>
+  <hr/>
+To compute a limit, you must specify a functional expression, a variable,
+and a limiting value for that variable. If you do not specify a direction,
+Axiom attempts to compute a two-sided limit.
+
+Issue this to compute the limit of (x^2-2*x+2)/(x^2-1) as x approaches 1.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="limit((x^2-3*x+2)/(x^2-1),x=1)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Sometimes the limit when approached from the left is different from the
+limit from the right and, in this case, you may wish to ask for a one-sided
+limit. Also, if you have a function that is only defined on one side of a
+particular value, you can compute a one-sided limit.
+
+The function log(x) is only defined to the right of zero, that is, for
+x>0. Thus, when computing limits of functions involving log(x), you probably
+want a "right-hand" limit.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value='limit(x*log(x),x=0,"right")' />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+When you do not specify "right" or "left" as the optional fourth argument,
+<a href="dboplimit.xhtml">limit</a> tries to compute a two-sided limit.
+Here the limit from the left does not exist, as Axiom indicates when you
+try to take a two-sided limit.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="limit(x*log(x),x=0)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+A function can be defined on both sides of a particular value, but tend to
+different limits as its variable approaches that value from the left and
+from the right. We can construct an example of this as follows: Since 
+sqrt(y^2) is simply the absolute value of y, the function sqrt(y^2)/y is
+simply the sign (+1 or -1) of the nonzero real number y. Therefore,
+sqrt(y^2)/y=-1 for y&#60;0 and sqrt(y^2)/y=+1 for y>0. This is what happens 
+when we take the limit at y=0. The answer returned by Axiom gives both a
+"left-handed" and a "right-handed" limit.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="limit(sqrt(y^2)/y,y=0)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Here is another example, this time using a more complicated function.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="limit(sqrt(1-cos(t))/t,t=0)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can compute limits at infinity by passing either "plus infinity" or
+"minus infinity" as the third argument of <a href="dboplimit.xhtml">limit</a>.
+To do this, use the constants %plusInfinity and %minusInfinity.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="limit(sqrt(3*x^2+1)/(5*x),x=%plusInfinity)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="limit(sqrt(3*x^2+1)/(5*x),x=%minusInfinity)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+You can take limits of functions with parameters. As you can see, the limit
+is expressed in terms of the parameters.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="limit(sinh(a*x)/tan(b*x),x=0)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+When you use <a href="dboplimit.xhtml">limit</a>, you are taking the limit
+of a real function of a real variable. When you compute this, Axiom returns
+0 because, as a function of a real variable, sin(1/z) is always between -1
+and 1, so z*sin(1/z) tends to 0 as z tends to 0.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="limit(z*sin(1/z),z=0)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+However, as a function of a complex variable, sin(1/z) is badly behaved
+near 0 (one says that sin(1/z) has an essential singularlity at z=0). When
+viewed as a function of a complex variable, z*sin(1/z) does not approach any
+limit as z tends to 0 in the complex plane. Axiom indicates this when we
+call <a href="dbopcomplexlimit.xhtml">complexLimit</a>.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="complexLimit(z*sin(1/z),z=0)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+You can also take complex limits at infinity, that is, limits of a function
+of z as z approaches infinity on the Riemann sphere. Use the symbol
+%infinity to denote "complex infinity". As above, to compute complex limits
+rather than real limits, use <a href="dbopcomplexlimit.xhtml">complexLimit</a>.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="makeRequest('p11');"
+    value="complexLimit((2+z)/(1-z),z=%infinity)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+In many cases, a limit of a real function of a real variable exists when
+the corresponding complex limit does not. This limit exists.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="makeRequest('p12');"
+    value="limit(sin(x)/x,x=%plusInfinity)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+But this limit does not.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="makeRequest('p13');"
+    value="complexLimit(sin(x)/x,x=%infinity)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{calmoreintegrals.xhtml}
+<<calmoreintegrals.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Integration</div>
+  <hr/>
+Integration is the reverse process of differentiation, that is, an integral
+of a function f with respect to a variable x is any function g such that
+D(g,x) is equal to f. The package
+<a href="db.xhtml?FunctionSpaceIntegration">FunctionSpaceIntegration</a>
+provides the top-level integration operation
+<a href="dbopintegrate.xhtml">integrate</a>, for integrating real-valued
+elementary functions.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="integrate(cosh(a*x)*sinh(a*x),x)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Unfortunately, antiderivatives of most functions cannot be expressed in
+terms of elementary functions.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="integrate(log(1+sqrt(a*x+b)),x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Given an elementary function to integrate, Axiom returns a formal integral
+as above only when it can prove that the integral is not elementary and
+not when it cannot determine the integral. In this rare case it prints a
+message that it cannot determine if an elementary integral exists. Similar
+functions may have antiderivatives that look quite different because the
+form of the antiderivative depends on the sign of a constant that appears
+in the function.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="integrate(1/(x^2-2),x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="integrate(1/(x^2+2),x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+If the integrand contains parameters, then there may be several possible
+antiderivatives, depending on the signs of expressions of the parameters.
+In this case Axiom returns a list of answers that cover all possible cases.
+Here you use the answer involving the square root of a when a>0 and the
+answer involving the square root of -a when a&#60;0.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="integrate(x^2/(x^4-a^2),x)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+If the parameters and the variables of integration can be complex numbers
+rather than real, then the notion of sign is not defined. In this case all
+the possible answers can be expressed as one complex function. To get that
+function, rather than a list of real functions, use
+<a href="dbopcomplexintegrate.xhtml">complexIntegrate</a>, which is provided
+by the package
+<a href="db.xhtml?FunctionSpaceComplexIntegration">
+FunctionSpaceComplexIntegration</a>.
+
+This operation is used for integrating complex-valued elementary functions.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="complexIntegrate(x^2/(x^4-a^2),x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+As with the real case, antiderivatives for most complex-valued functions
+cannot be expressed in terms of elementary functions.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="complexIntegrate(log(1+sqrt(a*x+b))/x,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Sometimes <a href="dbopintegrate.xhtml">integrate</a> can involve 
+symbolic algebraic numbers such as those returned by 
+<a href="dboprootof.xhtml">rootOf</a>. To see how to work with these
+strange generated symbols (such as %%a0), see
+<a href="axbook/section-8.3.xhtml#subsec-8.3.2">
+Using All Roots of a Polynomial</a>.
+
+Definite integration is the process of computing the area between the x-axis
+and the curve of a function f(x). The fundamental theorem of calculus 
+states that if f is continuous on an interval a..b and such that D(g,x) is
+equal to f, then the definite integral of f for x in the interval a..b is
+equal to g(b)-g(a).
+
+The package
+<a href="db.xhtml?RationalFunctionDefiniteIntegration">
+RationalFunctionDefiniteIntegration</a>
+provides the top-level definite integration operation,
+<a href="dbopintegrate.xhtml">integrate</a>, 
+for integrating real-valued rational functions.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="integrate((x^4-3*x^2+6)/(x^6-5*x^4+5*x^2+4),x=1..2)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Axiom checks beforehand that the function you are integrating is defined on
+the interval a..b, and prints an error message if it finds that this is not
+the case, as in the following example:
+<pre>
+ integrate(1/(x^2-2),x=1..2)
+
+ Error detected within library code:
+ Pole in path of integration
+</pre>
+When parameters are present in the function, the function may or may not be
+defined on the interval of integration.
+
+If this is the case, Axiom issues a warning that a pole might lie in the 
+path of integration, and does not compute the integral.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="integrate(1/(x^2-a),x=1..2)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+If you know that you are using values of the parameter for which the 
+function has no pole in the interval of integration, use the string
+"noPole" as a third argument to <a href="dbopintegrate.xhtml">integrate</a>.
+
+The value here is, of course, incorrect if sqrt(a) is between 1 and 2.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value='integrate(1/(x^2-a),x=1..2,"noPole")' />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{calseries.xhtml}
+<<calseries.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Working with Power Series</div>
+  <hr/>
+Axiom has very sophisticated facilities for working with power series.
+Infinite series are represented by a list of the coefficients that have
+already been determined, together with a function for computing the
+additional coefficients if needed. The system command that determines how
+many terms of a series is displayed is
+<pre>
+  )set streams calculate
+</pre>
+By default Axiom will display ten terms. Series can be created from
+expressions, from functions for the series coefficients, and from applications
+of operations on existing series. The most general function for creating
+a series is called <a href="dbopseries.xhtml">series</a>, although you can
+also use 
+<a href="dboptaylor.xhtml">taylor</a>,
+<a href="dboplaurent.xhtml">laurent</a>, and
+<a href="dboppuiseux.xhtml">puiseux</a> in situations where you know what 
+kind of exponents are involved.
+
+For information about solving differential equations in terms of power
+series see
+<a href="axbook/section-8.10.xhtml#subsec-8.10.3">
+Power Series Solutions of Differential Equations</a>
+<ul>
+ <li>
+  <a href="calseries1.xhtml">
+   Creation of Power Series
+  </a>
+ </li>
+ <li>
+  <a href="calseries2.xhtml">
+   Coefficients of Power Series
+  </a>
+ </li>
+ <li>
+  <a href="calseries3.xhtml">
+   Power Series Arithmetic
+  </a>
+ </li>
+ <li>
+  <a href="calseries4.xhtml">
+   Functions on Power Series
+  </a>
+ </li>
+ <li>
+  <a href="calseries5.xhtml">
+   Converting to Power Series
+  </a>
+ </li>
+ <li>
+  <a href="calseries6.xhtml">
+   Power Series from Formulas
+  </a>
+ </li>
+ <li>
+  <a href="calseries7.xhtml">
+   Substituting Numerical Values in Power Series
+  </a>
+ </li>
+ <li>
+  <a href="calseries8.xhtml">
+   Example: Bernoulli Polynomials and Sums of Powers
+  </a>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{calseries1.xhtml}
+<<calseries1.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Creation of Power Series</div>
+  <hr/>
+This is the easiest way to create a power series. This tells Axiom that x
+is to be treated as a power series, so funcitons of x are again power series.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="x:=series 'x" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+We didn't say anything about the coefficients of the power series, so the
+coefficients are general expressions over the integers. This allows us to
+introduce denominators, symbolic constants, and other variables as needed.
+Here the coefficents are integers (note that the coefficients are the
+Fibonacci numbers).
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="1/(1-x-x^2)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+This series has coefficients that are rational numbers.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="sin(x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+When you enter this expression you introduce the symbolic constants sin(1)
+and cos(1).
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="sin(1+x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+When you enter the expression the variable a appears in the resulting 
+series expansion.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="sin(a*x)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can also convert an expression into a series expansion. This expression
+creates the series expansion of 1/log(v) about v=1. For details and more
+examples see
+<a href="axbook/section-8.9.xhtml#subsec-8.9.5">
+Converting to Power Series</a>
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="series(1/log(v),v=1)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+You can create power series with more general coefficients. You normally
+accomplish this via a type declaration, see 
+<a href="axbook/section-2.3.xhtml">Declarations</a>. See
+<a href="axbook/section-8.9.xhtml#subsec-8.9.4">
+Functions on Power Series</a> for some warnings about working with 
+declared series.
+
+We delcare that y is a one-variable Taylor series 
+(<a href="db.xhtml?UnivariateTaylorSeries">UTS</a> is the abbreviation for
+<a href="db.xhtml?UnivariateTaylorSeries">UnivariateTaylorSeries</a> in the
+variable z with <a href="db.xhtml?Float">FLOAT</a> (that is, floating-point)
+coefficients, centered about 0. Then, by assignment, we obtain the Taylor
+expansion of exp(z) with floating-point coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="y:UTS(FLOAT,'z,0):=exp(z)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+You can also create a power series by giving an explicit formula for the
+nth coefficient. For details and more examples see
+<a href="axbook/section-8.9.xhtml#subsec-8.9.6">
+Power Series from Formulas</a>
+
+To create a series about w=0 whose nth Taylor coefficient is 1/n!, you can
+evaluate this expression. This is the Taylor expansion of exp(w) at w=0.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="series(1/factorial(n),n,w=0)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{calseries2.xhtml}
+<<calseries2.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Coefficients of Power Series</div>
+  <hr/>
+You can extract any coefficient from a power series -- even on that
+hasn't been computed yet. This is possible because in Axiom, infinite
+series are represented by a list of the coefficients that have already
+been determined, together with a function for computing additional 
+coefficients. (This is known as lazy evaluation.) When you ask for a
+coefficient that hasn't yet been computed, Axiom computes whatever
+additional coefficients it needs and then stores them in the representation
+of the power series.
+
+Here's an example of how to extract the coefficients of a power series.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="x:=series('x)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="y:=exp(x)*sin(x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+This coefficient is readily available
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="coefficient(y,6)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+But let's get the fifteenth coefficient of y
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p4']);"
+    value="coefficient(y,15)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+If you look at y then you see that the coefficients up to order 15 have 
+all been computed.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p5']);"
+    value="y" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{calseries3.xhtml}
+<<calseries3.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Power Series Arithmetic</div>
+  <hr/>
+You can manipulate power series using the usual arithmetic operations
+<a href="dbopplus.xhtml">+</a>,
+<a href="dbopminus.xhtml">-</a>,
+<a href="dbopstar.xhtml">*</a>, and
+<a href="dbopdivide.xhtml">/</a>.
+
+The results of these operations are also power series.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="x:=series 'x" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="(3+x)/(1+7*x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can also compute f(x)^g(x), where f(x) and g(x) are two power series.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="base:=1/(1-x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p3','p4']);"
+    value="expon:=x*base" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p3','p4','p5']);"
+    value="base^expon" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{calseries4.xhtml}
+<<calseries4.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Functions on Power Series</div>
+  <hr/>
+Once you have created a power series, you can apply transcendental 
+functions (for example, 
+<a href="dbopexp.xhtml">exp</a>,
+<a href="dboplog.xhtml">log</a>,
+<a href="dbopsin.xhtml">sin</a>,
+<a href="dboptan.xhtml">tan</a>,
+<a href="dbopcosh.xhtml">cosh</a>, etc.) to it.
+
+To demonstrate this, we first create the power series expansion of the
+rational function x^2/(1-6*x+x^2) about x=0.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="x:=series 'x" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="rat:=x^2/(1-6*x+x^2)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+If you want to compute the series expansion of 
+sin(x^2/1-6*x+x^2) you simply compute the sine of rat.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="sin(rat)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+<hr/>
+<b>Warning:</b> the type of the coefficients of a power series may affect
+the kind of computations that you can do with that series. This can only
+happen when you have made a declaration to specify a series domain with a
+certain type of coefficient.
+<hr/>
+If you evaluate then you have declared that y is a one variable Taylor
+series (<a href="db.xhtml?UnivariateTaylorSeries">UTS</a> is the abbreviation
+for <a href="db.xhtml?UnivariateTaylorSeries">UnivariateTaylorSeries</a>) in
+the variable y with <a href="dbfractioninteger.xhtml">FRAC INT</a> (that is,
+fractions of integers) coefficients, centered about 0.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="y:UTS(FRAC INT,'y,0):='y" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You can now compute certain power series in y, provided that these series
+have rational coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="exp(y)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can get examples of such series by applying transcendental functions
+to series in y that have no constant terms.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p4','p5','p6']);"
+    value="tan(y^2)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p4','p5','p7']);"
+    value="cos(y+y^5)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Similarly, you can compute the logarithm of a power series with rational
+coefficients if the constant coefficient is 1.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p4','p5','p8']);"
+    value="log(1+sin(y))" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+If you wanted to apply, say, the operation <a href="dbopexp.xhtml">exp</a> to
+a power series with a nonzero constant coefficient a0, then the constant
+coefficient of the result would be exp(a0), which is not a rationa number.
+Therefore, evaluating exp(2+tan(y)) would generate an error message.
+
+If you want to compute the Taylor expansion of exp(2+tan(y)), you must 
+ensure that the coefficient domain has an operation 
+<a href="dbopexp.xhtml">exp</a> defined for it. An example of such a domain
+is <a href="dbexpressioninteger.xhtml">Expression Integer</a>, the type of
+formal functional expressions over the integers. When working with 
+coefficients of this type
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="z:UTS(EXPR INT,'z,0):='z" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+this presents no problems.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p9','p10']);"
+    value="exp(2+tan(z))" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+Another way to create Taylor series whose coefficients are expressions over
+the integers is to use <a href="dboptaylor.xhtml">taylor</a> which works
+similarly to <a href="dbopseries.xhtml">series</a>. This is equivalent to
+the previous computation, except that now we are using the variable w 
+instead of z.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="makeRequest('p11');"
+    value="w:=taylor 'w" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p11','p12']);"
+    value="exp(2+tan(w))" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{calseries5.xhtml}
+<<calseries5.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Converting to Power Series</div>
+  <hr/>
+The <a href="db.xhtml?ExpressionToUnivariatePowerSeries">
+ExpressionToUnivariatePowerSeries</a> package provides operations for
+computing series expansions of functions. 
+
+Evaluate this to compute the Taylor expansion of sin x about x=0. The first
+argument, sin(x), specifies the function whose series expansion is to be
+computed and the second argument, x=0, specifies that the series is to be
+expanded in powers of (x-0), that is, in powers of x.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="taylor(sin(x),x=0)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Here is the Taylor expansion of sin x about x=%pi/6:
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="taylor(sin(x),x=%pi/6)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The function to be expanded into a series may have variables other than the
+series variable. For example, we may expand tan(x*y) as a Taylor series in x.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="taylor(tan(x*y),x=0)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or as a Taylor series in y.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="taylor(tan(x*y),y=0)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+A more interesting function it (t*%e^(x*t))/(%e^t-1).
+When we expand this function as a Taylor series in t the nth order
+coefficient is the nth Bernoulli polynomial divided by n!.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="bern:=taylor(t*exp(x*t)/(exp(t)-1),t=0)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Therefore, this and the next expression produce the same result.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="factorial(6)*coefficient(bern,6)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value="bernoulliB(6,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Technically, a series with terms of negative degree is not considered to
+be a Taylor series, but rather a Laurent series. If you try to compute a
+Taylor series expansion of x/log(x) at x=1 via taylor(x/log(x),x=1) you 
+get an error message. The reason is that the function has a pole at x=1,
+meaning that its series expansion about this point has terms of negative
+degree. A series with finitely many terms of negative degree is called a
+Laurent series. You get the desired series expansion by issuing this.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="laurent(x/log(x),x=1)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Similarly, a series with terms of fractional degree is neither a Taylor
+series nor a Laurent series. Such a series is called a Puiseux series. The
+expression laurent(sqrt(sec(x)),x=3*%pi/2) results in an error message 
+because the series expansion about this point has terms of fractional degree.
+However, this command produces what you want.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="puiseux(sqrt(sec(x)),x=3*%pi/2)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+Finally, consider the case of functions that do not have Puiseux expansions
+about certain points. An example of this is x^x about x=0. puiseux(x^x,x=0)
+produces an error message because of the type of singularity of the 
+function at x=0. The general function <a href="dbopseries.xhtml">series</a>
+can be used in this case. Notice that the series returned is not, strictly
+speaking, a power series because of the log(x) in the expansion.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="series(x^x,x=0)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+<hr/>
+The operation <a href="dbopseries.xhtml">series</a> returns the most general
+type of infinite series. The user who is not interested in distinguishing
+between various types of infinite series may wish to use this operation
+exclusively.
+<hr/>
+<<page foot>>
+@
+
+\subsection{calseries6.xhtml}
+<<calseries6.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Power Series from Formulas</div>
+  <hr/>
+The <a href="db.xhtml?GenerateUnivariatePowerSeries">
+GenerateUnivariatePowerSeries</a> package enables you to create power series
+from explicit formulas for their nth coefficients. In what follows, we
+construct series expansions for certain transcendental functions by giving
+forumulas for their coefficients. You can also compute such series 
+expansions directly by simply specifying the function and the point about
+which the series is to be expanded. See
+<a href="axbook/section-8.9.xhtml#subsec-8.9.5">
+Converting to Power Series</a> for more information.
+
+Consider the Taylor expansion of %e^x about x=0:
+<pre>
+  %e^x = 1 + x + x^2/2 + x^3/6 + ... 
+       = sum from n=0 to n=%infinity of x^n/n!
+</pre>
+The nth Taylor coefficient is 1/n!. This is how to create this series in
+Axiom.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="series(n+->1/factorial(n),x=0)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The first argument specifies the formula for the nth coefficient by giving
+a function that maps n to 1/n!. The second argument specifies that the
+series is to be expanded in powers of (x-0), that is, in powers of x. Since
+we did not specify an initial degress, the first term in the series was the
+term of degree 0 (the constant term). Note that the formula was given as
+an anonymous function. These are discussed in
+<a href="axbook/section-6.17.xhtml">Anonymous Functions</a>
+
+Consider the Taylor expansion of log x about x=1:
+<pre>
+ log x = (x-1) - (x-1)^2/2 + (x-1)^3/3 - ... 
+       = sum from n=1 to n=%infinity of (-1_^(n-1) (x-1)^n/n
+</pre>
+If you were to evaluate the expression series(n+->(-1)^(n-1)/n,x=1) you
+would get an error message because Axiom would try to calculate a term of
+degree n=1,... are to be computed.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="series(n+->(-1)^(n-1)/n,x=1,1..)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Next consider the Taylor expansion of an odd function, say, sin(x):
+<pre>
+  sin x = x = x^2/3! + x^5/5! - ...
+</pre>
+Here every other coefficient is zero and we would like to give an explicit
+formula onloy for the odd Taylor coefficients. This is one way to do it.
+The third argument, 1.., specifies that the first term to be computed is
+the term of degree 1. The fourth argument, 2, specifies that we increment
+by 2 to find the degrees of subsequent terms, that is, the next term is of
+degree 1+2, the next of degree 1+2+2, etc.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="series(n+->(-1)^((n-1)/2)/factorial(n),x=0,1..,2)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The initial degree and the increment do not have to be integers. For
+example, this expression produces a series expansion of sin(x^(1/3)).
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="series(n+->(-1)^((3*n-1)/2)/factorial(3*n),x=0,1/3..,2/3)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+While the increment must be positive, the initial degree may be negative.
+This yields the Laurent expansion of csc(x) at x=0.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="cscx:=series(n+->(-1)^((n-1)/2)*2*(2^n-1)*bernoulli(numer(n+1))/factorial(n+1),x=0,-1..,2)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Of course, the reciprocal of this power series is the Taylor expansion of
+sin(x).
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="1/cscx" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+As a final example, here is the Taylor expansion of asin(x) about x=0.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="asinx:=series(n+->binomial(n-1,(n-1)/2)/(n*2^(n-1)),x=0,1..,2)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+When we compute the sine of this series, we get x (in the sense that all
+higher terms computed so far are zero).
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p7','p8']);"
+    value="sin(asinx)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+As we discussed in 
+<a href="calseries5.xhtml">Converting to Power Series</a>, you can also use
+the operations
+<a href="dboptaylor.xhtml">taylor</a>,
+<a href="dboplaurent.xhtml">laurent</a>, and
+<a href="dboppuiseux.xhtml">puiseux</a>, instead of 
+<a href="dbopseries.xhtml">series</a> if you know ahead of time what
+kind of exponents a series has. You can't go wrong with 
+<a href="dbopseries.xhtml">series</a> though.
+<<page foot>>
+@
+
+\subsection{calseries7.xhtml}
+<<calseries7.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Substituting Numerical Values in Power Series</div>
+  <hr/>
+Use <a href="dbopeval.xhtml">eval</a> to substitute a numerical value for a
+variable in a power series. For example, here's a way to obtain numerical
+approximations of %e from the Taylor series expansion of exp(x).
+
+First you create the desired Taylor expansion.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=taylor(exp(x))" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Then you evaluate the series at the value 1.0. The result is a sequence
+of the partial sums.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="eval(f,1.0)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{calseries8.xhtml}
+<<calseries8.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Example: Bernoulli Polynomials and Sums of Powers</div>
+  <hr/>
+Axiom provides operations for computing definite and indefinite sums.
+
+You can compute the sum of the first ten fourth powers by evaluating this.
+This creates a list whose entries are m^4 as m ranges from 1 to 10, and then
+computes the sum of the entries of that list.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="reduce(+,[m^4 for m in 1..10])" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You can also compute a formula for the sum of the first k fourth powers, 
+where k is an unspecified positive integer.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="sum4:=sum(m^4,m=1..k)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+This formula is valid for any positive integer k. For instance, if we 
+replace k by 10, we obtain the number we computed earlier.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p2','p3']);"
+    value="eval(sum4,k=10)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+You can compute a formula for the sum of the first k nth powers in a
+similar fashion. Just replace the 4 in the definition of sum4 by any
+expression not involving k. Axiom computes these formulas using Bernoulli 
+polynomials; we use the rest of this section to describe this method.
+
+First consider this function of t and x.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="f:=t*exp(x*t)/(exp(t)-1)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Since the expressions involved get quite large, we tell Axiom to show us only
+terms of degree up to 5.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="noresult" 
+    onclick="makeRequest('p5');"
+    value=")set streams calculate 5" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+If we look at the Taylor expansion of f(x,t) about t=0, we see that the 
+coefficients of the powers of t are polynomials in x.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p4','p5','p6']);"
+    value="ff:=taylor(f,t=0)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+In fact, the nth coefficient in this series is essentiall the nth Bernoulli
+polynomial: the nth coefficient of the series is 1/n!*Bn(x), where Bn(x) is
+the nth Bernoulli polynomial. Thus, to obtain the nth Bernoulli polynomial,
+we multiply the nth coefficient of the series ff by n!. For example, the
+sixth Bernoulli polynomial is this.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p4','p5','p6','p7']);"
+    value="factorial(6)*coefficient(ff,6)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+We derive some properties of the function f(x,t). First we compute
+f(x+1,t)-f(x-t).
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p4','p8']);"
+    value="g:=eval(f,x=x+1)-f" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+If we normalize g, we see that it has a particularly simple form.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p4','p8','p9']);"
+    value="normalize(g)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+From this it follows that the nth coefficient in the Taylor expansion of
+g(x,t) at t=0 is 1/(n-1)!*x^(n-1). If you want to check this, evaluate the
+next expression.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p4','p5','p8','p9','p10']);"
+    value="taylor(g,t=0)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+However, since 
+<pre>
+  g(x,t)=f(x+1,t)-f(x,t)
+</pre> 
+it follows that the nth coefficient
+is 
+<pre>
+   1/n! * (Bn(x+1) - Bn(x))
+</pre> 
+Equating coefficients, we see that 
+<pre>
+   1/(n-1)! * x^(n-1) = 1/n! * (Bn(x+1) - Bn(x))
+</pre>
+and, therefore
+<pre>
+   x^(n-1) = 1/n * (Bn(x+1) - Bn(x))
+</pre>
+Let's apply this formula repeatedly, letting x vary between two integers
+a and b, with a&#60;b:
+<pre>
+       a^(n-1) = 1/n * (Bn(a+1) - Bn(a))
+   (a+1)^(n-1) = 1/n * (Bn(a+2) - Bn(a+1))
+   (a+2)^(n-1) = 1/n * (Bn(a+3) - Bn(a+2))
+               .
+               .
+   (b-1)^(n-1) = 1/n * (Bn(b)   - Bn(b-1))
+       b^(n-1) = 1/n * (Bn(b+1) - Bn(b))
+</pre>
+When we add these equations we find that the sum of the left-hand sides is
+<pre>
+   sum(m=a..b,m^(n-1)) 
+</pre>
+the sum of the (n-1)-st powers from a to b. The sum
+of the right-hand sides is a "telescoping series". After cancellation, the
+sum is simply 
+<pre>
+   1/n*(Bn(b+1)-Bn(a))
+</pre>
+
+Replacing n by n+1, we have shown that
+<pre>
+   sum(m=a..b,m^n) = 1/(n+1)*(B&#60;n+1>(b+1)-B&#60;n+1>(a))
+</pre>
+
+Let's use this to obtain the formula for the sum of fourth powers. 
+First we obtain the Bernoulli polynomial B5.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p4','p5','p6','p11']);"
+    value="B5:=factorial(5)*coefficient(ff,5)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+To find the sum of the first k 4th powers, we multiply 1/5 by 
+B5(k+1)-B5(1)
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p4','p5','p6','p11','p12']);"
+    value="1/5*(eval(B5,x=k+1)-eval(B5,x=1))" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+This is the same formula that we obtained via sum(m^4,m=1..k)
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p2','p13']);"
+    value="sum4" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+At this point you may want to do the same computation, but with an exponent
+other than 4. For example, you might try to find a formula for the sum of
+the first k 20th powers.
+<<page foot>>
+@
+
+\subsection{cats.xhtml}
+<<cats.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+    CATS -- Computer Algebra Test Suite
+  </div>
+<hr/>
+The Computer Algebra Test Suite is intended to show that Axiom conforms
+to various published standards. Axiom implementations of these functions
+are tested against reference publications. 
+
+In order to show standards compliance we need to examine Axiom's behavior
+against known good results. Where possible, these results are also tested
+against other available computer algebra systems.
+
+The available test suites are:
+<ol>
+ <li><a href="dlmf.xhtml">Gamma Function</a></li>
+</ol>
+<<page foot>>
+@
+
+\subsection{commandline.xhtml}
+<<commandline.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    return(document.getElementById('comm').value);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <form id="commreq">
+    <p>
+      Type an input command line to Axiom:<br/>
+      <input type="text" id="p1" 
+       onclick="interpcall('p1');"
+       value="integrate(sin(x),x)" />
+    </p>
+  </form>
+  <center>
+    <input type="button" value="Continue" name="continue" 
+      onclick="intercall('p1');"/>
+  </center>
+  <div id="mathAns"><div></div></div>
+<<page foot>>
+@
+
+
+\subsection{complexlimit.xhtml}
+<<complexlimit.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    var myfunct = myform.expr.value;
+    var myvar = myform.vars.value;
+    var ans = "";
+    // decide what the limit point should be
+    var finite = document.getElementById('finite').checked;
+    if (finite == true) {
+      var myreal = document.getElementById('fpreal').value;
+      var mycomplex = document.getElementById('fpcomplex').value;
+      if (myreal == 0) {
+       if (mycomplex == 0) {
+         ans = 'complexLimit('+myfunct+','+myvar+'=0)';
+       } else {
+         ans = 'complexLimit('+myfunct+','+myvar+'='+mycomplex+'*%i)';
+       }
+      } else {
+       if (mycomplex == 0) {
+         ans = 'complexLimit('+myfunct+','+myvar+'='+myreal+')';
+       } else {
+         ans = 
+          'complexLimit('+myfunct+','+myvar+'='+myreal+'+'+mycomplex+'*%i)';
+       }
+      }
+    } else {
+     ans = 'complexLimit('+myfunct+','+myvar+'=%infinity)';
+    }
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <form id="form2">
+   Enter the function you want to compute the limit of:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" 
+     value="sin(a*x)/tan(b*x)"/><br/>
+   Enter the name of the variable:<br/>
+   <input type="text" id="vars" tabindex="20" value="x"/><br/>
+   <input type="radio" id="finite" tabindex="30" checked="checked" 
+     name="point"/>
+    A finite point: Real part:
+    <input type="text" id="fpreal" tabindex="40" value="0"/>
+    Complex part:
+    <input type="text" id="fpcomplex" tabindex="50" value="0"/><br/>
+   <input type="radio" id="plus" tabindex="60" name="point"/>
+    %infinity<br/>
+  </form>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+@
+
+\subsection{crytopage.xhtml}
+<<cryptopage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+</center>
+<hr/>
+<ol>
+ <li> <a href="cryptoclass1.xhtml">
+       Laboratory Class 1: Introduction to Axiom
+      </a>
+ </li>
+ <li> <a href="cryptoclass2.xhtml">
+       Laboratory Class 2: Strings and Values
+      </a>
+ </li>
+ <li> <a href="cryptoclass3.xhtml">
+       Laboratory Class 3: Number Theory
+      </a>
+ </li>
+ <li> <a href="cryptoclass4.xhtml">
+       Laboratory Class 4: Simple Cryptosystems
+      </a>
+ </li>
+ <li> <a href="cryptoclass5.xhtml">
+       Laboratory Class 5: RSA and public-key cryptosystems
+      </a>
+ </li>
+ <li> <a href="cryptoclass6.xhtml">
+       Laboratory Class 6: Digital Signatures
+      </a>
+ </li>
+ <li> <a href="cryptoclass7.xhtml">
+       Laboratory Class 7: Knapsack cryptosystems
+      </a>
+ </li>
+ <li> <a href="cryptoclass8.xhtml">
+       Laboratory Class 8: Modes of Encryption
+      </a>
+ </li>
+ <li> <a href="cryptoclass9.xhtml">
+       Laboratory Class 9: Hash Functions
+      </a>
+ </li>
+</ol>
+<<page foot>>
+@
+
+\subsection{crytoclass1.xhtml}
+<<cryptoclass1.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+  <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+  <h3>Laboratory Class 1: Introduction to Axiom</h3>
+</center>
+<hr/>
+
+<b>Numbers and arithmetic</b>
+
+<ul>
+ <li> You can treat Axiom like a glorified calculator.  Enter the following:
+  <ul>
+   <li> <span class="cmd">3+5</span></li>
+   <li> <span class="cmd">5*7</span></li>
+   <li> <span class="cmd">2^3/3^5</span></li>
+   <li> <span class="cmd">(3^4)^5</span></li>
+   <li> <span class="cmd">3^(4^5)</span></li>
+  </ul>
+ </li>
+ <li> What happens if you enter the last command without the brackets?</li>
+
+ <li> To obtain the factorial <tt>n!</tt>, use the Axiom command 
+      <tt>factorial</tt>:
+  <ul>
+   <li> <span class="cmd">factorial(10)</span></li>
+  </ul>
+ </li>
+ <li> By trial and error, find the smallest number whose factorial 
+      ends in six zeros.
+ </li>
+</ul>
+
+<b>Lists</b>
+
+<ul> 
+ <li> Assignment is done using "<tt>:=</tt>" 
+      where the <i>colon-equals</i> symbols are 
+      used for assigning a particular object to a variable.
+  <ul>
+   <li> <span class="cmd">var:=3</span></li>
+  </ul>
+ </li>
+ <li> Lists are created using square brackets;
+  <ul>
+   <li> <span class="cmd">mylist1:=[k^2 for k in 1..10]</span></li>
+  </ul>
+ </li>
+ <li> We can operate on all elements of a list using the 
+      <tt>reduce</tt> command:
+  <ul>
+   <li> <span class="cmd">reduce(+,mylist1)</span></li>
+   <li> <span class="cmd">reduce(*,mylist2)</span></li>
+  </ul>
+ </li>
+ <li> Of course, these could be done as single commands:
+  <ul>
+   <li> <span class="cmd">reduce(+,[k^2 for k in 1..10])</span></li>
+   <li> <span class="cmd">reduce(*,[1/j for j in 5..15])</span></li>
+  </ul>
+ </li>
+ <li> Notice how the last result is given as a single large fraction.  To
+      obtain a decimal result we can do either of two things:
+  <ol>
+   <li> Convert the output to be of type ``Float'':
+    <ul>
+     <li> <span class="cmd">reduce(*,[1/j for j in 5..15])::Float</span></li>
+     <li> Two colons can be used to change the type of an object.</li>
+    </ul>
+   </li>
+   <li> Use floats in the initial command: 
+    <ul>
+     <li> <span class="cmd">reduce(*,[1.0/j for j in 5..15])</span></li>
+    </ul>
+   </li>
+  </ol>
+ </li>
+ <li> Using lists, add up the first 1000 integers.</li>
+  
+ <li> By trial and error, find the smallest number <i>n</i> for which 
+      the sum of the first <i>n</i> reciprocals is bigger than 8.
+ </li>
+ <li> We can also add numbers by using the <tt>sum</tt> function; here's how
+      to add the first 100 reciprocals:
+  <ul>
+   <li> <span class="cmd">sum(1.0/k,k = 1..100)</span></li>
+  </ul>
+ </li>
+</ul>
+
+<b>Functions and maps</b>
+
+<ul>
+ <li> We shall create a simple function, and apply it to <tt>mylist1</tt> from
+      above:
+  <ul>
+   <li> <span class="cmd">f(x) == x-2</span></li>
+   <li> <span class="cmd">map(f,mylist1)</span></li>
+  </ul>
+ </li>  
+ <li> Supposing we want to subtract 2 from every element of a list without
+      having to create a function first.  In this case we can use the 
+      "mapping" symbols:
+  <ul>
+   <li> <span class="cmd">map(x +-> x-2,mylist1)</span></li>
+  </ul>
+ </li>  
+ <li> Create a list called <tt>nums</tt> containing all the integers from 1 
+      to 100.  Now we shall create a simple function <tt>f(x)</tt> which 
+      returns <tt>x</tt> if it is prime, and 0 otherwise.  The Axiom 
+      function <tt>prime?</tt> tests for primality:
+  <ul>
+   <li> <span class="cmd">f(x)==if prime?(x) then x else 0</span></li>
+  </ul>
+ </li>
+ <li> Now apply this function <tt>f</tt> to <tt>nums</tt>.  
+      Remove all the zeros:
+      <i>(% refers to the output of the last command.)</i>
+  <ul>
+   <li> <span class="cmd">remove(0,%)</span></li>
+  </ul>
+ </li>
+ <li> and determine how many primes there are, using the hash symbol #
+      which can be used to count the number of elements in a list:
+  <ul>
+   <li> <span class="cmd">#%</span></li>
+  </ul>
+ </li>
+ <li> These last commands can be done as a single command:
+  <ul>
+   <li> <span class="cmd">#remove(0,map(f,nums))</span></li>
+  </ul>
+ </li>
+ <li> Use the last command to create a function called <tt>numprimes</tt>
+      which will count the number of primes below any given integer.
+ </li>
+ <li> How many primes are there less than 1000?  Less than 10000?</li>
+  
+ <li> Alternatively, we can list all the primes below 100 by creating our 
+      list using the "such that" operator---a vertical stroke:
+  <ul>
+   <li> <span class="cmd">[k for k in 1..100 | prime?(k)]</span></li>
+  </ul>
+ </li>
+ <li> or we could just return the length of the list:
+  <ul>
+   <li> <span class="cmd">#[k for k in 1..100 | prime?(k)]</span></li>
+  </ul>
+ </li>
+ <li> Use this approach to create a function called <tt>numprimes2</tt>
+      which will count the number of primes below any given integer.
+ </li>
+ <li>How many primes are there less than 2000?  Less than 15000?</li>
+</ul>
+
+<b>Housekeeping</b><br/>
+
+Axiom contains many commands for managing your workspace and your
+environment; such commands are all prefixed with a right parenthesis.
+
+<ul>
+ <li> Sometimes you need to clear a variable, say a variable <tt>x</tt>:
+  <ul>
+   <li> <span class="cmd">)clear properties x</span></li>
+  </ul>
+ </li>
+ <li> Most commands of this sort can be abbreviated using their 
+      first two letters:
+  <ul>
+   <li> <span class="cmd">)cl pr x</span></li>
+  </ul>
+ </li>
+ <li> To clean out everything:
+  <ul>
+   <li> <span class="cmd">)cl all</span></li>
+  </ul>
+ </li>
+ <li> To see what variables you've accumulated over your work:
+  <ul>
+   <li> <span class="cmd">)display names</span></li>
+   <li> <i>or abbreviated as</i> )d n</li>
+  </ul>
+ </li>
+ <li> You may have noticed earlier that Axiom poured out lots 
+      of messages when it first "got going".  These can be turned off:
+  <ul>
+   <li> <span class="cmd">)set messages autoload off</span></li>
+  </ul>
+ </li>
+ <li> Note here that if you just type in "<tt>)set</tt>" or its abbreviation
+      "<tt>)se</tt>", you'll be presented with the list of all the possible
+      options.  Likewise "<tt>)se me</tt>" lists all possible options for
+      messages, and so on.
+ </li>
+ <li> Can you find the command which turns on a time function, 
+      so gives the time to compute each command?
+ </li>
+ <li> The command "<tt>)summary</tt> gives a quick summary of these
+      commands.
+ </li>
+ <li> To quit Axiom, type
+  <ul>
+   <li> <span class="cmd">)quit</span></li>
+  </ul>
+ </li>
+ <li> or its one letter abbreviation "<tt>)q</tt>", followed by <tt>y</tt> to
+      confirm.
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{crytoclass2.xhtml}
+<<cryptoclass2.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 2: Strings and Values</h3>
+</center>
+<hr/>
+
+<b>Characters and Strings</b>
+
+<ul>
+ <li> All printable characters have a fixed ASCII value; some of which are:
+<br/>
+<pre>
+      Character |  A   B   Y   Z   a   b   y   z
+    ------------+-------------------------------
+    ASCII Value | 65  66  89  90  97  98  121 122
+                |
+      Character |  0   1   8   9   ,   -   .   /
+    ------------+-------------------------------
+    ASCII Value | 48  49  56  57  44  45  46  47 
+</pre>
+ </li>
+ <li> To obtain values 0 to 25 for A to Z, we need to subtract 65 from 
+      the ASCII values.  
+ </li>
+ <li> In Axiom, the <tt>ord</tt> command gives the ASCII value of a
+      character.  Create a string such as:
+  <ul>
+   <li> <span class="cmd">str:="THISISASTRING"</span></li>
+  </ul>
+ </li>
+ <li> A string can be turned into a list of characters using <tt>members</tt>:
+  <ul>
+   <li> <span class="cmd">members(str)</span></li>
+  </ul>
+ </li>
+ <li> This means a string can be turned into a list of ASCII values by 
+      mapping the <tt>ord</tt> function onto the list of members:
+  <ul>
+   <li> <span class="cmd">map(ord,members(str))</span></li>
+  </ul>
+ </li>
+ <li> To obtain values in the 0--25 range, try using an unnamed function:
+  <ul>
+   <li> <span class="cmd">strn:=map(x +-> ord(x)-65,members(str))</span></li>
+  </ul>
+ </li>
+ <li> Use this last command to create a function <tt>str2lst</tt> which will
+      take a string (assumed to be of capital letters, with no spaces or
+      punctuation), and return a list of values between 0 and 25.
+ </li>
+ <li> To go the other way, we first need to add 65 to all elements of
+      <tt>strn</tt>:
+  <ul>
+   <li> <span class="cmd">map(x +-> x+65,strn)</span></li>
+  </ul>
+ </li>
+ <li> Turn this into characters with <tt>char</tt>:
+  <ul>
+   <li> <span class="cmd">map(char,%)</span></li>
+  </ul>
+ </li>
+ <li> These can be done as a single command:
+  <ul>
+   <li> <span class="cmd">map(x +-> char(x+65),strn)</span></li>
+  </ul>
+ </li>
+ <li> To put them all together as a single string we can concatenate them 
+      with the <tt>concat</tt> function from the <tt>String</tt> domain:
+  <ul>
+   <li> <span class="cmd">concat(%)$String</span></li>
+  </ul>
+ </li>
+ <li> In one line:
+  <ul>
+   <li> <span class="cmd">concat(map(x +-> char(x+65),strn))$String</span></li>
+  </ul>
+ </li>
+ <li> Alternatively, we could convert the characters to type <tt>String</tt>
+      before concatenation:
+  <ul>
+   <li> 
+    <span class="cmd">
+     concat(map(x +-> char(x+65)::String,strn))
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Use either version of this last command to create a function
+      <tt>lst2str</tt> which will take a list of values between 0 and 25 and
+      return a string.
+ </li>
+ <li> Create a text file in one of your private directories called
+      <tt>my3720.input</tt> and copy your <tt>str2lst</tt> and 
+      <tt>lst2str</tt> functions to it.
+ </li>
+ <li> You can read command line input from a file with the extension
+      <tt>.input</tt> using the <tt>)read</tt> command:
+  <ul>
+   <li> <span class="cmd">)read my3720</span></li>
+  </ul>
+ </li>
+ <li> The Caesar cipher can be implemented by the following three steps:
+  <ol>
+   <li> Turn the string into a list,</li>
+   <li> Add 3 to every number in the list,</li>
+   <li> Turn this new list back into a string.</li>
+  </ol>
+ </li>
+ <li> To ensure that step (2) remains in the 0--25 range, we need to use the
+      <tt>rem</tt> function.  These can all be put together as:
+  <ul>
+   <li> 
+    <span class="cmd">
+     caesar(str) == lst2str(map(x +-> (x+3) rem 26, str2lst(str)))
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Try this out on a few strings of your choice.</li>
+  
+ <li> By replacing the "<tt>+3</tt>" in the <tt>caesar</tt> function with
+  "<tt>+n</tt>" create a new function called <tt>trans(str,n)</tt> which
+  implements a general translation cipher.
+ </li>
+ <li> Test it out; these two commands should produce the same results.
+  <ul>
+   <li> <span class="cmd">caesar("MYSTRING")</span></li>
+   <li> <span class="cmd">trans("MYSTRING",3)</span></li>
+  </ul>
+ </li>
+ <li> If you like, add the <tt>caesar</tt> and <tt>trans</tt> functions to
+      your <tt>my3720.input</tt> file.
+ </li>
+ <li> Test your <tt>trans</tt> function out on a few other strings and
+      translation values.
+ </li>
+ <li> The <tt>ROT13</tt> cipher is used in Usenet postings to hide information
+      which might be considered offensive.  It is a translation cipher with a
+      shift of 13.  Since 13 is half of 26, this means that encrytion and
+      decryption are exactly the same.  Apply <tt>ROT13</tt> to:
+  <ul>
+   <li> GUVFVFNIRELFREVBHFOHFVARFF</li>
+  </ul>
+ </li>
+ <li> Consider this string which has been produced with a translation cipher.
+      To decrypt it, simply apply all possible shifts until you obtain 
+      understandable text. 
+  <ul>
+   <li> IUDTCUQBBOEKHCEDUO</li>
+  </ul>
+ </li>
+ <li> To apply all the possible shifts do:
+  <ol>
+   <li> <span class="cmd">ct:="IUDTCUQBBOEKHCEDUO"</span></li>
+   <li> <span class="cmd">for i in 1..26 repeat output trans(ct,i)</span></li>
+  </ol>
+ </li>
+ <li> What is the plaintext?</li>
+</ul>
+<<page foot>>
+@
+
+\subsection{crytoclass3.xhtml}
+<<cryptoclass3.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 3: Number Theory</h3>
+</center>
+<hr/>
+
+<ul>
+
+ <li> Check out the commands <tt>gcd</tt> and <tt>factor</tt>, and test them
+  on different numbers, small and large.
+ </li>  
+ <li> Axiom provides a few useful commands for taking apart the factors of an
+  object:
+  <ul>
+   <li> <span class="cmd">n:=5040</span></li>
+   <li> <span class="cmd">f:=factor(n)</span></li>
+   <li> <span class="cmd">numf:=numberOfFactors(f)</span></li>
+   <li> <span class="cmd">fs:=[nthFactor(f,i) for i in 1..numf]</span></li>
+   <li> <span class="cmd">es:=[nthExponent(f,i) for i in 1..numf]</span></li>
+   <li> <span class="cmd">reduce(*,[fs.i^es.i for i in 1..numf])</span></li>
+  </ul>
+ </li>
+ <li> The last command simply multiplies all the factors to their powers.</li>
+ 
+ <li> Check out the commands <tt>prime?</tt>, <tt>nextPrime</tt> and
+      <tt>prevPrime</tt>.
+ </li>
+ <li> To compute the <tt>i</tt>-th prime, we can construct a <i>stream</i>
+      (an infinite list) in Axiom:
+  <ul>
+   <li> 
+    <span class="cmd">
+     primes:Stream Integer:=[i for i in 2.. | prime? i]
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Now we can find, for example, the 100-th prime, and the 2500-th prime:
+  <ul>
+   <li> <span class="cmd">primes.100</span></li>
+   <li> <span class="cmd">primes.2500</span></li>
+  </ul>
+ </li>
+ <li> Create random 10 digit primes:
+  <ul>
+   <li> <span class="cmd">p := nextPrime(random(10^10))</span></li>
+   <li> <span class="cmd">q := nextPrime(random(10^10))</span></li>
+  </ul>
+ </li>
+ <li> Now multiply them and factor the product.  How long did it take?</li>
+
+ <li> Try the same thing with 12 digit primes and 15 digit primes.</li>
+  
+ <li> The extended Euclidean algorithm is implemented by the command
+  <tt>extendedEuclidean</tt>.  Here's how to use it:
+  <ul>
+   <li> <span class="cmd">a:=1149</span></li>
+   <li> <span class="cmd">b:=3137</span></li>
+   <li> <span class="cmd">g:=extendedEuclidean(a,b)</span></li>
+   <li> <span class="cmd">s:=g.coef1</span></li>
+   <li> <span class="cmd">t:=g.coef2</span></li>
+  </ul>
+ </li>
+ <li> and now test them:
+  <ul>
+   <li> <span class="cmd">s*a+t*b</span></li>
+  </ul>
+ </li>
+ <li> Try this on a few other numbers.</li>
+  
+ <li> Axiom uses the command <tt>positiveRemainder</tt> instead of
+      <tt>mod</tt> command, so let's define <tt>mod</tt> to be a renaming 
+      of the <tt>positiveRemainder</tt> function:
+  <ul>
+   <li> <span class="cmd">mod ==> positiveRemainder</span></li>
+  </ul>
+ </li>
+ <li> Now the commands <tt>addmod</tt>, <tt>submod</tt>, <tt>mulmod</tt>, and
+      <tt>invmod</tt> can be used to perform modular arithmetic.  Here's a few
+      examples; first a simple modulus calculation:
+  <ul>
+   <li> <span class="cmd">-10 mod 3</span></li>
+  </ul>
+ </li>
+ <li> Addition, subtraction and multiplication mod 14:
+  <ul>
+   <li> <span class="cmd">addmod(10,13,14)</span></li>
+   <li> <span class="cmd">submod(17,23,14)</span></li>
+   <li> <span class="cmd">mulmod(13,27,14)</span></li>
+  </ul>
+ </li>
+ <li> Powers and inverses:
+  <ul>
+   <li> <span class="cmd">powmod(19,237,14)</span></li>
+   <li> <span class="cmd">invmod(11,14)</span></li>
+  </ul>
+ </li>
+ <li> Find out what happens if you try to take an inverse of a number not
+      relatively prime to the modulus:
+  <ul>
+   <li> <span class="cmd">invmod(12,14)</span></li>
+  </ul>
+ </li>
+ <li> Try these command with a few other numbers, and test out the examples in
+  the notes.
+ </li>
+ <li> The second method, which can be more powerful, is to treat all numbers
+  as elements of the residue values 0 to <tt>n-1</tt>.  This can be done with 
+  the <tt>IntegerMod</tt> construction, or its abbreviation <tt>ZMOD</tt>.  
+  Here's a few examples:
+  <ul>
+   <li> <span class="cmd">a:=11::ZMOD 14</span></li>
+  </ul>
+ </li>
+ <li> This declares the variable <tt>a</tt> to be a member of the residue 
+      class modulo 14.  Now all arithmetic including <tt>a</tt> will be 
+      reduced to this same class of values:
+  <ul>
+   <li> <span class="cmd">a+25</span></li>
+   <li> <span class="cmd">a*39</span></li>
+   <li> <span class="cmd">a^537</span></li>
+  </ul>
+ </li>
+ <li> Inversion can be done with the <tt>recip</tt> command:
+  <ul>
+   <li> <span class="cmd">recip(a)</span></li>
+  </ul>
+ </li>  
+ <li> We don't have to define a variable first.  All the above commands could
+      be equivalently written as:
+  <ul>
+   <li> <span class="cmd">(11::ZMOD 14)+25</span></li>
+   <li> <span class="cmd">11::ZMOD 14*39</span></li>
+   <li> <span class="cmd">11::ZMOD 14^537</span></li>
+   <li> <span class="cmd">recip(11::ZMOD 14)</span></li>
+  </ul>
+ </li>  
+ <li> If the modulus is a prime, then division (by non-zero values) is also
+      possible.  Axiom provides the alternative construction 
+      <tt>PrimeField</tt> or more simply <tt>PF</tt>.  For example:
+  <ul>
+   <li> <span class="cmd">a:=7::PF 11</span></li>
+  </ul>
+ </li>
+ <li> All the above arithmetic operations of addition, subtraction, 
+      multiplication and powers work, but now we also have inversion:
+  <ul>
+   <li> <span class="cmd">1/a</span></li>
+  </ul>
+ </li>
+ <li> Using any of the methods you like, test out Fermat's theorem for a large
+      prime <tt>p</tt> and an integer <tt>a</tt>.
+ </li>  
+ <li> Euler's totient function is implemented with <tt>eulerPhi</tt>.  Choose
+      a large integer <tt>n</tt>, a random <tt>a</tt> with 
+      <tt>gcd(a,n)=1</tt> , and test Euler's theorem
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{crytoclass4.xhtml}
+<<cryptoclass4.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 4: Simple Cryptosystems</h3>
+</center>
+<hr/>
+
+We have experimented with the Caesar cipher and the more general
+translation cipher.  We shall start looking at the Vigen&#x0E8;re cipher.
+The trick is to add the correct letter of the code to the letter of
+the key:
+<pre>
+ Index of plain text i: 1  2  3  4  5  6  7  8
+             Plaintext: W  I  T  H  D  R  A  W
+                   Key: C  O  D  E  C  O  D  E
+        Index of key j: 1  2  3  4  1  2  3  4
+</pre>
+
+The indices of the key repeat 1, 2, 3, 4.  We can get a repetition of
+length four by using a modulus of 4:
+<pre>
+                     i: 1  2  3  4  5  6  7  8
+             i (mod 4): 1  2  3  0  1  2  3  0
+</pre>
+
+What we need to do is to subtract one before the modulus, and add one after:
+<pre>
+                     i: 1  2  3  4  5  6  7  8
+                   i-1: 0  1  2  3  4  5  6  7
+           i-1 (mod 4): 0  1  2  3  0  1  2  3
+       i-1 (mod 4) + 1: 1  2  3  4  1  2  3  4
+</pre>
+
+This means that in the Vigen&#x0E8;re cipher, we add the <i>i</i>-th
+character of the plaintext, and the <i>j</i>-th character of the key, where
+<pre>
+   j=i-1 (mod n) + 1
+</pre>
+with <i>n</i> being the length of the key.
+
+<ul>
+
+ <li> First read in the <tt>rcm3720.input</tt> file you have created:
+  <ul>
+   <li> <span class="cmd">)read rcm3720</span></li>
+  </ul>
+
+  You may have to include the full path here.
+ </li>
+ <li> Enter a plaintext
+  <ul>
+   <li> <span class="cmd">plaintext:="WITHDRAWONEHUNDREDDOLLARS"</span></li>
+  </ul>
+ </li>
+ <li> and a keyword:
+  <ul>
+   <li> <span class="cmd">key := "CODE"</span></li>
+  </ul>
+ </li>
+ <li> Now we can obtain the lengths of the plaintext and key with the hash
+      symbol:
+  <ul>
+   <li> <span class="cmd">pn:=#plaintext</span></li>
+   <li> <span class="cmd">kn:=#key</span></li>
+  </ul>
+ </li>
+ <li> Turn both plaintext and key into lists of numbers:
+  <ul>
+   <li> <span class="cmd">pl:=str2lst(plaintext)</span></li>
+   <li> <span class="cmd">kl:=str2lst(key)</span></li>
+  </ul>
+ </li>  
+ <li> Now we can add them using the formula for <tt>j</tt> above to obtain 
+      the list corresponding to the ciphertext:
+  <ul>
+   <li> 
+    <span class="cmd">
+     cl:=[(pl.i+kl.((i-1) rem kn+1))::ZMOD 26 for i in 1..pn]
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> And obtain the ciphertext (we need to convert our list to a list of
+      integers first):
+  <ul>
+   <li> <span class="cmd">ciphertext:=lst2str(cl::List INT)</span></li>
+  </ul>
+ </li>
+ <li> Try a few other Vigen&#x0E8;re encryptions.</li>
+  
+ <li> To decrypt, we just <i>subtract</i> the key value from the ciphertext
+  value:
+  <ul>
+   <li> 
+    <span class="cmd">
+     pl:=[(cl.i+kl.((i-1) rem kn+1))::ZMOD 26 for i in 1..pn]
+    </span>
+    </li>
+   <li> <span class="cmd">lst2str(pl::List INT)</span></li>
+  </ul>
+ </li>  
+ <li> Now for the Hill (matrix) cipher.  We shall use <tt>3 x 3</tt>
+  matrices, so first create a plaintext whose length is a multiple of 3:
+  <ul>
+   <li> <span class="cmd">plaintext:="WITHDRAWONEHUNDREDDOLLARSXX"</span></li>
+   <li> <span class="cmd">pl:=str2lst(plaintext)</span></li>
+   <li> <span class="cmd">r:=3</span></li>
+   <li> <span class="cmd">c:INT:=#pl/r</span></li>
+  </ul>
+ </li>
+ <li> The values <tt>r</tt> and <tt>c</tt> are the row and column numbers 
+      of the plaintext matrix.
+ </li>  
+ <li> Now put all the plaintext values into a <tt>r x c</tt> matrix:
+  <ul>
+   <li> 
+    <span class="cmd">
+     S:=matrix([[pl.(r*(i-1)+j) for i in 1..c] for j in 1..r])
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Create the key matrix:
+  <ul>
+   <li> 
+    <span class="cmd">
+     M:Matrix ZMOD 26:=matrix([[22,11,19],[15,20,24],[25,21,16]])
+    </span>
+   </li>
+  </ul>
+ </li>  
+ <li> Multiply the two matrices:
+  <ul>
+   <li> <span class="cmd">C:=M*S</span></li>
+  </ul>
+ </li>
+ <li> Notice how the results are automatically reduced modulo 26,
+      because that is how the matrix <tt>M</tt> was defined.
+ </li> 
+ <li> Now we have to read off the elements of <tt>C</tt> into a single list;
+  this can be done by transposing the matrix, and reading off the rows as
+  lists:
+  <ul>
+   <li> 
+    <span class="cmd">
+     CL:=concat(transpose(C)::List List ZMOD 26)
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> And finally turn into ciphertext:
+  <ul>
+   <li> <span class="cmd">lst2str(CL::List INT)</span></li>
+  </ul>
+ </li>
+ <li> Finally, here's how we can invert our matrix <tt>M</tt> modulo 26:
+  <ul>
+   <li> <span class="cmd">adj:=adjoint(M).adjMat</span></li>
+   <li> <span class="cmd">invdet:=recip(determinant(M))</span></li>
+   <li> <span class="cmd">MI:=invdet*adj</span></li>
+  </ul>
+ </li>
+ <li> Or alternatively, as one command:
+  <ul>
+   <li> 
+    <span class="cmd">
+     MI:=recip(determinant(M))*adjoint(M).adjMat
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Check the result:
+  <ul>
+   <li> <span class="cmd">M*MI</span></li>
+  </ul>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{crytoclass5.xhtml}
+<<cryptoclass5.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 5: RSA and public-key cryptosystems</h3>
+</center>
+<hr/>
+<ul>
+ <li> Read in this file:
+  <ul>
+   <li> 
+    <span class="cmd">
+     )read "S:/Samples/RCM3720/rcm3720.input" )quiet
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> You can leave the "<tt>)quiet</tt>" off if you like.  The file
+  is also available <a href="rcm3720.input">here</a>.  
+  If you obtain it from the
+  website, save it to a place of your choice, and <tt>read</tt> it
+  into your Axiom session using the full path, as shown above.
+ </li>
+ <li> Now create some large primes and their product:
+  <ul>
+   <li> <span class="cmd">r() == rand(2^100)</span></li>
+   <li> <span class="cmd">p:=nextPrime(r())</span></li>
+   <li> <span class="cmd">q:=nextPrime(r())</span></li>
+   <li> <span class="cmd">n:=p*q</span></li>
+  </ul>
+ </li>
+ <li> Choose a value <tt>e</tt> and ensure that it is relatively prime 
+      to your <tt>(p-1)(q-1)</tt>, and determine 
+      <tt>d=e^-1 mod (p-1)(q-1)</tt>.  (Use the <tt>invmod</tt> function here).
+ </li>
+ <li> Create a plaintext:
+  <ul>
+   <li> <span class="cmd">pl:="This is my plaintext."</span></li>
+  </ul>
+ </li>
+ <li> (or any plaintext you like), and convert it to a number using the
+      <tt>str2num</tt> procedure from the file above:
+  <ul>
+    <li> <span class="cmd">pln:=str2num(pl)</span></li>
+  </ul>
+ </li>
+ <li> Encrypt this number using the RSA method:
+  <ul>
+   <li> <span class="cmd">ct:=powmod(pln,e,n)</span></li>
+  </ul>
+ </li>
+ <li> and decrypt the result:
+  <ul>
+   <li> <span class="cmd">decrypt:=powmod(ct,d,n)</span></li>
+   <li> <span class="cmd">num2str(decrypt)</span></li>
+  </ul>  
+ </li>
+ <li> With a friend, swap your public keys and use them to send
+      each other a ciphertext encrypted with your friend's public key.
+ </li>
+ <li> Now decrypt the ciphertext you have received using your private key.</li>
+  
+ <li> Now try Rabin: create two large primes <tt>p</tt> and <tt>q</tt> and 
+      ensure that each is equal to 3 mod 4.  (You might have to run the 
+      <tt>nextPrime</tt> command a few times until you get primes which work.)
+ </li>
+ <li> Create <tt>N=pq</tt> and create a plaintext <tt>pl</tt>, and its 
+      numerical equivalent.
+ </li>
+ <li> Determine the ciphertext <tt>c</tt> by squaring your 
+      number mod <tt>N</tt>.
+ </li>
+ <li> Determine the <tt>s</tt> and <tt>t</tt> for which <tt>sp+tq=1</tt> 
+      by using the <tt>extendedEuclidean</tt> function.
+ </li> 
+ <li> Now follow through the Rabin decryption:
+  <ul>
+   <li> <span class="cmd">cp:=powmod(c,(p+1)/4,N) </span></li>
+   <li> <span class="cmd">cq:=powmod(c,(q+1)/4,N)</span></li>
+   <li> 
+    <span class="cmd">
+     c1:=(s*p*cq+t*q*cp)::ZMOD N,num2str(c1::INT)
+    </span>
+   </li>
+   <li> 
+    <span class="cmd">
+     c2:=(s*p*cq-t*q*cp)::ZMOD N,num2str(c2::INT)
+    </span>
+   </li>
+   <li> 
+    <span class="cmd">
+     c3:=(-s*p*cq-t*q*cp)::ZMOD N,num2str(c3::INT)
+    </span>
+   </li>
+   <li> 
+    <span class="cmd">
+     c4:=(-s*p*cq+t*q*cp)::ZMOD N,num2str(c4::INT)
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> One of the outputs <tt>c1</tt>, <tt>c2</tt>, <tt>c3</tt> and
+      <tt>c4</tt> should produce the correct plaintext; the others should be
+      gibberish.
+ </li>
+ <li> As above, swap public keys with a friend, and use those public
+      keys to encrypt a message to him or her.  Now decrypt the ciphertext
+      you have been given.
+ </li>
+ <li> For the el Gamal system, you need a large prime and a primitive
+      root. Create a large prime <tt>p</tt> and find a primitive root 
+      <tt>a</tt> using.
+  <ul>
+   <li> <span class="cmd">a:=primitiveElement()$PF p</span></li>
+  </ul>
+ </li>
+ <li> The <tt>primitiveElement</tt> command is not very efficient, so
+      if it seems to be taking a long time, abort the computation and try
+      with another prime.
+ </li>
+ <li> Do this in pairs with a friend, so that you each agree on a
+      large prime and a primitive root.
+ </li>
+ <li> Now choose a random value <tt>A</tt>:
+  <ul>
+   <li> <span class="cmd">A:=random(p-1)</span></li>
+  </ul>
+ </li>
+ <li> and create your public key <tt>A1=a^A (mod p)</tt>:
+  <ul>
+   <li> <span class="cmd">A1:=a^A</span></li>
+  </ul>
+ </li>
+ <li> Swap public keys with your friend.</li>
+  
+ <li> Create a plaintext <tt>pl</tt> and its number <tt>pln</tt>, and create
+      the ciphertext as follows (where <tt>A1</tt> is your friend's 
+      public key):
+  <ul>
+   <li> <span class="cmd">k:=random(p-1)</span></li>
+   <li> <span class="cmd">K:=A1^k</span></li>
+   <li> <span class="cmd">C:=[a^k, K*pln]</span></li>
+  </ul>
+ </li>
+ <li> This pair <tt>C</tt> is the ciphertext you send to your friend.</li>
+  
+ <li> Now decrypt the ciphertext you have been sent:
+  <ul>
+   <li> <span class="cmd">K:=C.1 ^ A</span></li>
+   <li> <span class="cmd">m:=C.2/K</span></li>
+   <li> <span class="cmd">num2str(m::INT)</span></li>
+  </ul>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{crytoclass6.xhtml}
+<<cryptoclass6.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 6: Digital Signatures</h3>
+</center>
+<hr/>
+
+You will need to read in the <a href="rcm3720.input">rcm3720.input</a>
+file for the <tt>str2num</tt> and <tt>num2str</tt> procedures.
+<br/>
+<b>NOTE:</b> To save typing in all the messages and long signature
+numbers, just copy them from <a href="signatures.txt">signatures.txt</a>
+
+<ul>
+
+ <li> For an RSA signature scheme, I provide the public key <i>(n,e)</i>, where
+<pre>
+      137
+   n=2   -1,  e=17
+</pre>
+ </li>
+ <li> This value <tt>n</tt> has two large prime factors. 
+      Use my public key to verify my signature of the following message:
+<pre>
+   This is my text.
+   68767027465671577191073128495082795700768
+</pre>
+ </li> 
+ <li> Now try with the public key
+<pre>
+      67
+  n=(6   - 1)/5,  e=17
+</pre>
+ </li>
+ <li> to verify my signature:
+<pre>
+   Please feed my dog!
+   1703215098456351993605104919259566435843590978852633
+</pre>
+ </li>
+ <li> For a Rabin signature scheme, I provide the public key 
+<pre>
+       74
+   N=(7  -1)/6,
+</pre>
+  which I know can be factorized into two large primes.
+ </li>
+ <li> Check the following message and signature:
+<pre>
+   Arrive Thursday.
+   189479723122534414019783447271411895509
+</pre>
+ </li> 
+  
+ <li> For an El Gamal signature scheme, I choose the next prime after
+<pre>
+     150
+    2
+</pre>
+  which has a primitive root <tt>a=2</tt>.  My public key is
+<pre>
+    B=1369851585774063312693119161120024351761244461
+</pre>
+ </li>
+ <li> Verify the signature
+<pre>
+    Leave AT ONCE!,
+    1389080525305754392111976715361069425353578198
+    1141326468070168229982976133801721430306004477
+</pre>
+ </li> 
+ <li> For a DSS signature, choose <tt>p</tt> to be the next prime after
+<pre>
+     170
+    2     and q=143441505468590696209
+</pre>
+ </li>
+ <li> Verify that <tt>q</tt> is a divisor of <tt>p-1</tt>.
+  
+  A primitive root of <tt>p</tt> is <tt>a=3</tt>.  
+  Use this primitive root to determine
+<pre>
+         (p-1)/q
+    g = a        mod p
+</pre>
+ </li>
+ <li> The public key value is
+<pre>
+    B=1394256880659595564848116770226045673904445792389839.
+</pre>
+ </li>
+ <li> Now using these values, verify this signature:
+<pre>
+    Now's your chance!
+    64609209464638355801
+    13824808741200493330
+</pre>
+ </li>
+ <li> Now exchange some public keys with a friend, and sign messages to each
+      other. Then verify the signatures you have been sent. Make sure you try
+      each of
+  <ul>
+   <li> RSA signatures,</li>
+   <li> Rabin signatures,</li>
+   <li> El Gamal signatures,</li>
+   <li> DSS.</li>
+  </ul>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{crytoclass7.xhtml}
+<<cryptoclass7.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 7: Knapsack cryptosystems</h3>
+</center>
+<hr/>
+
+You will need to read in the <a href="rcm3720.input">rcm3720.input</a>
+file for various necessary procedures.
+<br/><br/>
+<b>The subset sum problem</b>
+<br/><br/>
+
+We will first experiment with this problem; creating random lists and adding
+up elements from them.
+
+<ul>
+ <li> Start with a list of eight elements:
+  <ul>
+   <li> <span class="cmd">ln:=8</span></li>
+   <li> <span class="cmd">lst:=[random(10^6) for i in 1..ln]</span></li>
+   <li> <span class="cmd">m:=[random(2) for i in 1..ln]</span></li>
+   <li> <span class="cmd">c:=reduce(+,[m.i*lst.i for i in 1..ln])</span></li>
+   <li> <span class="cmd">subsetsum(lst,c)</span></li>
+  </ul>
+ </li>
+ <li> The <tt>subsetsum</tt> command implements a fairly non-efficient 
+      command for attemping to solve the subset sum problem for an 
+      arbitrary list.
+ </li>
+ <li> Try the above commands, but starting with a length <tt>ln</tt> of
+      12. You should find the command is a bit slower this time.  
+      Use this command to time it:
+  <ul>
+   <li> <span class="cmd">)set messages time on</span></li>
+  </ul>
+ </li>
+ <li> Experiment with lengths of 16 and 20.  How long does the
+      <tt>subsetsum</tt> command take for each of these values?
+ </li>
+</ul>
+<br/><br/>
+<b>Superincreasing sequences</b>
+
+<ul>
+ <li> Create a superincreasing sequence with
+  <ul>
+   <li> <span class="cmd">ln:=8</span></li>
+   <li> <span class="cmd">lst:=[random(10^6) for i in 1..ln]</span></li>
+   <li> 
+    <span class="cmd">
+     for i in 2..ln repeat lst.i:=reduce(+,[lst.j for j in 1..i-1])+random(10)+1
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Now create <tt>m</tt> and <tt>c</tt> as above.  This time, solve the
+      problem with
+  <ul>
+   <li> <span class="cmd">siSolve(lst,c)</span></li>
+  </ul>  
+ </li>
+ <li> Now try with larger lengths: 12, 16 and 20, and time the commands each
+      time.
+ </li>
+ <li> What can you say about solving the subset sum problem for general and
+      superincreasing lists?
+ </li>
+</ul>
+<br/><br/>
+<b>The Merkle-Hellman additive knapsack system</b>
+
+<ul>
+ <li> Create a superincreasing list of length <tt>ln</tt> 10, and call it
+  <tt>a</tt>.  Create a new number <tt>N</tt> greater than the sum of all
+  values of <tt>a</tt>.  Check with
+  <ul>
+   <li> <span class="cmd">N>reduce(+,[a.i for i in 1..ln])</span></li>
+  </ul>
+ </li>
+ <li> Now choose (randomly) a value <b>wN</b> and which is
+      relatively prime to <b>N</b>.  Then construct your public key:
+  <ul>
+   <li> <span class="cmd">b:=map(x +-> x*w rem N,a)</span></li>
+  </ul>  
+ </li>
+ <li> Now for an encryption and decryption. Create a random message <tt>m</tt>
+  as above, and encrypt it to a ciphertext <tt>c</tt> using the public key
+  <tt>b</tt>. 
+ </li>
+ <li> Decrypt it as follows:
+  <ul>
+   <li> <span class="cmd">c1:=inv_mod(w,N)*c rem N</span></li>
+   <li> <span class="cmd">siSolve(a,c1)</span></li>
+  </ul>
+ </li>
+ <li> 
+  Experiment with longer lists and messages: 12, 16, 20 or even larger.
+ </li>
+</ul>
+<br/><br/>
+<b>The Merkle-Hellman multiplicative knapsack system</b>
+
+<ul>
+ <li> Choose <tt>a</tt> to be the first ten primes, 
+      and a large prime <tt>p</tt>:
+  <ul>
+   <li> <span class="cmd">a:=[2,3,5,7,11,13,17,19,23,29]</span></li>
+   <li> <span class="cmd">p:=6469785001</span></li>
+  </ul>
+ </li>
+ <li> Check that <tt>p</tt> is greater than the product of all elements of
+      <tt>a</tt>:
+  <ul>
+   <li> <span class="cmd">p>reduce(*,[a.i for i in 1..10])</span></li>
+  </ul>
+ </li>
+ <li> and that <tt>p-1</tt> has only small factors:
+  <ul>
+   <li> <span class="cmd">factor(p-1)</span></li>
+  </ul>
+ </li>
+ <li> Choose as a primitive root the value 34:
+  <ul>
+   <li> <span class="cmd">r:=34</span></li>
+   <li> <span class="cmd">primitive?(r)$PF(p)</span></li>
+  </ul>  
+ </li>  
+ <li> and compute the public key: 
+  <ul>
+   <li> <span class="cmd">b:=map(x +-> discreteLog(r,x)$PF(p),a)</span></li>
+  </ul>  
+ </li>
+ <li> Create a message of length 10, and encrypt it using the public key
+  <tt>b</tt>:
+  <ul>
+   <li> 
+    <span class="cmd">
+     c:=reduce(+,[m.i*b.i::INT for i in 1..ln])
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Decryption is now done with:
+  <ul>
+   <li> <span class="cmd">c1:=powmod(r,c,p)</span></li>
+   <li> <span class="cmd">factor(c1)</span></li>
+  </ul>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{crytoclass8.xhtml}
+<<cryptoclass8.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 8: Modes of Encryption</h3>
+</center>
+<hr/>
+
+We will investigate the different modes of encryption using the Hill
+(matrix) cryptosystem.  Start off by entering some matrices:
+  <ul>
+   <li> 
+    <span class="cmd">
+     M:=matrix([[15,9,21],[2,10,7],[16,11,12]])::Matrix ZMOD 26
+    </span>
+   </li>
+   <li> 
+    <span class="cmd">
+     MI:=matrix([[7,17,19],[24,0,23],[12,25,10]])::Matrix ZMOD 26
+    </span>
+   </li>
+  </ul>
+
+Check that you've entered everything correctly with
+  <ul>
+   <li> <span class="cmd">M*MI</span></li>
+  </ul>
+
+Note that because the matrices were defined in terms of numbers mod 26,
+their product is automatically reduced mod 26.
+
+Now enter the following column vector:
+  <ul>
+   <li> 
+    <span class="cmd">
+     zero31:=matrix([[0],[0],[0]])::Matrix ZMOD 26
+    </span>
+   </li>
+  </ul>
+ 
+For this lab, rather than fiddling about with translations between 
+letters and numbers, all our work will be done with numbers alone 
+(in the range 0..25).
+
+<br/><br/>
+<b>ECB</b>
+<br/><br/>
+For electronic codebook mode, encryption is performed by multiplying each
+plaintext block by the matrix, and decryption by multiplying each ciphertext
+block by the inverse matrix:
+<pre>
+                  -1
+    C =M.P ,  P =M  C
+     i    i    i     i
+</pre>
+where all arithmetic is performed mod 26.
+
+<ul>
+ <li> Start by entering a plaintext, which will be a list of column vectors:
+  <ul>
+   <li> 
+    <span class="cmd">
+     P:=[matrix([[3*i],[3*i+1],[3*i+2]]) for i in 0..7]
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> and a list which will receive the ciphertext:
+  <ul>
+   <li> <span class="cmd">C:=[zero31 for i in 1..8]</span></li>
+  </ul>
+ </li>
+ <li> and encrypt it: 
+  <ul>
+   <li> <span class="cmd">for i in 1..8 repeat C.i:=M*P.i</span></li>
+  </ul>
+ </li>
+ <li> Now decrypt (first make an empty list <tt>D</tt>):
+  <ul>
+   <li> <span class="cmd">D:=[zero31 for i in 1..8]</span></li>
+   <li> <span class="cmd">for i in 1..8 repeat D.i:=MI*C.i</span></li>
+  </ul>
+ </li>
+ <li> If all has worked out, the list <tt>D</tt> should be the same 
+      plaintext you obtained earlier.
+ </li>
+ <li> Now change one value in the plaintext:
+  <ul>
+   <li> <span class="cmd">Q:=P</span></li>
+   <li> <span class="cmd">Q.3:=matrix([[6],[19],[8]])</span></li>
+  </ul>
+ </li>
+ <li> Now encrypt the new plaintext <tt>Q</tt> to a ciphertext <tt>E</tt>. How
+  does this ciphertext differ from the ciphertext <tt>C</tt> obtained from
+  <tt>P</tt>?
+ </li>
+ <li> Check that you can decrypt <tt>E</tt> to obtain <tt>Q</tt>.</li>
+</ul>
+<br/><br/>
+<b>CBC</b>
+<br/><br/>
+For cipherblock chaining mode, the encryption formula for the Hill
+cryptosystem is
+<pre>
+   C =M(P +C   )
+    i    i  i-1
+</pre>
+and decryption is
+<pre>
+       -1
+   P =M  C -C
+    i     i  i-1
+</pre>
+
+<ul>
+ <li> To enable us to use these formulas, we shall first add an extra column
+  to the front of <tt>P</tt> and <tt>C</tt>:
+  <ul>
+   <li> <span class="cmd">P:=append([zero31],P)</span></li>
+   <li> <span class="cmd">C:=append([zero31],C)</span></li>
+  </ul>
+ </li>
+ <li> And we need to create a initialization vector:
+  <ul>
+   <li> <span class="cmd">IV:=matrix([[random(26)] for i in 1..3])</span></li>
+  </ul>
+ </li>
+ <li> Now for encryption:
+  <ul>
+   <li> <span class="cmd">C.1:=IV</span></li>
+   <li> 
+    <span class="cmd">
+     for i in 2..9 repeat C.i:=M*(P.i+C.(i-1))
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Let's try to decrypt the ciphertext, using the CBC formula:
+  <ul>
+   <li> <span class="cmd">D:=[zero31 for i in 1..9]</span></li>
+   <li>
+    <span class="cmd">
+     for i in 2..9 repeat D.i:=MI*(C.i)-C.(i-1)
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Did it work out?</li>
+  
+ <li> As before, change one value in the plaintext:
+  <ul>
+   <li> <span class="cmd">Q:=P</span></li>
+   <li> <span class="cmd">Q.4:=matrix([[6],[19],[8]])</span></li>
+  </ul>
+ </li>
+ <li> Now encrypt <tt>Q</tt> to <tt>E</tt> following the procedure outlined
+      above.  Compare <tt>E</tt> with <tt>C</tt>---
+      how much difference is there?
+      How does this difference compare with the differences of ciphertexts
+      obtained with ECB?
+ </li>
+ <li> Just to make sure you can do it, decrypt <tt>E</tt> and make sure you
+  end up with a list equal to <tt>Q</tt>.
+ </li>
+</ul>
+<br/><br/>
+<b>OFB</b>
+<br/><br/>
+Output feedback mode works by creating a <i>key stream</i>, and then adding 
+it to the plaintext to obtain the ciphertext.  With the Hill system, and an
+initialization vector <tt>IV</tt>:
+<pre>
+   k =IV,   k =Mk
+    1        i   i-1
+</pre>
+and then
+<pre>
+   c =p +k
+    i  i  i
+</pre>
+
+<ul>
+ <li> First, the key stream:
+  <ul>
+   <li> <span class="cmd">K:=[zero31 for i in 1..9]</span></li>
+   <li> <span class="cmd">K.1:=IV</span></li>
+   <li> <span class="cmd">for i in 2..9 repeat K.i:=M*K.(i-1)</span></li>
+  </ul>
+ </li>
+ <li> and next the encryption:
+  <ul>
+   <li> <span class="cmd">for i in 2..9 repeat C.i:=K.i+P.i</span></li>
+  </ul>
+ </li>
+ <li> What is the formula for decryption?  
+      Apply it to your ciphertext <tt>C</tt>.
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{crytoclass9.xhtml}
+<<cryptoclass9.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 9: Hash Functions</h3>
+</center>
+<hr/>
+<br/><br/>
+<b>A simple hash</b>
+<br/><br/>
+Given two prime numbers <tt>p</tt> and <tt>q</tt>, and their product 
+<tt>N</tt>, we can define a hash of a number <tt>n</tt> to be
+<pre>
+           n
+   hash = g  (mod N)
+</pre>
+
+This is provably collision resistant, because if we want to find two hashes
+which are equal, then we need to find <tt>m</tt> and <tt>n</tt> for which
+<pre>
+    m    n
+   g  = g  (mod N)
+</pre>
+or that
+<pre>
+    m-n
+   g    = 1 (mod N)
+</pre>
+
+By Euler's theorem, we know that
+<pre>
+    &#x3D5;(N)
+   g         = 1 (mod N)
+</pre>
+
+This means that finding a collision requires finding two numbers 
+<tt>m</tt> and <tt>n</tt> for which
+<pre>
+   m = n (mod &#x3D5;(N))
+</pre>
+
+Since computing &#x3D5;(N) requires a knowledge of the factorization of 
+<tt>N</tt>, this will be hard if <tt>p</tt> and <tt>q</tt> are large.
+
+<ul>
+ <li> Enter the following commands:
+  <ul>
+   <li> <span class="cmd">p:=nextPrime(87654321)</span></li>
+   <li> <span class="cmd">q:=nextPrime(98765432)</span></li>
+   <li> <span class="cmd">N:=p*q</span></li>
+   <li> <span class="cmd">g:=17</span></li>
+  </ul>
+ </li>
+ <li> Read in the utility file <a href="rcm3720.input">rcm3720.input</a></li>
+
+ <li> Now experiment with the following hashes:
+  <ul>
+   <li> <span class="cmd">n:=str2num("A cat")</span></li>
+   <li> <span class="cmd">h:=powmod(g,n,N)</span></li>
+   <li> <span class="cmd">n:=str2num("A bat")</span></li>
+   <li> <span class="cmd">h:=powmod(g,n,N)</span></li>
+  </ul>
+ </li>
+   
+ <li> Even though the strings are very similar, 
+      how similar are the hash values?
+ </li>
+ <li> Experiment with hashing some other strings---some short, some long.</li>
+
+ <li> Read in a text file (any text file, of any length) as follows:</li>
+  <ul>
+   <li> 
+    <span class="cmd">
+     f:TextFile:=open("\full\path\to\file","input")
+    </span>
+   </li>
+   <li> <span class="cmd">str:=""</span></li>
+   <li> 
+    <span class="cmd">
+     while not endOfFile?(f) repeat str:=concat(str,readLine(f));
+    </span>
+   </li>
+  </ul>
+  
+ <li> Now the variable <tt>str</tt> will contain the file as one long string.
+      Hash this string, by converting it to a number first.
+ </li> 
+ <li> Try this with a few different text files, 
+      of different lengths---some short, some long.
+ </li>
+</ul>
+
+<br/><br/>
+<b>A simplified version of MASH</b>
+<br/><br/>
+We shall experiment with a simplified version of the MASH hash function:
+
+ <ol>
+  <li> Start with two prime numbers <tt>p</tt> and <tt>q</tt>, 
+      and their product <tt>N</tt>.
+  </li>
+  <li> Turn the data to be hashed into a single integer <tt>n</tt>.</li>
+  
+  <li> Express <tt>n</tt> as ``digits'' in base <tt>N</tt>:</li>
+<pre>
+                    2      3            q
+   n = a + a N + a N  + a N  + ... + a N
+        0   1     2      3            q
+</pre>
+
+  <li> Start with <tt>H</tt> being the largest prime less than <tt>N</tt>.</li>
+
+  <li> For <tt>i</tt> from 0 to <tt>q</tt></li>
+<pre>
+                     2
+      H &#60;-- (H + a_i)  +H (mod N)
+</pre>
+
+  <li> The final value of <tt>H</tt> is the hash.</li>
+ </ol>
+
+<ul>
+ <li> With <tt>p</tt>, <tt>q</tt> and <tt>N</tt> as before, pick a long 
+      string (or the string from a text file) to be hashed, and turn it 
+      into a number <tt>n</tt>.
+ </li>
+ <li> Determine the ``digits'' in base <tt>N</tt>:
+  <ul>
+   <li> 
+    <span class="cmd">
+     a:=wholeRagits(n::RadixExpansion(N))::List ZMOD N
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Now create the hash:
+  <ul>
+   <li> <span class="cmd">H:=prevPrime(N)</span></li>  
+   <li> <span class="cmd">for i in 1..#a repeat H:=(H+a.i)^2+H</span></li>  
+  </ul>
+ </li> 
+ <li> Note that since the elements of the list <tt>a</tt> are already 
+      defined as being modulo <tt>N</tt>, we don't have to use a mod 
+      function in this last step.
+ </li>  
+ <li> Create the hashes of a few other strings and files.  What happens if you
+      try to hash a really long text file?
+ </li>  
+ <li> Experiment with hashing using some other (large) primes.</li>
+</ul>
+<<page foot>>
+@
+
+\subsection{crytoclass10.xhtml}
+<<cryptoclass10.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 10: The Data Encryption Standard</h3>
+</center>
+<hr/>
+
+The object of this lab will be to build up the necessary functions and
+tools to implement simplified DES (sDES).  All operations will be done on
+binary lists.  Since the definitions of the sDES functions require lists to be
+indexed starting at 0, but in Axiom lists are indexed starting at 1, many of
+the operations will have extra ones added at some stage.
+
+<ul> 
+ <li> Save the file <tt>des.input</tt> to a directory in which you
+      have write access.  Read the file into Axiom, and open up the file
+      with a text editor.  
+ </li>
+
+ <li> Compare the first command <tt>perm(b)</tt> with the initial
+      permutation for sDES defined in page 94 of the notes.  How do the
+      indices in the Axiom command relate to the indices of the
+      permutation in the notes?  
+ </li>
+  
+ <li> Now using the above procedure as a guide, write a procedure called
+      <tt>invperm</tt> to perform the inverse permutation.
+ </li>
+
+ <li> Test this procedure: it should invert the permutation you
+      obtained from the <tt>perm</tt> procedure.  
+ </li>
+  
+<li> The <tt>subkey</tt> procedure creates two lists: one for the
+     first subkey, and one for the second.  Edit the procedure to include
+     the second subkey as given on the bottom of page 95.
+ </li>
+  
+ <li> Write a procedure called <tt>expperm</tt> which implements the
+      expansion permutation on page 96; use the <tt>perm</tt> and
+      <tt>invperm</tt> procedures as guides.
+ </li>
+  
+ <li> Using the <tt>sbox0</tt> procedure as a guide, write a procedure
+      to implement S-box 1.
+ </li>
+  
+ <li> The mixing function shown in figure 8.5 in the notes is
+      implemented as <tt>mix</tt>.  This procedure has been
+      commented.
+ </li>
+  
+ <li> Comment each line of the <tt>feistel</tt> and <tt>sdes</tt>
+      procedures in a similar fashion.
+ </li>
+  
+ <li> Test the <tt>sdes</tt> procedure on the example given in the notes.
+ </li>
+  
+ <li> Modify your procedure to implement sDES decryption, using the
+      scheme given on page 99.
+ </li>
+
+ <li> Test that your decryption procedure works; that it decrypts the
+      ciphertext produced by your encryption procedure to the original
+      plaintext.
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{crytoclass11.xhtml}
+<<cryptoclass11.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 11: Finite Fields</h3>
+</center>
+<hr/>
+
+<ul>
+ <li> Enter the following definition of the finite field 
+<pre>
+           3
+   Z [x]/(x +x+1)
+    2
+</pre>
+  <ul>
+   <li> <span class="cmd">F:=FFP(PF 2,x^3+x+1) </span></li>
+  </ul>
+ </li>
+ <li> To perform field operations, we need to create a generator of the field:
+  a symbol which can be used to generate all elements as polynomials:
+  <ul>
+   <li> <span class="cmd">x:=generator()$F</span>
+    <br/> Now field arithmetic is easy:
+   </li>
+   <li> (x^2+1)(x+1) in the field:
+    <ul>
+     <li> <span class="cmd">(x^2+1)*(x+1)</span> </li>
+    </ul>
+   </li>
+   <li> 1/(x^2+x):
+    <ul>
+     <li> <span class="cmd">1/(x^2+x)</span>
+      <br/>Note that Axiom returns its answer in terms of a dummy variable.
+     </li>
+    </ul>
+   </li>
+   <li> We can also list tables of powers:
+    <ul>
+     <li> 
+      <span class="cmd">
+       for i in 0..7 repeat output (i::String, x^i) 
+      </span>
+     </li>
+    </ul>
+   </li>
+  </ul>
+ </li>
+ <li> Before we enter a new field, we need to clear <tt>x</tt> and its
+  properties:
+  <ul>
+   <li> <span class="cmd">)cl pr x </span></li>
+  </ul>
+  Now for a slightly bigger field: 
+<pre>
+           4  3
+   Z [x]/(x +x +1)
+    2
+</pre>
+  <ul>
+   <li> <span class="cmd">F2:=FFP(PF 2,x^4+x^3+1)</span> </li>
+  </ul>
+  <ul>
+   <li> Create a list of powers of <tt>x</tt>. </li>
+   <li> Evaluate (x^3+x+1)/(x^3+x^2) in this field. </li>
+  </ul>
+ </li>
+ <li> Enter the Rijndael field, 
+<pre>
+         8  4  3
+ Z [x]/(x +x +x +x+1)
+  2
+</pre>
+ and call it <tt>GR</tt>.
+ </li>
+ <li> Determine whether <tt>x</tt> is a primitive element in this field:
+  <ul>
+   <li> <span class="cmd">x:=generator()$GR</span> </li>
+   <li> <span class="cmd">primitive?(x)</span> </li>
+  </ul>
+ </li>
+ <li>
+  Is <tt>x+1</tt> a primitive element?
+ </li>
+ <li> Investigate the workings of MixColumn.  First create the matrix:
+  <ul>
+   <li>
+    <span class="cmd">
+     M:Matrix GR:=matrix([[x,x+1,1,1],[1,x,x+1,1],[1,1,x,x+1],[x+1,1,1,x]])
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li>
+  Instead of multiplying a matrix <tt>C</tt> by <tt>M</tt>, 
+  we shall just look at a single column, created randomly:
+  <ul>
+   <li>
+    <span class="cmd">
+     C:Matrix GR:=matrix([[random()$FR] for j in 1..4]) 
+    </span>
+   </li>
+  </ul>
+ <li>
+ </li>
+  These can be multiplied directly in Axiom:
+  <ul>
+   <li> <span class="cmd">D:=M*C</span> </li>
+  </ul>
+ </li>
+ <li> Remarkably enough, Axiom can operate on matrices over a finite field as
+      easily as it can operate on numerical matrices.  For example, given that
+<pre>
+   D=MC 
+</pre>
+ </li>
+ <li>  it follows that
+<pre>
+      -1
+   C=M  D
+</pre>
+ </li>
+ <li> or that
+<pre>
+    -1
+   M  D-C=0
+</pre>
+ </li>
+ <li> To test this, first create the matrix inverse:
+  <ul>
+   <li> <span class="cmd">MI:=inverse(M)</span> </li>
+  </ul>
+ </li>
+ <li>
+  Now multiply by <tt>D</tt> and subtract <tt>C</tt>.  What does the result
+  tell you about the truth of the final equation?
+ </li>
+ <li> To explore MixColumn a bit more, we shall look at the inverse of
+      <tt>M</tt>.  First, here's a small function which converts from
+      a polynomial to an integer (treating the coefficients of the
+      polynomial as digits of a binary number):
+  <ul>
+   <li>
+    <span class="cmd">
+      poly2int(p)==(tmp:=reverse(coordinates(p)),return 
+          integer wholeRadix(tmp::LIST INT)$RadixExpansion(2))
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> First check the matrix <tt>M</tt>:
+  <ul>
+   <li> <span class="cmd">map((x +-> poly2int(x)::INT), M)</span></li>
+  </ul>
+ </li>
+ <li>
+  Is this what you should have?
+ </li>
+ <li>
+  Now apply the same command but to <tt>MI</tt> instead of to <tt>M</tt>.
+  What is the result?
+ </li>
+</ul>
+<<page foot>>
+@
+
+%%D
+\subsection{dbopbinary.xhtml}
+<<dbopbinary.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopbinary not implemented
+<<page foot>>
+@
+
+\subsection{dbcharacteristic.xhtml}
+<<dbcharacteristic.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbcharacteristic not implemented
+<<page foot>>
+@
+
+\subsection{dbcomplexcomplex.xhtml}
+<<dbcomplexcomplex.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbcomplexcomplex not implemented
+<<page foot>>
+@
+
+\subsection{dbcomplexconjugate.xhtml}
+<<dbcomplexconjugate.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbcomplexconjugate not implemented
+<<page foot>>
+@
+
+\subsection{dbcomplexfactor.xhtml}
+<<dbcomplexfactor.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbcomplexfactor not implemented
+<<page foot>>
+@
+
+\subsection{dbcomplexdoublefloat.xhtml}
+<<dbcomplexdoublefloat.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbcomplexdoublefloat not implemented
+<<page foot>>
+@
+
+\subsection{dbcomplexfloat.xhtml}
+<<dbcomplexfloat.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbcomplexfloat not implemented
+<<page foot>>
+@
+
+\subsection{dbcompleximag.xhtml}
+<<dbcompleximag.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbcompleximag not implemented
+<<page foot>>
+@
+
+\subsection{dbcomplexnorm.xhtml}
+<<dbcomplexnorm.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbcomplexnorm not implemented
+<<page foot>>
+@
+
+\subsection{dbcomplexreal.xhtml}
+<<dbcomplexreal.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbcomplexreal not implemented
+<<page foot>>
+@
+
+\subsection{dbcomplexinteger.xhtml}
+<<dbcomplexinteger.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbcomplexinteger not implemented
+<<page foot>>
+@
+
+\subsection{dbexpressioninteger.xhtml}
+<<dbexpressioninteger.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbexpressioninteger not implemented
+<<page foot>>
+@
+
+\subsection{dbfractioninteger.xhtml}
+<<dbfractioninteger.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbfractioninteger not implemented
+<<page foot>>
+@
+
+\subsection{dbfractionpolynomialinteger.xhtml}
+<<dbfractionpolynomialinteger.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbfractionpolynomialinteger not implemented
+<<page foot>>
+@
+
+\subsection{dblookup.xhtml}
+<<dblookup.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dblookup not implemented
+<<page foot>>
+@
+
+\subsection{dbopacos.xhtml}
+<<dbopacos.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopacos not implemented
+<<page foot>>
+@
+
+\subsection{dbopacosh.xhtml}
+<<dbopacosh.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopacosh not implemented
+<<page foot>>
+@
+
+\subsection{dbopacot.xhtml}
+<<dbopacot.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopacot not implemented
+<<page foot>>
+@
+
+\subsection{dbopacoth.xhtml}
+<<dbopacoth.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopacoth not implemented
+<<page foot>>
+@
+
+\subsection{dbopacsc.xhtml}
+<<dbopacsc.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopacsc not implemented
+<<page foot>>
+@
+
+\subsection{dbopacsch.xhtml}
+<<dbopacsch.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopacsch not implemented
+<<page foot>>
+@
+
+\subsection{dbopaddmod.xhtml}
+<<dbopaddmod.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopaddmod not implemented
+<<page foot>>
+@
+
+\subsection{dbopairyai.xhtml}
+<<dbopairyai.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopairyai not implemented
+<<page foot>>
+@
+
+\subsection{dbopairybi.xhtml}
+<<dbopairybi.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopairybi not implemented
+<<page foot>>
+@
+
+\subsection{dbopapproximants.xhtml}
+<<dbopapproximants.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopapproximants not implemented
+<<page foot>>
+@
+
+\subsection{dbopasin.xhtml}
+<<dbopasin.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopasin not implemented
+<<page foot>>
+@
+
+\subsection{dbopasinh.xhtml}
+<<dbopasinh.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopasinh not implemented
+<<page foot>>
+@
+
+\subsection{dbopasec.xhtml}
+<<dbopasec.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopasec not implemented
+<<page foot>>
+@
+
+\subsection{dbopasech.xhtml}
+<<dbopasech.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopasech not implemented
+<<page foot>>
+@
+
+\subsection{dbopatan.xhtml}
+<<dbopatan.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopatan not implemented
+<<page foot>>
+@
+
+\subsection{dbopatanh.xhtml}
+<<dbopatanh.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopatanh not implemented
+<<page foot>>
+@
+
+\subsection{dbopbesseli.xhtml}
+<<dbopbesseli.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopbesseli not implemented
+<<page foot>>
+@
+
+\subsection{dbopbesselj.xhtml}
+<<dbopbesselj.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopbesselj not implemented
+<<page foot>>
+@
+
+\subsection{dbopbesselk.xhtml}
+<<dbopbesselk.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopbesselk not implemented
+<<page foot>>
+@
+
+\subsection{dbopbessely.xhtml}
+<<dbopbessely.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopbessely not implemented
+<<page foot>>
+@
+
+\subsection{dbopbeta.xhtml}
+<<dbopbeta.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopbeta not implemented
+<<page foot>>
+@
+
+\subsection{dbopcardinalnumber.xhtml}
+<<dbopcardinalnumber.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcardinalnumber not implemented
+<<page foot>>
+@
+
+\subsection{dbopcoefficient.xhtml}
+<<dbopcoefficient.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcoefficient not implemented
+<<page foot>>
+@
+
+\subsection{dbopcoefficients.xhtml}
+<<dbopcoefficients.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcoefficients not implemented
+<<page foot>>
+@
+
+\subsection{dbopcoerce.xhtml}
+<<dbopcoerce.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcoerce not implemented
+<<page foot>>
+@
+
+\subsection{dbopcolumn.xhtml}
+<<dbopcolumn.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcolumn not implemented
+<<page foot>>
+@
+
+\subsection{dbopcompactfraction.xhtml}
+<<dbopcompactfraction.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcompactfraction not implemented
+<<page foot>>
+@
+
+\subsection{dbopcomplexeigenvectors.xhtml}
+<<dbopcomplexeigenvectors.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcomplexeigenvectors not implemented
+<<page foot>>
+@
+
+\subsection{dbopcomplexelementary.xhtml}
+<<dbopcomplexelementary.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcomplexelementary not implemented
+<<page foot>>
+@
+
+\subsection{dbopcomplexintegrate.xhtml}
+<<dbopcomplexintegrate.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcomplexintegrate not implemented
+<<page foot>>
+@
+
+\subsection{dbopcomplexlimit.xhtml}
+<<dbopcomplexlimit.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcomplexlimit not implemented
+<<page foot>>
+@
+
+\subsection{dbopcomplexsolve.xhtml}
+<<dbopcomplexsolve.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcomplexsolve not implemented
+<<page foot>>
+@
+
+\subsection{dbopcontent.xhtml}
+<<dbopcontent.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcontent not implemented
+<<page foot>>
+@
+
+\subsection{dbopcontinuedfraction.xhtml}
+<<dbopcontinuedfraction.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcontinuedfraction not implemented
+<<page foot>>
+@
+
+\subsection{dbopconvergents.xhtml}
+<<dbopconvergents.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopconvergents not implemented
+<<page foot>>
+@
+
+\subsection{dbopcopy.xhtml}
+<<dbopcopy.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcopy not implemented
+<<page foot>>
+@
+
+\subsection{dbopcos.xhtml}
+<<dbopcos.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopcos not implemented
+<<page foot>>
+@
+
+\subsection{dbopcosh.xhtml}
+<<dbopcosh.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopcosh not implemented
+<<page foot>>
+@
+
+\subsection{dbopcot.xhtml}
+<<dbopcot.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcot not implemented
+<<page foot>>
+@
+
+\subsection{dbopcoth.xhtml}
+<<dbopcoth.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcoth not implemented
+<<page foot>>
+@
+
+\subsection{dbopcount.xhtml}
+<<dbopcount.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcount not implemented
+<<page foot>>
+@
+
+\subsection{dbopcountableq.xhtml}
+<<dbopcountableq.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcountableq not implemented
+<<page foot>>
+@
+
+\subsection{dbopcsc.xhtml}
+<<dbopcsc.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopcsc not implemented
+<<page foot>>
+@
+
+\subsection{dbopcsch.xhtml}
+<<dbopcsch.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopcsch not implemented
+<<page foot>>
+@
+
+\subsection{dbopcycleragits.xhtml}
+<<dbopcycleragits.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopcycleragits not implemented
+<<page foot>>
+@
+
+\subsection{dbopd.xhtml}
+<<dbopd.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopd not implemented
+<<page foot>>
+@
+
+\subsection{dbopdecimal.xhtml}
+<<dbopdecimal.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopdecimal not implemented
+<<page foot>>
+@
+
+\subsection{dbopdefiningpolynomial.xhtml}
+<<dbopdefiningpolynomial.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopdefiningpolynomial not implemented
+<<page foot>>
+@
+
+\subsection{dbopdegree.xhtml}
+<<dbopdegree.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopdegree not implemented
+<<page foot>>
+@
+
+\subsection{dbopdenom.xhtml}
+<<dbopdenom.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopdenom not implemented
+<<page foot>>
+@
+
+\subsection{dbopdeterminant.xhtml}
+<<dbopdeterminant.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopdeterminant not implemented
+<<page foot>>
+@
+
+\subsection{dbopdiagonalmatrix.xhtml}
+<<dbopdiagonalmatrix.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopdiagonalmatrix not implemented
+<<page foot>>
+@
+
+\subsection{dbopdigamma.xhtml}
+<<dbopdigamma.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopdigamma not implemented
+<<page foot>>
+@
+
+\subsection{dbopdigits.xhtml}
+<<dbopdigits.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopdigits not implemented
+<<page foot>>
+@
+
+\subsection{dbopdimension.xhtml}
+<<dbopdimension.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopdimension not implemented
+<<page foot>>
+@
+
+\subsection{dbopdivide.xhtml}
+<<dbopdivide.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopdivide not implemented
+<<page foot>>
+@
+
+\subsection{dbopeigenmatrix.xhtml}
+<<dbopeigenmatrix.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopeigenmatrix not implemented
+<<page foot>>
+@
+
+\subsection{dbopeigenvalues.xhtml}
+<<dbopeigenvalues.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopeigenvalues not implemented
+<<page foot>>
+@
+
+\subsection{dbopeigenvector.xhtml}
+<<dbopeigenvector.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopeigenvector not implemented
+<<page foot>>
+@
+
+\subsection{dbopeigenvectors.xhtml}
+<<dbopeigenvectors.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopeigenvectors not implemented
+<<page foot>>
+@
+
+\subsection{dbopelt.xhtml}
+<<dbopelt.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopelt not implemented
+<<page foot>>
+@
+
+\subsection{dbopeval.xhtml}
+<<dbopeval.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopeval not implemented
+<<page foot>>
+@
+
+\subsection{dbopevenq.xhtml}
+<<dbopevenq.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopevenq not implemented
+<<page foot>>
+@
+
+\subsection{dbopexp.xhtml}
+<<dbopexp.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopexp not implemented
+<<page foot>>
+@
+
+\subsection{dbopfactor.xhtml}
+<<dbopfactor.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopfactor not implemented
+<<page foot>>
+@
+
+\subsection{dbopfactorfraction.xhtml}
+<<dbopfactorfraction.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopfactorfraction not implemented
+<<page foot>>
+@
+
+\subsection{dbopfiniteq.xhtml}
+<<dbopfiniteq.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopfiniteq not implemented
+<<page foot>>
+@
+
+\subsection{dbopfirstdenom.xhtml}
+<<dbopfirstdenom.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopfirstdenom not implemented
+<<page foot>>
+@
+
+\subsection{dbopfirstnumer.xhtml}
+<<dbopfirstnumer.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopfirstnumer not implemented
+<<page foot>>
+@
+
+\subsection{dbopfractragits.xhtml}
+<<dbopfractragits.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopfractragits not implemented
+<<page foot>>
+@
+
+\subsection{dbopgamma.xhtml}
+<<dbopgamma.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopgamma not implemented
+<<page foot>>
+@
+
+\subsection{dbopgcd.xhtml}
+<<dbopgcd.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopgcd not implemented
+<<page foot>>
+@
+
+\subsection{dbophex.xhtml}
+<<dbophex.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbophex not implemented
+<<page foot>>
+@
+
+\subsection{dbophorizconcat.xhtml}
+<<dbophorizconcat.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbophorizconcat not implemented
+<<page foot>>
+@
+
+\subsection{dbophtrigs.xhtml}
+<<dbophtrigs.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbophtrigs not implemented
+<<page foot>>
+@
+
+\subsection{dbophypergeometric0f1.xhtml}
+<<dbophypergeometric0f1.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbophypergeometric0f1 not implemented
+<<page foot>>
+@
+
+\subsection{dbopinteger.xhtml}
+<<dbopinteger.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopinteger not implemented
+<<page foot>>
+@
+
+\subsection{dbopintegrate.xhtml}
+<<dbopintegrate.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopintegrate not implemented
+<<page foot>>
+@
+
+\subsection{dbopinverse.xhtml}
+<<dbopinverse.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopinverse not implemented
+<<page foot>>
+@
+
+\subsection{dbopinvmod.xhtml}
+<<dbopinvmod.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopinvmod not implemented
+<<page foot>>
+@
+
+\subsection{dboplaurent.xhtml}
+<<dboplaurent.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboplaurent not implemented
+<<page foot>>
+@
+
+\subsection{dboplcm.xhtml}
+<<dboplcm.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dboplcm not implemented
+<<page foot>>
+@
+
+\subsection{dbopleadingcoefficient.xhtml}
+<<dbopleadingcoefficient.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopleadingcoefficient not implemented
+<<page foot>>
+@
+
+\subsection{dbopleadingmonomial.xhtml}
+<<dbopleadingmonomial.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopleadingmonomial not implemented
+<<page foot>>
+@
+
+\subsection{dboplength.xhtml}
+<<dboplength.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboplength not implemented
+<<page foot>>
+@
+
+\subsection{dboplimit.xhtml}
+<<dboplimit.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboplimit not implemented
+<<page foot>>
+@
+
+\subsection{dboplog.xhtml}
+<<dboplog.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dboplog not implemented
+<<page foot>>
+@
+
+\subsection{dboploggamma.xhtml}
+<<dboploggamma.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboploggamma not implemented
+<<page foot>>
+@
+
+\subsection{dbopmainvariable.xhtml}
+<<dbopmainvariable.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopmainvariable not implemented
+<<page foot>>
+@
+
+\subsection{dbopmap.xhtml}
+<<dbopmap.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopmap not implemented
+<<page foot>>
+@
+
+\subsection{dbopmapbang.xhtml}
+<<dbopmapbang.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopmapbang not implemented
+<<page foot>>
+@
+
+\subsection{dbopmatrix.xhtml}
+<<dbopmatrix.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopmatrix not implemented
+<<page foot>>
+@
+
+\subsection{dbopmax.xhtml}
+<<dbopmax.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopmax not implemented
+<<page foot>>
+@
+
+\subsection{dbopmemberq.xhtml}
+<<dbopmemberq.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopmemberq not implemented
+<<page foot>>
+@
+
+\subsection{dbopmin.xhtml}
+<<dbopmin.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopmin not implemented
+<<page foot>>
+@
+
+\subsection{dbopminimumdegree.xhtml}
+<<dbopminimumdegree.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopminimumdegree not implemented
+<<page foot>>
+@
+
+\subsection{dbopminus.xhtml}
+<<dbopminus.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopminus not implemented
+<<page foot>>
+@
+
+\subsection{dbopmonicdivide.xhtml}
+<<dbopmonicdivide.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopmonicdivide not implemented
+<<page foot>>
+@
+
+\subsection{dbopmulmod.xhtml}
+<<dbopmulmod.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopmulmod not implemented
+<<page foot>>
+@
+
+\subsection{dbopncols.xhtml}
+<<dbopncols.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopncols not implemented
+<<page foot>>
+@
+
+\subsection{dbopnew.xhtml}
+<<dbopnew.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopnew not implemented
+<<page foot>>
+@
+
+\subsection{dbopnorm.xhtml}
+<<dbopnorm.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopnorm not implemented
+<<page foot>>
+@
+
+\subsection{dbopnrows.xhtml}
+<<dbopnrows.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopnrows not implemented
+<<page foot>>
+@
+
+\subsection{dbopnthfractionalterm.xhtml}
+<<dbopnthfractionalterm.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopnthfractionalterm not implemented
+<<page foot>>
+@
+
+\subsection{dbopnthroot.xhtml}
+<<dbopnthroot.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopnthroot not implemented
+<<page foot>>
+@
+
+\subsection{dbopnumer.xhtml}
+<<dbopnumer.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopnumer not implemented
+<<page foot>>
+@
+
+\subsection{dbopnumeric.xhtml}
+<<dbopnumeric.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopnumeric not implemented
+<<page foot>>
+@
+
+\subsection{dbopoperator.xhtml}
+<<dbopoperator.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopoperator not implemented
+<<page foot>>
+@
+
+\subsection{dboporthonormalbasis.xhtml}
+<<dboporthonormalbasis.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboporthonormalbasis not implemented
+<<page foot>>
+@
+
+\subsection{dboppadicfraction.xhtml}
+<<dboppadicfraction.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboppadicfraction not implemented
+<<page foot>>
+@
+
+\subsection{dbopnullity.xhtml}
+<<dbopnullity.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopnullity not implemented
+<<page foot>>
+@
+
+\subsection{dbopnullspace.xhtml}
+<<dbopnullspace.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopnullspace not implemented
+<<page foot>>
+@
+
+\subsection{dbopnumberoffractionalterms.xhtml}
+<<dbopnumberoffractionalterms.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopnumberoffractionalterms not implemented
+<<page foot>>
+@
+
+\subsection{dboppartialfraction.xhtml}
+<<dboppartialfraction.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboppartialfraction not implemented
+<<page foot>>
+@
+
+\subsection{dboppartialquotients.xhtml}
+<<dboppartialquotients.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboppartialquotients not implemented
+<<page foot>>
+@
+
+\subsection{dbopplus.xhtml}
+<<dbopplus.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopplus not implemented
+<<page foot>>
+@
+
+\subsection{dboppattern.xhtml}
+<<dboppattern.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboppattern not implemented
+<<page foot>>
+@
+
+\subsection{dboppermanent.xhtml}
+<<dboppermanent.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboppermanent not implemented
+<<page foot>>
+@
+
+\subsection{dboppi.xhtml}
+<<dboppi.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboppi not implemented
+<<page foot>>
+@
+
+\subsection{dboppolygamma.xhtml}
+<<dboppolygamma.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboppolygamma not implemented
+<<page foot>>
+@
+
+\subsection{dboppositiveremainder.xhtml}
+<<dboppositiveremainder.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboppositiveremainder not implemented
+<<page foot>>
+@
+
+\subsection{dbopprefixragits.xhtml}
+<<dbopprefixragits.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopprefixragits not implemented
+<<page foot>>
+@
+
+\subsection{dbopprimefactor.xhtml}
+<<dbopprimefactor.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopprimefactor not implemented
+<<page foot>>
+@
+
+\subsection{dboppuiseux.xhtml}
+<<dboppuiseux.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboppuiseux not implemented
+<<page foot>>
+@
+
+\subsection{dbopqelt.xhtml}
+<<dbopqelt.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopqelt not implemented
+<<page foot>>
+@
+
+\subsection{dbopqseteltbang.xhtml}
+<<dbopqseteltbang.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopqseteltbang not implemented
+<<page foot>>
+@
+
+\subsection{dbopquatern.xhtml}
+<<dbopquatern.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopquatern not implemented
+<<page foot>>
+@
+
+\subsection{dbopradicaleigenvectors.xhtml}
+<<dbopradicaleigenvectors.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopradicaleigenvectors not implemented
+<<page foot>>
+@
+
+\subsection{dbopradicalsolve.xhtml}
+<<dbopradicalsolve.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopradicalsolve not implemented
+<<page foot>>
+@
+
+\subsection{dboprank.xhtml}
+<<dboprank.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboprank not implemented
+<<page foot>>
+@
+
+\subsection{dbopratdenom.xhtml}
+<<dbopratdenom.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopratdenom not implemented
+<<page foot>>
+@
+
+\subsection{dboprealeigenvectors.xhtml}
+<<dboprealeigenvectors.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboprealeigenvectors not implemented
+<<page foot>>
+@
+
+\subsection{dboprealelementary.xhtml}
+<<dboprealelementary.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboprealelementary not implemented
+<<page foot>>
+@
+
+\subsection{dbopreduce.xhtml}
+<<dbopreduce.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopreduce not implemented
+<<page foot>>
+@
+
+\subsection{dbopreductum.xhtml}
+<<dbopreductum.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopreductum not implemented
+<<page foot>>
+@
+
+\subsection{dboprem.xhtml}
+<<dboprem.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboprem not implemented
+<<page foot>>
+@
+
+\subsection{dbopquo.xhtml}
+<<dbopquo.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopquo not implemented
+<<page foot>>
+@
+
+\subsection{dbopresetvariableorder.xhtml}
+<<dbopresetvariableorder.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopresetvariableorder not implemented
+<<page foot>>
+@
+
+\subsection{dbopresultant.xhtml}
+<<dbopresultant.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopresultant not implemented
+<<page foot>>
+@
+
+\subsection{dboprootof.xhtml}
+<<dboprootof.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboprootof not implemented
+<<page foot>>
+@
+
+\subsection{dboprootsimp.xhtml}
+<<dboprootsimp.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboprootsimp not implemented
+<<page foot>>
+@
+
+\subsection{dboprootsof.xhtml}
+<<dboprootsof.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboprootsof not implemented
+<<page foot>>
+@
+
+\subsection{dbopseries.xhtml}
+<<dbopseries.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopseries not implemented
+<<page foot>>
+@
+
+\subsection{dboprow.xhtml}
+<<dboprow.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboprow not implemented
+<<page foot>>
+@
+
+\subsection{dboprowechelon.xhtml}
+<<dboprowechelon.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboprowechelon not implemented
+<<page foot>>
+@
+
+\subsection{dbopsetcolumnbang.xhtml}
+<<dbopsetcolumnbang.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsetcolumnbang not implemented
+<<page foot>>
+@
+
+\subsection{dbopseteltbang.xhtml}
+<<dbopseteltbang.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopseteltbang not implemented
+<<page foot>>
+@
+
+\subsection{dbopsetrowbang.xhtml}
+<<dbopsetrowbang.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsetrowbang not implemented
+<<page foot>>
+@
+
+\subsection{dbopsetelt.xhtml}
+<<dbopsetelt.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsetelt not implemented
+<<page foot>>
+@
+
+\subsection{dbopsetsubmatrixbang.xhtml}
+<<dbopsetsubmatrixbang.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsetsubmatrixbang not implemented
+<<page foot>>
+@
+
+\subsection{dbopsimplify.xhtml}
+<<dbopsimplify.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsimplify not implemented
+<<page foot>>
+@
+
+\subsection{dbopseriessolve.xhtml}
+<<dbopseriessolve.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopseriessolve not implemented
+<<page foot>>
+@
+
+\subsection{dbopsin.xhtml}
+<<dbopsin.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsin not implemented
+<<page foot>>
+@
+
+\subsection{dbopsingleintegerand.xhtml}
+<<dbopsingleintegerand.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsingleintegerand not implemented
+<<page foot>>
+@
+
+\subsection{dbopsingleintegernot.xhtml}
+<<dbopsingleintegernot.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsingleintegernot not implemented
+<<page foot>>
+@
+
+\subsection{dbopsingleintegeror.xhtml}
+<<dbopsingleintegeror.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsingleintegeror not implemented
+<<page foot>>
+@
+
+\subsection{dbopsingleintegerxor.xhtml}
+<<dbopsingleintegerxor.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsingleintegerxor not implemented
+<<page foot>>
+@
+
+\subsection{dbopsec.xhtml}
+<<dbopsec.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopsec not implemented
+<<page foot>>
+@
+
+\subsection{dbopsech.xhtml}
+<<dbopsech.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopsech not implemented
+<<page foot>>
+@
+
+\subsection{dbopsetvariableorder.xhtml}
+<<dbopsetvariableorder.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopsetvariableorder not implemented
+<<page foot>>
+@
+
+\subsection{dbopsinh.xhtml}
+<<dbopsinh.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dbopsinh not implemented
+<<page foot>>
+@
+
+\subsection{dbopsolve.xhtml}
+<<dbopsolve.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsolve not implemented
+<<page foot>>
+@
+
+\subsection{dbopsqrt.xhtml}
+<<dbopsqrt.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsqrt not implemented
+<<page foot>>
+@
+
+\subsection{dbopstar.xhtml}
+<<dbopstar.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+       dbopstar not implemented
+<<page foot>>
+@
+
+\subsection{dbopstarstar.xhtml}
+<<dbopstarstar.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopstarstar not implemented
+<<page foot>>
+@
+
+\subsection{dbopsubmatrix.xhtml}
+<<dbopsubmatrix.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsubmatrix not implemented
+<<page foot>>
+@
+
+\subsection{dbopsubmod.xhtml}
+<<dbopsubmod.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopsubmod not implemented
+<<page foot>>
+@
+
+\subsection{dboptan.xhtml}
+<<dboptan.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dboptan not implemented
+<<page foot>>
+@
+
+\subsection{dboptanh.xhtml}
+<<dboptanh.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dboptanh not implemented
+<<page foot>>
+@
+
+\subsection{dboptaylor.xhtml}
+<<dboptaylor.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboptaylor not implemented
+<<page foot>>
+@
+
+\subsection{dboptimes.xhtml}
+<<dboptimes.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     dboptimes not implemented
+<<page foot>>
+@
+
+\subsection{dboptotaldegree.xhtml}
+<<dboptotaldegree.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboptotaldegree not implemented
+<<page foot>>
+@
+
+\subsection{dboptrace.xhtml}
+<<dboptrace.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboptrace not implemented
+<<page foot>>
+@
+
+\subsection{dboptranspose.xhtml}
+<<dboptranspose.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboptranspose not implemented
+<<page foot>>
+@
+
+\subsection{dboptrigs.xhtml}
+<<dboptrigs.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dboptrigs not implemented
+<<page foot>>
+@
+
+\subsection{dbopvariables.xhtml}
+<<dbopvariables.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopvariables not implemented
+<<page foot>>
+@
+
+\subsection{dbopvectorise.xhtml}
+<<dbopvectorise.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopvectorise not implemented
+<<page foot>>
+@
+
+\subsection{dbopvectorspace.xhtml}
+<<dbopvectorspace.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopvectorspace not implemented
+<<page foot>>
+@
+
+\subsection{dbopzeroof.xhtml}
+<<dbopzeroof.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopzeroof not implemented
+<<page foot>>
+@
+
+\subsection{dbopzerosof.xhtml}
+<<dbopzerosof.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopzerosof not implemented
+<<page foot>>
+@
+
+\subsection{dbopvertconcat.xhtml}
+<<dbopvertconcat.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopvertconcat not implemented
+<<page foot>>
+@
+
+\subsection{dbopwholepart.xhtml}
+<<dbopwholepart.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopwholepart not implemented
+<<page foot>>
+@
+
+\subsection{dbpolynomialinteger.xhtml}
+<<dbpolynomialinteger.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbpolynomialinteger not implemented
+<<page foot>>
+@
+
+\subsection{dbpolynomialfractioninteger.xhtml}
+<<dbpolynomialfractioninteger.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbpolynomialfractioninteger not implemented
+<<page foot>>
+@
+
+\subsection{dbopwholeragits.xhtml}
+<<dbopwholeragits.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      dbopwholeragits not implemented
+<<page foot>>
+@
+
+\subsection{definiteintegral.xhtml}
+<<definiteintegral.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    var ans='integrate('+myform.expr.value+','+myform.vars.value+'='+
+           myform.lower.value+'..'+myform.upper.value+')';
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <form id="form2">
+   Enter the function you want to integrate:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" 
+     value="1/(x^2+6)"/><br/>
+   Enter the variable of integration:<br/>
+   <input type="text" id="vars" tabindex="20" size="5" value="x"/><br/>
+   Enter a lower limit:<br/>
+   <input type="text" id="lower" tabindex="30" value="%minusInfinity"/><br/>
+   Enter an upper limit:<br/>
+   <input type="text" id="upper" tabindex="40" value="%plusInfinity"/><br/>
+  </form>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+
+@
+
+\subsection{differentiate.xhtml}
+<<differentiate.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    return('differentiate('+myform.expr.value+',['+
+                            myform.vars.value+'],['+
+                            myform.powers.value+'])');
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <form id="form2">
+   Enter the function you want to differentiate:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" value="sin(x*y)"/><br/>
+   List the variables you want to differentiate with respect to:<br/>
+   <input type="text" id="vars" tabindex="20" value="x,y"/><br/>
+   List the number of times you want to differentiate with respect
+   to each variable (leave blank if once for each)<br/>
+   <input type="text" id="powers" tabindex="30" value="1,2"/><br/>
+  </form>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+@
+
+\subsection{dlmf.xhtml}
+<<dlmf.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function by R. A. Askey and R. Roy
+  </div>
+  <hr/>
+<p>
+The Gamma function is an extension of the factorial function to 
+real and complex numbers. For positive integers, 
+<m:math display="inline">
+ <m:mi mathvariant="normal">&#x0393;</m:mi>
+ <m:mrow>
+  <m:mo>(</m:mo>
+  <m:mi>n</m:mi>
+  <m:mo>)</m:mo>
+ </m:mrow>
+ <m:mo>=</m:mo>
+ <m:mrow>
+  <m:mo>(</m:mo>
+  <m:mi>n</m:mi>
+  <m:mo>-</m:mo>
+  <m:mn>1</m:mn>
+  <m:mo>)</m:mo>
+  <m:mi mathvariant="normal">!</m:mi>
+ </m:mrow>
+</m:math>.
+</p>
+
+<p>
+These pages explore Axiom's facilities for handling the Gamma function.
+In particular we try to show that Axiom conforms to published standards.
+</p>
+<ul>
+ <li><b>Notation</b></li>
+ <ul>
+  <li><a href="dlmfnotation.xhtml">Notation</a></li>
+ </ul>
+ <li><b>Properties</b></li>
+ <ul>
+  <li><a href="dlmfdefinitions.xhtml">Definitions</a></li>
+  <li><a href="dlmfgraphics.xhtml">Graphics</a></li>
+  <li><a href="dlmfspecialvaluesandextrema.xhtml">
+       Special Values and Extrema</a></li>
+  <li><a href="dlmffunctionrelations.xhtml">Function Relations</a></li>
+  <li><a href="dlmfinequalities.xhtml">Inequalities</a></li>
+  <li><a href="dlmfseriesexpansions.xhtml">Series Expansions</a></li>
+  <li><a href="dlmfinfiniteproducts.xhtml">Infinite Products</a></li>
+  <li><a href="dlmfintegralrepresentations.xhtml">
+       Integral Representations</a></li>
+  <li><a href="dlmfcontinuedfractions.xhtml">Continued Fractions</a></li>
+  <li><a href="dlmfasymptoticexpansions.xhtml">Asymptotic Expansions</a></li>
+  <li><a href="dlmfbetafunction.xhtml">Beta Function</a></li>
+  <li><a href="dlmfintegrals.xhtml">Integrals</a></li>
+  <li><a href="dlmfmultidimensionalintegral.xhtml">
+       Multidimensional Integral</a></li>
+  <li><a href="dlmfpolygammafunctions.xhtml">Polygamma Functions</a></li>
+  <li><a href="dlmfsums.xhtml">Sums</a></li>
+  <li><a href="dlmfbarnesgfunction.xhtml">
+       Barnes <i>G</i>-Function (Double Gamma Function)</a></li>
+  <li><a href="dlmfqgammaandbetafunctions.xhtml">
+       <i>q</i>-Gamma and Beta Functions</a></li>
+ </ul>
+ <li><b>Applications</b></li>
+ <ul>
+  <li><a href="dlmfmathematicalapplications.xhtml">
+      Mathematical Applications</a></li>
+  <li><a href="dlmfphysicalapplications.xhtml">
+      Physical Applications</a></li>
+ </ul>
+ <li><b>Computation</b></li>
+ <ul>
+  <li><a href="dlmfmethodsofcomputation.xhtml">
+      Methods of Computation</a></li>
+  <li><a href="dlmftables.xhtml">Tables</a></li>
+  <li><a href="dlmfapproximations.xhtml">Approximations</a></li>
+  <li>Axiom Software</li>
+ </ul>
+</ul>
+<<page foot>>
+@
+
+\subsection{dlmfapproximations.xhtml}
+<<dlmfapproximations.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Approximations
+  </div>
+  <hr/>
+<h3>Approximations</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Rational Approximations</li>
+ <li>Expansions in Chebyshev Series</li>
+ <li>Approximations in the Complex Plane</li>
+</ul>
+
+<h4>Rational Approximations</h4>
+
+<p>
+ <a href="http://dlmf.nist.gov/Contents/bib/C#cody:1967:ca">
+  Cody and Hillstrom(1967)
+ </a> gives minimax rational approximations for
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> for the ranges 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0.5</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1.5</m:mn>
+  </m:mrow>
+ </m:math>,
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>1.5</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>4</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>4</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>12</m:mn>
+  </m:mrow>
+ </m:math>; precision is variable.
+ <a href="http://dlmf.nist.gov/Contents/bib/H#hart:1968:ca">
+  Hart <em>et.al.</em>(1968)
+ </a> gives minimax polynomial and rational approximations to
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> in the intervals
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>8</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1000</m:mn>
+  </m:mrow>
+ </m:math>, 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>12</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1000</m:mn>
+  </m:mrow>
+ </m:math>; precision is variable. 
+
+ <a href="http://dlmf.nist.gov/Contents/bib/C#cody:1973:cap">
+  Cody <em>et.al.</em>(1973)
+ </a> gives minimax rational approximations for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> for the ranges 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0.5</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>3</m:mn>
+  </m:mrow>
+ </m:math> and
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>3</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math>; precision is variable.
+</p>
+
+<p>For additional approximations see 
+ <a href="http://dlmf.nist.gov/Contents/bib/H#hart:1968:ca">
+  Hart <em>et.al.</em>(1968)
+ </a>(Appendix B),
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1975:mfa">
+  Luke(1975)
+ </a>(pp. 22–23), and 
+ <a href="http://dlmf.nist.gov/Contents/bib/W#weniger:2003:dig">
+  Weniger(2003)
+ </a>.
+</p>
+
+<h4>Expansions in Chebyshev Series</h4>
+
+<p>
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1969:sfa2">
+  Luke(1969)
+ </a> 
+ gives the coefficients to 20D for the Chebyshev-series expansions of 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mn>1</m:mn>
+     <m:mo>+</m:mo>
+     <m:mi>x</m:mi>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mfrac bevelled="true">
+   <m:mn>1</m:mn>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>+</m:mo>
+      <m:mi>x</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mfrac>
+ </m:math>,
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>x</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>3</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>x</m:mi>
+      <m:mo>+</m:mo>
+      <m:mn>3</m:mn>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>x</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>3</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, and the first six derivatives of 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>x</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>3</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> for 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>. These coefficients are reproduced in 
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1975:mfa">
+  Luke(1975)
+ </a>. 
+
+ <a href="http://dlmf.nist.gov/Contents/bib/C#clenshaw:1962:csm">
+  Clenshaw(1962)
+ </a> also gives 20D Chebyshev-series coefficients for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mn>1</m:mn>
+     <m:mo>+</m:mo>
+     <m:mi>x</m:mi>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and its reciprocal for 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>. See 
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1975:mfa">
+  Luke(1975)
+ </a>(pp. 22–23) for additional expansions.
+</p>
+
+<h4>Approximations in the Complex Plane</h4>
+
+<p>Rational approximations for 
+ <m:math display="inline">
+  <m:mfrac bevelled="true">
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>z</m:mi>
+      <m:mo>+</m:mo>
+      <m:mn>1</m:mn>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mrow>
+    <m:mi>A</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mfrac>
+ </m:math>, where 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>A</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mfrac bevelled="true">
+      <m:mn>1</m:mn>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+    </m:msup>
+    <m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mi>c</m:mi>
+       <m:mo>+</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mi>z</m:mi>
+      <m:mo>+</m:mo>
+      <m:mn>1</m:mn>
+     </m:mrow>
+    </m:msup>
+    <m:mrow>
+     <m:mi>exp</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>c</m:mi>
+         <m:mo>+</m:mo>
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, and approximations for
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>z</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> based on the Padé approximants for two forms of the incomplete 
+  gamma function are in 
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1969:sfa2">
+  Luke(1969)
+ </a>.
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1975:mfa">
+  Luke(1975)
+ </a>(pp. 13–16) provides explicit rational approximations for
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>&#x03C8;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>+</m:mo>
+   <m:mi>&#x03B3;</m:mi>
+  </m:mrow>
+ </m:math>
+</p>
+<<page foot>>
+@
+
+\subsection{dlmfasymptoticexpansions.xhtml}
+<<dlmfasymptoticexpansions.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Asymptotic Expansions
+  </div>
+  <hr/>
+<h3>Asymptotic Expansions</h3>
+
+<h6>Contents</h6>
+<ul>
+ <li>Poincaré-Type Expansions</li>
+ <li>Error Bounds and Exponential Improvement</li>
+ <li>Ratios</li>
+</ul>
+
+<h4>Poincaré-Type Expansions</h4>
+
+<p>As 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> in the sector 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B4;</m:mi>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:none/>
+      <m:mo>&lt;</m:mo>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<a name="equation1"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>ln</m:mi>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>-</m:mo>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msub>
+        <m:mi>B</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>k</m:mi>
+        </m:mrow>
+       </m:msub>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>k</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>k</m:mi>
+          </m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>k</m:mi>
+          </m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<a name="equation2"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>ln</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msub>
+        <m:mi>B</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>k</m:mi>
+        </m:mrow>
+       </m:msub>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>k</m:mi>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For the Bernoulli numbers 
+ <m:math>
+  <m:msub>
+   <m:mi>B</m:mi>
+   <m:mrow>
+    <m:mn>2</m:mn>
+    <m:mi>k</m:mi>
+   </m:mrow>
+  </m:msub>
+ </m:math>,
+ Also,
+</p>
+
+<a name="equation3"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi>z</m:mi>
+      <m:mi>z</m:mi>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mi>z</m:mi>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x2211;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>0</m:mn>
+        </m:mrow>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:munderover>
+       <m:mfrac>
+        <m:msub>
+         <m:mi>g</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mi>k</m:mi>
+        </m:msup>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>0</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>1</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>12</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>2</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>288</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>3</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>139</m:mn>
+      <m:mn>51840</m:mn>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>4</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>571</m:mn>
+      <m:mn>24 88320</m:mn>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>5</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1 63879</m:mn>
+     <m:mn>2090 18880</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>6</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>52 46819</m:mn>
+     <m:mn>7 52467 96800</m:mn>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mi>k</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msqrt>
+      <m:mn>2</m:mn>
+     </m:msqrt>
+     <m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mstyle displaystyle="false">
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mstyle>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>k</m:mi>
+     </m:msub>
+     <m:msub>
+      <m:mi>a</m:mi>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>k</m:mi>
+      </m:mrow>
+     </m:msub>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msub>
+    <m:mi>a</m:mi>
+    <m:mn>0</m:mn>
+   </m:msub>
+   <m:mo>=</m:mo>
+   <m:mrow> 
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>2</m:mn>
+    </m:mfrac>
+    <m:msqrt>
+     <m:mn>2</m:mn>
+    </m:msqrt>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, and
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mn>0</m:mn>
+      </m:msub>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mi>k</m:mi>
+      </m:msub>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mn>1</m:mn>
+      </m:msub>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msub>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>3</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mn>2</m:mn>
+      </m:msub>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>2</m:mn>
+       </m:mrow>
+      </m:msub>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:mfrac>
+      </m:mstyle>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mi>k</m:mi>
+      </m:msub>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mn>0</m:mn>
+      </m:msub>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="false">
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mi>k</m:mi>
+      </m:mfrac>
+     </m:mstyle>
+     <m:msub>
+      <m:mi>a</m:mi>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msub>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<p>
+ <a href="http://dlmf.nist.gov/Contents/bib/W#wrench:1968:cts">
+    Wrench(1968)
+ </a> gives exact values of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>g</m:mi>
+   <m:mi>k</m:mi>
+  </m:msub>
+ </m:math> up to 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>g</m:mi>
+   <m:mn>20</m:mn>
+  </m:msub>
+ </m:math>.
+ <a href="http://dlmf.nist.gov/Contents/bib/S#spira:1971:cot">
+  Spira(1971)
+ </a> 
+ corrects errors in Wrench's results and also supplies exact and 45D values of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>g</m:mi>
+   <m:mi>k</m:mi>
+  </m:msub>
+ </m:math> for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>21</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>22</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+    <m:mo>,</m:mo>
+    <m:mn>30</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>. For an asymptotic expansion of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>g</m:mi>
+   <m:mi>k</m:mi>
+  </m:msub>
+ </m:math> as 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> see 
+ <a  href="http://dlmf.nist.gov/Contents/bib/B#boyd:1994:gfa">Boyd(1994)
+ </a>.
+</p>
+
+<p>With the same conditions
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>+</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:msqrt>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:msqrt>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>a</m:mi>
+   <m:mrow> 
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:none/>
+     <m:mo>&gt;</m:mo>
+     <m:mn>0</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>b</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:none/>
+     <m:mo>&#x2208;</m:mo>
+     <m:mi mathvariant="normal">&#x2102;</m:mi>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> are both fixed, and
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>ln</m:mi>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>h</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>h</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>2</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mrow>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>k</m:mi>
+        </m:msup>
+        <m:mrow>
+         <m:msub>
+          <m:mi>B</m:mi>
+          <m:mi>k</m:mi>
+         </m:msub>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>h</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>h</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:none/>
+      <m:mo>&#x2208;</m:mo>
+      <m:mrow>
+      <m:mo>[</m:mo>
+      <m:mrow>
+       <m:mn>0</m:mn>
+       <m:mo>,</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>]</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> is fixed.
+</p>
+
+<p>Also as 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>y</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mrow>
+    <m:mo>&#x00B1;</m:mo>
+    <m:mi mathvariant="normal">&#x221E;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow> 
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:msqrt>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:msqrt>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mi>y</m:mi>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>x</m:mi>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mfrac bevelled="true">
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mrow>
+          <m:mo>|</m:mo>
+          <m:mi>y</m:mi>
+          <m:mo>|</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>uniformly for bounded real values of 
+ <m:math display="inline">
+  <m:mi>x</m:mi>
+ </m:math>.
+</p>
+
+<h4>Error Bounds and Exponential Improvement</h4>
+
+<p>If the sums in the expansions 
+(<a href="#equation1">Equation 1</a>) and 
+(<a href="#equation2">Equation 2</a>) are terminated at 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mi>n</m:mi>
+    <m:mo>-</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math> (
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>) and 
+ <m:math display="inline">
+  <m:mi>z</m:mi>
+ </m:math> 
+is real and positive, then the remainder terms are bounded in magnitude by 
+the first neglected terms and have the same sign. If 
+ <m:math display="inline">
+  <m:mi>z</m:mi>
+ </m:math> 
+is complex, then the remainder terms are bounded in magnitude by 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msup>
+    <m:mi>sec</m:mi>
+    <m:mrow>
+     <m:mn>2</m:mn>
+     <m:mi>n</m:mi>
+    </m:mrow>
+   </m:msup>
+   <m:mrow>
+    <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:mi>ph</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:math> for 
+(<a href="#equation1">Equation 1</a>), and
+ <m:math display="inline">
+  <m:mrow>
+   <m:msup>
+    <m:mi>sec</m:mi>
+    <m:mrow>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mi>n</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+   </m:msup>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi>ph</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>z</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> for 
+(<a href="#equation2">Equation 2</a>), times the first neglected terms.</p>
+
+<p>For the remainder term in 
+(<a href="#equation3">Equation 3</a>) write
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi>z</m:mi>
+      <m:mi>z</m:mi>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mi>z</m:mi>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:mrow>
+       <m:mo>(</m:mo>
+      <m:mrow>
+        <m:mrow>
+        <m:munderover>
+         <m:mo movablelimits="false">&#x2211;</m:mo>
+          <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>=</m:mo>
+          <m:mn>0</m:mn>
+         </m:mrow>
+         <m:mrow>
+          <m:mi>K</m:mi>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:munderover>
+        <m:mfrac>
+         <m:msub>
+          <m:mi>g</m:mi>
+          <m:mi>k</m:mi>
+          </m:msub>
+         <m:msup>
+          <m:mi>z</m:mi>
+          <m:mi>k</m:mi>
+          </m:msup>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:msub>
+         <m:mi>R</m:mi>
+         <m:mi>K</m:mi>
+        </m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mi>z</m:mi>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>K</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<p>Then
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:msub>
+       <m:mi>R</m:mi>
+       <m:mi>K</m:mi>
+      </m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi>&#x03B6;</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mi>K</m:mi>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mi>K</m:mi>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>K</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+       <m:msup>
+        <m:mrow>
+         <m:mo>|</m:mo>
+         <m:mi>z</m:mi>
+         <m:mo>|</m:mo>
+        </m:mrow>
+        <m:mi>K</m:mi>
+       </m:msup>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mo movablelimits="false">min</m:mo>
+        <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mi>sec</m:mi>
+            <m:mrow>
+             <m:mo>(</m:mo>
+             <m:mrow>
+              <m:mi>ph</m:mi>
+              <m:mspace width="0.2em"/>
+              <m:mi>z</m:mi>
+             </m:mrow>
+             <m:mo>)</m:mo>
+            </m:mrow>
+           </m:mrow>
+           <m:mo>,</m:mo>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:msup>
+             <m:mi>K</m:mi>
+             <m:mstyle scriptlevel="+1">
+             <m:mfrac>
+              <m:mn>1</m:mn>
+              <m:mn>2</m:mn>
+             </m:mfrac>
+            </m:mstyle>
+           </m:msup>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>2</m:mn>
+    </m:mfrac>
+    <m:mi>&#x03C0;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+
+<h4>Ratios</h4>
+
+<p>If 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>a</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:none/>
+     <m:mo>&#x2208;</m:mo>
+     <m:mi mathvariant="normal">&#x2102;</m:mi>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>b</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:none/>
+     <m:mo>&#x2208;</m:mo>
+     <m:mi mathvariant="normal">&#x2102;</m:mi>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> are fixed as 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> in
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B4;</m:mi>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:none/>
+      <m:mo>&lt;</m:mo>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, then
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>a</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&#x223C;</m:mo>
+    <m:msup>
+     <m:mi>z</m:mi>
+     <m:mrow>
+      <m:mi>a</m:mi>
+      <m:mo>-</m:mo>
+      <m:mi>b</m:mi>
+     </m:mrow>
+    </m:msup>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>a</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mi>z</m:mi>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mrow>
+        <m:msub>
+         <m:mi>G</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>,</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:msup>
+        <m:mi>z</m:mi>
+        <m:mi>k</m:mi>
+       </m:msup>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Also, with the added condition 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>b</m:mi>
+      <m:mo>-</m:mo>
+      <m:mi>a</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>a</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mrow>
+          <m:mrow>
+           <m:mi>a</m:mi>
+           <m:mo>+</m:mo>
+           <m:mi>b</m:mi>
+          </m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mrow>
+        <m:msub>
+         <m:mi>H</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>,</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mrow>
+              <m:mi>a</m:mi>
+              <m:mo>+</m:mo>
+              <m:mi>b</m:mi>
+             </m:mrow>
+             <m:mo>-</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>k</m:mi>
+        </m:mrow>
+       </m:msup>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Here
+</p>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>G</m:mi>
+      <m:mn>0</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>G</m:mi>
+      <m:mn>1</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>G</m:mi>
+      <m:mn>2</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="true">
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>12</m:mn>
+      </m:mfrac>
+     </m:mstyle>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="true">
+       <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+        <m:mtr>
+         <m:mtd>
+          <m:mrow>
+           <m:mi>a</m:mi>
+            <m:mo>-</m:mo>
+           <m:mi>b</m:mi>
+           </m:mrow>
+          </m:mtd>
+        </m:mtr>
+         <m:mtr>
+         <m:mtd>
+          <m:mn>2</m:mn>
+          </m:mtd>
+        </m:mtr>
+       </m:mtable>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mn>3</m:mn>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mi>a</m:mi>
+            <m:mo>+</m:mo>
+            <m:mi>b</m:mi>
+           </m:mrow>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mn>2</m:mn>
+        </m:msup>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>H</m:mi>
+      <m:mn>0</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>H</m:mi>
+      <m:mn>1</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="true">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>12</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mstyle displaystyle="true">
+        <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+         <m:mtr>
+          <m:mtd>
+           <m:mrow>
+            <m:mi>a</m:mi>
+            <m:mo>-</m:mo>
+            <m:mi>b</m:mi>
+           </m:mrow>
+          </m:mtd>
+         </m:mtr>
+         <m:mtr>
+          <m:mtd>
+           <m:mn>2</m:mn>
+          </m:mtd>
+         </m:mtr>
+        </m:mtable>
+       </m:mstyle>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>-</m:mo>
+         <m:mi>b</m:mi> 
+        </m:mrow>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>H</m:mi>
+      <m:mn>2</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="true">
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>240</m:mn>
+      </m:mfrac>
+     </m:mstyle>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="true">
+       <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+       <m:mtr>
+        <m:mtd>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+        </m:mtd>
+       </m:mtr>
+       <m:mtr>
+        <m:mtd>
+         <m:mn>4</m:mn>
+        </m:mtd>
+       </m:mtr>
+      </m:mtable>
+     </m:mstyle>
+     <m:mo>)</m:mo>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>+</m:mo>
+      <m:mrow>
+       <m:mn>5</m:mn>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mi>a</m:mi>
+           <m:mo>-</m:mo>
+           <m:mi>b</m:mi>
+          </m:mrow>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:msup>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>In terms of generalized Bernoulli polynomials we have for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>k</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>0</m:mn>
+     <m:mo>,</m:mo>
+     <m:mn>1</m:mn>
+     <m:mo>,</m:mo>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>G</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+       <m:mtr>
+        <m:mtd>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+        </m:mtd>
+       </m:mtr>
+       <m:mtr>
+        <m:mtd>
+         <m:mi>k</m:mi>
+        </m:mtd>
+       </m:mtr>
+      </m:mtable>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:msubsup>
+       <m:mi>B</m:mi>
+       <m:mi>k</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:msubsup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>a</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>H</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+       <m:mtr>
+        <m:mtd>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+        </m:mtd>
+       </m:mtr>
+       <m:mtr>
+        <m:mtd>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+        </m:mtd>
+       </m:mtr>
+      </m:mtable>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:msubsup>
+       <m:mi>B</m:mi>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>k</m:mi>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:msubsup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>c</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>k</m:mi>
+     </m:msup>
+     <m:mfrac>
+      <m:mrow>
+       <m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>c</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>a</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>k</m:mi>
+       </m:msub>
+       <m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>c</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>k</m:mi>
+       </m:msub>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mi mathvariant="normal">!</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mrow>
+          <m:mrow>
+           <m:mi>a</m:mi>
+           <m:mo>+</m:mo>
+           <m:mi>b</m:mi>
+          </m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>k</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfbarnesgfunction.xhtml}
+<<dlmfbarnesgfunction.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Barnes G-Function (Double Gamma Function)
+  </div>
+  <hr/>
+<h3>Barnes 
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">G</m:mi>
+ </m:math>-Function (Double Gamma Function)
+</h3>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>G</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>G</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>G</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>G</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>n</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>2</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>3</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>G</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mfrac bevelled="true">
+        <m:mi>z</m:mi>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:msup>
+      <m:mrow>
+       <m:mi>exp</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mrow>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>2</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+           <m:mspace width="0.2em"/>
+           <m:mi>z</m:mi>
+           <m:mspace width="0.2em"/>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>z</m:mi>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mstyle displaystyle="false">
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+          </m:mstyle>
+          <m:mi>&#x03B3;</m:mi>
+          <m:msup>
+           <m:mi>z</m:mi>
+           <m:mn>2</m:mn>
+          </m:msup>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>&#x00D7;</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>+</m:mo>
+          <m:mfrac>
+           <m:mi>z</m:mi>
+           <m:mi>k</m:mi>
+          </m:mfrac>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>k</m:mi>
+       </m:msup>
+       <m:mrow>
+        <m:mi>exp</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>z</m:mi>
+          </m:mrow>
+          <m:mo>+</m:mo>
+          <m:mfrac>
+           <m:msup>
+            <m:mi>z</m:mi>
+            <m:mn>2</m:mn>
+           </m:msup>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi>k</m:mi>
+           </m:mrow>
+          </m:mfrac>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>Ln</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>G</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mspace width="0.2em"/>
+        <m:mi>z</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mrow>
+         <m:mi>ln</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>&#x03C0;</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mspace width="0.2em"/>
+        <m:mi>z</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>+</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi>Ln</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>+</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>0</m:mn>
+       <m:mi>z</m:mi>
+      </m:msubsup>
+      <m:mrow>
+       <m:mi>Ln</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>t</m:mi>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mspace width="0.2em"/>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>The 
+ <m:math display="inline">
+  <m:mi>Ln</m:mi>
+ </m:math>'s have their principal values on the positive real axis and are
+             continued via continuity.
+</p>
+
+<p>When 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> in 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B4;</m:mi>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:none/>
+      <m:mo>&lt;</m:mo>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>Ln</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>G</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>4</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msup>
+       </m:mrow>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>+</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mstyle displaystyle="false">
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+          </m:mstyle>
+          <m:mspace width="0.2em"/>
+          <m:mi>z</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mi>z</m:mi>
+            <m:mo>+</m:mo>
+            <m:mn>1</m:mn>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>12</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi>Ln</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+        <m:mi>A</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msub>
+        <m:mi>B</m:mi>
+        <m:mrow>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>2</m:mn>
+        </m:mrow>
+       </m:msub>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>k</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>k</m:mi>
+          </m:mrow>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>k</m:mi>
+          </m:mrow>
+          <m:mo>+</m:mo>
+          <m:mn>2</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+   </m:mrow>
+ </m:math>
+</div>
+
+<p>see 
+<a href="http://dlmf.nist.gov/Contents/bib/F#ferreira:2001:aae">
+ Ferreira and López(2001)
+</a>. This reference also provides bounds for the error term. Here 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>B</m:mi>
+   <m:mrow>
+    <m:mrow>
+     <m:mn>2</m:mn>
+     <m:mi>k</m:mi>
+    </m:mrow>
+    <m:mo>+</m:mo>
+    <m:mn>2</m:mn>
+   </m:mrow>
+  </m:msub>
+ </m:math> is the Bernoulli number,  and 
+ <m:math display="inline">
+  <m:mi>A</m:mi>
+ </m:math> is <em>Glaisher's constant</em>, given by
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>A</m:mi>
+    <m:mo>=</m:mo>
+    <m:msup>
+     <m:mi mathvariant="normal">&#x2147;</m:mi>
+     <m:mi>C</m:mi>
+    </m:msup>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>1.28242 71291 00622 63687</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>C</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munder>
+      <m:mo movablelimits="false">lim</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>&#x2192;</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:mrow>
+     </m:munder>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:munderover>
+          <m:mo movablelimits="false">&#x2211;</m:mo>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mo>=</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mi>n</m:mi>
+         </m:munderover>
+         <m:mi>k</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mrow>
+          <m:mi>ln</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi>k</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mstyle displaystyle="false">
+             <m:mfrac>
+              <m:mn>1</m:mn>
+              <m:mn>2</m:mn>
+             </m:mfrac>
+            </m:mstyle>
+            <m:msup>
+             <m:mi>n</m:mi>
+             <m:mn>2</m:mn>
+            </m:msup>
+           </m:mrow>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mstyle displaystyle="false">
+             <m:mfrac>
+              <m:mn>1</m:mn>
+              <m:mn>2</m:mn>
+             </m:mfrac>
+            </m:mstyle>
+            <m:mi>n</m:mi>
+           </m:mrow>
+           <m:mo>+</m:mo>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>12</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mspace width="0.2em"/>
+         <m:mrow>
+          <m:mi>ln</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi>n</m:mi>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>4</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:msup>
+         <m:mi>n</m:mi>
+         <m:mn>2</m:mn>
+        </m:msup>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi>&#x03B3;</m:mi>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mn>12</m:mn>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>&#x03B6;</m:mi>
+        <m:mo>&#x2032;</m:mo>
+       </m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mn>2</m:mn>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:msup>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mn>2</m:mn>
+       </m:msup>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mn>12</m:mn>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:msup>
+       <m:mi>&#x03B6;</m:mi>
+       <m:mo>&#x2032;</m:mo>
+      </m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>and 
+ <m:math display="inline">
+  <m:msup>
+   <m:mi>&#x03B6;</m:mi>
+   <m:mo>&#x2032;</m:mo>
+  </m:msup>
+ </m:math> is the derivative of the zeta function
+</p>
+
+<p>For Glaisher's constant see also 
+ <a href="http://dlmf.nist.gov/Contents/bib/G#greene:1982:mft">
+  Greene and Knuth(1982)
+ </a>(p. 100).
+</p>
+<<page foot>>
+@
+
+\subsection{dlmfbetafunction.xhtml}
+<<dlmfbetafunction.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Beta Function
+  </div>
+  <hr/>
+<h3>Beta Function</h3>
+
+<p>In this section all fractional powers have their principal values, except 
+where noted otherwise. In the next 4 equations it is assumed
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi> 
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>.
+</p>
+
+<h5>Euler's Beta Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">B</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mn>1</m:mn>
+     </m:msubsup>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>b</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>a</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>b</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mfrac bevelled="true">
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msubsup>
+     <m:mrow>
+      <m:msup>
+       <m:mi>sin</m:mi>
+       <m:mrow>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:mi>&#x03B8;</m:mi>
+     </m:mrow>
+     <m:mrow>
+      <m:msup>
+       <m:mi>cos</m:mi>
+       <m:mrow>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:mi>&#x03B8;</m:mi>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>&#x03B8;</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="false">
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:mstyle>
+     <m:mrow>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>,</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">B</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mn>1</m:mn>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>t</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>,</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>a</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi>z</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>with 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mi>&#x03C0;</m:mi>
+  </m:mrow>
+ </m:math> and the integration path along the real axis.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mfrac bevelled="true">
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msubsup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>cos</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>cos</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>b</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mi>&#x03C0;</m:mi>
+      <m:msup>
+       <m:mn>2</m:mn>
+       <m:mi>a</m:mi>
+      </m:msup>
+     </m:mfrac>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mrow>
+        <m:mi mathvariant="normal">B</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>a</m:mi>
+             <m:mo>+</m:mo>
+             <m:mi>b</m:mi>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>,</m:mo>
+          <m:mrow>
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mrow>
+              <m:mi>a</m:mi>
+              <m:mo>-</m:mo>
+              <m:mi>b</m:mi>
+             </m:mrow>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi>&#x03C0;</m:mi>
+     </m:msubsup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>sin</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+       <m:mi>b</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mi>&#x03C0;</m:mi>
+      <m:msup>
+       <m:mn>2</m:mn>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+     </m:mfrac>
+     <m:mfrac>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mfrac bevelled="true">
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:msup>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mrow>
+        <m:mi mathvariant="normal">B</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>a</m:mi>
+             <m:mo>+</m:mo>
+             <m:mi>b</m:mi>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>,</m:mo>
+          <m:mrow>
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mrow>
+              <m:mi>a</m:mi>
+              <m:mo>-</m:mo>
+              <m:mi>b</m:mi>
+             </m:mrow>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi>cosh</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>b</m:mi>
+         <m:mi>t</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>cosh</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi>t</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>a</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mfrac>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mn>4</m:mn>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>,</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>-</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>b</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow> 
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:mfrac>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mrow>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>w</m:mi>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>a</m:mi>
+        </m:msup>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>-</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>b</m:mi>
+        </m:msup>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>w</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">B</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>a</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>b</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>w</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>The fractional powers have their principal values when 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>w</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, and are continued via continuity.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mi>c</m:mi>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x221E;</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>c</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x221E;</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mi>t</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>a</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mrow>
+      <m:mi>b</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">B</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow> 
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>c</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>a</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>b</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>0</m:mn>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mi>t</m:mi>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>t</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>b</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi>sin</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>,</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <!-- Need a better Axiom graphic for this
+ <img width="302" height="151" alt="" src="bitmaps/12F1.png"/> -->
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mi>t</m:mi>
+ </m:math>-plane. Contour for first loop integral for the beta function.
+</div>
+
+<p>In the next two equations the fractional powers are continuous on the 
+   integration paths and take their principal values at the beginning.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>a</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>+</m:mo>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mi>t</m:mi>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">B</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p> when
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math>
+  <m:mi>a</m:mi>
+ </m:math> is not an integer and the contour cuts the real axis between
+ <m:math>
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math> and the origin.
+</p>
+
+<div align="center">
+ <!-- Need a better Axiom graphic for this
+ <img width="302" height="151" alt="" src="bitmaps/12F2.png"/> -->
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mi>t</m:mi>
+ </m:math>-plane. Contour for second loop integral for the beta function.
+</div>
+
+<h5>Pochhammer's Integral</h5>
+<p>When 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>a</m:mi>
+    <m:mo>,</m:mo>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&#x2208;</m:mo>
+   <m:mi mathvariant="normal">&#x2102;</m:mi>
+  </m:mrow>
+ </m:math>
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow> 
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mi>P</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+        </m:mrow>
+        <m:mo>,</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>+</m:mo>
+        </m:mrow>
+        <m:mo>,</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+        </m:mrow>
+        <m:mo>,</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>-</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:msubsup>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>b</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>4</m:mn>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi>sin</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>sin</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">B</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where the contour starts from an arbitrary point  
+ <m:math display="inline">
+  <m:mi>P</m:mi>
+ </m:math> in the interval 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>(</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>)</m:mo>
+  </m:mrow>
+ </m:math>,circles 
+ <m:math display="inline">
+  <m:mn>1</m:mn>
+ </m:math> and then 
+ <m:math display="inline">
+  <m:mn>0</m:mn>
+ </m:math> in the positive sense, circles 
+ <m:math display="inline">
+  <m:mn>1</m:mn>
+ </m:math> and then 
+ <m:math display="inline">
+  <m:mn>0</m:mn>
+ </m:math> in the negative sense, and returns to 
+ <m:math display="inline">
+  <m:mi>P</m:mi>
+ </m:math>. It can always be deformed into the contour shown here.
+</p>
+
+<div align="center">
+ <!-- Need a better Axiom graphic for this
+ <img width="302" height="104" alt="" src="bitmaps/12F3.png"/> -->
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mi>t</m:mi>
+ </m:math>-plane. Contour for Pochhammer's integral.
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfcontinuedfractions.xhtml}
+<<dlmfcontinuedfractions.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Continued Fractions
+  </div>
+  <hr/>
+<h3>Continued Fractions</h3>
+
+<p>For 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mi>z</m:mi>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>+</m:mo>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>-</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mfrac>
+       <m:msub>
+        <m:mi>a</m:mi>
+        <m:mn>0</m:mn>
+       </m:msub>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>+</m:mo>
+       </m:mrow>
+      </m:mfrac>
+      <m:mrow>
+       <m:mfrac>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>+</m:mo>
+          <m:mi>z</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+        </m:mrow>
+       </m:mfrac>
+       <m:mrow>
+        <m:mfrac>
+         <m:msub>
+          <m:mi>a</m:mi>
+          <m:mn>2</m:mn>
+         </m:msub>
+         <m:mrow>
+          <m:mrow>
+           <m:mo>+</m:mo>
+           <m:mi>z</m:mi>
+          </m:mrow>
+          <m:mo>+</m:mo>
+         </m:mrow>
+        </m:mfrac>
+        <m:mrow>
+         <m:mfrac>
+          <m:msub>
+           <m:mi>a</m:mi>
+           <m:mn>3</m:mn>
+          </m:msub>
+          <m:mrow>
+           <m:mrow>
+            <m:mo>+</m:mo>
+            <m:mi>z</m:mi>
+           </m:mrow>
+           <m:mo>+</m:mo>
+          </m:mrow>
+         </m:mfrac>
+         <m:mrow>
+          <m:mfrac>
+           <m:msub>
+            <m:mi>a</m:mi>
+            <m:mn>4</m:mn>
+           </m:msub>
+           <m:mrow>
+            <m:mrow>
+             <m:mo>+</m:mo>
+             <m:mi>z</m:mi>
+            </m:mrow>
+            <m:mo>+</m:mo>
+           </m:mrow>
+          </m:mfrac>
+          <m:mfrac>
+           <m:msub>
+            <m:mi>a</m:mi>
+            <m:mn>5</m:mn>
+           </m:msub>
+           <m:mrow>
+            <m:mi>z</m:mi>
+            <m:mo>+</m:mo>
+           </m:mrow>
+          </m:mfrac>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>0</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>12</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>1</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>30</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>2</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>53</m:mn>
+     <m:mn>210</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>3</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>195</m:mn>
+     <m:mn>371</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>4</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>22999</m:mn>
+     <m:mn>22737</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>5</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>299 44523</m:mn>
+     <m:mn>197 33142</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>6</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>10 95352 41009</m:mn>
+     <m:mn>4 82642 75462</m:mn>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For rational values of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>a</m:mi>
+   <m:mn>7</m:mn>
+  </m:msub>
+ </m:math> to 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>a</m:mi>
+   <m:mn>11</m:mn>
+  </m:msub>
+ </m:math> and 40S values of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>a</m:mi>
+   <m:mn>0</m:mn>
+  </m:msub>
+ </m:math> to 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>a</m:mi>
+   <m:mn>40</m:mn>
+  </m:msub>
+ </m:math>, see 
+<a href="http://dlmf.nist.gov/Contents/bib/C#char:1980:osc">
+   Char(1980)
+</a>. Also see 
+<a href="http://dlmf.nist.gov/Contents/bib/J#jones:1980:con">
+   Jones and Thron(1980)
+</a>(pp. 348–350) and
+<a href="http://dlmf.nist.gov/Contents/bib/L#lorentzen:1992:cfa">
+   Lorentzen and Waadeland(1992)
+</a>(pp. 221–224) for further information.
+</p>
+<<page foot>>
+@
+
+\subsection{dlmfdefinitions.xhtml}
+<<dlmfdefinitions.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Definitions
+  </div>
+  <hr/>
+<h3>Definitions</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Gamma and Psi Functions</li>
+ <li>Euler's Constant</li>
+ <li>Pochhammer's Symbol</li>
+</ul>
+<h4>Gamma and Psi Functions</h4>
+<h5>Euler's Integral</h5>
+<m:math display="block">
+ <m:mrow>
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x00393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:msubsup>
+     <m:mo>&#x222B;</m:mo>
+     <m:mn>0</m:mn>
+     <m:mi mathvariant="normal">&#x221E;</m:mi>
+    </m:msubsup>
+    <m:msup>
+     <m:mi mathvariant="normal">&#x02147;</m:mi>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:msup>
+    <m:msup>
+     <m:mi>t</m:mi>
+     <m:mrow>
+      <m:mi>z</m:mi>
+      <m:mo>-</m:mo>
+      <m:mn>1</m:mn>
+     </m:mrow>
+    </m:msup>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x2146;</m:mi>
+     <m:mi>t</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:mrow>
+</m:math>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+    <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+When 
+<m:math display="inline">
+ <m:mrow>
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x211C;</m:mi>
+   <m:mi>z</m:mi>
+  </m:mrow>
+  <m:mo>&#x2264;</m:mo>
+  <m:mn>0</m:mn>
+ </m:mrow>
+</m:math>, 
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mi mathvariant="normal">&#x0393;</m:mi>
+  <m:mrow>
+   <m:mo>(</m:mo>
+   <m:mi>z</m:mi>
+   <m:mo>)</m:mo>
+  </m:mrow>
+ </m:mrow>
+</m:math> is defined by analytic continuation. It is a meromorphic 
+          function with no zeros, and with simple poles of residue 
+
+<m:math display="inline">
+ <m:mfrac bevelled="true">
+  <m:msup>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+   <m:mi>n</m:mi>
+  </m:msup>
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mi mathvariant="normal">!</m:mi>
+  </m:mrow>
+ </m:mfrac>
+</m:math> at 
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mi>z</m:mi>
+  <m:mo>=</m:mo>
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mi>n</m:mi>
+  </m:mrow>
+ </m:mrow>
+</m:math>.  
+
+<m:math display="inline">
+ <m:mfrac bevelled="true">
+  <m:mn>1</m:mn>
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:mfrac>
+</m:math> is entire, with simple zeros at 
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mi>z</m:mi>
+  <m:mo>=</m:mo>
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mi>n</m:mi>
+  </m:mrow>
+ </m:mrow>
+</m:math>.
+
+<p>
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac bevelled="true">
+     <m:mrow>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mo>&#x2032;</m:mo>
+      </m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+</p>
+   
+<p>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> is meromorphic with simple poles of residue 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math> at 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mi>n</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</p>
+
+<h4>Euler's Constant</h4>
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>&#x03B3;</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munder>
+      <m:mo movablelimits="false">lim</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>&#x2192;</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:mrow>
+     </m:munder>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>3</m:mn>
+        </m:mfrac>
+        <m:mo>+</m:mo>
+        <m:mi mathvariant="normal">&#x2026;</m:mi>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mi>n</m:mi>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mi>n</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>0.57721 56649 01532 86060</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+
+<h4>Pochhammer's Symbol</h4>
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>a</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mn>0</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>a</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi>n</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>a</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>2</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> 
+</div>
+
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>a</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi>n</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac bevelled="true">
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>a</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:math>
+
+<div align="right">
+  <m:math display="inline">
+   <m:mrow>
+    <m:mi>a</m:mi>
+    <m:mo>&#x2260;</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>n</m:mi>
+     </m:mrow>
+     <m:mo>,</m:mo>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>n</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mn>1</m:mn>
+     </m:mrow>
+     <m:mo>,</m:mo>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>n</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mn>2</m:mn>
+     </m:mrow>
+     <m:mo>,</m:mo>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:math>
+ </div>
+<<page foot>>
+@
+
+\subsection{dlmffunctionrelations.xhtml}
+<<dlmffunctionrelations.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Function Relations
+  </div>
+  <hr/>
+<h3>Functional Relations</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Recurrence</li>
+ <li>Reflection</li>
+ <li>Multiplication</li>
+ <li>Bohr-Mollerup Theorem</li>
+</ul>
+<h4>Recurrence</h4>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+       </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>z</m:mi>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mi>z</m:mi>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+
+<h4>Reflection</h4>
+<a name="equation3"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac bevelled="true">
+     <m:mi>&#x03C0;</m:mi>
+     <m:mrow>
+      <m:mi>sin</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>&#x0177;</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac bevelled="true">
+      <m:mi>&#x03C0;</m:mi>
+      <m:mrow>
+       <m:mi>tan</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>&#x0177;</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<h4>Multiplication</h4>
+<div align="left">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mn>2</m:mn>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C0;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mfrac bevelled="true">
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="left">
+ <m:math display="inline">
+  <m:mrow> 
+   <m:mrow>
+    <m:mn>3</m:mn>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>3</m:mn>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mn>3</m:mn>
+      <m:mrow>
+       <m:mrow>
+        <m:mn>3</m:mn>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>3</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>2</m:mn>
+          <m:mn>3</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="left">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>n</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:mi>n</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:msup>
+      <m:mi>n</m:mi>
+      <m:mrow>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:munderover>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mi>k</m:mi>
+         <m:mi>n</m:mi>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:munderover>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mfrac>
+       <m:mi>k</m:mi>
+       <m:mi>n</m:mi>
+      </m:mfrac>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:msup>
+      <m:mi>n</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mfrac bevelled="true">
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>&#x03C8;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>z</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C8;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>+</m:mo>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>2</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mi>ln</m:mi>
+      <m:mn>2</m:mn>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mi>n</m:mi>
+      </m:mfrac>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x2211;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>0</m:mn>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:munderover>
+       <m:mi>&#x03C8;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mfrac>
+          <m:mi>k</m:mi>
+          <m:mi>n</m:mi>
+         </m:mfrac>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mi>ln</m:mi>
+      <m:mi>n</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<a name="bohrmolleruptheorem"/>
+<h4>Bohr-Mollerup Theorem</h4>
+
+<br/>
+If a positive function 
+<m:math display="inline">
+ <m:mrow>
+  <m:mi>f</m:mi>
+  <m:mrow>
+   <m:mo>(</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>)</m:mo>
+  </m:mrow>
+ </m:mrow>
+</m:math> on 
+<m:math display="inline">
+ <m:mrow>
+  <m:mo>(</m:mo>
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>,</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+  <m:mo>)</m:mo>
+ </m:mrow>
+</m:math> satisfies 
+<m:math display="inline">
+ <m:mrow>
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>x</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+  <m:mo>=</m:mo>
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mrow>
+    <m:mi>f</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:mrow>
+</m:math>,
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mn>1</m:mn>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+  <m:mo>=</m:mo>
+  <m:mn>1</m:mn>
+ </m:mrow>
+</m:math>, and 
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mi>ln</m:mi>
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:mrow>
+</m:math> is convex, then
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+  <m:mo>=</m:mo>
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:mrow>
+</m:math>.
+<<page foot>>
+@
+
+\subsection{dlmfgraphics.xhtml}
+<<dlmfgraphics.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Graphics
+  </div>
+  <hr/>
+<h3>Graphics</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Real Argument</li>
+ <li>The Psi Function</li>
+ <li>Complex Argument</li>
+</ul>
+<h4>Real Argument</h4>
+ <img width="403" height="482" src="bitmaps/gammareal3.png"/>
+ <br/>
+This graph shows the 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mfrac bevelled="true">
+   <m:mn>1</m:mn>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mfrac>
+ </m:math>.
+
+To create these two graphs in Axiom:
+<pre>
+ -- Draw the first graph in a viewport
+ viewport1:=draw(Gamma(i), i=-4.2..4, adaptive==true, unit==[1.0,1.0])
+ -- Draw the second graph in a viewport
+ viewport2:=draw(1/Gamma(i), i=-4.2..4, adaptive==true, unit==[1.0,1.0])
+ -- Get the Gamma graph from the first viewport and layer it on top
+ putGraph(viewport2,getGraph(viewport1,1),2)
+ -- Remove the points and leave the lines
+ points(viewport2,1,"off")
+ points(viewport2,2,"off")
+ -- Show the combined graph
+ makeViewport2D(viewport2)
+</pre>
+
+ <img width="300" height="176" alt="" src="bitmaps/loggamma.png"/>
+ <br/>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>. This function is convex on 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>(</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x221E;</m:mi>
+   </m:mrow>
+   <m:mo>)</m:mo>
+  </m:mrow>
+ </m:math>;
+ <br/>
+  compare <a href="dlmffunctionalrelations.xhtml#bohrmolleruptheorem">
+           Functional Relations</a>
+ <p>
+You can construct this graph with the Axiom commands:
+<pre>
+  -- draw the graph of log(Gamma) in a viewport
+  viewport1:=draw(log Gamma(i), i=0..8, adaptive==true, unit==[1.0,1.0])
+  -- turn off the points and leave the lines
+  points(viewport1,1,"off")
+</pre>
+</p>
+ <br/>
+
+ <h4>The Psi Function 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</h4>
+
+<p> This function is a special case of the polygamma function.
+In particular, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> is equal to polygamma(0,x).
+ </p>
+ <br/>
+ <br/>
+
+ <img width="522" height="556" alt="" src="bitmaps/psi.png"/>
+ <br/>
+You can reconstruct this graph in Axiom by:
+<pre>
+  -- first construct the psi function
+  psi(x)==polygamma(0,x)
+  -- draw the graph in a viewport
+  viewport:=draw(psi(y),y=-3.5..4,adaptive==true)
+  -- make the gradient obvious
+  scale(viewport,1,0.9,22.5)
+  -- and recenter the graph
+  translate(viewport,1,0,-0.02)
+  -- turn off the points and keep the line
+  points(viewport,1,"off")
+</pre>
+
+ <h4>Complex Argument</h4>
+
+ <img width="400" height="400" alt="" src="bitmaps/gammacomplex.png"/>
+ <br/>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>x</m:mi>
+      <m:mo>+</m:mo>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+       <m:mi>y</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+ <br/>
+
+You can reconstruct this image in Axiom with:
+<pre>
+  -- Set up the default viewpoint
+  viewPhiDefault(-%pi/4)
+  -- define the point set function
+  gam(x,y)== 
+    g:=Gamma complex(x,y) 
+    point [x,y,max(min(real g,4),-4), argument g] 
+  -- draw the image and remember the viewport
+  viewport:=draw(gam, -4..4,-3..3,var1Steps==100,var2Steps==100)
+  -- set the color mapping for the image
+  colorDef(viewport,blue(),blue())
+  -- and smoothly shade it
+  drawStyle(viewport,"smooth")
+</pre>
+ <img width="400" height="400" src="bitmaps/gammacomplexinverse.png"/>
+<br/>
+ <m:math display="inline">
+  <m:mfrac bevelled="true">
+   <m:mn>1</m:mn>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>x</m:mi>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+        <m:mi>y</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mfrac>
+ </m:math>
+ <br/>
+
+<p>
+You can reproduce this image from Axiom with:
+<pre>
+  -- Set up the default viewpoint
+  viewPhiDefault(-%pi/4)
+  -- Define the complex Gamma inverse function
+  gaminv(x,y)== 
+    g:=1/(Gamma complex(x,y)) 
+    point [x,y,max(min(real g,4),-4), argument g]
+  -- draw the 3D image and remember the viewport
+  viewport:=draw(gaminv, -4..4,-3..3,var1Steps==100,var2Steps==100)
+  -- make the image a uniform color
+  colorDef(viewport,blue(),blue())
+  -- and make it pretty
+  drawStyle(viewport,"smooth")
+</pre>
+</p>
+
+
+<p>
+To get these exact images with the colored background you need
+to use GIMP to set the background. The steps I used are:
+<ol>
+<li>Save the image as a pixmap</li>
+<li>Open the saved file in gimp</li>
+<li>Dialogs->Colors->ColorPicker button</li>
+<li>Eyedrop the color of the web page</li>
+<li>Set the color as the foreground on the FG/BG page</li>
+<li>Dialogs->Layers</li>
+<li>Duplicate Layer</li>
+<li>Layer->Stack->Select bottom layer</li>
+<li>Edit->Fill with Foreground color</li>
+<li>(on Layers panel)Select image</li>
+<li>(on Layers panel) Mode->Darken Only</li>
+</ol>
+Note that you may have to use "lighten only" first before it will
+allow you to choose "darken only".
+</p>
+
+<<page foot>>
+@
+
+\subsection{dlmfinequalities.xhtml}
+<<dlmfinequalities.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Inequalities
+  </div>
+  <hr/>
+<h3>Inequalities</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Real Variables</li>
+ <li>Complex Variables</li>
+</ul>
+
+<h4>Real Variables</h4>
+<p>Throughout this subsection 
+<m:math display="inline">
+ <m:mrow>
+  <m:mi>x</m:mi>
+  <m:mo>&gt;</m:mo>
+  <m:mn>0</m:mn>
+ </m:mrow>
+</m:math>.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>&lt;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mfrac bevelled="true">
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi>x</m:mi>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>x</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mi>x</m:mi>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>x</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&lt;</m:mo>
+    <m:msup>
+     <m:mi mathvariant="normal">&#x2147;</m:mi>
+     <m:mfrac bevelled="true">
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>12</m:mn>
+        <m:mi>x</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mfrac>
+    </m:msup>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>x</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>+</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mi>x</m:mi>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mn>2</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>x</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:msup>
+     </m:mfrac>
+     <m:mo>+</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mfrac bevelled="true">
+           <m:mn>1</m:mn>
+           <m:mi>x</m:mi>
+          </m:mfrac>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:msup>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mn>2</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msup>
+     <m:mi>x</m:mi>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>-</m:mo>
+      <m:mi>s</m:mi>
+     </m:mrow>
+    </m:msup>
+    <m:mo>&lt;</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>s</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&lt;</m:mo>
+    <m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>x</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>-</m:mo>
+      <m:mi>s</m:mi>
+     </m:mrow>
+    </m:msup>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>s</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>exp</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:mi>s</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow> 
+        <m:mi>&#x03C8;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>x</m:mi>
+          <m:mo>+</m:mo>
+          <m:msup>
+           <m:mi>s</m:mi>
+           <m:mfrac bevelled="true">
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+          </m:msup>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>s</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&#x2264;</m:mo>
+    <m:mrow>
+     <m:mi>exp</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:mi>s</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>&#x03C8;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>x</m:mi>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>2</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>s</m:mi>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>s</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h4>Complex Variables</h4>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>x</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+    <m:mo>&#x2265;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>sech</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>&#x03C0;</m:mi>
+          <m:mi>y</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>x</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mfrac>
+    <m:mn>1</m:mn>
+    <m:mn>2</m:mn>
+   </m:mfrac>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>b</m:mi>
+    <m:mo>-</m:mo>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>a</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mi>x</m:mi>
+    <m:mo>+</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x2148;</m:mi>
+     <m:mi>y</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> with 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>&#x2223;</m:mo>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>&#x2223;</m:mo>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>b</m:mi>
+       <m:mo>-</m:mo>
+       <m:mi>a</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>x</m:mi>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mfrac bevelled="true">
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mrow>
+          <m:mo>|</m:mo>
+          <m:mi>y</m:mi>
+          <m:mo>|</m:mo>
+         </m:mrow> 
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>exp</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>6</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:msup>
+         <m:mrow>
+          <m:mo>|</m:mo>
+          <m:mi>z</m:mi>
+          <m:mo>|</m:mo>
+         </m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfinfiniteproducts.xhtml}
+<<dlmfinfiniteproducts.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Infinite Products
+  </div>
+  <hr/>
+<h3>Infinite Products</h3>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munder>
+      <m:mo movablelimits="false">lim</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>&#x2192;</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:mrow>
+     </m:munder>
+     <m:mfrac>
+      <m:mrow>
+       <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mi mathvariant="normal">!</m:mi>
+      </m:mrow>
+      <m:msup>
+       <m:mi>k</m:mi>
+       <m:mi>z</m:mi>
+      </m:msup>
+     </m:mrow>
+     <m:mrow>
+      <m:mi>z</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>k</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>z</m:mi>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mi>&#x03B3;</m:mi>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mi>z</m:mi>
+         <m:mi>k</m:mi>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mi>z</m:mi>
+         <m:mi>k</m:mi>
+        </m:mfrac>
+       </m:mrow>
+      </m:msup>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msup>
+     <m:mrow>
+      <m:mo>|</m:mo>
+      <m:mfrac>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mi>x</m:mi>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>x</m:mi>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mi mathvariant="normal">&#x2148;</m:mi>
+           <m:mi>y</m:mi>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+      <m:mo>|</m:mo>
+     </m:mrow>
+     <m:mn>2</m:mn>
+    </m:msup>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>+</m:mo>
+      <m:mfrac>
+       <m:msup>
+        <m:mi>y</m:mi>
+        <m:mn>2</m:mn>
+       </m:msup>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>x</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:msup>
+      </m:mfrac>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi>m</m:mi>
+     </m:munderover>
+     <m:msub>
+      <m:mi>a</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi>m</m:mi>
+     </m:munderover>
+     <m:msub>
+      <m:mi>b</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>then
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mfrac>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>a</m:mi>
+          <m:mn>1</m:mn>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>a</m:mi>
+          <m:mn>2</m:mn>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x22EF;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>a</m:mi>
+          <m:mi>m</m:mi>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>b</m:mi>
+          <m:mn>1</m:mn>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>b</m:mi>
+          <m:mn>2</m:mn>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x22EF;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>b</m:mi>
+          <m:mi>m</m:mi>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>b</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>b</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>b</m:mi>
+         <m:mi>m</m:mi>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mi>m</m:mi>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>provided that none of the 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>b</m:mi>
+   <m:mi>k</m:mi>
+  </m:msub>
+ </m:math>
+ is zero or a negative integer.
+</p>
+<<page foot>>
+@
+
+\subsection{dlmfintegrals.xhtml}
+<<dlmfintegrals.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Integrals
+  </div>
+  <hr/>
+<h3>Integrals</h3>
+
+<a name="equation1"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mi>c</m:mi>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x221E;</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>c</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x221E;</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:msubsup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>s</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mo>-</m:mo>
+         <m:mi>s</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mi>z</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>s</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>s</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mi>z</m:mi>
+       <m:mi>a</m:mi>
+      </m:msup>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>+</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>a</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>b</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>a</m:mi>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mi>c</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mi>&#x03C0;</m:mi>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:msup>
+       <m:mrow>
+        <m:mo>|</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>a</m:mi>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>|</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:msup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>b</m:mi>
+          </m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>a</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mrow>
+         <m:mi>sin</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi>b</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>a</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>a</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>b</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mi>&#x03C0;</m:mi>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<h5>Barnes's Beta Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>c</m:mi>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>d</m:mi>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>c</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>d</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>c</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>d</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>c</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>d</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow> 
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>a</m:mi>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>b</m:mi>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>c</m:mi>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>d</m:mi>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h5>Ramanujan's Beta Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>b</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>c</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>d</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>c</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>d</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>3</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>d</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>b</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>b</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>d</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>a</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>b</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>c</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>d</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>3</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<h5>de Branges-Wilson Beta Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>4</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>⁢</m:mo>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:mfrac>
+       <m:mrow>
+        <m:msubsup>
+         <m:mo>&#x220F;</m:mo>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>=</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mn>4</m:mn>
+        </m:msubsup>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:msub>
+            <m:mi>a</m:mi>
+            <m:mi>k</m:mi>
+           </m:msub>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:msub>
+            <m:mi>a</m:mi>
+            <m:mi>k</m:mi>
+           </m:msub>
+           <m:mo>-</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi mathvariant="normal">&#x2148;</m:mi>
+           <m:mi>t</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mo>&#x220F;</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi>j</m:mi>
+        <m:mo>&lt;</m:mo>
+        <m:mi>k</m:mi>
+        <m:mo>&#x2264;</m:mo>
+        <m:mn>4</m:mn>
+       </m:mrow>
+      </m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mi>j</m:mi>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>3</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>4</m:mn>
+        </m:msub>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:msub>
+      <m:mi>a</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+    <m:mo>,</m:mo>
+    <m:mn>4</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfintegralrepresentations.xhtml}
+<<dlmfintegralrepresentations.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Integral Representations
+  </div>
+  <hr/>
+<h3>Integral Representations</h3>
+
+<h6>Contents</h6>
+<ul>
+ <li>Gamma Function</li>
+ <li>Psi Function and Euler's Constant</li>
+</ul>
+
+<h4>Gamma Function</h4>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mi>&#x03BC;</m:mi>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mi>&#x03BD;</m:mi>
+        <m:mi>&#x03BC;</m:mi>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mi>z</m:mi>
+       <m:mfrac bevelled="true">
+        <m:mi>&#x03BD;</m:mi>
+        <m:mi>&#x03BC;</m:mi>
+       </m:mfrac>
+      </m:msup>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mi>exp</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:msup>
+          <m:mi>t</m:mi>
+          <m:mi>&#x03BC;</m:mi>
+         </m:msup>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>&#x03BD;</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>&#x03BD;</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03BC;</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>. (The fractional powers have their principal values.)
+</p>
+
+<h5>Hankel's Loop Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>+</m:mo>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mi>t</m:mi>
+      </m:msup>
+      <m:msup>
+       <m:mi>t</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where the contour begins at 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math>, circles the origin once in the positive direction, and returns to 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math>. 
+ <m:math display="inline">
+  <m:msup>
+   <m:mi>t</m:mi>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mi>z</m:mi>
+   </m:mrow>
+  </m:msup>
+ </m:math> has its principal value where 
+ <m:math display="inline">
+  <m:mi>t</m:mi>
+ </m:math> crosses the positive real axis, and is continuous. 
+</p>
+
+<div align="center">
+ <!-- need a better Axiom graphic than this
+  <img width="302" height="150" alt="" src="bitmaps/9F1.png"/> -->
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mi>t</m:mi>
+ </m:math>-plane. Contour for Hankel's loop integral.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msup>
+      <m:mi>c</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mi>t</m:mi>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mi>c</m:mi>
+        <m:msup>
+         <m:mi>t</m:mi>
+         <m:mn>2</m:mn>
+        </m:msup>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>c</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where the path is the real axis.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>1</m:mn>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:msup>
+       <m:mi>t</m:mi>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>k</m:mi>
+       </m:msup>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mi mathvariant="normal">!</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:munderover>
+         <m:mo movablelimits="false">&#x2211;</m:mo>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>=</m:mo>
+          <m:mn>0</m:mn>
+         </m:mrow>
+         <m:mi>n</m:mi>
+        </m:munderover>
+        <m:mfrac>
+         <m:mrow>
+          <m:msup>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mo>-</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+           <m:mi>k</m:mi>
+          </m:msup>
+          <m:msup>
+           <m:mi>t</m:mi>
+           <m:mi>k</m:mi>
+          </m:msup>
+         </m:mrow>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mi mathvariant="normal">!</m:mi>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mspace width="0.2em"/>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>n</m:mi>
+    </m:mrow>
+    <m:mo>-</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mi>n</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>cos</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>cos</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>t</m:mi>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>sin</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>sin</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>t</m:mi>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mi>n</m:mi>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>cos</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>n</m:mi>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mi>cos</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mi>n</m:mi>
+       </m:msup>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>4</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mi>n</m:mi>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>sin</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>n</m:mi>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mi>sin</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mi>n</m:mi>
+       </m:msup>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>4</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<h5>Binet's Formula</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>ln</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>-</m:mo>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:msubsup>
+        <m:mo>&#x222B;</m:mo>
+        <m:mn>0</m:mn>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:msubsup>
+       <m:mfrac>
+        <m:mrow>
+         <m:mi>arctan</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mfrac bevelled="true">
+           <m:mi>t</m:mi>
+           <m:mi>z</m:mi>
+          </m:mfrac>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:msup>
+          <m:mi mathvariant="normal">&#x2147;</m:mi>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>t</m:mi>
+          </m:mrow>
+         </m:msup>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:mfrac>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mo>&#x2061;</m:mo>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mfrac bevelled="true">
+    <m:mi>&#x03C0;</m:mi>
+    <m:mn>2</m:mn>
+   </m:mfrac>
+  </m:mrow>
+ </m:math> and the inverse tangent has its principal value.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>ln</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>&#x03B3;</m:mi>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+       </m:mrow>
+      </m:mfrac>
+      <m:mrow>
+       <m:msubsup>
+        <m:mo>&#x222B;</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x221E;</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x221E;</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+         </m:mrow>
+        </m:mrow>
+       </m:msubsup>
+       <m:mfrac>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:msup>
+          <m:mi>z</m:mi>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>s</m:mi>
+          </m:mrow>
+         </m:msup>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>s</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mrow>
+          <m:mi>sin</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mi>&#x03C0;</m:mi>
+            <m:mi>s</m:mi>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+        </m:mrow>
+       </m:mfrac>
+       <m:mrow>
+        <m:mi>&#x03B6;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>s</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>s</m:mi>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mo>&#x2061;</m:mo>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mi>&#x03C0;</m:mi>
+    <m:mo>-</m:mo>
+    <m:mi>&#x03B4;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math> (
+ <m:math display="inline">
+  <m:mrow>
+   <m:none/>
+   <m:mo>&lt;</m:mo>
+   <m:mi>&#x03C0;</m:mi>
+  </m:mrow>
+ </m:math>), 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>1</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>c</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>, and
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03B6;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>s</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</p>
+
+<p>For additional representations see
+<a href="http://dlmf.nist.gov/Contents/bib/W#whittaker:1927:cma">
+   Whittaker and Watson(1927)</a>
+</p>
+
+<h4>Psi Function and Euler's Constant</h4>
+<p>For 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:msup>
+        <m:mi>t</m:mi>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:mfrac>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mi>t</m:mi>
+          </m:mrow>
+         </m:mrow>
+        </m:msup>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:msup>
+          <m:mi mathvariant="normal">&#x2147;</m:mi>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>t</m:mi>
+          </m:mrow>
+         </m:msup>
+        </m:mrow>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>ln</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>0</m:mn>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mi>t</m:mi>
+        </m:mfrac>
+        <m:mo>-</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>-</m:mo>
+          <m:msup>
+           <m:mi mathvariant="normal">&#x2147;</m:mi>
+           <m:mrow>
+            <m:mo>-</m:mo>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:msup>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mspace width="0.2em"/>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi>t</m:mi>
+         <m:mi>z</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:msup>
+      <m:mspace width="0.2em"/>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:mo>-</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>1</m:mn>
+           <m:mo>+</m:mo>
+           <m:mi>t</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>z</m:mi>
+        </m:msup>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+      <m:mi>t</m:mi>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>ln</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:msubsup>
+        <m:mo>&#x222B;</m:mo>
+        <m:mn>0</m:mn>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:msubsup>
+       <m:mfrac>
+        <m:mrow>
+         <m:mi>t</m:mi>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2146;</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:msup>
+            <m:mi>t</m:mi>
+            <m:mn>2</m:mn>
+           </m:msup>
+           <m:mo>+</m:mo>
+           <m:msup>
+            <m:mi>z</m:mi>
+            <m:mn>2</m:mn>
+           </m:msup>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:msup>
+            <m:mi mathvariant="normal">&#x2147;</m:mi>
+            <m:mrow>
+             <m:mn>2</m:mn>
+             <m:mi>&#x03C0;</m:mi>
+             <m:mi>t</m:mi>
+            </m:mrow>
+           </m:msup>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mfrac>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:mo>-</m:mo>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+     </m:mfrac>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mn>1</m:mn>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>&#x03B3;</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+       </m:mrow>
+      </m:mfrac>
+      <m:mrow>
+       <m:msubsup>
+        <m:mo>&#x222B;</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x221E;</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x221E;</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+         </m:mrow>
+        </m:mrow>
+       </m:msubsup>
+       <m:mfrac>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:msup>
+          <m:mi>z</m:mi>
+          <m:mrow>
+           <m:mrow>
+            <m:mo>-</m:mo>
+            <m:mi>s</m:mi>
+           </m:mrow>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+         </m:msup>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>sin</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>s</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mfrac>
+       <m:mrow>
+        <m:mi>&#x03B6;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>s</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>s</m:mi>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B4;</m:mi>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:none/>
+      <m:mo>&lt;</m:mo>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>1</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>c</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>&#x03B3;</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>0</m:mn>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mspace width="0.2em"/>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mi>t</m:mi>
+      </m:mrow>
+      <m:mspace width="0.2em"/>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+      <m:mi>t</m:mi>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>0</m:mn>
+       <m:mn>1</m:mn>
+      </m:msubsup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mspace width="0.2em"/>
+      <m:mfrac>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mi>t</m:mi>
+      </m:mfrac>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>1</m:mn>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mfrac>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mi>t</m:mi>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:msup>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:msup>
+          <m:mi mathvariant="normal">&#x2147;</m:mi>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>t</m:mi>
+          </m:mrow>
+         </m:msup>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:mfrac>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:msup>
+        <m:mi>t</m:mi>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfmathematicalapplications.xhtml}
+<<dlmfmathematicalapplications.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Mathematical Applications
+  </div>
+  <hr/>
+<h3>Mathematical Applications</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Summation of Rational Functions</li>
+ <li>Mellin-Barnes Integrals</li>
+ <li>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">n</m:mi>
+ </m:math>-Dimensional Sphere</li>
+</ul>
+
+<h4>Summation of Rational Functions</h4>
+
+<p>As shown in 
+ <a href="http://dlmf.nist.gov/Contents/bib/T#temme:1996:sfi">
+  Temme(1996)
+ </a>(§3.4), the results given in
+ <a href="dlmfseriesexpansions.xhtml">
+  Series Expansions
+ </a> can be used to sum infinite series of rational functions.
+</p>
+
+<h5>Example</h5>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>S</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="false">
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+     </m:mstyle>
+     <m:msub>
+      <m:mi>a</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mi>k</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mstyle displaystyle="true">
+     <m:mfrac>
+      <m:mi>k</m:mi>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mn>3</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>2</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mstyle>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>By decomposition into partial fractions</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mi>k</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>+</m:mo>
+       <m:mfrac>
+        <m:mn>2</m:mn>
+        <m:mn>3</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>+</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mrow>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:mfrac>
+        <m:mo>-</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>+</m:mo>
+          <m:mfrac>
+           <m:mn>2</m:mn>
+           <m:mn>3</m:mn>
+          </m:mfrac>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Hence from (
+ <a href="dlmfseriesexpansions.xhtml#equation6">Series Expansions 6
+ </a>), ( Special Values and Extrema
+ <a href="dlmfspecialvaluesandextrema.xhtml#equation13">
+  Equation 13
+ </a> and 
+ <a href="dlmfspecialvaluesandextrema.xhtml#equation19">
+  Equation 19
+ </a>)
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>S</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mstyle displaystyle="false">
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mstyle>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mi>&#x03C8;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>2</m:mn>
+          <m:mn>3</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mn>3</m:mn>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mn>3</m:mn>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mn>2</m:mn>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>3</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mi>&#x03C0;</m:mi>
+      <m:msqrt>
+       <m:mn>3</m:mn>
+      </m:msqrt>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h4>Mellin-Barnes Integrals</h4>
+<p>Many special functions 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> can be represented as a <em>Mellin-Barnes integral</em>, that is, 
+  an integral of a product of gamma functions, reciprocals of gamma 
+  functions, and a power of 
+ <m:math display="inline">
+  <m:mi>z</m:mi>
+ </m:math>, the integration contour being doubly-infinite and eventually 
+  parallel to the imaginary axis. The left-hand side of (
+ <a href="dlmfintegrals.xhtml#equation1">
+  Integral Equation 1
+ </a>) is a typical example. By translating the contour parallel to itself 
+ and summing the residues of the integrand, asymptotic expansions of 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> for large 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>|</m:mo>
+   <m:mi>z</m:mi>
+   <m:mo>|</m:mo>
+  </m:mrow>
+ </m:math>, or small 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>|</m:mo>
+   <m:mi>z</m:mi>
+   <m:mo>|</m:mo>
+  </m:mrow>
+ </m:math>, can be obtained complete with an integral representation of the 
+  error term. 
+</p>
+
+<h4>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">n</m:mi>
+ </m:math>-Dimensional Sphere</h4>
+
+<p>The volume 
+ <m:math display="inline">
+  <m:mi>V</m:mi>
+ </m:math> and surface area 
+ <m:math display="inline">
+  <m:mi>A</m:mi>
+ </m:math> of the 
+ <m:math display="inline">
+  <m:mi>n</m:mi>
+ </m:math>-dimensional sphere of radius
+ <m:math display="inline">
+  <m:mi>r</m:mi>
+ </m:math> are given by
+</p>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>V</m:mi>
+    <m:mo>=</m:mo>
+    <m:mstyle displaystyle="true">
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mrow>
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+         <m:mi>n</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:msup>
+        <m:mi>r</m:mi>
+        <m:mi>n</m:mi>
+       </m:msup>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+          <m:mi>n</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mstyle>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>S</m:mi>
+    <m:mo>=</m:mo>
+    <m:mstyle displaystyle="true">
+     <m:mfrac>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:msup>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mrow>
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+         <m:mi>n</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:msup>
+        <m:mi>r</m:mi>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+         <m:mi>n</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mstyle>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="true">
+      <m:mfrac>
+       <m:mi>n</m:mi>
+       <m:mi>r</m:mi>
+      </m:mfrac>
+     </m:mstyle>
+     <m:mi>V</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfmethodsofcomputation.xhtml}
+<<dlmfmethodsofcomputation.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Methods of Computation
+  </div>
+  <hr/>
+<h3>Methods of Computation</h3>
+
+<p>An effective way of computing 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> 
+in the right half-plane is backward recurrence, beginning with a value 
+generated from the 
+<a href="dlmfasymptoticexpansions.xhtml#equation3">
+ asymptotic expansion
+</a>
+Or we can use forward recurrence, with an 
+<a href="dlmfseriesexpansions.xhtml#equation3">
+ initial value
+</a>.
+For the left half-plane we can continue the backward recurrence or 
+make use of the 
+<a href="dlmffunctionrelations.xhtml#equation3">
+ reflection formula
+</a>.
+</p>
+
+<p>Similarly for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, and the polygamma functions.
+</p>
+
+<p>For a comprehensive survey see 
+ <a href="http://dlmf.nist.gov/Contents/bib/V#vanderlaan:1984:csf">
+  van der Laan and Temme(1984)
+ </a>(Chapter III).
+ See also 
+ <a href="http://dlmf.nist.gov/Contents/bib/B#borwein:1992:feg">
+  Borwein and Zucker(1992)
+ </a>.
+</p>
+<<page foot>>
+@
+
+\subsection{dlmfmultidimensionalintegral.xhtml}
+<<dlmfmultidimensionalintegral.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Multidimensional Integral
+  </div>
+  <hr/>
+<h3>Multidimensional Integrals</h3>
+
+<p>Let 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>V</m:mi>
+   <m:mi>n</m:mi>
+  </m:msub>
+ </m:math> be the simplex: 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>t</m:mi>
+     <m:mn>1</m:mn>
+    </m:msub>
+    <m:mo>+</m:mo>
+    <m:msub>
+     <m:mi>t</m:mi>
+     <m:mn>2</m:mn>
+    </m:msub>
+    <m:mo>+</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+    <m:mo>+</m:mo>
+    <m:msub>
+     <m:mi>t</m:mi>
+     <m:mi>n</m:mi>
+    </m:msub>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msub>
+    <m:mi>t</m:mi>
+    <m:mi>k</m:mi>
+   </m:msub>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>. Then for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:msub>
+     <m:mi>z</m:mi>
+     <m:mi>k</m:mi>
+    </m:msub>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mi>n</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mo>&#x222B;</m:mo>
+      <m:msub>
+       <m:mi>V</m:mi>
+       <m:mi>n</m:mi>
+      </m:msub>
+     </m:msub>
+     <m:msubsup>
+      <m:mi>t</m:mi>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:msub>
+        <m:mi>z</m:mi>
+        <m:mn>1</m:mn>
+       </m:msub>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msubsup>
+     <m:msubsup>
+      <m:mi>t</m:mi>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:msub>
+        <m:mi>z</m:mi>
+        <m:mn>2</m:mn>
+       </m:msub>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msubsup>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:msubsup>
+      <m:mi>t</m:mi>
+      <m:mi>n</m:mi>
+      <m:mrow>
+       <m:msub>
+        <m:mi>z</m:mi>
+        <m:mi>n</m:mi>
+       </m:msub>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msubsup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:msub>
+       <m:mi>t</m:mi>
+       <m:mn>1</m:mn>
+      </m:msub>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:msub>
+       <m:mi>t</m:mi>
+       <m:mn>2</m:mn>
+      </m:msub>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:msub>
+       <m:mi>t</m:mi>
+       <m:mi>n</m:mi>
+      </m:msub>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mi>n</m:mi>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:mi mathvariant="normal">&#x2026;</m:mi>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mi>n</m:mi>
+        </m:msub>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mo>&#x222B;</m:mo>
+      <m:msub>
+       <m:mi>V</m:mi>
+       <m:mi>n</m:mi>
+      </m:msub>
+     </m:msub>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:munderover>
+          <m:mo movablelimits="false">&#x2211;</m:mo>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mo>=</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mi>n</m:mi>
+         </m:munderover>
+         <m:msub>
+          <m:mi>t</m:mi>
+          <m:mi>k</m:mi>
+         </m:msub>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:msub>
+        <m:mi>z</m:mi>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msub>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:munderover>
+      <m:msubsup>
+       <m:mi>t</m:mi>
+       <m:mi>k</m:mi>
+       <m:mrow>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msubsup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mi>k</m:mi>
+       </m:msub>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mi>n</m:mi>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:mi mathvariant="normal">&#x2026;</m:mi>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mi>n</m:mi>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:msub>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h5>Selberg-type Integrals</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0394;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mn>1</m:mn>
+       </m:msub>
+       <m:mo>,</m:mo>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mn>2</m:mn>
+       </m:msub>
+       <m:mo>,</m:mo>
+       <m:mi mathvariant="normal">&#x2026;</m:mi>
+       <m:mo>,</m:mo>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mi>n</m:mi>
+       </m:msub>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munder>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>&#x2264;</m:mo>
+       <m:mi>j</m:mi>
+       <m:mo>&lt;</m:mo>
+       <m:mi>k</m:mi>
+       <m:mo>&#x2264;</m:mo>
+       <m:mi>n</m:mi>
+      </m:mrow>
+     </m:munder>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:msub>
+       <m:mi>t</m:mi>
+       <m:mi>j</m:mi>
+      </m:msub>
+      <m:mo>-</m:mo>
+      <m:msub>
+       <m:mi>t</m:mi>
+       <m:mi>k</m:mi>
+      </m:msub>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Then
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mo>&#x222B;</m:mo>
+      <m:msup>
+       <m:mrow>
+        <m:mo>[</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>,</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>]</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:msub>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mn>1</m:mn>
+     </m:msub>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mn>2</m:mn>
+     </m:msub>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mi>m</m:mi>
+     </m:msub>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0394;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:msub>
+           <m:mi>t</m:mi>
+           <m:mn>1</m:mn>
+          </m:msub>
+          <m:mo>,</m:mo>
+          <m:mi mathvariant="normal">&#x2026;</m:mi>
+          <m:mo>,</m:mo>
+          <m:msub>
+           <m:mi>t</m:mi>
+           <m:mi>n</m:mi>
+          </m:msub>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>c</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:munderover>
+      <m:msubsup>
+       <m:mi>t</m:mi>
+       <m:mi>k</m:mi>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:msub>
+          <m:mi>t</m:mi>
+          <m:mi>k</m:mi>
+         </m:msub>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>b</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mi>k</m:mi>
+       </m:msub>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>1</m:mn>
+           <m:mo>+</m:mo>
+           <m:mi>c</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:mfrac>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>m</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>n</m:mi>
+           <m:mo>-</m:mo>
+           <m:mi>k</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>c</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi>n</m:mi>
+           </m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>k</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>c</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x220F;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:munderover>
+       <m:mfrac>
+        <m:mrow>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x0393;</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mi>a</m:mi>
+            <m:mo>+</m:mo>
+            <m:mrow>
+             <m:mrow>
+              <m:mo>(</m:mo>
+              <m:mrow>
+               <m:mi>n</m:mi>
+               <m:mo>-</m:mo>
+               <m:mi>k</m:mi>
+              </m:mrow>
+              <m:mo>)</m:mo>
+             </m:mrow>
+             <m:mi>c</m:mi>
+            </m:mrow>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x0393;</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mi>b</m:mi>
+            <m:mo>+</m:mo>
+            <m:mrow>
+             <m:mrow>
+              <m:mo>(</m:mo>
+              <m:mrow>
+               <m:mi>n</m:mi>
+               <m:mo>-</m:mo>
+               <m:mi>k</m:mi>
+              </m:mrow>
+              <m:mo>)</m:mo>
+             </m:mrow>
+             <m:mi>c</m:mi>
+            </m:mrow>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x0393;</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mn>1</m:mn>
+            <m:mo>+</m:mo>
+            <m:mrow>
+             <m:mi>k</m:mi>
+             <m:mi>c</m:mi>
+            </m:mrow>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>a</m:mi>
+           <m:mo>+</m:mo>
+           <m:mi>b</m:mi>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mrow>
+             <m:mo>(</m:mo>
+             <m:mrow>
+              <m:mrow>
+               <m:mn>2</m:mn>
+               <m:mi>n</m:mi>
+              </m:mrow>
+              <m:mo>-</m:mo>
+              <m:mi>k</m:mi>
+              <m:mo>-</m:mo>
+              <m:mn>1</m:mn>
+             </m:mrow>
+             <m:mo>)</m:mo>
+            </m:mrow>
+            <m:mi>c</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mfrac>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>provided that 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x211C;</m:mi> 
+   <m:mi>a</m:mi>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>c</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mrow>
+     <m:mo>min</m:mo>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac bevelled="true">
+        <m:mn>1</m:mn>
+        <m:mi>n</m:mi>
+       </m:mfrac>
+       <m:mo>,</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x211C;</m:mi>
+        <m:mfrac bevelled="true">
+         <m:mi>a</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>n</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>,</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x211C;</m:mi>
+        <m:mfrac bevelled="true">
+         <m:mi>b</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>n</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</p>
+
+<p>Secondly,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mo>&#x222B;</m:mo>
+      <m:msup>
+       <m:mrow>
+        <m:mo>[</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>,</m:mo>
+         <m:mi mathvariant="normal">&#x221E;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:msub>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mn>1</m:mn>
+     </m:msub>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mn>2</m:mn>
+     </m:msub>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mi>m</m:mi>
+     </m:msub>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0394;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:msub>
+           <m:mi>t</m:mi>
+           <m:mn>1</m:mn>
+          </m:msub>
+          <m:mo>,</m:mo>
+          <m:mi mathvariant="normal">&#x2026;</m:mi>
+          <m:mo>,</m:mo>
+          <m:msub>
+           <m:mi>t</m:mi>
+           <m:mi>n</m:mi>
+          </m:msub>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>c</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:munderover>
+      <m:msubsup>
+       <m:mi>t</m:mi>
+       <m:mi>k</m:mi>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:msub>
+         <m:mi>t</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mi>k</m:mi>
+       </m:msub>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi>m</m:mi>
+     </m:munderover>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>n</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>c</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mfrac>
+      <m:mrow>
+       <m:msubsup>
+        <m:mo>&#x220F;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:msubsup>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mo></m:mo>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>n</m:mi>
+             <m:mo>-</m:mo>
+             <m:mi>k</m:mi>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+           <m:mi>c</m:mi>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mi>c</m:mi>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>1</m:mn>
+           <m:mo>+</m:mo>
+           <m:mi>c</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>when 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>c</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mrow>
+     <m:mo>min</m:mo>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac bevelled="true">
+        <m:mn>1</m:mn>
+        <m:mi>n</m:mi>
+       </m:mfrac>
+       <m:mo>,</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x211C;</m:mi>
+        <m:mfrac bevelled="true">
+         <m:mi>a</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>n</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</p>
+
+<p>Thirdly,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mfrac bevelled="true">
+        <m:mi>n</m:mi>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:msup>
+     </m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mo>&#x222B;</m:mo>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi mathvariant="normal">&#x221E;</m:mi>
+          </m:mrow>
+          <m:mo>,</m:mo>
+          <m:mi mathvariant="normal">&#x221E;</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:msup>
+      </m:msub>
+      <m:msup>
+       <m:mrow>
+        <m:mo>|</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0394;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:msub>
+            <m:mi>t</m:mi>
+            <m:mn>1</m:mn>
+           </m:msub>
+           <m:mo>,</m:mo>
+           <m:mi mathvariant="normal">&#x2026;</m:mi>
+           <m:mo>,</m:mo>
+           <m:msub>
+            <m:mi>t</m:mi>
+            <m:mi>n</m:mi>
+           </m:msub>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>|</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>c</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x220F;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:munderover>
+       <m:mrow>
+        <m:mi>exp</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mrow>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>2</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+           <m:msubsup>
+            <m:mi>t</m:mi>
+            <m:mi>k</m:mi>
+            <m:mn>2</m:mn>
+           </m:msubsup>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:msub>
+         <m:mi>t</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msubsup>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mi>c</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>+</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>n</m:mi>
+     </m:msup>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h5>Dyson's Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mo>&#x222B;</m:mo>
+       <m:msup>
+        <m:mrow>
+         <m:mo>[</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>&#x03C0;</m:mi>
+          </m:mrow>
+          <m:mo>,</m:mo>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>]</m:mo>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:msup>
+      </m:msub>
+      <m:munder>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi>j</m:mi>
+        <m:mo>&lt;</m:mo>
+        <m:mi>k</m:mi>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+      </m:munder>
+      <m:msup>
+       <m:mrow>
+        <m:mo>|</m:mo>
+        <m:mrow>
+         <m:msup>
+          <m:mi mathvariant="normal">&#x2147;</m:mi>
+          <m:mrow>
+           <m:mi mathvariant="normal">&#x2148;</m:mi>
+           <m:msub>
+            <m:mi>&#x03B8;</m:mi>
+            <m:mi>j</m:mi>
+           </m:msub>
+          </m:mrow>
+         </m:msup>
+         <m:mo>-</m:mo>
+         <m:msup>
+          <m:mi mathvariant="normal">&#x2147;</m:mi>
+          <m:mrow>
+           <m:mi mathvariant="normal">&#x2148;</m:mi>
+           <m:msub>
+            <m:mi>&#x03B8;</m:mi>
+            <m:mi>k</m:mi>
+           </m:msub>
+          </m:mrow>
+         </m:msup>
+        </m:mrow>
+        <m:mo>|</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>b</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>&#x03B8;</m:mi>
+        <m:mn>1</m:mn>
+       </m:msub>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>&#x03B8;</m:mi>
+        <m:mi>n</m:mi>
+       </m:msub>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mi>n</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>+</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>n</m:mi>
+     </m:msup>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mrow>
+    <m:mfrac bevelled="true">
+     <m:mn>1</m:mn>
+     <m:mi>n</m:mi>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfnotation.xhtml}
+<<dlmfnotation.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Digital Library of Mathematical Functions<br/>
+                      The Gamma Function -- Notation
+  </div>
+  <hr/>
+ <div class="content">
+  <div class="section">
+   <h3>Notation</h3>
+   <div class="table" id="T1">
+    <table align="center">
+     <tbody>
+      <tr>
+       <th align="left">
+        <m:math display="inline">
+         <m:mrow>
+          <m:mi>j</m:mi>
+          <m:mo>,</m:mo>
+          <m:mi>m</m:mi>
+          <m:mo>,</m:mo>
+          <m:mi>n</m:mi>
+         </m:mrow>
+        </m:math>
+       </th>
+       <td align="justify">nonnegative integers.</td>
+      </tr>
+      <tr>
+       <th align="left">
+        <m:math display="inline">
+         <m:mi>k</m:mi>
+        </m:math>
+       </th>
+       <td>except in <a href="dlmfphysicalapplications.xhtml">
+                        Physical Applications</a>
+       </td>
+      </tr>
+      <tr>
+       <th align="left">
+        <m:math display="inline">
+         <m:mrow>
+          <m:mi>x</m:mi>
+          <m:mo>,</m:mo>
+          <m:mi>y</m:mi>
+         </m:mrow>
+        </m:math>
+       </th>
+       <td align="justify">real variables.</td>
+      </tr>
+      <tr>
+       <th align="left">
+        <m:math display="inline">
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mo>=</m:mo>
+          <m:mrow>
+           <m:mi>x</m:mi>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>y</m:mi>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+        </m:math>
+       </th>
+      <td align="justify">complex variable.</td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>b</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>q</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>s</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>w</m:mi>
+        </m:mrow>
+       </m:math>
+      </th>
+      <td align="justify">real or complex variables with 
+       <m:math display="inline">
+        <m:mrow>
+         <m:mrow>
+          <m:mo>&#x2223;</m:mo>
+          <m:mi>q</m:mi>
+          <m:mo>&#x2223;</m:mo>
+         </m:mrow>
+         <m:mo>&lt;</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:math>.
+      </td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mi>&#x03B4;</m:mi>
+       </m:math>
+      </th>
+      <td align="justify">arbitrary small positive constant.</td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mi mathvariant="normal">&#x2102;</m:mi>
+       </m:math>
+      </th>
+      <td align="justify">complex plane (excluding infinity).</td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mi mathvariant="normal">&#x211D;</m:mi>
+       </m:math>
+      </th>
+      <td align="justify">real line (excluding infinity).</td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mstyle scriptlevel="+1">
+          <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+           <m:mtr>
+            <m:mtd>
+             <m:mi>n</m:mi>
+            </m:mtd>
+           </m:mtr>
+           <m:mtr>
+            <m:mtd>
+             <m:mi>m</m:mi>
+            </m:mtd>
+           </m:mtr>
+          </m:mtable>
+         </m:mstyle>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:math>
+      </th>
+      <td align="justify">binomial coefficient 
+       <m:math display="inline">
+        <m:mfrac>
+         <m:mrow>
+          <m:mi>n</m:mi>
+          <m:mi mathvariant="normal">!</m:mi>
+         </m:mrow>
+         <m:mrow>
+          <m:mrow>
+           <m:mi>m</m:mi>
+           <m:mi mathvariant="normal">!</m:mi>
+          </m:mrow>
+          <m:mrow>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>n</m:mi>
+             <m:mo>-</m:mo>
+             <m:mi>m</m:mi>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+           <m:mi mathvariant="normal">!</m:mi>
+          </m:mrow>
+         </m:mrow>
+        </m:mfrac>
+       </m:math>.
+      </td>
+     </tr>
+     <tr>
+      <th align="left">empty sums</th>
+      <td align="justify">zero.</td>
+     </tr>
+     <tr>
+      <th align="left">empty products</th>
+      <td align="justify">unity.</td>
+     </tr>
+    </tbody>
+   </table>
+  </div>
+
+  <div class="para" id="p1">
+   <p>The main functions treated in this chapter are the gamma function 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math>,the psi function 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math>,the beta function 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>,</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math>, and the 
+    <m:math display="inline">
+     <m:mi>q</m:mi>
+    </m:math>-gamma function 
+    <m:math display="inline">
+     <m:mrow>
+      <m:msub>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mi>q</m:mi>
+      </m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math>.
+   </p>
+  </div>
+
+  <div class="para" id="p2">
+   <p>The notation 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math> is due to Legendre. Alternative notations for this function are: 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x03A0;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math> (Gauss) and 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+    </m:math>. Alternative notations for the psi function are:
+   </p>
+  </div>
+
+  <div class="table" id="T2">
+   <table align="center">
+    <thead>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x03A8;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:math>
+      </th>
+      <th align="left">Gauss; 
+        <a href="http://dlmf.nist.gov/Contents/bib/J#jahnke:1945:tof">
+         Jahnke and Emde(1945)
+        </a>
+      </th>
+     </tr>
+    </thead>
+    <tbody>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mi>&#x03A8;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>z</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:math>
+      </th>
+      <td align="left">
+        <a href="http://dlmf.nist.gov/Contents/bib/W#whittaker:1927:cma">
+         Whittaker and Watson(1927)
+        </a>
+      </td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x03A8;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>z</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:math>
+      </th>
+      <td align="left">
+        <a href="http://dlmf.nist.gov/Contents/bib/D#davis:1933:thm">
+          Davis(1933)
+        </a>
+      </td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mi mathvariant="sans-serif">F</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:math>
+      </th>
+      <td align="left">
+        <a href="http://dlmf.nist.gov/Contents/bib/P#pairman:1919:tdt">
+         Pairman(1919)
+        </a>
+      </td>
+     </tr>
+    </tbody>
+   </table>
+  </div>
+ </div>
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfphysicalapplications.xhtml}
+<<dlmfphysicalapplications.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Physical Applications
+  </div>
+  <hr/>
+<h3>Physical Applications</h3>
+
+<p>Suppose the potential energy of a gas of 
+ <m:math display="inline">
+  <m:mi>n</m:mi>
+ </m:math> point charges with positions
+ <m:math display="inline">
+  <m:mrow>
+   <m:msub>
+    <m:mi>x</m:mi>
+    <m:mn>1</m:mn>
+   </m:msub>
+   <m:mo>,</m:mo>
+   <m:msub>
+    <m:mi>x</m:mi>
+    <m:mn>2</m:mn>
+   </m:msub>
+   <m:mo>,</m:mo>
+   <m:mi mathvariant="normal">&#x2026;</m:mi>
+   <m:mo>,</m:mo>
+   <m:msub>
+    <m:mi>x</m:mi>
+    <m:mi>n</m:mi>
+   </m:msub>
+  </m:mrow>
+ </m:math> and free to move on the infinite line
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mi mathvariant="normal">&#x221E;</m:mi>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math>, is given by
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>W</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x2211;</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2113;</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:munderover>
+       <m:msubsup>
+        <m:mi>x</m:mi>
+        <m:mi mathvariant="normal">&#x2113;</m:mi>
+        <m:mn>2</m:mn>
+       </m:msubsup>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:munder>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi mathvariant="normal">&#x2113;</m:mi>
+        <m:mo>&lt;</m:mo>
+        <m:mi>j</m:mi>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+      </m:munder>
+      <m:mi>ln</m:mi>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mrow>
+        <m:msub>
+         <m:mi>x</m:mi>
+         <m:mi mathvariant="normal">&#x2113;</m:mi>
+        </m:msub>
+        <m:mo>-</m:mo>
+        <m:msub>
+         <m:mi>x</m:mi>
+         <m:mi>j</m:mi>
+        </m:msub>
+       </m:mrow>
+       <m:mo>|</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>The probability density of the positions when the gas is in thermodynamic
+   equilibrium is:
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>P</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msub>
+        <m:mi>x</m:mi>
+        <m:mn>1</m:mn>
+       </m:msub>
+       <m:mo>,</m:mo>
+       <m:mi mathvariant="normal">&#x2026;</m:mi>
+       <m:mo>,</m:mo>
+       <m:msub>
+        <m:mi>x</m:mi>
+        <m:mi>n</m:mi>
+       </m:msub>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>C</m:mi>
+     <m:mrow>
+      <m:mi>exp</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mi>W</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mi>T</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mi>k</m:mi>
+ </m:math> is the Boltzmann constant,  
+ <m:math display="inline">
+  <m:mi>T</m:mi>
+ </m:math> the temperature and  
+ <m:math display="inline">
+  <m:mi>C</m:mi>
+ </m:math> a constant.
+ Then the partition function (with 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03B2;</m:mi>
+   <m:mo>=</m:mo>
+   <m:mfrac bevelled="true">
+    <m:mn>1</m:mn>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>k</m:mi>
+      <m:mi>T</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mfrac>
+  </m:mrow>
+ </m:math>) is given by
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mi>n</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>&#x03B2;</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mo>&#x222B;</m:mo>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x211D;</m:mi>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:msub>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mi>&#x03B2;</m:mi>
+        <m:mi>W</m:mi>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>x</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mfrac bevelled="true">
+         <m:mi>n</m:mi>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:msup>
+       <m:msup>
+        <m:mi>&#x03B2;</m:mi>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mfrac bevelled="true">
+            <m:mi>n</m:mi>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mfrac bevelled="true">
+           <m:mrow>
+            <m:mi>&#x03B2;</m:mi>
+            <m:mi>n</m:mi>
+            <m:mrow>
+             <m:mo>(</m:mo>
+             <m:mrow>
+              <m:mi>n</m:mi>
+              <m:mo>-</m:mo>
+              <m:mn>1</m:mn>
+             </m:mrow>
+             <m:mo>)</m:mo>
+            </m:mrow>
+           </m:mrow>
+           <m:mn>4</m:mn>
+          </m:mfrac>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mo>&#x00D7;</m:mo>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>1</m:mn>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mstyle displaystyle="false">
+             <m:mfrac>
+              <m:mn>1</m:mn>
+              <m:mn>2</m:mn>
+             </m:mfrac>
+            </m:mstyle>
+            <m:mi>&#x03B2;</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mrow>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>j</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:munderover>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+         <m:mi>j</m:mi>
+         <m:mi>&#x03B2;</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For 
+ <m:math display="inline">
+  <m:mi>n</m:mi>
+ </m:math> charges free to move on a circular wire of radius 
+ <m:math display="inline">
+  <m:mn>1</m:mn>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>W</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:munder>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi mathvariant="normal">&#x2113;</m:mi>
+        <m:mo>&lt;</m:mo>
+        <m:mi>j</m:mi>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+      </m:munder>
+      <m:mi>ln</m:mi>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mrow>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:msub>
+           <m:mi>&#x03B8;</m:mi>
+           <m:mi mathvariant="normal">&#x2113;</m:mi>
+          </m:msub>
+         </m:mrow>
+        </m:msup>
+        <m:mo>-</m:mo>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:msub>
+           <m:mi>&#x03B8;</m:mi>
+           <m:mi>j</m:mi>
+          </m:msub>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+       <m:mo>|</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>and the partition function is given by</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mi>n</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>&#x03B2;</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mo>&#x222B;</m:mo>
+       <m:msup>
+        <m:mrow>
+         <m:mo>[</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>&#x03C0;</m:mi>
+          </m:mrow>
+          <m:mo>,</m:mo>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>]</m:mo>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:msup>
+      </m:msub>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi>&#x03B2;</m:mi>
+         <m:mi>W</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>&#x03B8;</m:mi>
+        <m:mn>1</m:mn>
+       </m:msub>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>&#x03B8;</m:mi>
+        <m:mi>n</m:mi>
+       </m:msub>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+         <m:mi>n</m:mi>
+         <m:mi>&#x03B2;</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>2</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+           <m:mi>&#x03B2;</m:mi>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>n</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfpolygammafunctions.xhtml}
+<<dlmfpolygammafunctions.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Polygamma Functions
+  </div>
+  <hr/>
+<h3>Polygamma Functions</h3>
+
+<p>The functions 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msup>
+    <m:mi>&#x03C8;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>n</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:msup>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, are called the <em>polygamma functions</em>. In particular, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msup>
+    <m:mi>&#x03C8;</m:mi>
+    <m:mo>&#x2032;</m:mo>
+   </m:msup>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> is the <em>trigamma function</em>; 
+ <m:math display="inline">
+  <m:msup>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mi>&#x2032;</m:mi>
+    <m:mi>&#x2032;</m:mi>
+   </m:mrow>
+  </m:msup></m:math>, 
+ <m:math display="inline">
+  <m:msup>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:msup>
+ </m:math>, 
+ <m:math display="inline">
+  <m:msup>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mn>4</m:mn>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:msup>
+ </m:math> are the <em>tetra-,</em> <em>penta-,</em> and 
+ <em>hexagamma functions</em> respectively. Most properties of these 
+ functions follow straightforwardly by differentiation of properties 
+ of the psi function. This includes asymptotic expansions.
+</p>
+
+<p>In the second and third equations,
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>; for
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03B6;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>n</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> 
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow> 
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mo>&#x2032;</m:mo>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:msup>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>n</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>n</m:mi>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mrow>
+      <m:mi>&#x03B6;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>n</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>n</m:mi>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msup>
+        <m:mn>2</m:mn>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mi>&#x03B6;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mo>&#x2032;</m:mo>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mstyle displaystyle="false">
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mstyle>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:msup>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:msup>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>4</m:mn>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x2211;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:munderover>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi>k</m:mi>
+           </m:mrow>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mn>2</m:mn>
+        </m:msup>
+       </m:mfrac>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>As 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> in 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B4;</m:mi>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:none/>
+      <m:mo>&lt;</m:mo>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mo>&#x2032;</m:mo>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mi>z</m:mi>
+     </m:mfrac>
+     <m:mo>+</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:msup>
+        <m:mi>z</m:mi>
+        <m:mn>2</m:mn>
+       </m:msup>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msub>
+        <m:mi>B</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>k</m:mi>
+        </m:mrow>
+       </m:msub>
+       <m:msup>
+        <m:mi>z</m:mi>
+        <m:mrow>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfqgammaandbetafunctions.xhtml}
+<<dlmfqgammaandbetafunctions.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- q-Gamma and Beta Functions
+  </div>
+  <hr/>
+<h3>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Gamma and Beta Functions
+</h3>
+
+<ul>
+ <li>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Factorials</li>
+ <li>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Gamma Function</li>
+ <li>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Beta Function</li>
+</ul>
+
+<h4>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Factorials</h4>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mo>;</m:mo>
+       <m:mi>q</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi>n</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:munderover>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:msup>
+        <m:mi>q</m:mi>
+        <m:mi>k</m:mi>
+       </m:msup>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mi>n</m:mi>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mi>q</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>1</m:mn>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>+</m:mo>
+       <m:mi>q</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>+</m:mo>
+       <m:mi>q</m:mi>
+       <m:mo>+</m:mo>
+       <m:mi mathvariant="normal">&#x2026;</m:mi>
+       <m:mo>+</m:mo>
+       <m:msup>
+        <m:mi>q</m:mi>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>q</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mo>;</m:mo>
+        <m:mi>q</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>n</m:mi>
+     </m:msub>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>q</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>n</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>When 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mi>q</m:mi>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mo>;</m:mo>
+       <m:mi>q</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x221E;</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:msup>
+        <m:mi>q</m:mi>
+        <m:mi>k</m:mi>
+       </m:msup>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h4>
+ <m:math display="inline">
+ <m:mi mathvariant="bold-italic">q</m:mi></m:math>-Gamma Function</h4>
+
+<p>When 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>q</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac bevelled="true">
+     <m:mrow>
+      <m:msub>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>q</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mo>;</m:mo>
+         <m:mi>q</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msub>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:mi>q</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mrow>
+     <m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:msup>
+         <m:mi>q</m:mi>
+         <m:mi>z</m:mi>
+        </m:msup>
+        <m:mspace width="0.2em"/>
+        <m:mo>;</m:mo>
+        <m:mi>q</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msub>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>2</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mi>n</m:mi>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mi>q</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:msup>
+        <m:mi>q</m:mi>
+        <m:mi>z</m:mi>
+       </m:msup>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:mi>q</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mi>q</m:mi>
+      </m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Also, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:msub>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mi>q</m:mi>
+    </m:msub>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> is convex for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, and the analog of the 
+ <a href="dlmffunctionrelations.xhtml#bohrmolleruptheorem">
+  Bohr-Mollerup theorem 
+ </a> holds.
+</p>
+
+<p>If 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>q</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mi>r</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, then
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>x</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&lt;</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>r</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>x</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>when 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math> or when 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>, and
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>x</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&gt;</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>r</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>x</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>when 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>1</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munder>
+      <m:mo movablelimits="false">lim</m:mo>
+      <m:mrow>
+       <m:mi>q</m:mi>
+       <m:mo>&#x2192;</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:munder>
+     <m:mrow>
+      <m:msub>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mi>q</m:mi>
+      </m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For generalized asymptotic expansions of 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mspace width="0.2em"/>
+   <m:mrow>
+    <m:msub>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mi>q</m:mi>
+    </m:msub>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> as
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> see 
+ <a href="http://dlmf.nist.gov/Contents/bib/O#oldedaalhuis:1994:aef">
+  Olde Daalhuis(1994)
+ </a> and 
+ <a href="http://dlmf.nist.gov/Contents/bib/M#moak:1984:tqa">
+  Moak(1984)
+ </a>.
+</p>
+
+<h4>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Beta Function
+</h4>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:msub>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mi>q</m:mi>
+       </m:msub>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>a</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:msub>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mi>q</m:mi>
+       </m:msub>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>b</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:msub>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mi>q</m:mi>
+      </m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mn>1</m:mn>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+       <m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mi>t</m:mi>
+           <m:mi>q</m:mi>
+          </m:mrow>
+          <m:mspace width="0.2em"/>
+          <m:mo>;</m:mo>
+          <m:mi>q</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:msub>
+      </m:mrow>
+      <m:msub>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>t</m:mi>
+          <m:msup>
+           <m:mi>q</m:mi>
+           <m:mi>b</m:mi>
+          </m:msup>
+         </m:mrow>
+         <m:mo>;</m:mo>
+         <m:mi>q</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msub>
+     </m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>q</m:mi>
+      </m:msub>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>q</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfseriesexpansions.xhtml}
+<<dlmfseriesexpansions.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Series Expansions
+  </div>
+  <hr/>
+<h3>Series Expansions</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Maclaurin Series</li>
+ <li>Other Series</li>
+</ul>
+<h4>Maclaurin Series</h4>
+<p>Throughout this subsection 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03B6;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>k</m:mi>
+    <m:mo>)</m:mo>
+  </m:mrow>
+  </m:mrow>
+ </m:math> is 
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:msub>
+      <m:mi>c</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+     <m:msup>
+      <m:mi>z</m:mi>
+      <m:mi>k</m:mi>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msub>
+    <m:mi>c</m:mi>
+    <m:mn>1</m:mn>
+   </m:msub>
+   <m:mo>=</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>,
+ 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msub>
+    <m:mi>c</m:mi>
+    <m:mn>2</m:mn>
+   </m:msub>
+   <m:mo>=</m:mo>
+   <m:mi>&#x03B3;</m:mi>
+  </m:mrow>
+ </m:math>, and
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:msub>
+      <m:mi>c</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>&#x03B3;</m:mi>
+         <m:msub>
+          <m:mi>c</m:mi>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+         </m:msub>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>&#x03B6;</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mn>2</m:mn>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+         <m:msub>
+          <m:mi>c</m:mi>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>2</m:mn>
+          </m:mrow>
+         </m:msub>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>&#x03B6;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mn>3</m:mn>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:msub>
+         <m:mi>c</m:mi>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>-</m:mo>
+          <m:mn>3</m:mn>
+         </m:mrow>
+        </m:msub>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi mathvariant="normal">&#x2026;</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>k</m:mi>
+      </m:msup>
+      <m:mrow>
+       <m:mi>&#x03B6;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:msub>
+       <m:mi>c</m:mi>
+       <m:mn>1</m:mn>
+      </m:msub>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>3</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<p>For 15D numerical values of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>c</m:mi>
+   <m:mi>k</m:mi>
+  </m:msub>
+ </m:math> see 
+ <a href="http://dlmf.nist.gov/Contents/bib/#abramowitz:1964:hmf">
+ Abramowitz and Stegun(1964)</a>(p. 256), and
+for 31D values see 
+<a href="http://dlmf.nist.gov/Contents/bib/W#wrench:1968:cts">
+   Wrench(1968)</a>.
+</p>
+
+<a name="equation3"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>ln</m:mi>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mi>z</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>&#x03B3;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>2</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>k</m:mi>
+      </m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>&#x03B6;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>k</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac>
+       <m:msup>
+        <m:mi>z</m:mi>
+        <m:mi>k</m:mi>
+       </m:msup>
+       <m:mi>k</m:mi>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>+</m:mo>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>&#x03B3;</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>2</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>k</m:mi>
+      </m:msup>
+      <m:mrow>
+       <m:mi>&#x03B6;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>k</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mi>z</m:mi>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>+</m:mo>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>z</m:mi>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mfrac>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mrow>
+         <m:mi>cot</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>z</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>+</m:mo>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mrow>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msup>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:mfrac>
+      <m:mo>+</m:mo>
+      <m:mn>1</m:mn> 
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>&#x03B6;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi>k</m:mi>
+           </m:mrow>
+           <m:mo>+</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:msup>
+       <m:mi>z</m:mi>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>k</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>&#x00B1;</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<p>For 20D numerical values of the coefficients of the Maclaurin series for
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>z</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>3</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+</m:math> see 
+<a href="http://dlmf.nist.gov/Contents/bib/L#luke:1969:sfa2">
+   Luke(1969)</a>(p. 299).
+</p>
+
+<p>When 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<a name="equation6"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>&#x03B3;</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mi>z</m:mi>
+      </m:mfrac>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mi>z</m:mi>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>z</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>&#x03B3;</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>and
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mi>z</m:mi>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>2</m:mn>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>k</m:mi>
+       </m:msup>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Also,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x2111;</m:mi>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mfrac>
+      <m:mi>y</m:mi>
+      <m:mrow>
+       <m:msup>
+        <m:mi>k</m:mi>
+        <m:mn>2</m:mn>
+       </m:msup>
+       <m:mo>+</m:mo>
+       <m:msup>
+        <m:mi>y</m:mi>
+        <m:mn>2</m:mn>
+       </m:msup>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+<<page foot>>
+@
+
+\subsection{dlmfsums.xhtml}
+<<dlmfsums.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Sums
+  </div>
+  <hr/>
+<h3>Sums</h3>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>k</m:mi>
+     </m:msup>
+     <m:mrow>
+      <m:msup>
+       <m:mi>&#x03C8;</m:mi>
+       <m:mo>&#x2032;</m:mo>
+      </m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>k</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:msup>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:msup>
+      <m:mn>8</m:mn>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mi>k</m:mi>
+     </m:mfrac>
+     <m:mrow>
+      <m:msup>
+       <m:mi>&#x03C8;</m:mi>
+       <m:mo>&#x2032;</m:mo>
+      </m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>&#x03B6;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>3</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>&#x03C8;</m:mi>
+        <m:mrow>
+         <m:mi>&#x2032;</m:mi>
+         <m:mi>&#x2032;</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mn>1</m:mn>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For further sums involving the psi function see
+<a href="http://dlmf.nist.gov/Contents/bib/H#hansen:1975:tsp">
+   Hansen(1975)
+</a>(pp. 360–367). For sums of gamma functions see
+<a href="http://dlmf.nist.gov/Contents/bib/#andrews:1999:sfu">
+   Andrews <em>et.al.</em>(1999)
+</a>(Chapters 2 and 3).
+</p>
+
+<p>For related sums involving finite field analogs of the gamma and 
+beta functions (Gauss and Jacobi sums) see 
+<a href="http://dlmf.nist.gov/Contents/bib/#andrews:1999:sfu">
+ Andrews <em>et.al.</em>(1999)
+</a>(Chapter 1) and
+<a href="http://dlmf.nist.gov/Contents/bib/T#terras:1999:fao">
+ Terras(1999)
+</a>.
+</p>
+<<page foot>>
+@
+
+\subsection{dlmfsoftware.xhtml}
+<<dlmfsoftware.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Software
+  </div>
+  <hr/>
+<<page foot>>
+@
+
+\subsection{dlmfspecialvaluesandextrema.xhtml}
+<<dlmfspecialvaluesandextrema.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Special Values and Extrema
+  </div>
+  <hr/>
+<h3>Special Values and Extrema</h3>
+<h6>Contents</h6>
+ <ul>
+  <li>Gamma Function</li>
+  <li>Psi Function</li>
+  <li>Extrema</li>
+ </ul>
+
+<h4>Gamma Function</h4>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>n</m:mi>
+     <m:mi mathvariant="normal">!</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>&#x2223;</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+        <m:mi>y</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>&#x2223;</m:mo>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mfrac>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mrow>
+        <m:mi>y</m:mi>
+        <m:mrow>
+         <m:mi>sinh</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>y</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mfrac bevelled="true">
+      <m:mn>1</m:mn>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+    </m:msup>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:msup>
+     <m:mrow>
+      <m:mo>&#x2223;</m:mo>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:mi>y</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>&#x2223;</m:mo>
+     </m:mrow>
+     <m:mn>2</m:mn>
+    </m:msup>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mrow>
+      <m:mi>cosh</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi>y</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>4</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>3</m:mn>
+          <m:mn>4</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi>&#x03C0;</m:mi>
+      <m:msqrt>
+       <m:mn>2</m:mn>
+      </m:msqrt>
+     </m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mi>cosh</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>+</m:mo>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+       <m:mrow>
+        <m:mi>sinh</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>&#x03C0;</m:mi>
+          <m:mi>y</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow> 
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:msup>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mfrac bevelled="true">
+      <m:mn>1</m:mn>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+    </m:msup>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>1.77245 38509 05516 02729</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>3</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>2.67893 85347 07747 63365</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>2</m:mn>
+        <m:mn>3</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>1.35411 79394 26400 41694</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>4</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>3.62560 99082 21908 31193</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>3</m:mn>
+        <m:mn>4</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>1.22541 67024 65177 64512</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow> 
+     <m:msup>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mo>&#x2032;</m:mo>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h4>Psi Function</h4>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<a name="equation13"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>&#x03B3;</m:mi>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mn>2</m:mn>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mi>k</m:mi>
+      </m:mfrac>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mstyle displaystyle="false">
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mstyle>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>&#x03B3;</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mn>2</m:mn>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>3</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>+</m:mo>
+        <m:mi mathvariant="normal">&#x2026;</m:mi>
+        <m:mo>+</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mrow>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi>n</m:mi>
+           </m:mrow>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+         </m:mfrac>
+        </m:mstyle>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">ℑ</m:mi>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+        <m:mi>y</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>y</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:mi>coth</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">ℑ</m:mi>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mstyle>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mi>&#x03C0;</m:mi>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi>tanh</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi>y</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">ℑ</m:mi>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>y</m:mi>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:mi>coth</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>p</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mi>q</m:mi>
+  </m:mrow>
+ </m:math> are integers, then
+</p>
+
+<a name="equation19"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mfrac>
+       <m:mi>p</m:mi>
+       <m:mi>q</m:mi>
+      </m:mfrac>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow> 
+     <m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>&#x03B3;</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mi>q</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+       <m:mrow>
+        <m:mi>cot</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mfrac>
+          <m:mrow>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>p</m:mi>
+          </m:mrow>
+          <m:mi>q</m:mi>
+         </m:mfrac>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x2211;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>q</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:munderover>
+       <m:mrow>
+        <m:mi>cos</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mfrac>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>k</m:mi>
+           <m:mi>p</m:mi>
+          </m:mrow>
+          <m:mi>q</m:mi>
+         </m:mfrac>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mo>-</m:mo>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mrow>
+            <m:mi>cos</m:mi>
+            <m:mrow>
+             <m:mo>(</m:mo>
+             <m:mfrac>
+              <m:mrow>
+               <m:mn>2</m:mn>
+               <m:mi>&#x03C0;</m:mi>
+               <m:mi>k</m:mi>
+              </m:mrow>
+              <m:mi>q</m:mi>
+             </m:mfrac>
+             <m:mo>)</m:mo>
+            </m:mrow>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h4>Extrema</h4>
+<div>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow> 
+    <m:msup>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mo>&#x2032;</m:mo>
+    </m:msup>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:msub>
+      <m:mi>x</m:mi>
+      <m:mi>n</m:mi>
+     </m:msub>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mi>&#x03C8;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:msub>
+      <m:mi>x</m:mi>
+      <m:mi>n</m:mi>
+     </m:msub>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>=</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+<br/>
+<div class="center">
+ <table align="center">
+  <thead>
+   <tr>
+    <th align="center" class="b l r t">
+     <m:math display="inline">
+      <m:mi>n</m:mi>
+     </m:math>
+    </th>
+    <th align="center" class="b r t">
+     <m:math display="inline">
+      <m:msub>
+       <m:mi>x</m:mi>
+       <m:mi>n</m:mi>
+      </m:msub>
+     </m:math>
+    </th>
+    <th align="center" class="b r t">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>x</m:mi>
+         <m:mi>n</m:mi>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:math>
+    </th>
+   </tr>
+  </thead>
+  <tbody>
+   <tr>
+    <th align="right" class="l r">0
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mn>1.46163 21449</m:mn>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mn>0.88560 31944</m:mn>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">1
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>0.50408 30083</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>3.54464 36112</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">2
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1.57349 84732</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mn>2.30240 72583</m:mn>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="B l r">3
+    </th>
+    <td align="right" class="B r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>2.61072 08875</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="B r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>0.88813 63584</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">4
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>3.63529 33665</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mn>0.24512 75398</m:mn>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">5
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>4.65323 77626</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>0.05277 96396</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="B l r">6
+    </th>
+    <td align="right" class="B r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>5.66716 24513</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="B r">
+     <m:math display="inline">
+      <m:mn>0.00932 45945</m:mn>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">7
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>6.67841 82649</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>0.00139 73966</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">8
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>7.68778 83250</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mn>0.00018 18784</m:mn>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">9
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>8.69576 41633</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>0.00002 09253</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="b l r">10
+    </th>
+    <td align="right" class="b r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>9.70267 25406</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="b r">
+     <m:math display="inline">
+      <m:mn>0.00000 21574</m:mn>
+     </m:math>
+    </td>
+   </tr>
+  </tbody>
+ </table>
+</div>
+
+<p>As 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>x</m:mi>
+     <m:mi>n</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>n</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mfrac>
+      <m:mrow>
+       <m:mi>arctan</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mrow>
+          <m:mi>ln</m:mi>
+          <m:mi>n</m:mi>
+         </m:mrow>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mi>O</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:msup>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mi>ln</m:mi>
+            <m:mi>n</m:mi>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+          <m:mn>2</m:mn>
+         </m:msup>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+<<page foot>>
+@
+
+\subsection{dlmftables.xhtml}
+<<dlmftables.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Tables
+  </div>
+  <hr/>
+<h3>Tables</h3>
+
+These tables show Axiom's compliance with published standard values.
+In all cases shown here Axiom conforms to the accuracy of the published
+tables.
+
+<ul>
+ <li>The Gamma Function</li>
+ <li>The Psi Function</li>
+</ul>
+
+<h4>The Gamma Function</h4>
+
+This table was constructed from the published values in the 
+Handbook of Mathematical Functions, by Milton Abramowitz
+and Irene A. Stegun, by Dover (1965), pp 267-270.
+
+The first column is the point where the Gamma function is evaluated.
+The second column is the value reported in the Handbook.
+The third column is the actual value computed by Axiom at the given point.
+The fourth column is the difference of Axiom's value and the Handbook value.
+
+<table border="1">
+ <tr>
+  <th>point</th>
+  <th>Handbook Value</th>
+  <th>Axiom Computed Value</th>
+  <th>Difference</th>
+ </tr>
+ <tr>
+  <td>1.000</td>
+  <td>1.0000000000</td>
+  <td>1.</td>
+  <td align="right">0.</td>
+ </tr>
+ <tr>
+  <td>1.005</td>
+  <td>0.9971385354</td>
+  <td>0.9971385352483757</td>
+  <td align="right">-1.51E-10</td>
+ </tr>
+ <tr>
+  <td>1.010</td>
+  <td>0.9943258512</td>
+  <td>0.99432585118631189</td>
+  <td align="right">-2.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.015</td> 
+  <td>0.9915612888</td> 
+  <td>0.99156128884131323</td> 
+  <td align="right">4.14E-11</td>
+ </tr>
+ <tr>
+  <td>1.020</td> 
+  <td>0.9888442033</td> 
+  <td>0.9888442032538789</td> 
+  <td align="right">-4.31E-11</td>
+ </tr>
+ <tr>
+  <td>1.025</td> 
+  <td>0.9861739633</td> 
+  <td>0.98617396313592742</td> 
+  <td align="right">-1.54E-10</td>
+ </tr>
+ <tr>
+  <td>1.030</td> 
+  <td>0.9835499506</td> 
+  <td>0.98354995053928918</td> 
+  <td align="right">-7.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.035</td> 
+  <td>0.9809715606</td> 
+  <td>0.98097156056367696</td> 
+  <td align="right">-4.60E-11</td>
+ </tr>
+ <tr>
+  <td>1.040</td> 
+  <td>0.9784382009</td> 
+  <td>0.9784382009247683</td> 
+  <td align="right"> 3.00E-11</td>
+ </tr>
+ <tr>
+  <td>1.045</td> 
+  <td>0.9759492919</td> 
+  <td>0.97594929183099266</td> 
+  <td align="right">-6.55E-11</td>
+ </tr>
+ <tr>
+  <td>1.050</td> 
+  <td>0.9735042656</td> 
+  <td>0.97350426556841785</td> 
+  <td align="right">-2.72E-11</td>
+ </tr>
+ <tr>
+  <td>1.055</td> 
+  <td>0.9711025663</td> 
+  <td>0.97110256624499502</td> 
+  <td align="right">-6.77E-11</td>
+ </tr>
+ <tr>
+  <td>1.060</td> 
+  <td>0.9687436495</td> 
+  <td>0.96874364951272707</td> 
+  <td align="right">-2.36E-12</td>
+ </tr>
+ <tr>
+  <td>1.065</td> 
+  <td>0.9664269823</td> 
+  <td>0.96642698229777113</td> 
+  <td align="right">-1.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.070</td> 
+  <td>0.9641520425</td> 
+  <td>0.96415204253821729</td> 
+  <td align="right"> 4.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.075</td> 
+  <td>0.9619183189</td> 
+  <td>0.96191831892929192</td> 
+  <td align="right"> 2.31E-11</td>
+ </tr>
+ <tr>
+  <td>1.080</td> 
+  <td>0.9597253107</td> 
+  <td>0.95972531067573963</td> 
+  <td align="right">-3.00E-11</td>
+ </tr>
+ <tr>
+  <td>1.085</td> 
+  <td>0.9575725273</td> 
+  <td>0.95757252725116249</td> 
+  <td align="right">-3.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.090</td> 
+  <td>0.9554594882</td> 
+  <td>0.95545948816407866</td> 
+  <td align="right">-4.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.095</td> 
+  <td>0.9533857227</td> 
+  <td>0.95338572273049704</td> 
+  <td align="right"> 2.34E-11</td>
+ </tr>
+ <tr>
+  <td>1.100</td> 
+  <td>0.9513507699</td> 
+  <td>0.95135076987625944</td> 
+  <td align="right">-2.49E-11</td>
+ </tr>
+ <tr>
+  <td>1.105</td> 
+  <td>0.9493541778</td> 
+  <td>0.94935417782771081</td> 
+  <td align="right"> 2.11E-11</td>
+ </tr>
+ <tr>
+  <td>1.110</td> 
+  <td>0.9473955040</td> 
+  <td>0.94739550404472173</td> 
+  <td align="right"> 5.80E-11</td>
+ </tr>
+ <tr>
+  <td>1.115</td> 
+  <td>0.9454743149</td> 
+  <td>0.94547431492209555</td> 
+  <td align="right"> 1.12E-11</td>
+ </tr>
+ <tr>
+  <td>1.120</td> 
+  <td>0.9435901856</td> 
+  <td>0.94359018561564112</td> 
+  <td align="right"> 1.06E-11</td>
+ </tr>
+ <tr>
+  <td>1.125</td> 
+  <td>0.9417426997</td> 
+  <td>0.94174269984970138</td> 
+  <td align="right"> 1.39E-10</td>
+ </tr>
+ <tr>
+  <td>1.130</td> 
+  <td>0.9399314497</td> 
+  <td>0.93993144972988807</td> 
+  <td align="right"> 1.67E-11</td>
+ </tr>
+ <tr>
+  <td>1.135</td> 
+  <td>0.9381560356</td> 
+  <td>0.93815603556085947</td> 
+  <td align="right">-5.14E-11</td>
+ </tr>
+ <tr>
+  <td>1.140</td> 
+  <td>0.9364160657</td> 
+  <td>0.93641606566898694</td> 
+  <td align="right">-2.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.145</td> 
+  <td>0.9347111562</td> 
+  <td>0.93471115622975964</td> 
+  <td align="right"> 2.05E-11</td>
+ </tr>
+ <tr>
+  <td>1.150</td> 
+  <td>0.9330409311</td> 
+  <td>0.93304093109978414</td> 
+  <td align="right"> 6.51E-12</td>
+ </tr>
+ <tr>
+  <td>1.155</td> 
+  <td>0.9314050217</td> 
+  <td>0.93140502165323868</td> 
+  <td align="right">-3.93E-11</td>
+ </tr>
+ <tr>
+  <td>1.160</td> 
+  <td>0.9298030666</td> 
+  <td>0.92980306664109957</td> 
+  <td align="right"> 4.51E-11</td>
+ </tr>
+ <tr>
+  <td>1.165</td> 
+  <td>0.9282347120</td> 
+  <td>0.92823471196190366</td> 
+  <td align="right">-2.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.170</td> 
+  <td>0.9266996106</td> 
+  <td>0.92669961062266581</td> 
+  <td align="right"> 2.10E-11</td>
+ </tr>
+ <tr>
+  <td>1.175</td> 
+  <td>0.9251974225</td> 
+  <td>0.92519742251686099</td> 
+  <td align="right"> 1.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.180</td> 
+  <td>0.9237278143</td> 
+  <td>0.92372781430006712</td> 
+  <td align="right">-1.17E-11</td>
+ </tr>
+ <tr>
+  <td>1.185</td> 
+  <td>0.9222904591</td> 
+  <td>0.92229045925047382</td> 
+  <td align="right"> 1.49E-10</td>
+ </tr>
+ <tr>
+  <td>1.190</td> 
+  <td>0.9208850371</td> 
+  <td>0.92088503713299241</td> 
+  <td align="right"> 2.60E-11</td>
+ </tr>
+ <tr>
+  <td>1.195</td> 
+  <td>0.9195112341</td> 
+  <td>0.91951123406686597</td> 
+  <td align="right">-2.98E-11</td>
+ </tr>
+ <tr>
+  <td>1.200</td> 
+  <td>0.9181687424</td> 
+  <td>0.91816874239667101</td> 
+  <td align="right">-1.67E-11</td>
+ </tr>
+ <tr>
+  <td>1.205</td> 
+  <td>0.9168572606</td> 
+  <td>0.91685726056661909</td> 
+  <td align="right">-3.28E-11</td>
+ </tr>
+ <tr>
+  <td>1.210</td> 
+  <td>0.9155764930</td> 
+  <td>0.91557649299805532</td> 
+  <td align="right"> 8.85E-12</td>
+ </tr>
+ <tr>
+  <td>1.215</td> 
+  <td>0.9143261400</td> 
+  <td>0.91432614997006778</td> 
+  <td align="right"> 9.98E-9</td>
+ </tr>
+ <tr>
+  <td>1.220</td> 
+  <td>0.9131059475</td> 
+  <td>0.91310594750311536</td> 
+  <td align="right"> 1.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.225</td> 
+  <td>0.9119156071</td> 
+  <td>0.91191560725927312</td> 
+  <td align="right"> 1.49E-10</td>
+ </tr>
+ <tr>
+  <td>1.230</td> 
+  <td>0.9107548564</td> 
+  <td>0.91075485637655895</td> 
+  <td align="right">-1.50E-11</td>
+ </tr>
+ <tr>
+  <td>1.235</td> 
+  <td>0.9096234274</td> 
+  <td>0.90962342744425173</td> 
+  <td align="right"> 4.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.240</td> 
+  <td>0.9085210583</td> 
+  <td>0.90852105834198582</td> 
+  <td align="right"> 4.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.245</td> 
+  <td>0.9074474922</td> 
+  <td>0.90744749215126341</td> 
+  <td align="right">-5.77E-11</td>
+ </tr>
+ <tr>
+  <td>1.250</td>
+  <td>0.9064024771</td> 
+  <td>0.90640247705547716</td> 
+  <td align="right">-3.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.255</td> 
+  <td>0.9053857663</td> 
+  <td>0.90538576624240463</td> 
+  <td align="right">-5.23E-11</td>
+ </tr>
+ <tr>
+  <td>1.260</td> 
+  <td>0.9043971178</td> 
+  <td>0.90439711780910215</td> 
+  <td align="right"> 2.01E-11</td>
+ </tr>
+ <tr>
+  <td>1.265</td> 
+  <td>0.9034362946</td> 
+  <td>0.90343629466913566</td> 
+  <td align="right"> 5.78E-11</td>
+ </tr>
+ <tr>
+  <td>1.270</td> 
+  <td>0.9025030645</td> 
+  <td>0.90250306446208062</td> 
+  <td align="right">-5.13E-11</td>
+ </tr>
+ <tr>
+  <td>1.275</td> 
+  <td>0.9015971994</td> 
+  <td>0.90159719946523187</td> 
+  <td align="right"> 5.66E-11</td>
+ </tr>
+ <tr>
+  <td>1.280</td> 
+  <td>0.9007184765</td> 
+  <td>0.90071847650745973</td> 
+  <td align="right"> 5.78E-13</td>
+ </tr>
+ <tr>
+  <td>1.285</td> 
+  <td>0.8998666769</td> 
+  <td>0.89986667689491762</td> 
+  <td align="right"> 5.55E-12</td>
+ </tr>
+ <tr>
+  <td>1.290</td> 
+  <td>0.8990415863</td> 
+  <td>0.89904158628967101</td> 
+  <td align="right">-3.93E-12</td>
+ </tr>
+ <tr>
+  <td>1.295</td> 
+  <td>0.8982429947</td> 
+  <td>0.89824299468914737</td> 
+  <td align="right">-1.72E-11</td>
+ </tr>
+ <tr>
+  <td>1.300</td> 
+  <td>0.8974706963</td> 
+  <td>0.89747069630804477</td> 
+  <td align="right"> 2.65E-12</td>
+ </tr>
+ <tr>
+  <td>1.305</td> 
+  <td>0.8967244895</td> 
+  <td>0.89672448951215833</td> 
+  <td align="right"> 2.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.310</td> 
+  <td>0.8960041767</td> 
+  <td>0.89600417674396082</td> 
+  <td align="right"> 4.53E-11</td>
+ </tr>
+ <tr>
+  <td>1.315</td> 
+  <td>0.8953095644</td> 
+  <td>0.89530956444995535</td> 
+  <td align="right"> 5.43E-11</td>
+ </tr>
+ <tr>
+  <td>1.320</td> 
+  <td>0.8946404630</td> 
+  <td>0.89464046300975775</td> 
+  <td align="right"> 1.28E-11</td>
+ </tr>
+ <tr>
+  <td>1.325</td> 
+  <td>0.8939966866</td> 
+  <td>0.89399668666686083</td> 
+  <td align="right"> 7.95E-11</td>
+ </tr>
+ <tr>
+  <td>1.330</td> 
+  <td>0.8933780535</td> 
+  <td>0.89337805346103716</td> 
+  <td align="right">-3.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.335</td> 
+  <td>0.8927843850</td> 
+  <td>0.89278438516233538</td> 
+  <td align="right"> 1.51E-10</td>
+ </tr>
+ <tr>
+  <td>1.340</td> 
+  <td>0.8922155072</td> 
+  <td>0.89221550720663356</td> 
+  <td align="right"> 1.43E-11</td>
+ </tr>
+ <tr>
+  <td>1.345</td> 
+  <td>0.8916712485</td> 
+  <td>0.89167124863270442</td> 
+  <td align="right"> 1.24E-10</td>
+ </tr>
+ <tr>
+  <td>1.350</td> 
+  <td>0.8911514420</td> 
+  <td>0.89115144202666452</td> 
+  <td align="right"> 3.78E-11</td>
+ </tr>
+ <tr>
+  <td>1.355</td> 
+  <td>0.8906559235</td> 
+  <td>0.89065592343803057</td> 
+  <td align="right">-5.12E-11</td>
+ </tr>
+ <tr>
+  <td>1.360</td> 
+  <td>0.8901845324</td> 
+  <td>0.8901845323574008</td> 
+  <td align="right">-5.70E-11</td>
+ </tr>
+ <tr>
+  <td>1.365</td> 
+  <td>0.8897371116</td> 
+  <td>0.88973711163470881</td> 
+  <td align="right"> 3.11E-11</td>
+ </tr>
+ <tr>
+  <td>1.370</td> 
+  <td>0.8893135074</td> 
+  <td>0.88931350742948501</td> 
+  <td align="right"> 4.09E-11</td>
+ </tr>
+ <tr>
+  <td>1.375</td> 
+  <td>0.8889135692</td> 
+  <td>0.88891356915622532</td> 
+  <td align="right">-5.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.380</td> 
+  <td>0.8885371494</td> 
+  <td>0.88853714943101736</td> 
+  <td align="right"> 2.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.385</td> 
+  <td>0.8881841041</td> 
+  <td>0.88818410401940351</td> 
+  <td align="right">-9.53E-11</td>
+ </tr>
+ <tr>
+  <td>1.390</td> 
+  <td>0.8878542918</td> 
+  <td>0.88785429178544073</td> 
+  <td align="right">-1.00E-11</td>
+ </tr>
+ <tr>
+  <td>1.395</td> 
+  <td>0.8875475748</td> 
+  <td>0.88754757464193323</td> 
+  <td align="right">-1.49E-10</td>
+ </tr>
+ <tr>
+  <td>1.400</td> 
+  <td>0.8872638175</td> 
+  <td>0.88726381750180738</td> 
+  <td align="right">-7.13E-12</td>
+ </tr>
+ <tr>
+  <td>1.405</td> 
+  <td>0.8870028884</td> 
+  <td>0.88700288823059736</td> 
+  <td align="right">-1.66E-10</td>
+ </tr>
+ <tr>
+  <td>1.410</td> 
+  <td>0.8867646576</td> 
+  <td>0.88676465760002188</td> 
+  <td align="right"> 3.66E-12</td>
+ </tr>
+ <tr>
+  <td>1.415</td> 
+  <td>0.8865489993</td> 
+  <td>0.88654899924499497</td> 
+  <td align="right">-4.45E-11</td>
+ </tr>
+ <tr>
+  <td>1.420</td> 
+  <td>0.8863557896</td> 
+  <td>0.88635578960951567</td> 
+  <td align="right">-1.60E-12</td>
+ </tr>
+ <tr>
+  <td>1.425</td> 
+  <td>0.8861849081</td> 
+  <td>0.88618490791840432</td> 
+  <td align="right">-1.81E-10</td>
+ </tr>
+ <tr>
+  <td>1.430</td> 
+  <td>0.8860362361</td> 
+  <td>0.88603623612466142</td> 
+  <td align="right"> 2.35E-11</td>
+ </tr>
+ <tr>
+  <td>1.435</td> 
+  <td>0.8859096587</td> 
+  <td>0.88590965887072826</td> 
+  <td align="right"> 1.59E-10</td>
+ </tr>
+ <tr>
+  <td>1.440</td> 
+  <td>0.8858050635</td> 
+  <td>0.88580506344804788</td> 
+  <td align="right">-5.45E-11</td>
+ </tr>
+ <tr>
+  <td>1.445</td> 
+  <td>0.8857223397</td> 
+  <td>0.88572233975753722</td> 
+  <td align="right"> 5.12E-11</td>
+ </tr>
+ <tr>
+  <td>1.450</td> 
+  <td>0.8856613803</td> 
+  <td>0.88566138027095553</td> 
+  <td align="right">-3.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.455</td> 
+  <td>0.8856220700</td> 
+  <td>0.88562207999314335</td> 
+  <td align="right"> 9.99E-9</td>
+ </tr>
+ <tr>
+  <td>1.460</td> 
+  <td>0.8856043364</td> 
+  <td>0.88560433642511449</td> 
+  <td align="right"> 3.29E-11</td>
+ </tr>
+ <tr>
+  <td>1.465</td> 
+  <td>0.8856080495</td> 
+  <td>0.88560804952797856</td> 
+  <td align="right"> 4.00E-11</td>
+ </tr>
+ <tr>
+  <td>1.470</td> 
+  <td>0.8856331217</td> 
+  <td>0.88563312168767672</td> 
+  <td align="right">-2.25E-11</td>
+ </tr>
+ <tr>
+  <td>1.475</td> 
+  <td>0.8856794575</td> 
+  <td>0.88567945767984679</td> 
+  <td align="right"> 1.68E-10</td>
+ </tr>
+ <tr>
+  <td>1.480</td> 
+  <td>0.8857469646</td> 
+  <td>0.88574696463853297</td> 
+  <td align="right"> 3.58E-11</td>
+ </tr>
+ <tr>
+  <td>1.485</td> 
+  <td>0.8858355520</td> 
+  <td>0.88583555202000774</td> 
+  <td align="right"> 1.39E-11</td>
+ </tr>
+ <tr>
+  <td>1.490</td> 
+  <td>0.8859451316</td> 
+  <td>0.885945131572484</td> 
+  <td align="right">-2.22E-11</td>
+ </tr>
+ <tr>
+  <td>1.495</td> 
+  <td>0.8860756174</td> 
+  <td>0.88607561730422169</td> 
+  <td align="right">-9.20E-11</td>
+ </tr>
+ <tr>
+  <td>1.500</td> 
+  <td>0.8862269255</td> 
+  <td>0.88622692545275816</td> 
+  <td align="right">-5.14E-11</td>
+ </tr>
+ <tr>
+  <td>1.505</td> 
+  <td>0.8863989744</td> 
+  <td>0.88639897445482596</td> 
+  <td align="right"> 5.62E-11</td>
+ </tr>
+ <tr>
+  <td>1.510</td> 
+  <td>0.8865916850</td> 
+  <td>0.88659168491694862</td> 
+  <td align="right">-8.75E-11</td>
+ </tr>
+ <tr>
+  <td>1.515</td> 
+  <td>0.8868049797</td> 
+  <td>0.88680497958669369</td> 
+  <td align="right">-1.15E-10</td>
+ </tr>
+ <tr>
+  <td>1.520</td> 
+  <td>0.8870387833</td> 
+  <td>0.88703878332457031</td> 
+  <td align="right"> 3.78E-11</td>
+ </tr>
+ <tr>
+  <td>1.525</td> 
+  <td>0.8872930231</td> 
+  <td>0.88729302307655866</td> 
+  <td align="right">-3.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.530</td> 
+  <td>0.8875676278</td> 
+  <td>0.88756762784725507</td> 
+  <td align="right"> 5.05E-11</td>
+ </tr>
+ <tr>
+  <td>1.535</td> 
+  <td>0.8878625287</td> 
+  <td>0.88786252867361892</td> 
+  <td align="right">-2.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.540</td> 
+  <td>0.8881776586</td> 
+  <td>0.88817765859552456</td> 
+  <td align="right">-1.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.545</td> 
+  <td>0.8885129527</td> 
+  <td>0.88851295264558472</td> 
+  <td align="right">-4.41E-11</td>
+ </tr>
+ <tr>
+  <td>1.550</td> 
+  <td>0.8888683478</td> 
+  <td>0.88886834780261559</td> 
+  <td align="right"> 2.74E-12</td>
+ </tr>
+ <tr>
+  <td>1.555</td> 
+  <td>0.8892437830</td> 
+  <td>0.88924378298210571</td> 
+  <td align="right">-1.06E-11</td>
+ </tr>
+ <tr>
+  <td>1.560</td> 
+  <td>0.8896391990</td> 
+  <td>0.88963919900923583</td> 
+  <td align="right">-3.65E-12</td>
+ </tr>
+ <tr>
+  <td>1.565</td> 
+  <td>0.8900545387</td> 
+  <td>0.89005453859597561</td> 
+  <td align="right">-1.04E-10</td>
+ </tr>
+ <tr>
+  <td>1.570</td> 
+  <td>0.8904897463</td> 
+  <td>0.89048974631869759</td> 
+  <td align="right"> 2.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.575</td> 
+  <td>0.8909447686</td> 
+  <td>0.89094476859629979</td> 
+  <td align="right"> 8.93E-12</td>
+ </tr>
+ <tr>
+  <td>1.580</td> 
+  <td>0.8914195537</td> 
+  <td>0.89141955366882042</td> 
+  <td align="right">-2.38E-11</td>
+ </tr>
+ <tr>
+  <td>1.585</td> 
+  <td>0.8919140515</td> 
+  <td>0.8919140515765388</td> 
+  <td align="right"> 8.47E-11</td>
+ </tr>
+ <tr>
+  <td>1.590</td> 
+  <td>0.8924282141</td> 
+  <td>0.8924282141395512</td> 
+  <td align="right"> 3.07E-11</td>
+ </tr>
+ <tr>
+  <td>1.595</td> 
+  <td>0.8929619949</td> 
+  <td>0.89296199493781103</td> 
+  <td align="right"> 4.74E-11</td>
+ </tr>
+ <tr>
+  <td>1.600</td> 
+  <td>0.8935153493</td> 
+  <td>0.89351534928506793</td> 
+  <td align="right">-2.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.605</td> 
+  <td>0.8940882342</td> 
+  <td>0.89408823423580575</td> 
+  <td align="right"> 3.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.610</td> 
+  <td>0.8946806085</td> 
+  <td>0.89468060852796683</td> 
+  <td align="right"> 2.74E-11</td>
+ </tr>
+ <tr>
+  <td>1.615</td> 
+  <td>0.8952924327</td> 
+  <td>0.89529243259029823</td> 
+  <td align="right">-9.74E-11</td>
+ </tr>
+ <tr>
+  <td>1.620</td> 
+  <td>0.8959236685</td> 
+  <td>0.89592366851824745</td> 
+  <td align="right"> 2.86E-11</td>
+ </tr>
+ <tr>
+  <td>1.625</td> 
+  <td>0.8965742800</td> 
+  <td>0.89657428005659789</td> 
+  <td align="right"> 6.46E-11</td>
+ </tr>
+ <tr>
+  <td>1.630</td> 
+  <td>0.8972442326</td> 
+  <td>0.89724423258250552</td> 
+  <td align="right">-7.80E-12</td>
+ </tr>
+ <tr>
+  <td>1.635</td> 
+  <td>0.8979334930</td> 
+  <td>0.89793349308892934</td> 
+  <td align="right"> 9.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.640</td> 
+  <td>0.8986420302</td> 
+  <td>0.89864203016845012</td> 
+  <td align="right">-2.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.645</td> 
+  <td>0.8993698138</td> 
+  <td>0.89936981399746452</td> 
+  <td align="right"> 2.04E-10</td>
+ </tr>
+ <tr>
+  <td>1.650</td> 
+  <td>0.9001168163</td> 
+  <td>0.9001168163207548</td> 
+  <td align="right"> 1.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.655</td> 
+  <td>0.9008830104</td> 
+  <td>0.90088301043641827</td> 
+  <td align="right"> 2.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.660</td> 
+  <td>0.9016683712</td> 
+  <td>0.90166837118115595</td> 
+  <td align="right">-1.49E-11</td>
+ </tr>
+ <tr>
+  <td>1.665</td> 
+  <td>0.9024728748</td> 
+  <td>0.90247287490643413</td> 
+  <td align="right"> 1.16E-10</td>
+ </tr>
+ <tr>
+  <td>1.670</td> 
+  <td>0.9032964995</td> 
+  <td>0.9032964995021503</td> 
+  <td align="right">-1.09E-11</td>
+ </tr>
+ <tr>
+  <td>1.675</td> 
+  <td>0.9041392243</td> 
+  <td>0.90413922432675797</td> 
+  <td align="right"> 3.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.680</td> 
+  <td>0.9050010302</td> 
+  <td>0.90500103023115419</td> 
+  <td align="right"> 4.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.685</td> 
+  <td>0.9058818996</td> 
+  <td>0.90588189953639731</td> 
+  <td align="right">-7.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.690</td> 
+  <td>0.9067818160</td> 
+  <td>0.90678181602099839</td> 
+  <td align="right"> 9.93E-12</td>
+ </tr>
+ <tr>
+  <td>1.695</td> 
+  <td>0.9077007650</td> 
+  <td>0.90770076490852225</td> 
+  <td align="right">-9.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.700</td> 
+  <td>0.9086387329</td> 
+  <td>0.90863873285549646</td> 
+  <td align="right">-5.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.705</td> 
+  <td>0.9095957079</td> 
+  <td>0.90959570793962097</td> 
+  <td align="right"> 4.25E-11</td>
+ </tr>
+ <tr>
+  <td>1.710</td> 
+  <td>0.9105716796</td> 
+  <td>0.9105716796482709</td> 
+  <td align="right"> 5.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.715</td> 
+  <td>0.9115666390</td> 
+  <td>0.91156663886729161</td> 
+  <td align="right">-1.31E-10</td>
+ </tr>
+ <tr>
+  <td>1.720</td> 
+  <td>0.9125805779</td> 
+  <td>0.91258057787007674</td> 
+  <td align="right">-1.93E-11</td>
+ </tr>
+ <tr>
+  <td>1.725</td> 
+  <td>0.9136134904</td> 
+  <td>0.91361349029479011</td> 
+  <td align="right">-1.16E-10</td>
+ </tr>
+ <tr>
+  <td>1.730</td> 
+  <td>0.9146653712</td> 
+  <td>0.91466537118231861</td> 
+  <td align="right">-2.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.735</td> 
+  <td>0.9157362171</td> 
+  <td>0.9157362168940244</td> 
+  <td align="right">-2.15E-10</td>
+ </tr>
+ <tr>
+  <td>1.740</td> 
+  <td>0.9168260252</td> 
+  <td>0.91682602514979106</td> 
+  <td align="right">-5.47E-11</td>
+ </tr>
+ <tr>
+  <td>1.745</td> 
+  <td>0.9179347950</td> 
+  <td>0.91793479500653363</td> 
+  <td align="right"> 8.97E-12</td>
+ </tr>
+ <tr>
+  <td>1.750</td> 
+  <td>0.9190625268</td> 
+  <td>0.91906252684888312</td> 
+  <td align="right"> 3.95E-11</td>
+ </tr>
+ <tr>
+  <td>1.755</td> 
+  <td>0.9202092224</td> 
+  <td>0.92020922238011904</td> 
+  <td align="right">-3.48E-11</td>
+ </tr>
+ <tr>
+  <td>1.760</td> 
+  <td>0.9213748846</td> 
+  <td>0.92137488461334993</td> 
+  <td align="right"> 4.68E-12</td>
+ </tr>
+ <tr>
+  <td>1.765</td> 
+  <td>0.9225595178</td> 
+  <td>0.92255951786293755</td> 
+  <td align="right"> 4.88E-11</td>
+ </tr>
+ <tr>
+  <td>1.770</td> 
+  <td>0.9237631277</td> 
+  <td>0.9237631277361581</td> 
+  <td align="right"> 2.96E-11</td>
+ </tr>
+ <tr>
+  <td>1.775</td> 
+  <td>0.9249857211</td> 
+  <td>0.92498572112510025</td> 
+  <td align="right"> 2.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.780</td> 
+  <td>0.9262273062</td> 
+  <td>0.92622730619879157</td> 
+  <td align="right"> 8.37E-12</td>
+ </tr>
+ <tr>
+  <td>1.785</td> 
+  <td>0.9274878926</td> 
+  <td>0.92748789239555507</td> 
+  <td align="right">-1.97E-10</td>
+ </tr>
+ <tr>
+  <td>1.790</td> 
+  <td>0.9287674904</td> 
+  <td>0.92876749040057904</td> 
+  <td align="right">-3.84E-12</td>
+ </tr>
+ <tr>
+  <td>1.795</td> 
+  <td>0.9300661123</td> 
+  <td>0.93006611219852275</td> 
+  <td align="right">-1.13E-10</td>
+ </tr>
+ <tr>
+  <td>1.800</td> 
+  <td>0.9313837710</td> 
+  <td>0.93138377097715253</td> 
+  <td align="right">-2.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.805</td> 
+  <td>0.9327204811</td> 
+  <td>0.93272048117993289</td> 
+  <td align="right"> 8.20E-11</td>
+ </tr>
+ <tr>
+  <td>1.810</td> 
+  <td>0.9340762585</td> 
+  <td>0.93407625848467779</td> 
+  <td align="right">-2.05E-11</td>
+ </tr>
+ <tr>
+  <td>1.815</td> 
+  <td>0.9354511198</td> 
+  <td>0.93545111979719375</td> 
+  <td align="right"> 8.27E-12</td>
+ </tr>
+ <tr>
+  <td>1.820</td> 
+  <td>0.9368450832</td> 
+  <td>0.93684508324512517</td> 
+  <td align="right"> 4.80E-11</td>
+ </tr>
+ <tr>
+  <td>1.825</td> 
+  <td>0.9382581682</td> 
+  <td>0.93825816817200214</td> 
+  <td align="right">-2.82E-11</td>
+ </tr>
+ <tr>
+  <td>1.830</td> 
+  <td>0.9396903951</td> 
+  <td>0.93969039513148056</td> 
+  <td align="right"> 1.86E-11</td>
+ </tr>
+ <tr>
+  <td>1.835</td> 
+  <td>0.9411417859</td> 
+  <td>0.94114178588178177</td> 
+  <td align="right">-2.64E-11</td>
+ </tr>
+ <tr>
+  <td>1.840</td> 
+  <td>0.9426123634</td> 
+  <td>0.94261236338031951</td> 
+  <td align="right">-2.35E-11</td>
+ </tr>
+ <tr>
+  <td>1.845</td> 
+  <td>0.9441021519</td> 
+  <td>0.94410215177851575</td> 
+  <td align="right">-1.22E-10</td>
+ </tr>
+ <tr>
+  <td>1.850</td> 
+  <td>0.9456111764</td> 
+  <td>0.94561117639912362</td> 
+  <td align="right">-2.02E-12</td>
+ </tr>
+ <tr>
+  <td>1.855</td> 
+  <td>0.9471394637</td> 
+  <td>0.94713946380190617</td> 
+  <td align="right"> 9.43E-11</td>
+ </tr>
+ <tr>
+  <td>1.860</td> 
+  <td>0.9486870417</td> 
+  <td>0.94868704167359708</td> 
+  <td align="right">-2.86E-11</td>
+ </tr>
+ <tr>
+  <td>1.865</td> 
+  <td>0.9502539389</td> 
+  <td>0.95025393889348797</td> 
+  <td align="right">-1.33E-11</td>
+ </tr>
+ <tr>
+  <td>1.870</td> 
+  <td>0.9518401855</td> 
+  <td>0.95184018551169203</td> 
+  <td align="right"> 9.61E-12</td>
+ </tr>
+ <tr>
+  <td>1.875</td> 
+  <td>0.9534458127</td> 
+  <td>0.95344581274503493</td> 
+  <td align="right"> 5.77E-11</td>
+ </tr>
+ <tr>
+  <td>1.880</td> 
+  <td>0.9550708530</td> 
+  <td>0.95507085297311556</td> 
+  <td align="right">-2.73E-11</td>
+ </tr>
+ <tr>
+  <td>1.885</td> 
+  <td>0.9567153398</td> 
+  <td>0.95671533973453671</td> 
+  <td align="right">-6.02E-11</td>
+ </tr>
+ <tr>
+  <td>1.890</td> 
+  <td>0.9583793077</td> 
+  <td>0.95837930772329927</td> 
+  <td align="right"> 1.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.895</td> 
+  <td>0.9600627927</td> 
+  <td>0.960062792785362</td> 
+  <td align="right"> 8.60E-11</td>
+ </tr>
+ <tr>
+  <td>1.900</td> 
+  <td>0.9617658319</td> 
+  <td>0.96176583191536336</td> 
+  <td align="right"> 2.60E-11</td>
+ </tr>
+ <tr>
+  <td>1.905</td> 
+  <td>0.9634884632</td> 
+  <td>0.96348846325350124</td> 
+  <td align="right"> 5.75E-11</td>
+ </tr>
+ <tr>
+  <td>1.910</td> 
+  <td>0.9652307261</td> 
+  <td>0.96523072608257054</td> 
+  <td align="right">-3.05E-11</td>
+ </tr>
+ <tr>
+  <td>1.915</td> 
+  <td>0.9669926608</td> 
+  <td>0.96699266080453206</td> 
+  <td align="right"> 5.78E-13</td>
+ </tr>
+ <tr>
+  <td>1.920</td> 
+  <td>0.9687743090</td> 
+  <td>0.96877430902013406</td> 
+  <td align="right"> 1.66E-11</td>
+ </tr>
+ <tr>
+  <td>1.925</td> 
+  <td>0.9705757134</td> 
+  <td>0.97057571340334281</td> 
+  <td align="right">-3.67E-12</td>
+ </tr>
+ <tr>
+  <td>1.930</td> 
+  <td>0.9723969178</td> 
+  <td>0.9723969177808085</td> 
+  <td align="right">-5.87E-12</td>
+ </tr>
+ <tr>
+  <td>1.935</td> 
+  <td>0.9742379672</td> 
+  <td>0.97423796710926569</td> 
+  <td align="right">-8.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.940</td> 
+  <td>0.9760989075</td> 
+  <td>0.97609890747347727</td> 
+  <td align="right">-2.67E-11</td>
+ </tr>
+ <tr>
+  <td>1.945</td> 
+  <td>0.9779797861</td> 
+  <td>0.97797978608432246</td> 
+  <td align="right">-2.76E-11</td>
+ </tr>
+ <tr>
+  <td>1.950</td> 
+  <td>0.9798806513</td> 
+  <td>0.9798806512770295</td> 
+  <td align="right">-3.65E-11</td>
+ </tr>
+ <tr>
+  <td>1.955</td> 
+  <td>0.9818015524</td> 
+  <td>0.98180155250954815</td> 
+  <td align="right"> 1.02E-10</td>
+ </tr>
+ <tr>
+  <td>1.960</td> 
+  <td>0.9837425404</td> 
+  <td>0.98374254036106346</td> 
+  <td align="right">-5.01E-11</td>
+ </tr>
+ <tr>
+  <td>1.965</td> 
+  <td>0.9857036664</td> 
+  <td>0.985703666530647</td> 
+  <td align="right"> 1.27E-10</td>
+ </tr>
+ <tr>
+  <td>1.970</td> 
+  <td>0.9876849838</td> 
+  <td>0.98768498383604675</td> 
+  <td align="right"> 4.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.975</td> 
+  <td>0.9896865462</td> 
+  <td>0.98968654618919183</td> 
+  <td align="right">-1.77E-11</td>
+ </tr>
+ <tr>
+  <td>1.980</td> 
+  <td>0.9917084087</td> 
+  <td>0.99170840868869103</td> 
+  <td align="right">-3.22E-12</td>
+ </tr>
+ <tr>
+  <td>1.985</td> 
+  <td>0.9937506274</td> 
+  <td>0.9937506274792185</td> 
+  <td align="right"> 6.46E-11</td>
+ </tr>
+ <tr>
+  <td>1.990</td> 
+  <td>0.9958132598</td> 
+  <td>0.99581325984380575</td> 
+  <td align="right"> 4.71E-11</td>
+ </tr>
+ <tr>
+  <td>1.995</td> 
+  <td>0.9978963643</td> 
+  <td>0.99789636418011041</td> 
+  <td align="right">-1.27E-10</td>
+ </tr>
+</table>
+
+
+<h4>The Psi Function</h4>
+
+This table was constructed from the published values in the 
+Handbook of Mathematical Functions, by Milton Abramowitz
+and Irene A. Stegun, by Dover (1965), pp 267-270.
+
+Axiom implements the polygamma function which allows for multiple
+derivatives. The Psi function is a special case of the polygamma
+function for zero derivatives. For the purpose of this table it
+is defined as:
+<pre>
+   Psi(x) == polygamma(0,x)
+</pre>
+
+The first column is the point where the Gamma function is evaluated.
+The second column is the value reported in the Handbook.
+The third column is the actual value computed by Axiom at the given point.
+The fourth column is the difference of Axiom's value and the Handbook value.
+
+<table border="1">
+ <tr>
+  <th>point</th>
+  <th>Handbook Value</th>
+  <th>Axiom Computed Value</th>
+  <th>Difference</th>
+ </tr>
+ <tr>
+  <td>1.000</td>
+  <td>-0.5772156649</td>
+  <td>-0.57721566490153275</td>
+  <td align="right">-1.53E-12</td>
+ </tr>
+ <tr>
+  <td>1.005</td>
+  <td>-0.5690209113</td>
+  <td>-0.56902091134438304</td>
+  <td align="right"> -4.43E-11</td>
+ </tr>
+ <tr>
+  <td>1.010</td>
+  <td>-0.5608854579</td>
+  <td>-0.56088545786867472</td>
+  <td align="right"> 3.13E-11</td>
+ </tr>
+ <tr>
+  <td>1.015</td>
+  <td>-0.5528085156</td>
+  <td>-0.55280851559434629</td>
+  <td align="right"> 5.65E-12</td>
+ </tr>
+ <tr>
+  <td>1.020</td>
+  <td>-0.5447893105</td>
+  <td>-0.54478931045617984</td>
+  <td align="right"> 4.38E-11</td>
+ </tr>
+ <tr>
+  <td>1.025</td>
+  <td>-0.5368270828</td>
+  <td>-0.53682708284938863</td>
+  <td align="right"> -4.93E-11</td>
+ </tr>
+ <tr>
+  <td>1.030</td>
+  <td>-0.5289210873</td>
+  <td>-0.5289210872854303</td>
+  <td align="right"> 1.45E-11</td>
+ </tr>
+ <tr>
+  <td>1.035</td>
+  <td>-0.5210705921</td>
+  <td>-0.52107059205771</td>
+  <td align="right"> 4.22E-11</td>
+ </tr>
+ <tr>
+  <td>1.040</td>
+  <td>-0.5132748789</td>
+  <td>-0.51327487891683021</td>
+  <td align="right"> -1.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.045</td>
+  <td>-0.5055332428</td>
+  <td>-0.50553324275508449</td>
+  <td align="right"> 4.49E-11</td>
+ </tr>
+ <tr>
+  <td>1.050</td>
+  <td>-0.4978449913</td>
+  <td>-0.49784499129987031</td>
+  <td align="right"> 1.29E-13</td>
+ </tr>
+ <tr>
+  <td>1.055</td>
+  <td>-0.4902094448</td>
+  <td>-0.49020944481574569</td>
+  <td align="right"> -1.57E-11</td>
+ </tr>
+ <tr>
+  <td>1.060</td>
+  <td>-0.4826259358</td>
+  <td>-0.48262593581482538</td>
+  <td align="right"> -1.48E-11</td>
+ </tr>
+ <tr>
+  <td>1.065</td>
+  <td>-0.4750938088</td>
+  <td>-0.47509380877526647</td>
+  <td align="right"> 2.47E-11</td>
+ </tr>
+ <tr>
+  <td>1.070</td>
+  <td>-0.4676124199</td>
+  <td>-0.46761241986755342</td>
+  <td align="right"> 3.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.075</td>
+  <td>-0.4601811367</td>
+  <td>-0.4601811366883593</td>
+  <td align="right"> 1.16E-11</td>
+ </tr>
+ <tr>
+  <td>1.080</td>
+  <td>-0.4527993380</td>
+  <td>-0.45279933800171246</td>
+  <td align="right"> -1.71E-12</td>
+ </tr>
+ <tr>
+  <td>1.085</td>
+  <td>-0.4454664135</td>
+  <td>-0.44546641348725191</td>
+  <td align="right"> 1.27E-11</td>
+ </tr>
+ <tr>
+  <td>1.090</td>
+  <td>-0.4381817635</td>
+  <td>-0.43818176349533489</td>
+  <td align="right"> 4.66E-12</td>
+ </tr>
+ <tr>
+  <td>1.095</td>
+  <td>-0.4309447988</td>
+  <td>-0.43094479880878706</td>
+  <td align="right"> -8.78E-12</td>
+ </tr>
+ <tr>
+  <td>1.100</td>
+  <td>-0.4237549404</td>
+  <td>-0.42375494041107653</td>
+  <td align="right"> -1.10E-11</td>
+ </tr>
+ <tr>
+  <td>1.105</td>
+  <td>-0.4166116193</td>
+  <td>-0.41661161926071655</td>
+  <td align="right"> 3.92E-11</td>
+ </tr>
+ <tr>
+  <td>1.110</td>
+  <td>-0.4095142761</td>
+  <td>-0.40951427607169383</td>
+  <td align="right"> 2.83E-11</td>
+ </tr>
+ <tr>
+  <td>1.115</td>
+  <td>-0.4024623611</td>
+  <td>-0.40246236109974648</td>
+  <td align="right"> 2.53E-13</td>
+ </tr>
+ <tr>
+  <td>1.120</td>
+  <td>-0.3954553339</td>
+  <td>-0.39545533393429283</td>
+  <td align="right"> -3.42E-11</td>
+ </tr>
+ <tr>
+  <td>1.125</td>
+  <td>-0.3884926633</td>
+  <td>-0.38849266329585463</td>
+  <td align="right"> 4.14E-12</td>
+ </tr>
+ <tr>
+  <td>1.130</td>
+  <td>-0.3815738268</td>
+  <td>-0.38157382683879215</td>
+  <td align="right"> -3.87E-11</td>
+ </tr>
+ <tr>
+  <td>1.135</td>
+  <td>-0.3746983110</td>
+  <td>-0.37469831095919082</td>
+  <td align="right"> 4.08E-11</td>
+ </tr>
+ <tr>
+  <td>1.140</td>
+  <td>-0.3678656106</td>
+  <td>-0.36786561060774969</td>
+  <td align="right"> -7.74E-12</td>
+ </tr>
+ <tr>
+  <td>1.145</td>
+  <td>-0.3610752291</td>
+  <td>-0.361075229107509</td>
+  <td align="right"> -7.50E-12</td>
+ </tr>
+ <tr>
+  <td>1.150</td>
+  <td>-0.3543266780</td>
+  <td>-0.35432667797627904</td>
+  <td align="right"> 2.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.155</td>
+  <td>-0.3476194768</td>
+  <td>-0.34761947675362337</td>
+  <td align="right"> 4.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.160</td>
+  <td>-0.3409531528</td>
+  <td>-0.34095315283226135</td>
+  <td align="right"> -3.22E-11</td>
+ </tr>
+ <tr>
+  <td>1.165</td>
+  <td>-0.3343272413</td>
+  <td>-0.3343272412937619</td>
+  <td align="right"> 6.23E-12</td>
+ </tr>
+ <tr>
+  <td>1.170</td>
+  <td>-0.3277412847</td>
+  <td>-0.3277412847483927</td>
+  <td align="right"> -4.83E-11</td>
+ </tr>
+ <tr>
+  <td>1.175</td>
+  <td>-0.3211948332</td>
+  <td>-0.3211948331790081</td>
+  <td align="right"> 2.09E-11</td>
+ </tr>
+ <tr>
+  <td>1.180</td>
+  <td>-0.3146874438</td>
+  <td>-0.31468744378886082</td>
+  <td align="right"> 1.11E-11</td>
+ </tr>
+ <tr>
+  <td>1.185</td>
+  <td>-0.3082186809</td>
+  <td>-0.30821868085320625</td>
+  <td align="right"> 4.67E-11</td>
+ </tr>
+ <tr>
+  <td>1.190</td>
+  <td>-0.3017881156</td>
+  <td>-0.30178811557461016</td>
+  <td align="right"> 2.53E-11</td>
+ </tr>
+ <tr>
+  <td>1.195</td>
+  <td>-0.2953953259</td>
+  <td>-0.2953953259418296</td>
+  <td align="right"> -4.18E-11</td>
+ </tr>
+ <tr>
+  <td>1.200</td>
+  <td>-0.2890398966</td>
+  <td>-0.28903989659218843</td>
+  <td align="right"> 7.81E-12</td>
+ </tr>
+ <tr>
+  <td>1.205</td>
+  <td>-0.2827214187</td>
+  <td>-0.28272141867731704</td>
+  <td align="right"> 2.26E-11</td>
+ </tr>
+ <tr>
+  <td>1.210</td>
+  <td>-0.2764394897</td>
+  <td>-0.2764394897321919</td>
+  <td align="right"> -3.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.215</td>
+  <td>-0.2701937135</td>
+  <td>-0.27019371354735244</td>
+  <td align="right"> -4.73E-11</td>
+ </tr>
+ <tr>
+  <td>1.220</td>
+  <td>-0.2639837000</td>
+  <td>-0.26398370004422023</td>
+  <td align="right"> -4.42E-11</td>
+ </tr>
+ <tr>
+  <td>1.225</td>
+  <td>-0.2578090652</td>
+  <td>-0.25780906515343338</td>
+  <td align="right"> 4.65E-11</td>
+ </tr>
+ <tr>
+  <td>1.230</td>
+  <td>-0.2516694307</td>
+  <td>-0.25166943069609982</td>
+  <td align="right"> 3.90E-12</td>
+ </tr>
+ <tr>
+  <td>1.235</td>
+  <td>-0.2455644243</td>
+  <td>-0.24556442426789726</td>
+  <td align="right"> 3.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.240</td>
+  <td>-0.2394936791</td>
+  <td>-0.23949367912593666</td>
+  <td align="right"> -2.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.245</td>
+  <td>-0.2334568341</td>
+  <td>-0.23345683407831253</td>
+  <td align="right"> 2.16E-11</td>
+ </tr>
+ <tr>
+  <td>1.250</td>
+  <td>-0.2274535334</td>
+  <td>-0.22745353337626528</td>
+  <td align="right"> 2.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.255</td>
+  <td>-0.2214834266</td>
+  <td>-0.22148342660888165</td>
+  <td align="right"> -8.88E-12</td>
+ </tr>
+ <tr>
+  <td>1.260</td>
+  <td>-0.2155461686</td>
+  <td>-0.21554616860026521</td>
+  <td align="right"> -2.65E-13</td>
+ </tr>
+ <tr>
+  <td>1.265</td>
+  <td>-0.2096414193</td>
+  <td>-0.20964141930911384</td>
+  <td align="right"> -9.11E-12</td>
+ </tr>
+ <tr>
+  <td>1.270</td>
+  <td>-0.2037688437</td>
+  <td>-0.20376884373062343</td>
+  <td align="right"> -3.06E-11</td>
+ </tr>
+ <tr>
+  <td>1.275</td>
+  <td>-0.1979281118</td>
+  <td>-0.19792811180067393</td>
+  <td align="right"> -6.73E-13</td>
+ </tr>
+ <tr>
+  <td>1.280</td>
+  <td>-0.1921188983</td>
+  <td>-0.19211889830222173</td>
+  <td align="right"> -2.22E-12</td>
+ </tr>
+ <tr>
+  <td>1.285</td>
+  <td>-0.1863408828</td>
+  <td>-0.18634088277384209</td>
+  <td align="right"> 2.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.290</td>
+  <td>-0.1805937494</td>
+  <td>-0.1805937494203691</td>
+  <td align="right"> -2.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.295</td>
+  <td>-0.1748771870</td>
+  <td>-0.17487718702556942</td>
+  <td align="right"> -2.55E-11</td>
+ </tr>
+ <tr>
+  <td>1.300</td>
+  <td>-0.1691908889</td>
+  <td>-0.16919088886679934</td>
+  <td align="right"> 3.32E-11</td>
+ </tr>
+ <tr>
+  <td>1.305</td>
+  <td>-0.1635345526</td>
+  <td>-0.163534552631597</td>
+  <td align="right"> -3.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.310</td>
+  <td>-0.1579078803</td>
+  <td>-0.15790788033614178</td>
+  <td align="right"> -3.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.315</td>
+  <td>-0.1523105782</td>
+  <td>-0.15231057824555994</td>
+  <td align="right"> -4.55E-11</td>
+ </tr>
+ <tr>
+  <td>1.320</td>
+  <td>-0.1467423568</td>
+  <td>-0.1467423567959959</td>
+  <td align="right"> 4.00E-12</td>
+ </tr>
+ <tr>
+  <td>1.325</td>
+  <td>-0.1412029305</td>
+  <td>-0.14120293051842803</td>
+  <td align="right"> -1.84E-11</td>
+ </tr>
+ <tr>
+  <td>1.330</td>
+  <td>-0.1356920180</td>
+  <td>-0.13569201796416941</td>
+  <td align="right"> 3.58E-11</td>
+ </tr>
+ <tr>
+  <td>1.335</td>
+  <td>-0.1302093416</td>
+  <td>-0.13020934163201769</td>
+  <td align="right"> -3.20E-11</td>
+ </tr>
+ <tr>
+  <td>1.340</td>
+  <td>-0.1247546279</td>
+  <td>-0.12475462789700376</td>
+  <td align="right"> 2.99E-12</td>
+ </tr>
+ <tr>
+  <td>1.345</td>
+  <td>-0.1193276069</td>
+  <td>-0.11932760694070754</td>
+  <td align="right"> -4.07E-11</td>
+ </tr>
+ <tr>
+  <td>1.350</td>
+  <td>-0.1139280127</td>
+  <td>-0.11392801268308839</td>
+  <td align="right"> 1.69E-11</td>
+ </tr>
+ <tr>
+  <td>1.355</td>
+  <td>-0.1085555827</td>
+  <td>-0.10855558271580501</td>
+  <td align="right"> -1.58E-11</td>
+ </tr>
+ <tr>
+  <td>1.360</td>
+  <td>-0.1032100582</td>
+  <td>-0.10321005823697738</td>
+  <td align="right"> -3.69E-11</td>
+ </tr>
+ <tr>
+  <td>1.365</td>
+  <td>-0.0978911840</td>
+  <td>-0.097891183987354968</td>
+  <td align="right"> 1.26E-11</td>
+ </tr>
+ <tr>
+  <td>1.370</td>
+  <td>-0.0925987082</td>
+  <td>-0.092598708187860979</td>
+  <td align="right"> 1.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.375</td>
+  <td>-0.0873323825</td>
+  <td>-0.087332382478473081</td>
+  <td align="right"> 2.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.380</td>
+  <td>-0.0820919619</td>
+  <td>-0.082091961858406615</td>
+  <td align="right"> 4.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.385</td>
+  <td>-0.0768772046</td>
+  <td>-0.076877204627574525</td>
+  <td align="right"> -2.75E-11</td>
+ </tr>
+ <tr>
+  <td>1.390</td>
+  <td>-0.0716878723</td>
+  <td>-0.071687872329281643</td>
+  <td align="right"> -2.92E-11</td>
+ </tr>
+ <tr>
+  <td>1.395</td>
+  <td>-0.0665237297</td>
+  <td>-0.066523729694132228</td>
+  <td align="right"> 5.86E-12</td>
+ </tr>
+ <tr>
+  <td>1.400</td>
+  <td>-0.0613845446</td>
+  <td>-0.061384544585116108</td>
+  <td align="right"> 1.48E-11</td>
+ </tr>
+ <tr>
+  <td>1.405</td>
+  <td>-0.0562700879</td>
+  <td>-0.056270087943841696</td>
+  <td align="right"> -4.38E-11</td>
+ </tr>
+ <tr>
+  <td>1.410</td>
+  <td>-0.0511801337</td>
+  <td>-0.051180133737897426</td>
+  <td align="right"> -3.78E-11</td>
+ </tr>
+ <tr>
+  <td>1.415</td>
+  <td>-0.0461144589</td>
+  <td>-0.04.6114458909301992</td>
+  <td align="right"> -9.30E-12</td>
+ </tr>
+ <tr>
+  <td>1.420</td>
+  <td>-0.0410728433</td>
+  <td>-0.041072843324024277</td>
+  <td align="right"> -2.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.425</td>
+  <td>-0.0360550697</td>
+  <td>-0.036055069722547906</td>
+  <td align="right"> -2.25E-11</td>
+ </tr>
+ <tr>
+  <td>1.430</td>
+  <td>-0.0310609237</td>
+  <td>-0.031060923671447194</td>
+  <td align="right"> 2.85E-11</td>
+ </tr>
+ <tr>
+  <td>1.435</td>
+  <td>-0.0260901935</td>
+  <td>-0.02609019351596098</td>
+  <td align="right"> -1.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.440</td>
+  <td>-0.0211426703</td>
+  <td>-0.021142670333530678</td>
+  <td align="right"> -3.35E-11</td>
+ </tr>
+ <tr>
+  <td>1.445</td>
+  <td>-0.0162181479</td>
+  <td>-0.016218147888283685</td>
+  <td align="right"> 1.17E-11</td>
+ </tr>
+ <tr>
+  <td>1.450</td>
+  <td>-0.0113164226</td>
+  <td>-0.011316422586445718</td>
+  <td align="right"> 1.35E-11</td>
+ </tr>
+ <tr>
+  <td>1.455</td>
+  <td>-0.0064372934</td>
+  <td>-0.0064372934326406561</td>
+  <td align="right"> -3.26E-11</td>
+ </tr>
+ <tr>
+  <td>1.460</td>
+  <td>-0.0015805620</td>
+  <td>-0.0015805619870833398</td>
+  <td align="right"> 1.29E-11</td>
+ </tr>
+ <tr>
+  <td>1.465</td>
+  <td>0.0032539677</td>
+  <td>0.0032539676763745362</td>
+  <td align="right"> -2.36E-11</td>
+ </tr>
+ <tr>
+  <td>1.470</td>
+  <td>0.0080664890</td>
+  <td>0.0080664890113649745</td>
+  <td align="right"> 1.13E-11</td>
+ </tr>
+ <tr>
+  <td>1.475</td>
+  <td>0.0128571930</td>
+  <td>0.012857193039295334</td>
+  <td align="right"> 3.92E-11</td>
+ </tr>
+ <tr>
+  <td>1.480</td>
+  <td>0.0176262684</td>
+  <td>0.017626268388849287</td>
+  <td align="right"> -1.11E-11</td>
+ </tr>
+ <tr>
+  <td>1.485</td>
+  <td>0.0223739013</td>
+  <td>0.022373901334705404</td>
+  <td align="right"> 3.47E-11</td>
+ </tr>
+ <tr>
+  <td>1.490</td>
+  <td>0.0271002758</td>
+  <td>0.027100275835486465</td>
+  <td align="right"> 3.54E-11</td>
+ </tr>
+ <tr>
+  <td>1.495</td>
+  <td>0.0318055736</td>
+  <td>0.031805573570971468</td>
+  <td align="right"> -2.90E-11</td>
+ </tr>
+ <tr>
+  <td>1.500</td>
+  <td>0.0364899740</td>
+  <td>0.036489973978576673</td>
+  <td align="right"> -2.14E-11</td>
+ </tr>
+ <tr>
+  <td>1.505</td>
+  <td>0.0411536543</td>
+  <td>0.041153654289123542</td>
+  <td align="right"> -1.08E-11</td>
+ </tr>
+ <tr>
+  <td>1.510</td>
+  <td>0.0457967896</td>
+  <td>0.045796789561914686</td>
+  <td align="right"> -3.80E-11</td>
+ </tr>
+ <tr>
+  <td>1.515</td>
+  <td>0.0504195527</td>
+  <td>0.050419552719128236</td>
+  <td align="right"> 1.91E-11</td>
+ </tr>
+ <tr>
+  <td>1.520</td>
+  <td>0.0550221146</td>
+  <td>0.055022114579551307</td>
+  <td align="right"> -2.04E-11</td>
+ </tr>
+ <tr>
+  <td>1.525</td>
+  <td>0.0596046439</td>
+  <td>0.05960464389166209</td>
+  <td align="right"> -8.33E-12</td>
+ </tr>
+ <tr>
+  <td>1.530</td>
+  <td>0.0641673074</td>
+  <td>0.064167307366077231</td>
+  <td align="right"> -3.39E-11</td>
+ </tr>
+ <tr>
+  <td>1.535</td>
+  <td>0.0687102697</td>
+  <td>0.068710269707385141</td>
+  <td align="right"> 7.38E-12</td>
+ </tr>
+ <tr>
+  <td>1.540</td>
+  <td>0.0732336936</td>
+  <td>0.073233693645366138</td>
+  <td align="right"> 4.53E-11</td>
+ </tr>
+ <tr>
+  <td>1.545</td>
+  <td>0.0777377300</td>
+  <td>0.077737739965624497</td>
+  <td align="right"> 9.96E-9</td>
+ </tr>
+ <tr>
+  <td>1.550</td>
+  <td>0.0822225675</td>
+  <td>0.082222567539644631</td>
+  <td align="right"> 3.96E-11</td>
+ </tr>
+ <tr>
+  <td>1.555</td>
+  <td>0.0866883334</td>
+  <td>0.086688333354268288</td>
+  <td align="right"> -4.57E-11</td>
+ </tr>
+ <tr>
+  <td>1.560</td>
+  <td>0.0911351925</td>
+  <td>0.091135192540635401</td>
+  <td align="right"> 4.06E-11</td>
+ </tr>
+ <tr>
+  <td>1.565</td>
+  <td>0.0955632984</td>
+  <td>0.095563298402570163</td>
+  <td align="right"> 2.57E-12</td>
+ </tr>
+ <tr>
+  <td>1.570</td>
+  <td>0.0999728024</td>
+  <td>0.099972802444444731</td>
+  <td align="right"> 4.44E-11</td>
+ </tr>
+ <tr>
+  <td>1.575</td>
+  <td>0.1043638544</td>
+  <td>0.10436385439851947</td>
+  <td align="right"> -1.48E-12</td>
+ </tr>
+ <tr>
+  <td>1.580</td>
+  <td>0.1087366023</td>
+  <td>0.10873660225178161</td>
+  <td align="right"> -4.82E-11</td>
+ </tr>
+ <tr>
+  <td>1.585</td>
+  <td>0.1130911923</td>
+  <td>0.11309119227228603</td>
+  <td align="right"> -2.77E-11</td>
+ </tr>
+ <tr>
+  <td>1.590</td>
+  <td>0.1174277690</td>
+  <td>0.11742776903501095</td>
+  <td align="right"> 3.50E-11</td>
+ </tr>
+ <tr>
+  <td>1.595</td>
+  <td>0.1217464754</td>
+  <td>0.12174647544723916</td>
+  <td align="right"> 4.72E-11</td>
+ </tr>
+ <tr>
+  <td>1.600</td>
+  <td>0.1260474528</td>
+  <td>0.12604745277347584</td>
+  <td align="right"> -2.65E-11</td>
+ </tr>
+ <tr>
+  <td>1.605</td>
+  <td>0.1303308407</td>
+  <td>0.13033084065991318</td>
+  <td align="right"> -4.00E-11</td>
+ </tr>
+ <tr>
+  <td>1.610</td>
+  <td>0.1345967772</td>
+  <td>0.13459677715844587</td>
+  <td align="right"> -4.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.615</td>
+  <td>0.1388453988</td>
+  <td>0.13884539875025736</td>
+  <td align="right"> -4.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.620</td>
+  <td>0.1430768404</td>
+  <td>0.14307684036898005</td>
+  <td align="right"> -3.10E-11</td>
+ </tr>
+ <tr>
+  <td>1.625</td>
+  <td>0.1472912354</td>
+  <td>0.14729123542343325</td>
+  <td align="right"> 2.34E-11</td>
+ </tr>
+ <tr>
+  <td>1.630</td>
+  <td>0.1514887158</td>
+  <td>0.15148871581995815</td>
+  <td align="right"> 1.99E-11</td>
+ </tr>
+ <tr>
+  <td>1.635</td>
+  <td>0.1556694120</td>
+  <td>0.15566941198435302</td>
+  <td align="right"> -1.56E-11</td>
+ </tr>
+ <tr>
+  <td>1.640</td>
+  <td>0.1598334529</td>
+  <td>0.15983345288341522</td>
+  <td align="right"> -1.65E-11</td>
+ </tr>
+ <tr>
+  <td>1.645</td>
+  <td>0.1639809660</td>
+  <td>0.16398096604610457</td>
+  <td align="right"> 4.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.650</td>
+  <td>0.1681120776</td>
+  <td>0.16811207758432767</td>
+  <td align="right"> -1.56E-11</td>
+ </tr>
+ <tr>
+  <td>1.655</td>
+  <td>0.1722269122</td>
+  <td>0.17222691221335784</td>
+  <td align="right"> 1.33E-11</td>
+ </tr>
+ <tr>
+  <td>1.660</td>
+  <td>0.1763255933</td>
+  <td>0.17632559327189457</td>
+  <td align="right"> -2.81E-11</td>
+ </tr>
+ <tr>
+  <td>1.665</td>
+  <td>0.1804082427</td>
+  <td>0.18040824274177392</td>
+  <td align="right"> 4.17E-11</td>
+ </tr>
+ <tr>
+  <td>1.670</td>
+  <td>0.1844749813</td>
+  <td>0.1844749812673292</td>
+  <td align="right"> -3.26E-11</td>
+ </tr>
+ <tr>
+  <td>1.675</td>
+  <td>0.1885259282</td>
+  <td>0.18852592817442249</td>
+  <td align="right"> -2.55E-11</td>
+ </tr>
+ <tr>
+  <td>1.680</td>
+  <td>0.1925612015</td>
+  <td>0.19256120148913258</td>
+  <td align="right"> -1.08E-11</td>
+ </tr>
+ <tr>
+  <td>1.685</td>
+  <td>0.1965809180</td>
+  <td>0.19658091795613342</td>
+  <td align="right"> -4.38E-11</td>
+ </tr>
+ <tr>
+  <td>1.690</td>
+  <td>0.2005851931</td>
+  <td>0.20058519305674649</td>
+  <td align="right"> -4.32E-11</td>
+ </tr>
+ <tr>
+  <td>1.695</td>
+  <td>0.2045741410</td>
+  <td>0.20457414102668603</td>
+  <td align="right"> 2.66E-11</td>
+ </tr>
+ <tr>
+  <td>1.700</td>
+  <td>0.2085478749</td>
+  <td>0.20854787487349435</td>
+  <td align="right"> -2.65E-11</td>
+ </tr>
+ <tr>
+  <td>1.705</td>
+  <td>0.2125065064</td>
+  <td>0.21250650639368796</td>
+  <td align="right"> -6.31E-12</td>
+ </tr>
+ <tr>
+  <td>1.710</td>
+  <td>0.2164501462</td>
+  <td>0.21645014618960501</td>
+  <td align="right"> -1.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.715</td>
+  <td>0.2203789037</td>
+  <td>0.2203789036859658</td>
+  <td align="right"> -1.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.720</td>
+  <td>0.2242928871</td>
+  <td>0.22429288714615725</td>
+  <td align="right"> 4.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.725</td>
+  <td>0.2281922037</td>
+  <td>0.22819220368823745</td>
+  <td align="right"> -1.17E-11</td>
+ </tr>
+ <tr>
+  <td>1.730</td>
+  <td>0.2320769593</td>
+  <td>0.23207695930067274</td>
+  <td align="right"> 6.72E-13</td>
+ </tr>
+ <tr>
+  <td>1.735</td>
+  <td>0.2359472589</td>
+  <td>0.23594725885781176</td>
+  <td align="right"> -4.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.740</td>
+  <td>0.2398032061</td>
+  <td>0.23980320613509676</td>
+  <td align="right"> 3.50E-11</td>
+ </tr>
+ <tr>
+  <td>1.745</td>
+  <td>0.2436449038</td>
+  <td>0.24364490382402559</td>
+  <td align="right"> 2.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.750</td>
+  <td>0.2474724535</td>
+  <td>0.2474724535468612</td>
+  <td align="right"> 4.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.755</td>
+  <td>0.2512859559</td>
+  <td>0.25128595587109781</td>
+  <td align="right"> -2.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.760</td>
+  <td>0.2550855103</td>
+  <td>0.25508551032368809</td>
+  <td align="right"> 2.36E-11</td>
+ </tr>
+ <tr>
+  <td>1.765</td>
+  <td>0.2588712154</td>
+  <td>0.25887121540503744</td>
+  <td align="right"> 5.03E-12</td>
+ </tr>
+ <tr>
+  <td>1.770</td>
+  <td>0.2626431686</td>
+  <td>0.26264316860276249</td>
+  <td align="right"> 2.76E-12</td>
+ </tr>
+ <tr>
+  <td>1.775</td>
+  <td>0.2664014664</td>
+  <td>0.2664014664052331</td>
+  <td align="right"> 5.23E-12</td>
+ </tr>
+ <tr>
+  <td>1.780</td>
+  <td>0.2701462043</td>
+  <td>0.27014620431488368</td>
+  <td align="right"> 1.48E-11</td>
+ </tr>
+ <tr>
+  <td>1.785</td>
+  <td>0.2738774769</td>
+  <td>0.27387747686131236</td>
+  <td align="right"> -3.86E-11</td>
+ </tr>
+ <tr>
+  <td>1.790</td>
+  <td>0.2775953776</td>
+  <td>0.27759537761416786</td>
+  <td align="right"> 1.41E-11</td>
+ </tr>
+ <tr>
+  <td>1.795</td>
+  <td>0.2812999992</td>
+  <td>0.2812999991958266</td>
+  <td align="right"> -4.17E-12</td>
+ </tr>
+ <tr>
+  <td>1.800</td>
+  <td>0.2849914333</td>
+  <td>0.2849914332938619</td>
+  <td align="right"> -6.13E-12</td>
+ </tr>
+ <tr>
+  <td>1.805</td>
+  <td>0.2886697707</td>
+  <td>0.28866977067331689</td>
+  <td align="right"> -2.66E-11</td>
+ </tr>
+ <tr>
+  <td>1.810</td>
+  <td>0.2923351012</td>
+  <td>0.29233510118877948</td>
+  <td align="right"> -1.12E-11</td>
+ </tr>
+ <tr>
+  <td>1.815</td>
+  <td>0.2959875138</td>
+  <td>0.29598751379626109</td>
+  <td align="right"> -3.73E-12</td>
+ </tr>
+ <tr>
+  <td>1.820</td>
+  <td>0.2996270966</td>
+  <td>0.29962709656488773</td>
+  <td align="right"> -3.51E-11</td>
+ </tr>
+ <tr>
+  <td>1.825</td>
+  <td>0.3032539367</td>
+  <td>0.30325393668840539</td>
+  <td align="right"> -1.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.830</td>
+  <td>0.3068681205</td>
+  <td>0.30686812049650136</td>
+  <td align="right"> -3.49E-12</td>
+ </tr>
+ <tr>
+  <td>1.835</td>
+  <td>0.3104697335</td>
+  <td>0.31046973346594764</td>
+  <td align="right"> -3.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.840</td>
+  <td>0.3140588602</td>
+  <td>0.31405886023156859</td>
+  <td align="right"> 3.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.845</td>
+  <td>0.3176355846</td>
+  <td>0.31763558459703256</td>
+  <td align="right"> -2.96E-12</td>
+ </tr>
+ <tr>
+  <td>1.850</td>
+  <td>0.3211999895</td>
+  <td>0.32119998954547946</td>
+  <td align="right"> 4.54E-11</td>
+ </tr>
+ <tr>
+  <td>1.855</td>
+  <td>0.3247521572</td>
+  <td>0.32475215724997797</td>
+  <td align="right"> 4.99E-11</td>
+ </tr>
+ <tr>
+  <td>1.860</td>
+  <td>0.3282921691</td>
+  <td>0.32829216908382075</td>
+  <td align="right"> -1.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.865</td>
+  <td>0.3318201056</td>
+  <td>0.33182010563065989</td>
+  <td align="right"> 3.06E-11</td>
+ </tr>
+ <tr>
+  <td>1.870</td>
+  <td>0.3353360467</td>
+  <td>0.33533604669448569</td>
+  <td align="right"> -5.51E-12</td>
+ </tr>
+ <tr>
+  <td>1.875</td>
+  <td>0.3388400713</td>
+  <td>0.33884007130944738</td>
+  <td align="right"> 9.44E-12</td>
+ </tr>
+ <tr>
+  <td>1.880</td>
+  <td>0.3423322577</td>
+  <td>0.34233225774952925</td>
+  <td align="right"> 4.95E-11</td>
+ </tr>
+ <tr>
+  <td>1.885</td>
+  <td>0.3458126835</td>
+  <td>0.34581268353806771</td>
+  <td align="right"> 3.80E-11</td>
+ </tr>
+ <tr>
+  <td>1.890</td>
+  <td>0.3492814255</td>
+  <td>0.34928142545713492</td>
+  <td align="right"> -4.28E-11</td>
+ </tr>
+ <tr>
+  <td>1.895</td>
+  <td>0.3527385596</td>
+  <td>0.35273855955676792</td>
+  <td align="right"> -4.32E-11</td>
+ </tr>
+ <tr>
+  <td>1.900</td>
+  <td>0.3561841612</td>
+  <td>0.35618416116406026</td>
+  <td align="right"> -3.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.905</td>
+  <td>0.3596183049</td>
+  <td>0.35961830489211799</td>
+  <td align="right"> -7.88E-12</td>
+ </tr>
+ <tr>
+  <td>1.910</td>
+  <td>0.3630410646</td>
+  <td>0.36304106464888108</td>
+  <td align="right"> 4.88E-11</td>
+ </tr>
+ <tr>
+  <td>1.915</td>
+  <td>0.3664525136</td>
+  <td>0.36645251364580167</td>
+  <td align="right"> 4.58E-11</td>
+ </tr>
+ <tr>
+  <td>1.920</td>
+  <td>0.3698527244</td>
+  <td>0.36985272440640171</td>
+  <td align="right"> 6.40E-12</td>
+ </tr>
+ <tr>
+  <td>1.925</td>
+  <td>0.3732417688</td>
+  <td>0.37324176877469795</td>
+  <td align="right"> -2.53E-11</td>
+ </tr>
+ <tr>
+  <td>1.930</td>
+  <td>0.3766197179</td>
+  <td>0.37661971792349891</td>
+  <td align="right"> 2.34E-11</td>
+ </tr>
+ <tr>
+  <td>1.935</td>
+  <td>0.3799866424</td>
+  <td>0.37998664236258128</td>
+  <td align="right"> -3.74E-11</td>
+ </tr>
+ <tr>
+  <td>1.940</td>
+  <td>0.3833426119</td>
+  <td>0.38334261194674013</td>
+  <td align="right"> 4.67E-11</td>
+ </tr>
+ <tr>
+  <td>1.945</td>
+  <td>0.3866876959</td>
+  <td>0.38668769588372298</td>
+  <td align="right"> -1.62E-11</td>
+ </tr>
+ <tr>
+  <td>1.950</td>
+  <td>0.3900219627</td>
+  <td>0.39002196274204304</td>
+  <td align="right"> 4.20E-11</td>
+ </tr>
+ <tr>
+  <td>1.955</td>
+  <td>0.3933454805</td>
+  <td>0.39334548045868012</td>
+  <td align="right"> -4.13E-11</td>
+ </tr>
+ <tr>
+  <td>1.960</td>
+  <td>0.3966583163</td>
+  <td>0.39665831634666171</td>
+  <td align="right"> 4.66E-11</td>
+ </tr>
+ <tr>
+  <td>1.965</td>
+  <td>0.3999605371</td>
+  <td>0.39996053710254509</td>
+  <td align="right"> 2.54E-12</td>
+ </tr>
+ <tr>
+  <td>1.970</td>
+  <td>0.4032522088</td>
+  <td>0.40325220881377177</td>
+  <td align="right"> 1.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.975</td>
+  <td>0.4065333970</td>
+  <td>0.40653339696592627</td>
+  <td align="right"> -3.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.980</td>
+  <td>0.4098041664</td>
+  <td>0.40980416644989071</td>
+  <td align="right"> 4.98E-11</td>
+ </tr>
+ <tr>
+  <td>1.985</td>
+  <td>0.4130645816</td>
+  <td>0.41306458156888626</td>
+  <td align="right"> -3.11E-11</td>
+ </tr>
+ <tr>
+  <td>1.990</td>
+  <td>0.4163147060</td>
+  <td>0.41631470604541487</td>
+  <td align="right"> 4.54E-11</td>
+ </tr>
+ <tr>
+  <td>1.995</td>
+  <td>0.4195546030</td>
+  <td>0.41955460302810832</td>
+  <td align="right"> 2.81E-11</td>
+ </tr>
+ <tr>
+  <td>2.000</td>
+  <td>0.4227843351</td>
+  <td>0.42278433509846725</td>
+  <td align="right"> -1.53E-12</td>
+ </tr>
+</table>
+<<page foot>>
+@
+
+\subsection{draw.xhtml}
+<<draw.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td>
+      What would you like to draw?
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <center>
+      <b>Two Dimensional Plots</b>
+     </center>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="/home/silver/draw2donevariable.xhtml">
+      A function of one variable
+     </a>
+    </td>
+    <td> 
+     y = f(x)
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="/home/silver/draw2ddefinedcurve.xhtml">
+      A parametrically defined curve
+     </a>
+    </td>
+    <td>
+     (x(t), y(t))
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="/home/silver/draw2dpolynomialequation.xhtml">
+      A solution to a polynomial equation
+     </a>
+    </td>
+    <td>
+     p(x,y) = 0
+    </td>
+   </tr>
+   <tr>
+    <td>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <center>
+      <b>Three Dimensional Plots</b>
+     </center>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="/home/silver/draw3dtwovariable.xhtml">
+      A function of two variable
+     </a>
+    </td>
+    <td>
+     y = f(x,y)
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="/home/silver/draw3ddefinedtube.xhtml">
+      A parametrically defined tube
+     </a>
+    </td>
+    <td>
+     (x(t), y(t), z(t))
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="/home/silver/draw3ddefinedsurface.xhtml">
+      A parametrically defined surface
+     </a>
+    </td>
+    <td>
+     (x(u,v), y(u,v), z(u,v))
+    </td>
+   </tr>
+   <tr>
+    <td>
+    </td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{draw2donevariable.xhtml}
+<<draw2donevariable.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function').value;
+    myvar = document.getElementById('var').value;
+    myfrom = document.getElementById('range1').value;
+    myto = document.getElementById('range2').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans = 'draw('+myfunc+','+myvar+'='+myfrom+'..'+myto+')';
+    } else {
+     ans = 
+      'draw('+myfunc+','+myvar+'='+myfrom+'..'+myto+',title=="'+mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+ <center>
+  Drawing y=f(x)<br/>
+  where y is the dependent variable and<br/>
+  where x is the independent variable
+ </center>
+  <table>
+   <tr>
+    <td>
+      What function f would you like to draw?
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <input type="text" id="function" size="80" tabindex="10"
+       value="x*cos(x)"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter independent variable and range:<br/>
+     Variable:
+     <input type="text" id="var" size="10" tabindex="30" value="x"/>
+     ranges from:
+     <input type="text" id="range1" size="10" tabindex="40" value="0"/>
+     to:
+     <input type="text" id="range2" size="10" tabindex="45" value="30"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your curve:
+     <input type="text" id="title1" size="20" tabindex="50"
+       value="y=x*cos(x)"/>
+    </td>
+   </tr>
+  </table>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+@
+
+\subsection{draw2ddefinedcurve.xhtml}
+<<draw2ddefinedcurve.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc1 = document.getElementById('function1').value;
+    myfunc2 = document.getElementById('function2').value;
+    myvar = document.getElementById('var').value;
+    myfrom = document.getElementById('range1').value;
+    myto = document.getElementById('range2').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans=
+      'draw(curve('+myfunc1+','+myfunc2+'),'+myvar+'='+myfrom+'..'+myto+')';
+    } else {
+     ans = 
+      'draw(curve('+myfunc1+','+myfunc2+'),'+myvar+'='+myfrom+'..'+myto+
+            ',title=="'+mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+ <center>
+  Drawing a parametrically defined curve<br/>
+  (f1(t),f2(t))<br/>
+  in terms of two functions f1 and f2<br/>
+  and an independent variable t
+ </center>
+  <table>
+   <tr>
+    <td>
+     Enter the two functions:<br/>
+     Function 1:<br/>
+     <input type="text" id="function1" size="80" tabindex="10"
+       value="-9*sin(4*t/5)"/><br/>
+     Function 2:<br/>
+     <input type="text" id="function2" size="80" tabindex="20"
+       value="8*sin(t)"/><br/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+    Enter the independent variable and range:<br/>
+    Variable: 
+     <input type="text" id="var" size="10" tabindex="30" value="t"/>
+     ranges from:
+     <input type="text" id="range1" size="10" tabindex="40" value="-5*%pi"/>
+     to:
+     <input type="text" id="range2" size="10" tabindex="45" value="5*%pi"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your curve:
+     <input type="text" id="title1" size="20" tabindex="50"
+       value="Lissajous"/>
+    </td>
+   </tr>
+  </table>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+@
+
+\subsection{draw2dpolynomialequation.xhtml}
+<<draw2dpolynomialequation.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function1').value;
+    myvar1 = document.getElementById('var1').value;
+    myfrom1 = document.getElementById('range11').value;
+    myto1 = document.getElementById('range21').value;
+    myvar2 = document.getElementById('var2').value;
+    myfrom2 = document.getElementById('range12').value;
+    myto2 = document.getElementById('range22').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans=
+      'draw('+myfunc+'=0,'+myvar1+','+myvar2+',range==['+
+            myfrom1+'..'+myto1+','+myfrom2+'..'+myto2+'])';
+    } else {
+     ans=
+      'draw('+myfunc+'=0,'+myvar1+','+myvar2+',range==['+
+         myfrom1+'..'+myto1+','+myfrom2+'..'+myto2+'],title=="'+mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+ <center>
+  Plotting the solution to p(x,y)=0, where<br/>
+  p is a polynomial in two variables x and y
+ </center>
+  <table>
+   <tr>
+    <td>
+     Enter the polynomial p:<br/>
+     <input type="text" id="function1" size="80" tabindex="10"
+       value="y^2+7*x*y-(x^3+16*x)"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+    Enter the variables:<br/>
+    Variable 1: 
+     <input type="text" id="var1" size="10" tabindex="30" value="x"/>
+     ranges from:
+     <input type="text" id="range11" size="10" tabindex="40" value="-15"/>
+     to:
+     <input type="text" id="range21" size="10" tabindex="45" value="10"/><br/>
+    Variable 2: 
+     <input type="text" id="var2" size="10" tabindex="46" value="y"/>
+     ranges from:
+     <input type="text" id="range12" size="10" tabindex="47" value="-10"/>
+     to:
+     <input type="text" id="range22" size="10" tabindex="48" value="50"/><br/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your curve:
+     <input type="text" id="title1" size="20" tabindex="50"/>
+    </td>
+   </tr>
+  </table>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+@
+
+\subsection{draw3dtwovariable.xhtml}
+<<draw3dtwovariable.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function1').value;
+    myvar1 = document.getElementById('var1').value;
+    myfrom1 = document.getElementById('range11').value;
+    myto1 = document.getElementById('range21').value;
+    myvar2 = document.getElementById('var2').value;
+    myfrom2 = document.getElementById('range12').value;
+    myto2 = document.getElementById('range22').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans=
+      'draw('+myfunc+','+myvar1+'='+myfrom1+'..'+myto1+','+
+                         myvar2+'='+myfrom2+'..'+myto2+')';
+    } else {
+     ans=
+      'draw('+myfunc+','+myvar1+'='+myfrom1+'..'+myto1+','+
+                         myvar2+'='+myfrom2+'..'+myto2+
+                         ',title=="'+mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+ <center>
+  Drawing z=f(x,y)<br/>
+  where z is the dependent variable and<br/>
+  where x, y are the independent variables
+ </center>
+  <table>
+   <tr>
+    <td>
+     What function f which you like to draw?<br/>
+     <input type="text" id="function1" size="80" tabindex="10"
+       value="exp(cos(x-y)-sin(x*y))-2"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+    Enter the independent variables and ranges:<br/>
+    Variable 1: 
+     <input type="text" id="var1" size="10" tabindex="30" value="x"/>
+     ranges from:
+     <input type="text" id="range11" size="10" tabindex="40" value="-5"/>
+     to:
+     <input type="text" id="range21" size="10" tabindex="45" value="5"/><br/>
+    Variable 2: 
+     <input type="text" id="var2" size="10" tabindex="46" value="y"/>
+     ranges from:
+     <input type="text" id="range12" size="10" tabindex="47" value="-5"/>
+     to:
+     <input type="text" id="range22" size="10" tabindex="48" value="5"/><br/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your curve:
+     <input type="text" id="title1" size="20" tabindex="50"/>
+    </td>
+   </tr>
+  </table>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+@
+
+\subsection{draw3ddefinedtube.xhtml}
+<<draw3ddefinedtube.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc1 = document.getElementById('function1').value;
+    myfunc2 = document.getElementById('function2').value;
+    myfunc3 = document.getElementById('function3').value;
+    myvar1 = document.getElementById('var1').value;
+    myfrom1 = document.getElementById('range1').value;
+    myto1 = document.getElementById('range2').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans=
+      'draw(curve('+myfunc1+','+myfunc2+','+myfunc3+'),'+myvar1+'='+
+        myfrom1+'..'+myto1+',tubeRadius==.25,tubePoints==16)';
+    } else {
+     ans=
+      'draw(curve('+myfunc1+','+myfunc2+','+myfunc3+'),'+myvar1+'='+
+        myfrom1+'..'+myto1+',tubeRadius==.25,tubePoints==16,title=="'+
+        mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+ <center>
+  Drawing a parmetrically defined curve: (f1(t), f2(t), f3(t))<br/>
+  in terms of three functions f1, f2, and f3<br/>
+  and an independent variable t
+ </center>
+  <table>
+   <tr>
+    <td>
+     Enter the three functions of the independent variable:<br/>
+     Function f1: 
+     <input type="text" id="function1" size="70" tabindex="10"
+       value="1.3*cos(2*t)*cos(4*t)+sin(4*t)*cos(t)"/><br/>
+     Function f2: 
+     <input type="text" id="function2" size="70" tabindex="20"
+       value="1.3*sin(2*t)*cos(4*t)-sin(4*t)*sin(t)"/><br/>
+     Function f3: 
+     <input type="text" id="function3" size="70" tabindex="30"
+       value="2.5*cos(4*t)"/><br/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+    Enter the independent variable and range:<br/>
+    Variable: 
+     <input type="text" id="var1" size="10" tabindex="40" value="t"/>
+     ranges from:
+     <input type="text" id="range1" size="10" tabindex="50" value="0"/>
+     to:
+     <input type="text" id="range2" size="10" tabindex="60" value="4*%pi"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your surface:
+     <input type="text" id="title1" size="20" tabindex="70" value="knot"/>
+    </td>
+   </tr>
+  </table>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+@
+
+\subsection{draw3ddefinedsurface.xhtml}
+<<draw3ddefinedsurface.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc1 = document.getElementById('function1').value;
+    myfunc2 = document.getElementById('function2').value;
+    myfunc3 = document.getElementById('function3').value;
+    myvar1 = document.getElementById('var1').value;
+    myfrom1 = document.getElementById('range1').value;
+    myto1 = document.getElementById('range2').value;
+    myvar2 = document.getElementById('var11').value;
+    myfrom2 = document.getElementById('range11').value;
+    myto2 = document.getElementById('range21').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans=
+      'draw(surface('+myfunc1+','+myfunc2+','+myfunc3+'),'+
+        myvar1+'='+myfrom1+'..'+myto1+','+
+        myvar2+'='+myfrom2+'..'+myto2+')';
+    } else {
+     ans=
+      'draw(surface('+myfunc1+','+myfunc2+','+myfunc3+'),'+
+        myvar1+'='+myfrom1+'..'+myto1+','+
+        myvar2+'='+myfrom2+'..'+myto2+',title=="'+mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+ <center>
+  Drawing a parametrically defined surface<br/>
+  (f1(u,v), f2(u,v), f3(u,v))<br/>
+  in terms of three functions f1, f2, and f3<br/>
+  and two independent variables u and v
+ </center>
+  <table>
+   <tr>
+    <td>
+     Enter the three functions of the independent variable:<br/>
+     Function f1: 
+     <input type="text" id="function1" size="70" tabindex="10"
+       value="u*sin(v)"/><br/>
+     Function f2: 
+     <input type="text" id="function2" size="70" tabindex="20"
+       value="v*cos(u)"/><br/>
+     Function f3: 
+     <input type="text" id="function3" size="70" tabindex="30"
+       value="u*cos(v)"/><br/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+    Enter the independent variables and range:<br/>
+    Variable 1: 
+     <input type="text" id="var1" size="10" tabindex="40" value="u"/>
+     ranges from:
+     <input type="text" id="range1" size="10" tabindex="50" value="-%pi"/>
+     to:
+     <input type="text" id="range2" size="10" tabindex="60" value="%pi"/>
+    <br/>
+    Variable 2: 
+     <input type="text" id="var11" size="10" tabindex="70" value="v"/>
+     ranges from:
+     <input type="text" id="range11" size="10" tabindex="80" value="-%pi/2"/>
+     to:
+     <input type="text" id="range21" size="10" tabindex="90" value="%pi/2"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your surface:
+     <input type="text" id="title1" size="20" tabindex="100"/>
+    </td>
+   </tr>
+  </table>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+@
+
+%%E
+\subsection{equdifferential.xhtml}
+<<equdifferential.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Solution of Differential Equations</div>
+  <hr/>
+In this section we discuss Axiom's facilities for solving differential 
+equations in closed-form and in series.
+
+Axiom provides facilities for closed-form solution of single differential
+equations of the following kinds:
+<ul>
+ <li>linear ordinary differential equations
+ </li>
+ <li>non-linear first order ordinary differential equations when integrating
+     factors can be found just by integration
+ </li>
+</ul>
+
+For a discussion of the solution of systems of linear and polynomial 
+equations, see <a href="axbook/section-8.5.xhtml">Solution of Linear
+and Polynomial Equations</a>.
+<ul>
+ <li>
+  <a href="equdifferentiallinear.xhtml">
+   Closed-Form Solutions of Linear Differential Equations
+  </a>
+ </li>
+ <li>
+  <a href="equdifferentialnonlinear.xhtml">
+   Closed-Form Solutions of Non-Linear Differential Equations
+  </a>
+ </li>
+ <li>
+  <a href="equdifferentialpowerseries.xhtml">
+   Power Series Solutions of Differential Equations
+  </a>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{equdifferentiallinear.xhtml}
+<<equdifferentiallinear.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">
+   Closed-Form Solutions of Linear Differential Equations
+  </div>
+  <hr/>
+A differential equation is an equation involving an unknown function and
+one or more of its derivatives. The equation is called ordinary if 
+derivatives with respect to only one dependent variable appear in the
+equation (it is called partial otherwise). The package
+<a href="db.xhtml?ElementaryFunctionODESolver">ElementaryFunctionODESolver</a>
+provides the top-level operation
+<a href="dbopsolve.xhtml">solve</a> for finding closed-form solutions of
+ordinary differential equations.
+
+To solve a differential equation, you must first create an operator for the
+unknown function. We let y be the unknown function in terms of x.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="y:=operator 'y" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You then type the equation using <a href="dbopd.xhtml">D</a> to create the
+derivatives of the unknown function y(x) where x is any symbol you choose
+(the so-called dependent variable). This is how you enter the equation
+<pre>
+    y'' + y' + y = 0
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="deq:=D(y x,x,2)+D(y x,x)+y x=0" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The simplest way to invoke the <a href="dbopsolve.xhtml">solve</a> command
+is with three arguments, 
+<ul>
+ <li>the differential equation</li>
+ <li>the operator representing the unknown function</li>
+ <li>the dependent variable</li>
+</ul>
+So, to solve the above equation, we enter this.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="solve(deq,y,x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Since linear ordinary differential equations have infinitely many solutions,
+<a href="dbopsolve.xhtml">solve</a> returns a particular solution f_p and
+a basis f1,..fn for the solutions of the corresponding homogeneous equation.
+Any expression of the form fp+c1 f1+...+cn fn where the ci do not involve the
+dependent variable is also a solution. This is similar to what you get when
+you solve systems of linear algebraic equations.
+
+A way to select a unique solution is to specify initial conditions: choose a
+value a for the dependent variable and specify the values of the unknown
+function and its derivatives at a. If the number of initial conditions is
+equal to the order of the equation, then the solution is unique (if it exists
+in closed form) and <a href="dbopsolve.xhtml">solve</a> tries to find it. To
+specify initial conditions to <a href="dbopsolve.xhtml">solve</a>, use an
+<a href="db.xhtml?Equation">Equation</a> of the form x=a for the third
+parameter instead of the dependent variable, and add a fourth parameter
+consisting of the list of values y(a), y'(a), ...
+
+To find the solution of y''+y=0 satisfying y(0)=y'(0)=1, do this.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="deq:=D(y x,x,2)+y x" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You can omit the "=0" when you enter the equation to be solved.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p4','p5']);"
+    value="solve(deq,y,x=0,[1,1])" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Axiom is not limited to linear differential equations with constant
+coefficients. It can also find solutions when the coefficients are
+rational or algebraic functions of the dependent variable. Furthermore,
+Axiom is not limited by the order of the equation. Axiom can solve the
+following thrid order equations with polynomial coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p6']);"
+    value="deq:=x^3*D(y x,x,3)+x^2*D(y x,x,2)-2*x*D(y x,x)+2*yx=2*x^4" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p6','p7']);"
+    value="solve(deq,y,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+On the other hand, and in contrast with the operation
+<a href="dbopintegrate.xhtml">integrate</a> it can happen that Axiom finds
+no solution and that some closed-form solution still exists. While it is
+mathematically complicated to describe exactly when the solutions are
+guaranteed to be found, the following statements are correct and form
+good guidelines for linear ordinary differential equations.
+<ul>
+ <li>If the coefficients are constants, Axiom finds a complete basis of
+     solutions (i.e. all solutions).
+ </li>
+ <li>If the coefficients are rational functions in the dependent variable,
+     Axiom ast least finds all solutions that do not involve algebraic
+     functions.
+ </li>
+</ul>
+Note that this last statement does not mean that Axiom does not find the
+solutions that are algebraic functions. It means that it is not guaranteed
+that the algebraic function solutions will be found. This is an example
+where all the algebraic solutions are found.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p8']);"
+    value="deq:=(x^2+1)*D(y x,x,2)+3*x*D(y x,x)+y x=0" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p8','p9']);"
+    value="solve(deq,y,x)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+
+<<page foot>>
+@
+
+\subsection{equdifferentialnonlinear.xhtml}
+<<equdifferentialnonlinear.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">
+   Closed-Form Solutions of Non-Linear Differential Equations
+  </div>
+  <hr/>
+This is an example that shows how to solve a non-linear first order 
+ordinary differential equation manually when an integrating factor can
+be found just by integration. At the end, we show you how to solve it
+directly.
+
+Let's solve the differential equation
+<pre>
+  y' = y/(x + y log y)
+</pre>
+Using the notation
+<pre>
+  m(x,y)+n(x,y)y' = 0
+</pre>
+we have m=-y and n=x+y*log y
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:=-y" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="n:=x+y*log y" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+We first check for exactness, that is, does dm/dy=dn/dx?
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="D(m,y)-D(n,x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+This is not zero, so the equation is not exact. Therefore we must look
+for an integrating factor, that is, a function mu(x,y) such that 
+d(mu m)/dy=d(mu n)/dx. Normally, we first search for mu(x,y) depending only
+on x or only on y. Let's search for such a mu(x) first.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="mu:=operator 'mu" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p5']);"
+    value="a:=D(mu(x)*m,y)-D(mu(x)*n,x)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+If the above is zero for a function mu that does not depend on y, then
+mu(x) is an integrating factor.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p5','p6']);"
+    value="solve(a=0,mu,x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+The solution depends on y, so there is no integrating factor that depends
+on x only. Let's look for on that depends on y only.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7']);"
+    value="b:=D(mu(y)*m,y)-D(mu(y)*n,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8']);"
+    value="sb:=solve(b=0,mu,y)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+We've found one. The above mu(y) is an integrating factor. We must multiply
+our initial equation (that is, m and n) by the integrating factor.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8','p9']);"
+    value="intFactor:=sb.basis.1" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8','p9','p10']);"
+    value="m:=intFactor*m" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8','p9','p11']);"
+    value="n:=intFactor*n" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+Let's check for exactness.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8','p9','p10','p11','p12']);"
+    value="D(m,y)-D(n,x)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+We must solve the exact equation, that is, find a function s(x,y) such that
+ds/dx=m and ds/dy=n. We start by writing 
+<pre>
+  s(x,y) = h(y) + integrate(m,x)
+</pre>
+where h(y) is an unknown function of y. This guarantees that ds/dx=m.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="makeRequest('p13');"
+    value="h:=operator 'h" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8','p9','p10','p13','p14']);"
+    value="sol:=h y+integrate(m,x)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+All we want is to find h(y) such that ds/dy=n.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick=
+     "handleFree(['p1','p2','p4','p7','p8','p9','p10','p13','p14','p15']);"
+    value="dsol:=D(sol,y)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick=
+   "handleFree(['p1','p2','p4','p7','p8','p9','p10','p13','p14','p15','p16']);"
+    value="nsol:=solve(dsol=n,h,y)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+The above particular solution is the h(y) we want, so we just replace h(y)
+by it in the implicit solution.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick=
+"handleFree(['p1','p2','p4','p7','p8','p9','p10','p13','p14','p15','p16','p17']);"
+    value="eval(sol,h y=nsol.particular)" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+A first integral of the initial equation is obtained by setting this result
+equal to an arbitrary constant.
+
+Now that we've seen how to solve the equation "by hand" we show you how to 
+do it with the <a href="dbopsolve.xhtml">solve</a> operation. First define
+y to be an operator.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="makeRequest('p18');"
+    value="y:=operator 'y" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+Next we create the differential equation.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p18','p19']);"
+    value="deq:=D(y x,x)=y(x)/(x+y(x)*log y x)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+Finally, we solve it.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p18','p19','p20']);"
+    value="solve(deq,y,x)" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{equdifferentialpowerseries.xhtml}
+<<equdifferentialpowerseries.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">
+   Power Series Solutions of Differential Equations
+  </div>
+  <hr/>
+The command to solve differential equations in power series around a
+particular initial point with specific initial conditions is called
+<a href="dbopseriessolve.xhtml">seriesSolve</a>. It can take a variety of
+parameters, so we illustrate its use with some examples.
+
+Since the coefficients of some solutions are quite large, we reset the
+default to compute only seven terms.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="noresult" 
+    onclick="makeRequest('p1');"
+    value=")set streams calculate 7" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You can solve a single nonlinear equation of any order. For example, we 
+solve
+<pre>
+  y''' = sin(y'') * exp(y) + cos(x)
+</pre>
+subject to y(0)=1, y'(0)=0, y''(0)=0
+
+We first tell Axiom that the symbol 'y denotes a new operator.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="y:=operator 'y" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Enter the differential equation using y like any system function.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="eq:=D(y(x),x,3)-sin(D(y(x),x,2))*exp(y(x))=cos(x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Solve it around x=0 with the initial conditions y(0)=1, y'(0)=y''(0)=0.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4']);"
+    value="seriesSolve(eq,y,x=0,[1,0,0])" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You can also solve a system of nonlinear first order equations. For 
+example, we solve a system that has tan(t) and sec(t) as solutions.
+
+We tell Axiom that x is also an operator.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="x:=operator 'x" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Enter the two equations forming our system.
+<ul>
+ <li> <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="eq1:=D(x(t),t)=1+x(t)^2" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p2','p5','p7']);"
+    value="eq2:=D(y(t),t)=x(t)*y(t)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Solve the system around t=0 with the initial conditions x(0)=0 and y(0)=1.
+Notice that since we give the unknowns in the order [x,y], the answer is a
+list of two series in the order [series for x(t), series for y(t)].
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p6','p7','p8']);"
+    value="seriesSolve([eq2,eq1],[x,y],t=0,[y(0)=1,x(0)=0])" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+The order in which we give the equations and the initial conditions has no
+effect on the order of the solution.
+<<page foot>>
+@
+
+\subsection{equationpage.xhtml}
+<<equationpage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+Axiom lets you solve equations of various types:
+  <table>
+   <tr>
+    <td>
+     <a href="equsystemlinear.xhtml">
+      Solution of Systems of Linear Equations
+     </a>
+    </td>
+    <td>
+     Solve systems of linear equations
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="polyroots3.xhtml">
+      Solution of a Single Polynomial Equation
+     </a>
+    </td>
+    <td>
+     Find roots of polynomials
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="polyroots4.xhtml">
+      Solution of a System of Polynomial Equations
+     </a>
+    </td>
+    <td>
+     Solve systems of polynomial equations
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="equdifferential.xhtml">
+      Solution of Differential Equations
+     </a>
+    </td>
+    <td>
+     Closed form and series solutions of differential equations
+    </td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{equsystemlinear.xhtml}
+<<equsystemlinear.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Solution of Systems of Linear Equations</div>
+  <hr/>
+You can use the operation <a href="dbopsolve.xhtml">solve</a> to solve
+systems of linear equations.
+
+The operation <a href="dbopsolve.xhtml">solve</a> takes two arguments, the
+list of equations and the list of the unknowns to be solved for. A system
+of linear equations need not have a unique solution.
+
+To solve the linear system:
+<pre>
+        x + y + x = 8
+    3*x - 2*y + z = 0
+    x + 2*y + 2*z = 17
+</pre>
+evaluate this expression.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="solve([x+y+x=8,3*x-2*y+z=0,x+2*y+2*z=17],[x,y,z])" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Parameters are given as new variables starting with a percent sign and
+"%" and the variables are expressed in terms of the parameters. If the system
+has no solutions then the empty list is returned.
+
+When you solve the linear system
+<pre>
+      x + 2*y + 3*z = 2
+    2*x + 3*y + 4*z = 2
+    3*x + 4*y + 5*z = 2
+</pre>
+with this expression you get a solution involving a parameter.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="solve([x+2*y+3*z=2,2*x+3*y+4*z=2,3*x+4*y+5*z=2],[x,y,z])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The system can also be presented as a matrix and a vector. The matrix 
+contains the coefficients of the linear equations and the vector contains
+the numbers appearing on the right-hand sides of the equations. You may 
+input the matrix as a list of rows and the vector as a list of its elements.
+
+To solve the system:
+<pre>
+       x + y + z = 8
+   2*x - 2*y + z = 0
+   x + 2*y + 2*z = 17
+</pre>
+in matrix form you would evaluate this expression.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="solve([[1,1,1],[3,-2,1],[1,2,2]],[8,0,17])" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The solutions are presented as a Record with two components: the component
+particular contains a particular solution of the given system or the item
+"failed" if there are no solutions, the component basis contains a list of
+vectors that are a basis for the space of solutions of the corresponding
+homogeneous system. If the system of linear equations does not have a unique
+solution, then the basis component contains non-trivial vectors.
+
+This happens when you solve the linear system
+<pre>
+    x + 2*y + 3*z = 2
+  2*x + 3*y + 4*z = 2
+  3*x + 4*y + 5*z = 2
+</pre>
+with this command.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="solve([[1,2,3],[2,3,4],[3,4,5]],[2,2,2])" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+All solutions of this system are obtained by adding the particular solution
+with a linear combination of the basis vectors.
+
+When no solution exists then "failed" is returned as the particular 
+component, as follows:
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="solve([[1,2,3],[2,3,4],[3,4,5]],[2,3,2])" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+When you want to solve a system of homogeneous equations (that is, a system
+where the numbers on the right-hand sides of the equations are all zero)
+in the matrix form you can omit the second argument and use the 
+<a href="dbopnullspace.xhtml">nullSpace</a> operation.
+
+This computes the solutions of the following system of equations:
+<pre>
+    x + 2*y + 3*z = 0
+  2*x + 3*y + 4*z = 0
+  3*x + 4*y + 5*z = 0
+</pre>
+The result is given as a list of vectors and these vectors form a basis for
+the solution space.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="nullSpace([[1,2,3],[2,3,4],[3,4,5]])" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+
+<<page foot>>
+@
+
+\subsection{examplesexposedpage.xhtml}
+<<examplesexposedpage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      examplesexposedpage not implemented
+<<page foot>>
+@
+
+
+%%F
+\subsection{factored.xhtml}
+<<factored.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+factored not implemented
+<<page foot>>
+@
+
+\subsection{foundationlibrarydocpage.xhtml}
+<<foundationlibrarydocpage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      foundationlibrarydocpage not implemented
+<<page foot>>
+@
+
+\subsection{funalgebraicfunctions.xhtml}
+<<funalgebraicfunctions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Algebraic Functions</div>
+  <hr/>
+Algebraic functions are functions defined by algebraic equations. There are
+two ways of constructing them, either by using rational powers or implicitly.
+For rational powers, use <a href="dbopstarstar.xhtml">**</a> or the system
+functions <a href="dbopsqrt.xhtml">sqrt</a> and 
+<a href="dbopnthroot.xhtml">nthRoot</a> for square and nth roots.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=sqrt(1+x^(1/3))" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+To define an algebraic function implicitly use 
+<a href="dboprootof.xhtml">rootOf</a>. The following line defines a function
+y of x satisfying the equation 
+<pre>
+  y^3 = x*y-y^2-x^3+1
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="y:=rootOf(y^3+y^2-x*y+x^3-1,y)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can manipulate, differentiate or integrate an implicitly defined
+algebraic function like any other Axiom function.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p2','p3']);"
+    value="differentiate(y,x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Higher powers of algebraic functions are automatically reduced during
+calculations.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p2','p4']);"
+    value="(y+1)^3" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+But denominators are not automatically rationalized.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="g:=inv f" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopratdenom.xhtml">ratDenom</a> to remove the algebraic
+quantities from the denominator.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p5','p6']);"
+    value="ratDenom g" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{funelementaryfunctions.xhtml}
+<<funelementaryfunctions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Elementary Functions</div>
+  <hr/>
+Axiom has most of the usual functions from calculus built-in.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=x*log y * sin(1/(x+y))" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You can substitute values or another elementary function for variables
+with the function eval.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="eval(f,[x=y,y=x])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+As you can see, the substitutions are made "in parallel" as in the case
+of polynomials. It's also possible to substitute expressions for kernels
+instead of variables.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="eval(f,log y = acosh(x+sqrt y))" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{funoperatoralgebra.xhtml}
+<<funoperatoralgebra.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Operator</div>
+  <hr/>
+Given any ring R, the ring of the <a href="db.xhtml?Integer">Integer</a>
+linear operators over R is called <a href="db.xhtml?Operator">Operator(R)</a>.
+To create an operator over R, first create a basic operator using the
+operation <a href="dbopoperator.xhtml">operator</a>, and then convert it
+to <a href="db.xhtml?Operator">Operator(R)</a> for the R you want. We choose R
+to be the two by two matrices over the integers.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="R:=SQMATRIX(2,INT)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Create the operator tilde on R
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value='t:=operator("tilde")::OP(R)' />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Since  <a href="db.xhtml?Operator">Operator</a> is unexposed we must either
+package-call operations from it, or expose it explicitly. For convenience
+we will do the latter.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value=")set expose add constructor Operator" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+To attach an evaluation function (from R to R) to an operator over R, use
+evaluate(op,f) where op is an operator over R and f is a function R->R.
+This needs to be done only once when the operator is defined. Note that f
+must be <a href="db.xhtml?Integer">Integer</a> linear (that is, 
+<pre>
+  f(ax+y) = a f(x) + f(y)
+</pre>
+for any integer a and any x and y in R). We now attach the transpose map
+to the above operator t.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4']);"
+    value="evaluate(t,m+->transpose m)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Operators can be manipulated formally as in any ring: 
+<a href="dbopplus.xhtml">+</a> is the pointwise addition and 
+<a href="dbopstar.xhtml">*</a> is composition. Any element x of R can
+be converted to an operator op_x over R, and the evaluation function of
+op_x is left-multiplication by x. Multiplying on the left by this matrix
+swaps the two rows.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5']);"
+    value="s:R:=matrix [[0,1],[1,0]]" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Can you guess what is the action of the following operator?
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6']);"
+    value="rho:=t*s" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Hint: applying rho four times gives the identity, so rho^4-1
+should return 0 when applied to any two by two matrix.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p7']);"
+    value="z:=rho^4-1" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Now check with this matrix
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p8']);"
+    value="m:R:=matrix [[1,2],[3,4]]" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p7','p8','p9']);"
+    value="z m" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+As you have probably guessed by now, rho acts on matrices by rotating
+the elements clockwise.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p8','p10']);"
+    value="rho m" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p8','p11']);"
+    value="rho rho m" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p8','p12']);"
+    value="(rho**3) m" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+Do the swapping of rows and transposition commute? We can check by computing
+their bracket.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p8','p13']);"
+    value="b:=t*s-s*t" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+Now apply it to m.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p8','p13','p14']);"
+    value="b m" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+
+Next we demonstrate how to define a differential operator on a polynomial
+ring. This is the recursive definition of the nth Legendre polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="noresult" 
+    onclick="makeRequest('p15');"
+    value="L n==( n=0 => 1 ; n=1 => x ; (2*n-1)/n*x*L(n-1)-(n-1)/n*L(n-2) )" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+Create the differential operator d/dx on polynomials in x over the rational
+numbers.
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p16']);"
+    value='dx:=operator("D")::OP(POLY FRAC INT)' />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Now attach a map to it.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p16','p17']);"
+    value="evaluate(dx,p+->D(p,'x))" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+This is the differential equation satisfied by the nth Legendre polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="noresult" 
+    onclick="handleFree(['p1','p2','p3','p16','p17','p18']);"
+    value="E n == (1-x^2)*dx^2-2*x*dx+n*(n+1)" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+Now we verify this for n=15. Here is the polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p15','p19']);"
+    value="L 15" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+Here is the operator.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p16','p17','p18','p20']);"
+    value="E 15" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+Here is the evaluation.
+<ul>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick=
+ "handleFree(['p1','p2','p3','p15','p16','p17','p18','p19','p20','p21']);"
+    value="(E 15)(L 15)" />
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{functionpage.xhtml}
+<<functionpage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Functions in Axiom</div>
+  <hr/>
+In Axiom, a function is an expression in one or more variables.
+(Think of it as a function of those variables.) You can also
+define a function by rules or use a built-in function. Axiom lets
+you convert expressions to compiled functions.
+  <table>
+   <tr>
+    <td>
+     <a href="funrationalfunctions.xhtml">Rational Functions</a>
+    </td>
+    <td>
+     Quotients of polynomials
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="funalgebraicfunctions.xhtml">Algebraic Functions</a>
+    </td>
+    <td>
+     Those defined by polynomial
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="funelementaryfunctions.xhtml">Elementary Functions</a>
+    </td>
+    <td>
+     The elementary functions of calculus
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="funsimplification.xhtml">Simplification</a>
+    </td>
+    <td>
+     How to simplify expressions
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="funpatternmatching.xhtml">Pattern Matching</a>
+    </td>
+    <td>
+     How to use the pattern matcher
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="funoperatoralgebra.xhtml">Operator Algebra</a>
+    </td>
+    <td>
+     The operator algebra facility
+    </td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{funpatternmatching.xhtml}
+<<funpatternmatching.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Rules and Pattern Matching</div>
+  <hr/>
+A common mathematical formula is 
+<pre>
+log(x)+log(y)==log(x*y)
+</pre>
+for any x and y. The presence of the word "any" indicates that x and y
+can stand for arbitrary mathematical expressions in the above formula. You
+can use such mathematical formulas in Axiom to specify "rewrite rules". 
+Rewrite rules are objects in Axiom that can be assigned to variables for
+later use, often for the purpose of simplification. Rewrite rules look like
+ordinary function definitions except that they are preceded by the reserved
+word rule. For example, a rewrite rule for the above formula is:
+<pre>
+  rule log(x) + log(y) == log(x * y)
+</pre>
+Like function definitions, no action is taken when a rewrite rule is issued.
+Think of rewrite rules as functions that take one argument. When a rewrite
+rule A=B is applied to an argument f, its meaning is "rewrite every
+subexpressions of f that matches A by B". The left-and side of a rewrite rule
+is called a <a href="glossarypage.xhtml#p38600">pattern</a>; 
+its right-hand side is
+called its <a href="glossarypage.xhtml#p49000">substitution</a>. 
+
+Create a rewrite rule named logrule. The generated symbol begins with a
+"%" and is a place holder for any other terms that might occur in the sum.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="logrule:=rule log(x)+log(y)==log(x*y)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Create an expression with logarithms.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="f:=log sin x + log x" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Apply logrule to f.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="logrule f" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The meaning of our example rewrite rule is "for all expressions x and y,
+rewrite log(x) and log(y) by log(x*y)". Patterns generally have both operation
+names 
+(here, <a href="dboplog.xhtml">log</a> and <a href="dbopplus.xhtml">+</a>)
+and variables (here, x and y). By default, every operation name stands for
+itself. The <a href="dboplog.xhtml">log</a> matches only "log" and not
+any other operation such as <a href="dbopsin.xhtml">sin</a>. On the other
+hand, variables do not stand for themselves. Rather, a variable denotes a
+<a href="glossarypage.xhtml#p39400">pattern variable</a> 
+that is free to match any expression whatsoever.
+
+When a rewrite rule is applied, a process called 
+<a href="glossarypage.xhtml#p38661">pattern matching</a> 
+goes to work by systematically 
+scanning the subexpressions of the argument. When a subexpression is found
+that "matches" the pattern, the subexpression is replaced by the right hand
+side of the rule. The details of what happens will be covered later.
+
+The customary Axiom notation for patterns is actually a shorthand for a
+longer, more general notation. Pattern variables can be made explicit
+by using a percent ("%") as the first character of the variable name. To
+say that a name stands for itself, you can prefix that name with a quote
+operator ("'"). Although the current Axiom parser does not let you quote
+an operation name, this more general notation gives you an alternative way
+of giving the same rewrite rule:
+<pre>
+  rule log(%x) + log(%y) == log(x*y)
+</pre>
+This longer notation gives you patterns that the standard notation won't
+handle. For example, the rule
+<pre>
+  rule %f(c * 'x) == c*%f(x)
+</pre>
+means "for all f and c, replace f(y) by c*f(x) when y is the product
+of c and the explicit variable x".
+
+Thus the pattern can have several adornments on the names that appear there.
+Normally, all of these adornments are dropped in the substitution on the
+right hand side. To summarize:
+<hr/>
+To enter a single rule in Axiom, use the following syntax:
+<pre>
+  rule lefthandside == righthandside
+</pre>
+The lefthandside is a pattern to be matched and the righthandside is its
+substitution. The rule is an object of type
+<a href="db.xhtml?RewriteRule">RewriteRule</a> that can be assigned to a
+variable and applied to expressions to transform them.
+<hr/>
+Rewrite rules can be collected into rulesets so that a set of rules can be
+applied at once. Here is another simplification rule for logarithms.
+<pre>
+  rule y*log(x) == log(x**y)
+</pre>
+for any x and y. If instead of giving a single rule following the reserved
+word rule you give a "pile" of rules, you create what is called a
+ruleset. Like rules, rulesets are objects in Axiom and can be assigned to
+variables. You will find it useful to group commonly used rules into
+input files, and read them in as needed. Create a ruleset named logrules.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="logrules:=rule (log(x)+log(y)==log(x*y) ; y*log(x)==log(x^y))" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Again, create an expression f containing logarithms.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="f:=a*log(sin x)-2*log x" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Apply the ruleset logrules to f.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p4','p5','p6']);"
+    value="logrules f" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+We have allowed pattern variables to match arbitrary expressions in the
+above examples. Often you want a variable to match onlyh expressions 
+satisfying some predicate. For example, you may want to apply the
+transformation 
+<pre>
+  y*log(x) == log(x^y)
+</pre>
+only when y is an integer. The way to restrict a pattern variable y by a
+predicate f(y) is by using a vertical bar "|", which means "such that",
+in much the same way it is used in function definitions. You do this only
+once but at the earliest (meaning deepest and leftmost) part of the pattern.
+This restricts the logarithmic rule to create integer exponents only.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="logrules2:=rule (log(x)+log(y)==log(x*y) ; (y | integer? y)*log(x)==log(x^y))" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Compare this with the result of applying the previous set of rules.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p5','p8']);"
+    value="f" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p5','p7','p9']);"
+    value="logrules2 f" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+You should be aware that you might need to apply a function like
+<a href="dbopinteger.xhtml">integer</a> within your predicate expression
+to actually apply the test function. Here we use 
+<a href="dbopinteger.xhtml">integer</a> because n has type 
+<a href="dbexpressioninteger.xhtml">Expression Integer</a> but
+<a href="dbopevenq.xhtml">even?</a> is an operation defined on the integers.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="evenRule:=rule cos(x)^(n | integer? n and even? integer n)==(1-sin(x)^2)^(n/2)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+Here is the application of the rule.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p10','p11']);"
+    value="evenRule(cos(x)^2)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+This is an example of some of the usual identities involving products of sines and cosines.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="makeRequest('p12');"
+    value="sinCosProducts:=rule (sin(x)*sin(y)==(cos(x-y)-cos(x+y))/2 ; cos(x)*cos(y)==(cos(x-y)+cos(x+y))/2 ; sin(x)*cos(y)==(sin(x-y)+sin(x+y))/2 )" />
+  <div id="ansp12"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="makeRequest('p13');"
+    value="g:=sin(a)*sin(b)+cos(b)*cos(a)+sin(2*z)*cos(2*a)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p12','p13','p14']);"
+    value="sinCosProducts g" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+Another qualification you will often want to use is to allow a pattern to
+match an identity element. Using the pattern x+y, for example, neither x 
+nor y matches the expression 0. Similarly, if a pattern contains a product
+x*y or an exponentiation x^y, then neither x nor y matches 1. If identical
+elements were matched, pattern matching would generally loop. Here is an
+expansion rule for exponentials.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="makeRequest('p15');"
+    value="exprule:=rule exp(a+b)==exp(a)*exp(b)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+This rule would cause infinite rewriting on this if either a or b were
+allowed to match 0.
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p15','p16']);"
+    value="exprule exp x" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+There are occasions when you do want a pattern variable in a sum or product
+to match 0 or 1. If so, prefix its name with a "?" whenever it appears in
+a left-hand side of a rule. For example, consider the following rule for the
+exponential integral
+<pre>
+  integral((y+exp x)/x,x) == integral(y/x,x)+Ei x
+</pre>
+for any x and y. This rule is valid if y=0. One solution is to create a
+<a href="db.xhtml?Ruleset">Ruleset</a> with two rules, one with and one
+without y. A better solution is to use an "optional" pattern variable. 
+Define rule eirule with a pattern variable ?y to indicate that an
+expression may or may not occur.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="makeRequest('p17');"
+    value="eirule:=rule integral((?y+exp x)/x,x)==integral(y/x,x)+Ei x" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+Apply rule eirule to an integral without this term.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="handleFree(['p17','p18']);"
+    value="eirule integral (exp m/m,m)" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+Apply rule eirule to an integral with this term.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p17','p19']);"
+    value="eirule integral(sin m+exp m/m,m)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+Here is one final adornment you will find useful. When matching a pattern
+of the form x+y to an expression containing a long sum of the form
+a+...+b, there is no way to predict in advance which subset of the sum
+matches x and which matches y. Aside from efficiency, this is generally
+unimportant since the rule holds for any possible combination of matches
+for x and y. In some situations, however, you many want to say which
+pattern variable is a sum (or product) of several terms, and which should
+match only a single term. To do this, put a prefix colon (":") before the
+pattern variable that you want to match mutliple terms. The remaining rules
+involve operators u and v.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="makeRequest('p20');"
+    value="u:=operator 'u" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+These definitions tell Axiom that u and v are formal operators to be
+used in expressions.
+<ul>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="makeRequest('p21');"
+    value="v:=operator 'v" />
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+First define myRule with no restrictions on the pattern variables x and y.
+<ul>
+ <li>
+  <input type="submit" id="p22" class="subbut" 
+    onclick="makeRequest('p22');"
+    value="myRule:=rule u(x+y)==u x + v y" />
+  <div id="ansp22"><div></div></div>
+ </li>
+</ul>
+Apply myRule to an expression.
+<ul>
+ <li>
+  <input type="submit" id="p23" class="subbut" 
+    onclick="handleFree(['p20','p21','p22','p23']);"
+    value="myRule u(a+b+c+d)" />
+  <div id="ansp23"><div></div></div>
+ </li>
+</ul>
+Define myOtherRule to match several terms so that the rule gets applied
+recursively.
+<ul>
+ <li>
+  <input type="submit" id="p24" class="subbut" 
+    onclick="makeRequest('p24');"
+    value="myOtherRule:=rule u(:x+y)==u x + v y" />
+  <div id="ansp24"><div></div></div>
+ </li>
+</ul>
+Apply myOtherRule to the same expression
+<ul>
+ <li>
+  <input type="submit" id="p25" class="subbut" 
+    onclick="handleFree(['p20','p21','p24','p25']);"
+    value="myOtherRule u(a+b+c+d)" />
+  <div id="ansp25"><div></div></div>
+ </li>
+</ul>
+Here are some final remarks on pattern matching. Pattern matching provides
+a very useful paradigm for solving certain classes of problems, namely, 
+those that involve transformations of one form to another and back. However,
+it is important to recognize its limitations.
+
+First, pattern matching slows down as the number of rules you have to
+apply increases. Thus it is good practice to organize the sets of rules
+you use optimally so that irrelevant rules are never included.
+
+Second, careless use of pattern matching can lead to wrong answers. You
+should avoid pattern matching to handle hidden algebraic relationships
+that can go undetected by other programs. As a simple example, a symbol
+such as "J" can easily be used to represent the square root of -1 or some
+other important algebraic quantity. Many algorithms branch on whether an
+expression is zero or not, then divide by that expression if it is not. If 
+you fail to simplify an expresison involving powers of J to -1, algorithms
+may incorrectly assume an expression is no-zero, take a wrong branch, and
+produce a meaningless result.
+
+Pattern matching should also not be used as a substitute for a domain. In
+Axiom, objects of one domain are transformed to objects of other domains
+using well-defined <a href="dbopcoerce.xhtml">coerce</a> operations. 
+Pattern matching should be used on objects that are all of the same type.
+Thus if your application can be handled by type 
+<a href="db.xhtml?Expression">Expression</a> in Axiom and you think you 
+need pattern matching consider this choice carefully. You may well be
+better served by extending an existing domain or by building a new domain
+of objects for your application.
+<<page foot>>
+@
+
+\subsection{funrationalfunctions.xhtml}
+<<funrationalfunctions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Rational Functions</div>
+  <hr/>
+To create a rational function, just compute the quotient of two
+polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=(x-y)/(x+y)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Use the functions 
+<a href="dbopnumer.xhtml">numer</a> and
+<a href="dbopdenom.xhtml">denom</a> to recover the numerator and
+denominator of a fraction:
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="numer f" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="denom f" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Since these are polynomials, you can apply all of the 
+<a href="polynomialpage.xhtml">polynomial operations</a> to them. 
+You can substitute values or other rational functions for the variables
+using the function <a href="dbopeval.xhtml">eval</a>. The syntax for
+<a href="dbopeval.xhtml">eval</a> is similar to the one for polynomials:
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="eval(f,x=1/x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="eval(f,[x=y,y=x])" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{funsimplification.xhtml}
+<<funsimplification.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Simplification</div>
+  <hr/>
+Simplifying an expression often means different things at different times.
+Axiom offers a large number of "simplification" functions. The most common
+one, which performs the usual trigonometric simplifications is
+<a href="dbopsimplify.xhtml">simplify</a>.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=cos(x)/sin(x)*log(sin(x)^2/(cos(x)^2+sin(x)^2))" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="g:=simplify f" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+If the result of <a href="dbopsimplify.xhtml">simplify</a> is not 
+satisfactory, specific transformations are available. For example, to
+rewrite g in terms of secants and cosecants instead of sines and cosines,
+issues:
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="h:=sin2csc cos2sec g" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+To apply the logarithm simplification rules to h, issue:
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4']);"
+    value="h:=expandLog h" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Since the square root of x^2 is the absolute value of x and not x itself,
+algebraic radicals are not automatically simplified, but you can 
+specifically request it by calling 
+<a href="dboprootsimp.xhtml">rootSimp</a>:
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="f1:=sqrt((x+1)^3)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="rootSimp f1" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+There are other transformations which are sometimes useful. Use the 
+functions 
+<a href="dbopcomplexelementary.xhtml">complexElementary</a> and
+<a href="dboptrigs.xhtml">trigs</a> to go back and forth between
+the complex exponential and trigonometric forms of an elementary function.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="g1:=sin(x+cos x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p7','p8']);"
+    value="g2:=complexElementary g1" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p7','p8','p9']);"
+    value="trigs g2" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+Similarly, the functions
+<a href="dboprealelementary.xhtml">realElementary</a> and
+<a href="dbophtrigs.xhtml">htrigs</a> convert hyperbolic functions in
+and out of their exponential form.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="h1:=sinh(x+cosh x)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p10','p11']);"
+    value="h2:=realElementary h1" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p10','p11','p12']);"
+    value="htrigs h2" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+Axiom has other transformations, most of which are in the packages
+<a href="db.xhtml?ElementaryFunctionStructurePackage">
+ElementaryFunctionStructurePackage</a>,
+<a href="db.xhtml?TrigonometricManipulations">
+TrigonometricManipulations</a>,
+<a href="db.xhtml?AlgebraicManipulations">AlgebraicManipulations</a>, and
+<a href="db.xhtml?TranscendentalManipulations">
+TranscendentalManipulations</a>. If you need to apply a simplification
+rule not built into the system you can use Axiom's 
+<a href="funpatternmatching.xhtml">pattern matcher</a>.
+<<page foot>>
+@
+
+
+%%G
+\subsection{glossarypage.xhtml}
+<<glossarypage.xhtml>>=
+<<standard head>>
+ <style>
+  div.glabel    { color:blue; }
+  div.gsyntax   { color:blue; }
+  div.gspad     { color:blue; }
+  div.gfunction { color:blue; }
+  div.gtype     { color:blue; }
+  div.gcmd      { color:blue; }
+ </style>
+ </head>
+ <body>
+<<page head>>
+<ul>
+ <li><a name="p0" class="glabel"/><b>!</b>
+  <div class="gsyntax">(syntax)</div> Suffix character for 
+  <a href="#p14365">destructive operations</a>.
+ </li>
+ <li><a name="p74" class="glabel"/><b>,</b>
+  <div class="gsyntax">(syntax)</div> a separator for items in a 
+  <a href="#p50262">tuple</a>,  e.g. to separate arguments of a function 
+  <div class="gspad">f(x, y)</div>.
+ </li>
+ <li><a name="p210" class="glabel"/><b>=></b>
+  <div class="gsyntax">(syntax)</div> the expression 
+  <div class="gspad">a => b</div> is equivalent to 
+  <div class="gspad">if a then</div> <a href="#p19348">exit</a> 
+  <div class="gspad">b</div>.
+ </li>
+ <li><a name="p317" class="glabel"/><b>?</b>
+  <ol>
+   <li> 
+    <div class="gsyntax">(syntax)</div> a suffix character for 
+    Boolean-valued <div class="gfunction">function</div> names,  
+    e.g. <div class="gfunction">odd?</div>. 
+   </li>
+   <li> 
+    Suffix character for pattern variables. 
+   </li>
+   <li> The special type <div class="gspad">?</div> means 
+    <div class="gsyntax">don't care</div>. For example,  the declaration 
+    <div align="center" class="gspad">x : Polynomial ?</div>  means that 
+    values assigned to <div class="gspad">x</div> must be polynomials over 
+    an arbitrary <a href="#p51532">underlying domain</a>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p725" class="glabel"/><b>abstract datatype</b>
+  a programming language principle used in Axiom  where a datatype is 
+  defined in two parts: (1) a <div class="gsyntax">public</div> part 
+  describing a set of <a href="#p20171">exports</a>, principally operations
+  that apply to objects of that type,  and (2) a
+  <div class="gsyntax">private</div> part describing the implementation of
+  the datatype usually in terms of a <a href="#p44277">representation</a> for
+  objects of the type. Programs which create and otherwise manipulate objects
+  of the type may only do so through its exports. The representation and
+  other implementation information is specifically hidden.
+ </li>
+ <li><a name="p1287" class="glabel"/><b>abstraction</b>
+  described functionally or conceptually without regard to implementation
+ </li>
+ <li><a name="p1362" class="glabel"/><b>accuracy</b>
+  the degree of exactness of an approximation or measurement. In computer
+  algebra systems,  computations are typically carried out with complete 
+  accuracy using integers or rational numbers of indefinite size. Domain
+  <div class="gtype">Float</div> provides a function
+  <div class="gfunction">precision</div> from
+  <div class="gtype">Float</div> to change the precision for floating point
+  computations. Computations using <div class="gtype">DoubleFloat</div>
+  have a fixed precision but uncertain accuracy.
+ </li>
+ <li><a name="p1794" class="glabel"/><b>add-chain</b>
+  a hierarchy formed by <a href="#p16819">domain extensions</a>. If domain
+  <div class="gspad">A</div> extends domain <div class="gspad">B</div> and
+  domain <div class="gspad">B</div> extends domain <div class="gspad">C</div>,
+  then <div class="gspad">A</div> has <div class="gsyntax">add-chain</div>
+  <div class="gspad">B</div>-<div class="gspad">C</div>.
+ </li>
+ <li><a name="p1993" class="glabel"/><b>aggregate</b>
+  a data structure designed to hold multiple values. Examples of aggregates
+  are <div class="gtype">List</div>,  <div class="gtype">Set</div>, 
+  <div class="gtype">Matrix</div> and <div class="gtype">Bits</div>.
+ </li>
+ <li><a name="p2150" class="glabel"/><b>AKCL</b>
+  Austin Kyoto Common LISP,  a version of
+  <a href="#p30645"><div class="gspad">KCL</div></a> produced by
+  William Schelter, Austin, Texas.
+ </li>
+ <li><a name="p2267" class="glabel"/><b>algorithm</b>
+  a step-by-step procedure for a solution of a problem; a program
+ </li>
+ <li><a name="p2335" class="glabel"/><b>ancestor</b>
+  (of a domain) a category which is a <a href="#p38095">parent</a> of the
+  domain,  or a <a href="#p38095">parent</a> of a
+  <a href="#p38095">parent</a> and so on.
+ </li>
+ <li><a name="p2473" class="glabel"/><b>application</b>
+  <div class="gsyntax">(syntax)</div> an expression denoting "application"
+  of a function to a set of <a href="#p2885">argument</a> parameters.
+  Applications are written as a <a href="#p38004">parameterized form</a>.
+  For example,  the form <div class="gspad">f(x, y)</div> indicates the
+  "application of the function <div class="gspad">f</div> to the tuple of
+  arguments <div class="gspad">x</div> and <div class="gspad">y</div>". 
+  See also <a href="#p19167">evaluation</a> and
+  <a href="#p29675">invocation</a>.
+ </li>
+ <li><a name="p2852" class="glabel"/><b>apply</b>
+  See <a href="#p2473">application</a>.
+ </li>
+ <li><a name="p2885" class="glabel"/><b>argument</b>
+  <ol>
+   <li>
+    (actual argument) a value passed to a function at the time of a
+    <a href="#p22911">function</a> call application; also called an
+    <div class="gsyntax">actual parameter</div>. 
+   </li>
+   <li>
+    (formal argument) a variable used in the definition of a function
+    to denote the actual argument passed when the function is called.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p3173" class="glabel"/><b>arity</b>
+  <ol>
+   <li>
+    (function) the number of arguments. 
+   </li>
+   <li>
+    (operator or operation) corresponds to the arity of a function
+    implementing the operator or operation.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p3322" class="glabel"/><b>assignment</b>
+  <div class="gsyntax">(syntax)</div> an expression of the form
+  <div class="gspad">x := e</div>,  meaning "assign the value of
+  <div class="gspad">e</div> to <div class="gspad">x"</div>. After
+  <a href="#p19167">evaluation</a>,  the <a href="#p52894">variable</a>
+  <div class="gspad">x</div> <a href="#p39600">pointer</a> to an object
+  obtained by evaluating the expression <div class="gspad">e</div>. If
+  <div class="gspad">x</div> has a <a href="#p50664">type</a> as a result
+  of a previous <a href="#p12903">declaration</a>, the object assigned to
+  <div class="gspad">x</div> must have that type. An interpreter must often
+  <a href="#p9572">coercion</a> the value of <div class="gspad">e</div>
+  to make that happen. For example,  in the interpreter,  
+  <div align="center" class="gspad">x : Float := 11</div> first
+  <a href="#p12903">declaration</a> <div class="gspad">x</div> to be a float.
+  This declaration causes the interpreter to coerce 11 to 11.0 in order to
+  assign a floating point value to <div class="gspad">x</div>.
+ </li>
+ <li><a name="p4093" class="glabel"/><b>attribute</b>
+  a name or functional form denoting <div class="gsyntax">any</div> useful
+  computational property. For example,  
+  <div class="gfunction">commutative(<div class="gspad">"*"</div>)</div>
+  asserts that "<div class="gfunction">*</div> is commutative". Also,
+  <div class="gfunction">finiteAggregate</div> is used to assert that an
+  aggregate has a finite number of immediate components.
+ </li>
+ <li><a name="p4380" class="glabel"/><b>basis</b>
+  <div class="gsyntax">(algebra)</div> <div class="gspad">S</div> is a
+  basis of a module <div class="gspad">M</div> over a
+  <a href="#p45405">ring</a> if <div class="gspad">S</div> generates 
+  <div class="gspad">M</div>,  and <div class="gspad">S</div> is linearly
+  independent
+ </li>
+ <li><a name="p4536" class="glabel"/><b>benefactor</b>
+  (of a given domain) a domain or package that the given domain explicitly
+   references (for example,  calls functions from) in its implementation
+ </li>
+ <li><a name="p4684" class="glabel"/><b>binary</b>
+  operation or function with <a href="#p3173">arity</a> 2
+ </li>
+ <li><a name="p4735" class="glabel"/><b>binding</b>
+  the association of a variable with properties such as
+  <a href="#p52710">value</a> and <a href="#p50664">type</a>. The
+  top-level <a href="#p19131">environment</a> in the interpreter consists 
+  of bindings for all user variables and functions. Every
+  <a href="#p22911">function</a> has an associated set of bindings,  one
+  for each formal <a href="#p2885">argument</a> and
+  <a href="#p32278">local variable</a>.
+ </li>
+ <li><a name="p5086" class="glabel"/><b>block</b>
+  <div class="gsyntax">(syntax)</div> a control structure where
+  expressions are sequentially <a href="#p19167">evaluation</a>.
+ </li>
+ <li><a name="p5198" class="glabel"/><b>body</b>
+  a <a href="#p23911">function body</a> or <a href="#p33300">loop body</a>.
+ </li>
+ <li><a name="p5256" class="glabel"/><b>boolean</b>
+  objects denoted by the <a href="#p31774">literals</a>
+  <div class="gspad">true</div> and <div class="gspad">false</div>; 
+  elements of domain <div class="gtype">Boolean</div>. 
+  See also <div class="gtype">Bits</div>.
+ </li>
+ <li><a name="p5399" class="glabel"/><b>built-in function</b>
+  a <a href="#p22911">function</a> in the standard Axiom  library. 
+  Contrast <a href="#p52526">user function</a>.
+ </li>
+ <li><a name="p5499" class="glabel"/><b>cache</b>
+  <ol>
+   <li> 
+    (noun) a mechanism for immediate retrieval of previously computed data.
+    For example,  a function which does a lengthy computation might store
+    its values in a <a href="#p25428">hash table</a> using argument as a
+    key. The hash table then serves as a cache for the function (see also
+    <div class="gcmd">)set function cache</div>). Also,  when
+    <a href="#p43448">recurrence relations</a> which depend upon
+    <div class="gspad">n</div> previous values are compiled,  the previous
+    <div class="gspad">n</div> values are normally cached
+    (use <div class="gcmd">)set functions recurrence</div> to change this). 
+   </li>
+   <li>
+    (verb) to save values in a cache.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p6070" class="glabel"/><b>capsule</b>
+  the part of the <a href="#p23911">function body</a> of a
+  <a href="#p16173">domain constructor</a> that defines the functions 
+  implemented by the constructor.
+ </li>
+ <li><a name="p6220" class="glabel"/><b>case</b>
+  <div class="gsyntax">(syntax)</div> an operator used to
+  conditionally evaluate code based on the branch of a
+  <a href="#p51780">Union</a>. For example,  if value
+  <div class="gspad">u</div> is 
+  <div class="gspad">Union(Integer, "failed")</div>,  the conditional
+  expression <div class="gspad">if u case Integer then A else B</div> 
+  evaluate <div class="gspad">A</div> if <div class="gspad">u</div> is
+  an integer and <div class="gspad">B</div> otherwise.
+ </li>
+ <li><a name="p6537" class="glabel"/><b>Category</b>
+  the distinguished object denoting the type of a category; the class of
+  all categories.
+ </li>
+ <li><a name="p6628" class="glabel"/><b>category</b>
+  <div class="gsyntax">(basic concept)</div> second-order types which
+  serve to define useful "classification worlds" for domains, such as
+  algebraic constructs (e.g. groups, rings, fields), and data structures
+  (e.g. homogeneous aggregates, collections, dictionaries). Examples of
+  categories are <div class="gtype">Ring</div> ("the class of all
+  rings") and <div class="gtype">Aggregate</div> ("the class of all
+  aggregates"). The categories of a given world are arranged in a
+  hierarchy (formally, a directed acyclic graph). Each category inherits
+  the properties of all its ancestors. Thus, for example, the category
+  of ordered rings (<div class="gtype">OrderedRing</div>) inherits the
+  properties of the category of rings (<div class="gtype">Ring</div>)
+  and those of the ordered sets 
+  (<div class="gtype">OrderedSet</div>). Categories provide a database of
+  algebraic knowledge and ensure mathematical correctness, e.g. that
+  "matrices of polynomials" is correct but "polynomials of hash tables"
+  is not, that the multiply operation for "polynomials of continued
+  fractions" is commutative, but that for "matrices of power series" is
+  not. optionally provide "default definitions" for operations they
+  export. Categories are defined in Axiom by functions called 
+  <a href="#p8355">category constructors</a>. Technically, a category
+  designates a class of domains with common 
+  <a href="#p36041">operations</a> and <a href="#p4093">attributes</a> but
+  usually with different <a href="#p22911">functions</a> and 
+  <a href="#p44277">representations</a> for its constituent 
+  <a href="#p35301">objects</a>. Categories are always defined using the
+  Axiom library language (see also 
+  <a href="#p8634">category extension</a>). 
+  See also file <div class="gsyntax">catdef.spad</div>
+  for definitions of basic algebraic categories in Axiom .
+ </li>
+ <li><a name="p8355" class="glabel"/><b>category constructor</b>
+  a function that creates categories, described by an abstract
+  datatype in the Axiom programming language. For example, the category
+  constructor <div class="gtype">Module</div> is a function which takes
+  a domain parameter <div class="gspad">R</div> and creates the category
+  "modules over <div class="gspad">R</div>".
+ </li>
+ <li><a name="p8634" class="glabel"/><b>category extension</b>
+  created by a category definition, an expression usually of the form
+  <div class="gspad">A == B with ...</div>. In English, this means
+  "category A is a <div class="gspad">B</div> with the new operations
+  and attributes as given by ... . See, for example, file 
+  <div class="gsyntax">catdef.spad</div> for a definitions of the algebra
+  categories in Axiom , <div class="gsyntax">aggcat.spad</div> for data
+  structure categories.
+ </li>
+ <li><a name="p8996" class="glabel"/><b>category hierarchy</b>
+  hierarchy formed by category extensions. The root category is 
+  <div class="gtype">Object</div>. A category can be defined as a 
+  <a href="#p30459">Join</a> of two or more categories so as to have
+  multiple <a href="#p38095">parents</a>. Categories may also have
+  parameterized so as to allow conditional inheritance.
+ </li>
+ <li><a name="p9278" class="glabel"/><b>character</b>
+  <ol>
+   <li> 
+    an element of a character set,  as represented by a keyboard key. 
+   </li>
+   <li>
+    a component of a string. For example, the 0th element of the string
+    <div class="gspad">"hello there"</div> is the character 
+    <div class="gsyntax">h</div>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p9472" class="glabel"/><b>client</b>
+  (of a given domain) any domain or package that explicitly calls
+  functions from the given domain
+ </li>
+ <li><a name="p9572" class="glabel"/><b>coercion</b>
+  an automatic transformation of an object of one 
+  <a href="#p50664">type</a> to an object of a similar or desired target
+  type. In the interpreter, coercions and 
+  <a href="#p45044">retractions</a> are done automatically by the
+  interpreter when a type mismatch occurs. Compare 
+  <a href="#p12242">conversion</a>.
+ </li>
+ <li><a name="p9854" class="glabel"/><b>comment</b>
+  textual remarks imbedded in code. Comments are preceded by a double
+  dash (<div class="gsyntax">--</div>). For Axiom library code,
+  stylized comments for on-line documentation are preceded by a two plus
+  signs (<div class="gsyntax">++</div>).
+ </li>
+ <li><a name="p10064" class="glabel"/><b>Common LISP</b>
+  A version of <a href="#p31518">LISP</a> adopted as an informal
+  standard by major users and suppliers of LISP
+ </li>
+ <li><a name="p10167" class="glabel"/><b>compile-time</b>
+  the time when category or domain constructors are compiled. Contrast
+  <a href="#p45818">run-time</a>.
+ </li>
+ <li><a name="p10262" class="glabel"/><b>compiler</b>
+  a program that generates low-level code from a higher-level source
+  language. Axiom has three compilers. 
+  <ol>
+   <li>
+    A <div class="gsyntax">graphics
+    compiler</div> converts graphical formulas to a compiled subroutine so
+    that points can be rapidly produced for graphics commands. 
+   </li>
+   <li>
+    An <div class="gsyntax">interpreter compiler</div> optionally compiles 
+    <a href="#p52526">user functions</a> when first 
+    <a href="#p29675">invocation</a> 
+    (use <div class="gcmd">)set functions compile</div> 
+    to turn this feature on). 
+   </li>
+   <li> 
+    A <div class="gsyntax">library compiler</div> compiles all 
+    constructors.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p10792" class="glabel"/><b>computational object</b>
+   In Axiom , domains are objects. This term is used to distinquish the
+  objects which are members of domains rather than domains themselves.
+ </li>
+ <li><a name="p10941" class="glabel"/><b>conditional</b>
+  a <a href="#p12001">control structure</a> of the form 
+  <div class="gspad">if A then B else C</div>; The 
+  <a href="#p19167">evaluation</a> of <div class="gspad">A</div> produces
+  <div class="gspad">true</div> or <div class="gspad">false</div>. If
+  <div class="gspad">true</div>, <div class="gspad">B</div> evaluates to
+  produce a value; otherwise <div class="gspad">C</div> evaluates to
+  produce a value. When the value is not used, 
+  <div class="gspad">else C</div> part can be omitted.
+ </li>
+ <li><a name="p11264" class="glabel"/><b>constant</b>
+  <div class="gsyntax">(syntax)</div> a reserved word used in 
+  <a href="#p46813">signatures</a> in Axiom programming language to signify
+  that mark an operation always returns the same value. For example, the
+  signature <div class="gspad">0: constant -> $</div> in the source code
+  of <div class="gtype">AbelianMonoid</div> tells the Axiom compiler
+  that <div class="gspad">0</div> is a constant so that suitable
+  optimizations might be performed.
+ </li>
+ <li><a name="p11642" class="glabel"/><b>constructor</b>
+  a <a href="#p22911">function</a> which creates a 
+  <a href="#p6628">category</a>, <a href="#p15041">domain</a>, or 
+  <a href="#p36778">package</a>.
+ </li>
+ <li><a name="p11755" class="glabel"/><b>continuation</b>
+  when a line of a program is so long that it must be broken into
+  several lines, then all but the first line are called 
+  <div class="gsyntax">continuation lines</div>. If such a line is given
+  interactively, then each incomplete line must end with an underscore.
+ </li>
+ <li><a name="p12001" class="glabel"/><b>control structure</b>
+  program structures which can specify a departure from normal
+  sequential execution. Axiom has four kinds of control structures: 
+  <a href="#p5086">blocks</a>, <a href="#p6220">case</a> statements, 
+  <a href="#p10941">conditionals</a>, and <a href="#p33121">loops</a>.
+ </li>
+ <li><a name="p12242" class="glabel"/><b>conversion</b>
+  the transformation of an object on one <a href="#p50664">type</a> to
+  one of another type. Conversions performed automatically are called 
+  <a href="#p9572">coercions</a>. These happen when the interpreter has a
+  type mismatch and a similar or declared target type is needed. In
+  general, the user must use the infix operation 
+  <div class="gspad">::</div> to cause this transformation.
+ </li>
+ <li><a name="p12604" class="glabel"/><b>copying semantics</b>
+  the programming language semantics used in Pascal but 
+  <div class="gsyntax">not</div> in Axiom . See also 
+  <a href="#p39949">pointer semantics</a> for details.
+ </li>
+ <li><a name="p12740" class="glabel"/><b>data structure</b>
+  a structure for storing data in the computer. Examples are 
+  <a href="#p31730">lists</a> and <a href="#p25428">hash tables</a>.
+ </li>
+ <li><a name="p12850" class="glabel"/><b>datatype</b>
+  equivalent to <a href="#p15041">domain</a> in Axiom .
+ </li>
+ <li><a name="p12903" class="glabel"/><b>declaration</b>
+  <div class="gsyntax">(syntax)</div> an expression of the form 
+  <div class="gspad">x : T</div> where <div class="gspad">T</div> is some
+  <div class="gspad">type</div>. A declaration forces all values 
+  <a href="#p3322">assigned</a> to <div class="gspad">T</div> to be of that
+  type. If a value is of a different type, the interpreter will try to
+  <a href="#p9572">coerce</a> the value to type 
+  <div class="gspad">T</div>. Declarations are necessary in case of 
+  ambiguity or when a user wants to introduce an an 
+  <a href="#p20259">unexposed</a> domain.
+ </li>
+ <li><a name="p13351" class="glabel"/><b>default definition</b>
+  a function defined by a <a href="#p6628">category</a>. Such
+  definitions appear category definitions of the form 
+  <div class="gspad">C: Category == T add I</div> in an optional
+  implmentation part <div class="gspad">I</div> to the right of the
+  keyword <div class="gspad">add</div>.
+ </li>
+ <li><a name="p13571" class="glabel"/><b>default package</b>
+  a optional <a href="#p36778">package</a> of 
+  <a href="#p22911">functions</a> associated with a category. Such
+  functions are necessarily defined in terms over other functions
+  exported by the category.
+ </li>
+ <li><a name="p13754" class="glabel"/><b>definition</b>
+  <div class="gsyntax">(syntax)</div> 
+  <ol>
+   <li> 
+    An expression of the form
+    <div class="gspad">f(a) == b</div> defining function 
+    <div class="gspad">f</div> with <a href="#p21594">formal arguments</a> 
+    <div class="gspad">a</div> and <a href="#p5198">body</a> 
+    <div class="gspad">b</div>; equivalent to the statement 
+    <div class="gspad">f == (a) +-> b</div>. 
+   </li>
+   <li> 
+    An expression of the form 
+    <div class="gspad">a == b</div> where <div class="gspad">a</div> is a 
+    <a href="#p49347">symbol</a>, equivalent to 
+    <div class="gspad">a() == b</div>.
+    See also <a href="#p33585">macro</a> where a similar
+    substitution is done at <a href="#p38242">parse</a> time.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p14178" class="glabel"/><b>delimiter</b>
+  a <a href="#p9278">character</a> which marks the beginning or end of
+  some syntactically correct unit in the language, e.g. " for strings,
+  blanks for identifiers.
+ </li>
+ <li><a name="p14365" class="glabel"/><b>destructive operation</b>
+  An operation which changes a component or structure of a value. In
+  Axiom , all destructive operations have names which end with an
+  exclamation mark (<div class="gsyntax">!</div>). For example, domain
+  <div class="gtype">List</div> has two operations to reverse the
+  elements of a list, one named <div class="gfunction">reverse</div>
+  from <div class="gtype">List</div> which returns a copy of the
+  original list with the elements reversed, another named 
+  <div class="gfunction">reverse!</div> from <div class="gtype">List</div>
+  which reverses the elements <div class="gsyntax">in place</div> thus
+  destructively changing the original list.
+ </li>
+ <li><a name="p14877" class="glabel"/><b>documentation</b>
+  <ol>
+   <li> 
+    on-line or hard copy descriptions of Axiom; 
+   </li>
+   <li> 
+    text in library code preceded by 
+    <div class="gsyntax">++</div> comments as opposed to general comments
+    preceded by <div class="gsyntax">--</div>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p15041" class="glabel"/><b>domain</b>
+  <div class="gsyntax">(basic concept)</div> a domain corresponds to
+  the usual notion of abstract datatypes: that of a set of values and a
+  set of "exported operations" for the creation and manipulation of
+  these values. Datatypes are parameterized, dynamically constructed,
+  and can combine with others in any meaningful way, e.g. "lists of
+  floats" (<div class="gtype">List Float</div>), "fractions of
+  polynomials with integer coefficients" 
+  (<div class="gtype">Fraction Polynomial Integer</div>), 
+  "matrices of infinite <a href="#p47825">streams</a> of cardinal numbers" 
+  (<div class="gtype">Matrix Stream CardinalNumber</div>). The term 
+  <div class="gsyntax">domain</div> is actually abbreviates 
+  <div class="gsyntax">domain of computation</div>. Technically, a domain
+  denotes a class of objects, a class of 
+  <a href="#p36041">operations</a> for creating and other manipulating
+  these objects, and a class of <a href="#p4093">attributes</a>
+  describing computationally useful properties. Domains also provide 
+  <a href="#p22911">functions</a> for each operation often in terms of some
+  <a href="#p44277">representation</a> for the objects. A domain itself
+  is an <a href="#p35301">object</a> created by a 
+  <a href="#p22911">function</a> called a <a href="#p16173">domain
+  constructor</a>.
+ </li>
+ <li><a name="p16173" class="glabel"/><b>domain constructor</b>
+   a function that creates domains, described by an abstract datatype in
+  the Axiom programming language. Simple domains like 
+  <div class="gtype">Integer</div> and <div class="gtype">Boolean</div> are
+  created by domain constructors with no arguments. Most domain
+  constructors take one or more parameters, one usually denoting an 
+  <a href="#p51532">underlying domain</a>. For example, the domain 
+  <div class="gtype">Matrix(R)</div> denotes "matrices over 
+  <div class="gspad">R"</div>. Domains <div class="gsyntax">Mapping</div>,
+  <div class="gsyntax">Record</div>, and 
+  <div class="gsyntax">Union</div> are primitive domains. All other domains
+  are written in the Axiom programming language and can be modified by
+  users with access to the library source code.
+ </li>
+ <li><a name="p16819" class="glabel"/><b>domain extension</b>
+  a domain constructor <div class="gspad">A</div> is said to 
+  <div class="gsyntax">extend</div> a domain constructor 
+  <div class="gspad">B</div> if <div class="gspad">A</div>
+  <div class="gspad">'s</div> definition has the form 
+  <div class="gspad">A == B add ...</div>. 
+  This intuitively means "functions not defined by <div
+  class="gspad">A</div> are assumed to come from 
+  <div class="gspad">B</div>". Successive domain extensions form 
+  <a href="#p1794">add-chains</a> affecting the the 
+  <a href="#p46200">search order</a> for functions not implemented directly
+  by the domain during <a href="#p17853">dynamic lookup</a>.
+ </li>
+ <li><a name="p17269" class="glabel"/><b>dot notation</b>
+  using an infix dot (<div class="gsyntax">.</div>) for function
+  application. If <div class="gspad">u</div> is the list 
+  <div class="gspad">[7, 4, -11]</div> then both 
+  <div class="gspad">u(2)</div> and <div class="gspad">u.2</div> return
+  4. Dot notation nests to left. Thus <div class="gspad">f . g . h</div>
+  is equivalent to <div class="gspad">(f . g) . h</div>.
+ </li>
+ <li><a name="p17507" class="glabel"/><b>dynamic</b>
+  that which is done at <a href="#p45818">run-time</a> as opposed to 
+  <a href="#p10167">compile-time</a>. For example, the interpreter will
+  build the domain "matrices over integers" dynamically in response to
+  user input. However, the compilation of all functions for matrices and
+  integers is done during <a href="#p10167">compile-time</a>. Constrast
+  <a href="#p47594">static</a>.
+ </li>
+ <li><a name="p17853" class="glabel"/><b>dynamic lookup</b>
+  In Axiom , a <a href="#p17507">domain</a> may or may not explicitly
+  provide <a href="#p22911">function</a> definitions for all of its
+  exported <a href="#p36041">operations</a>. These definitions may
+  instead come from domains in the <a href="#p1794">add-chain</a> or
+  from <a href="#p13571">default packages</a>. When a 
+  <a href="#p2400">function call</a> is made for an operation in the
+  domain, up to five steps are carried out.
+  <ol>
+   <li> 
+    If the domain itself implements a function for the operation,  
+    that function is returned. 
+   </li>
+   <li> 
+    Each of the domains in the <a href="#p1794">add-chain</a> are searched
+    for one which implements the function; if found, the function is returned.
+   </li>
+   <li> 
+    Each of the <a href="#p13571">default packages</a> for the domain are
+    searched in order of the <a href="#p30933">lineage</a>. If any of the
+    default packages implements the function, the first one found is
+    returned.
+   </li>
+   <li> 
+    Each of the <a href="#p13571">default packages</a> for each of the
+    domains in the <a href="#p1794">add-chain</a> are searched in the
+    order of their <a href="#p30933">lineage</a>. If any of the default
+    packages implements the function, the first one found is returned.
+   </li>
+   <li> If all of the above steps fail,  an error message is reported. 
+   </li>
+  </ol>
+ </li>
+ <li><a name="p19071" class="glabel"/><b>empty</b>
+  the unique value of objects with type <div class="gtype">Void</div>.
+ </li>
+ <li><a name="p19131" class="glabel"/><b>environment</b>
+  a set of <a href="#p4735">bindings</a>.
+ </li>
+ <li><a name="p19167" class="glabel"/><b>evaluation</b>
+  a systematic process which transforms an 
+  <a href="#p20659">expression</a> into an object called the 
+  <a href="#p52710">value</a> of the expression. Evaluation may produce 
+  <a href="#p46699">side effects</a>.
+ </li>
+ <li><a name="p19348" class="glabel"/><b>exit</b>
+  <div class="gsyntax">(reserved word)</div> an 
+  <a href="#p36278">operator</a> which forces an exit from the current
+  block. For example, the <a href="#p5086">block</a> 
+  <div class="gspad">(a := 1; if i > 0 then exit a; a := 2)</div> will
+  prematurely exit at the second statement with value 1 if the value of
+  <div class="gspad">i</div> is greater than 0. See 
+  <a href="#p210"><div class="gspad">=></div></a> for an alternate syntax.
+ </li>
+ <li><a name="p19681" class="glabel"/><b>explicit export</b>
+  <ol>
+   <li> 
+    (of a domain <div class="gspad">D</div>) any 
+    <a href="#p4093">attribute</a>, <a href="#p36041">operation</a>, or 
+    <a href="#p6628">category</a> explicitly mentioned in the 
+    <a href="#p50664">type</a> specification part <div class="gspad">T</div>
+    for the domain constructor definition  <div class="gspad">D: T == I</div>
+   </li>
+   <li> 
+    (of a category <div class="gspad">C</div>) any 
+    <a href="#p4093">attribute</a>, <a href="#p36041">operation</a>, or 
+    <a href="#p6628">category</a> explicitly mentioned in the 
+    <a href="#p50664">type</a> specification part <div class="gspad">T</div>
+    for the domain constructor definition 
+    <div class="gspad">C: <a href="#p6537">Category</a> == T</div>
+   </li>
+  </ol>
+ </li>
+ <li><a name="p20171" class="glabel"/><b>export</b>
+   <a href="#p19681">explicit export</a> or <a href="#p27325">implicit
+  export</a> of a domain or category
+ </li>
+ <li><a name="p20259" class="glabel"/><b>expose</b>
+  some constructors are <div class="gsyntax">exposed</div>, others
+  <div class="gsyntax">unexposed</div>. Exposed domains and packages
+  are recognized by the interpreter. Use 
+  <div class="gcmd">)set expose</div> 
+  to control change what is exposed. To see both exposed
+  and unexposed constructors, use the browser with give the system
+  command <div class="gcmd">)set hyperdoc browse exposure
+  on</div>. Unexposed constructors will now appear prefixed by star
+  (<div class="gspad">*</div>).
+ </li>
+ <li><a name="p20659" class="glabel"/><b>expression</b>
+  <ol>
+   <li> any syntactically correct program fragment. 
+   </li>
+   <li> an element of domain <div class="gtype">Expression</div>
+   </li>
+  </ol>
+ </li>
+ <li><a name="p20757" class="glabel"/><b>extend</b>
+  see <a href="#p8634">category extension</a> or <a href="#p16819">domain 
+  extension</a>
+ </li>
+ <li><a name="p20829" class="glabel"/><b>field</b>
+  <div class="gsyntax">(algebra)</div> a <a href="#p17507">domain</a>
+  which is <a href="#p45405">ring</a> where every non-zero element is
+  invertible and where <div class="gspad">xy=yx</div>; a member of
+  category <div class="gtype">Field</div>. For a complete list of
+  fields, click on <div class="gsyntax">Domains</div> under 
+  <div class="gsyntax">Cross Reference</div> for 
+  <div class="gtype">Field</div>.
+ </li>
+ <li><a name="p21109" class="glabel"/><b>file</b>
+  a program or collection of data stored on disk,  tape or other medium.
+ </li>
+ <li><a name="p21186" class="glabel"/><b>float</b>
+  a floating-point number with user-specified precision; an element of
+  domain <div class="gtype">Float</div>. Floats are 
+  <a href="#p31774">literals</a> which are written two ways: without an
+  exponent (e.g. <div class="gspad">3.1416</div>), or with an exponent
+  (e.g. <div class="gspad">3.12E-12</div>). Use function 
+  <a href="#p42318">precision</a> to change the precision of the mantissage
+  (20 digits by default). See also <a href="#p47066">small float</a>.
+ </li>
+ <li><a name="p21594" class="glabel"/><b>formal parameter</b>
+  (of a function) an identifier <a href="#p4735">bound</a> to the value
+  of an actual <a href="#p2885">argument</a> on 
+  <a href="#p29675">invocation</a>. In the function definition 
+  <div class="gspad">f(x, y) == u</div>, for example, 
+  <div class="gspad">x</div> and <div class="gspad">y</div> are the formal
+  parameter.
+ </li>
+ <li><a name="p21847" class="glabel"/><b>frame</b>
+  the basic unit of an interactive session; each frame has its own
+  <a href="#p47691">step number</a>, <a href="#p19131">environment</a>, and
+  <a href="#p26034">history</a>. In one interactive session, users can
+  can create and drop frames, and have several active frames simultaneously.
+ </li>
+ <li><a name="p22113" class="glabel"/><b>free</b>
+   <div class="gsyntax">(syntax)</div> A keyword used in user-defined
+  functions to declare that a variable is a 
+  <a href="#p22739">free variable</a> of that function. 
+  For example, the statement 
+  <div class="gspad">free x</div> declares the variable 
+  <div class="gspad">x</div> within the body of a function 
+  <div class="gspad">f</div> to be a free variable in 
+  <div class="gspad">f</div>. Without such a declaration, any variable 
+  <div class="gspad">x</div> which appears on the left hand side of an
+  assignment is regarded as a <a href="#p32278">local variable</a> of
+  that function. If the intention of the assignment is to give an value
+  to a <a href="#p24833">global variable</a> <div class="gspad">x</div>,
+  the body of that function must contain the statement 
+  <div class="gspad">free x</div>.
+ </li>
+ <li><a name="p22739" class="glabel"/><b>free variable</b>
+   (of a function) a variable which appears in a body of a function but
+  is not <a href="#p4735">bound</a> by that function. See 
+  <a href="#p32278">local variable</a> by default.
+ </li>
+ <li><a name="p22911" class="glabel"/><b>function</b>
+   implementation of <a href="#p36041">operation</a>; it takes zero or
+  more <a href="#p2885">argument</a> parameters and produces zero or
+  more values. Functions are objects which can be passed as parameters
+  to functions and can be returned as values of functions. Functions can
+  also create other functions (see also 
+  <div class="gtype">InputForm</div>). See also 
+  <a href="#p2473">application</a> and 
+  <a href="#p29675">invocation</a>. The terms 
+  <div class="gsyntax">operation</div> and 
+  <div class="gsyntax">function</div> are distinct notions in Axiom . An
+  operation is an abstraction of a function, described by declaring a 
+  <a href="#p46813">signature</a>. A function is created by providing an
+  implementation of that operation by some piece of Axiom code. Consider
+  the example of defining a user-function <div class="gspad">fact</div>
+  to compute the <div class="gfunction">factorial</div> of a nonnegative
+  integer. The Axiom statement 
+  <div class="gspad">fact: Integer -> Integer</div> 
+  describes the operation, whereas the statement 
+  <div class="gspad">fact(n) = reduce(*, [1..n])</div> defines the
+  functions. See also <a href="#p24495">generic function</a>.
+ </li>
+ <li><a name="p23911" class="glabel"/><b>function body</b>
+   the part of a <a href="#p22911">function</a>
+  <div class="gspad">'s</div> definition which is evaluated when the function
+  is called at <a href="#p45818">run-time</a>; the part of the function
+  definition to the right of the <div class="gspad">==</div>.
+ </li>
+ <li><a name="p2400" class="glabel"/><b>function call</b>
+   <div class="gsyntax">(syntax)</div> an expression denoting
+  "application" of a function to a set of <a href="#p2885">argument</a>
+  parameters. Applications are written as a 
+  <a href="#p38004">parameterized form</a>. For example, the form 
+  <div class="gspad">f(x, y)</div> indicates the "application of the function
+  <div class="gspad">f</div> to the tuple of arguments 
+  <div class="gspad">x</div> and <div class="gspad">y</div>". See also 
+  <a href="#p19167">evaluation</a> and <a href="#p29675">invocation</a>.
+ </li>
+ <li><a name="p24123" class="glabel"/><b>garbage collection</b>
+   a system function that automatically recycles memory cells from the
+  <a href="#p25771">heap</a>. Axiom is built upon 
+  <a href="#p10064">Common LISP</a> which provides this facility.
+ </li>
+ <li><a name="p24294" class="glabel"/><b>garbage collector</b>
+  a mechanism for reclaiming storage in the <a href="#p25771">heap</a>.
+ </li>
+ <li><a name="p24359" class="glabel"/><b>Gaussian</b>
+   a complex-valued expression, e.g. one with both a real and imaginary
+  part; a member of a <div class="gtype">Complex</div> domain.
+ </li>
+ <li><a name="p24495" class="glabel"/><b>generic function</b>
+   the use of one function to operate on objects of different types; One
+  might regard Axiom as supporting generic 
+  <a href="#p36041">operations</a> but not generic functions. One operation
+  <div class="gspad">+: (D, D) -> D</div> exists for adding elements in
+  a ring; each ring however provides its own type-specific function for
+  implementing this operation.
+ </li>
+ <li><a name="p24833" class="glabel"/><b>global variable</b>
+   A variable which can be referenced freely by functions. In Axiom ,
+  all top-level user-defined variables defined during an interactive
+  user session are global variables. Axiom does not allow <div
+  class="gsyntax">fluid variables</div>, that is, variables 
+  <a href="#p4735">bound</a> by functions which can be referenced by
+  functions those functions call.
+ </li>
+ <li><a name="p25189" class="glabel"/><b>Groebner basis</b>
+   <div class="gsyntax">(algebra)</div> a special basis for a
+  polynomial ideal that allows a simple test for membership. It is
+  useful in solving systems of polynomial equations.
+ </li>
+ <li><a name="p25348" class="glabel"/><b>group</b>
+   <div class="gsyntax">(algebra)</div> a <a href="#p34266">monoid</a>
+  where every element has a multiplicative inverse.
+ </li>
+ <li><a name="p25428" class="glabel"/><b>hash table</b>
+   A data structure that efficiency maps a given object to another. A
+  hash table consists of a set of <div class="gsyntax">entries</div>,
+  each of which associates a <div class="gsyntax">key</div> with a 
+  <div class="gsyntax">value</div>. Finding the object stored under a key
+  can be very fast even if there are a large number of entries since
+  keys are <div class="gsyntax">hashed</div> into numerical codes for
+  fast lookup.
+ </li>
+ <li><a name="p25771" class="glabel"/><b>heap</b>
+   an area of storage used by data in programs. For example, AXIOM will
+  use the heap to hold the partial results of symbolic
+  computations. When cancellations occur, these results remain in the
+  heap until <a href="#p24294">garbage collected</a>.
+ </li>
+ <li><a name="p26034" class="glabel"/><b>history</b>
+   a mechanism which records the results for an interactive
+  computation. Using the history facility, users can save computations,
+  review previous steps of a computation, and restore a previous
+  interactive session at some later time. For details, issue the system
+  command <div class="gsyntax">)history ?</div> to the interpreter. See
+  also <a href="#p21847">frame</a>.
+ </li>
+ <li><a name="p26380" class="glabel"/><b>ideal</b>
+   <div class="gsyntax">(algebra)</div> a subset of a ring that is
+  closed under addition and multiplication by arbitrary ring elements,
+  i.e. it<div class="gspad">'s</div> a module over the ring.
+ </li>
+ <li><a name="p26553" class="glabel"/><b>identifier</b>
+   <div class="gsyntax">(syntax)</div> an Axiom name; a 
+  <a href="#p31774">literal</a> of type <div class="gtype">Symbol</div>. An
+  identifier begins with an alphabetical character or % and may be
+  followed by alphabetic characters, digits, ? or !. Certain
+  distinquished <a href="#p44698">reserved words</a> are not allowed as
+  identifiers but have special meaning in the Axiom .
+ </li>
+ <li><a name="p26892" class="glabel"/><b>immutable</b>
+   an object is immutable if it cannot be changed by an 
+  <a href="#p36041">operation</a>; not a <a href="#p34398">mutable
+  object</a>. Algebraic objects generally immutable: changing an
+  algebraic expression involves copying parts of the original
+  object. One exception is a matrix object of type 
+  <div class="gtype">Matrix</div>. Examples of mutable objects are data
+  structures such as those of type <div class="gtype">List</div>. See
+  also <a href="#p39949">pointer semantics</a>.
+ </li>
+ <li><a name="p27325" class="glabel"/><b>implicit export</b>
+   (of a domain or category) any <a href="#p4093">attribute</a> or 
+  <a href="#p36041">operation</a> which is either an explicit export or
+  else an explicit export of some category which an explicit category
+  export <a href="#p20757">extends</a>.
+ </li>
+ <li><a name="p27564" class="glabel"/><b>index</b>
+  <ol>
+   <li> 
+    a variable that counts the number of times a 
+    <a href="#p33121">loop</a> is repeated. 
+   </li>
+   <li> 
+    the "address" of an element in a data structure (see also category 
+    <div class="gtype">LinearAggregate</div>).
+   </li>
+  </ol>
+ </li>
+ <li><a name="p27746" class="glabel"/><b>infix</b>
+   <div class="gsyntax">(syntax)</div> an 
+  <a href="#p36278">operator</a> placed between two 
+  <a href="#p35946">operands</a>; also called a 
+  <div class="gsyntax">binary operator</div>, e.g. 
+  <div class="gspad">a + b</div>. An infix operator may also be used as a 
+  <a href="#p42559">prefix</a>, e.g. <div class="gspad">+(a, b)</div> is
+  also permissable in the Axiom language. Infix operators have a
+  relative <a href="#p42098">precedence</a>.
+ </li>
+ <li><a name="p28103" class="glabel"/><b>input area</b>
+  a rectangular area on a screen into which users can enter text.
+ </li>
+ <li><a name="p28185" class="glabel"/><b>instantiate</b>
+  to build a <a href="#p6628">category</a>,  <a href="#p17507">domain</a>,  
+  or <a href="#p36778">package</a> at run-time
+ </li>
+ <li><a name="p28282" class="glabel"/><b>integer</b>
+   a <a href="#p31774">literal</a> object of domain 
+  <div class="gtype">Integer</div>, the class of integers with an unbounded
+  number of digits. Integer literals consist of one or more consecutive
+  digits (0-9) with no embedded blanks. Underscores can be used to
+  separate digits in long integers if desirable.
+ </li>
+ <li><a name="p28570" class="glabel"/><b>interactive</b>
+  a system where the user interacts with the computer step-by-step
+ </li>
+ <li><a name="p28640" class="glabel"/><b>interpreter</b>
+   the subsysystem of Axiom responsible for handling user input during
+  an interactive session. The following somewhat simplified description
+  of the typical action of the interpreter. The interpreter parsers the
+  user<div class="gspad">'s</div> input expression to create an
+  expression tree then does a bottom-up traversal of the tree. Each
+  subtree encountered which is not a value consists of a root node
+  denoting an operation name and one or more leaf nodes denoting 
+  <a href="#p35946">operands</a>. The interpreter resolves type mismatches
+  and uses type-inferencing and a library database to determine
+  appropriate types of the operands and the result, and an operation to
+  be performed. The interpreter then builds a domain to perform the
+  indicated operation, then invokes a function from the domain to
+  compute a value. The subtree is then replaced by that value and the
+  process continues. Once the entire tree has been processed, the value
+  replacing the top node of the tree is displayed back to the user as
+  the value of the expression.
+ </li>
+ <li><a name="p29675" class="glabel"/><b>invocation</b>
+   (of a function) the run-time process involved in 
+  <a href="#p19167">evaluating</a> a <a href="#p22911">function</a> 
+  <a href="#p2473">application</a>. This process has two steps. First, a
+  local <a href="#p19131">environment</a> is created where 
+  <a href="#p21594">formal arguments</a> are locally 
+  <a href="#p4735">bound</a> by <a href="#p3322">assignment</a> to their
+  respective actual <a href="#p2885">argument</a>. Second, the 
+  <a href="#p23911">function body</a> is evaluated in that local
+  environment. The evaluation of a function is terminated either by
+  completely evaluating the function body or by the evaluation of a 
+  <div class="gfunction">return</div> expression.
+ </li>
+ <li><a name="p30286" class="glabel"/><b>iteration</b>
+  repeated evaluation of an expression or a sequence of
+  expressions. Iterations use the reserved words 
+  <div class="gfunction">for</div>, <div class="gfunction">while</div>, and
+  <div class="gfunction">repeat</div>.
+ </li>
+ <li><a name="p30459" class="glabel"/><b>Join</b>
+   a primitive Axiom function taking two or more categories as arguments
+  and producing a category containing all of the operations and
+  attributes from the respective categories.
+ </li>
+ <li><a name="p30645" class="glabel"/><b>KCL</b>
+   Kyoto Common LISP, a version of <a href="#p10064">Common LISP</a>
+  which features compilation of the compilation of LISP into the 
+  <div class="gspad">C</div> Programming Language
+ </li>
+ <li><a name="p30801" class="glabel"/><b>library</b>
+   In Axiom , a coolection of compiled modules respresenting the a 
+  <a href="#p6628">category</a> or <a href="#p17507">domain</a>
+  constructor.
+ </li>
+ <li><a name="p30933" class="glabel"/><b>lineage</b>
+   the sequence of <a href="#p13571">default packages</a> for a given
+  domain to be searched during 
+  <a href="#p17853">dynamic lookup</a>. 
+  This sequence is computed first by ordering the category
+  <a href="#p2335">ancestors</a> of the domain according to their <div
+  class="gsyntax">level number</div>, an integer equal to to the
+  minimum distance of the domain from the category. Parents have level
+  1, parents of parents have level 2, and so on. Among categories with
+  equal level numbers, ones which appear in the left-most branches of
+  <div class="gsyntax">Join</div><div class="gspad">s</div> in the
+  source code come first. See also <a href="#p17853">dynamic lookup</a>.
+ </li>
+ <li><a name="p31518" class="glabel"/><b>LISP</b>
+   acronymn for List Processing Language, a language designed for the
+  manipulation of nonnumerical data. The Axiom library is translated
+  into LISP then compiled into machine code by an underlying LISP.
+ </li>
+ <li><a name="p31730" class="glabel"/><b>list</b>
+  an object of a <div class="gtype">List</div> domain.
+ </li>
+ <li><a name="p31774" class="glabel"/><b>literal</b>
+   an object with a special syntax in the language. In Axiom , there are
+  five types of literals: <a href="#p5256">booleans</a>, 
+  <a href="#p28282">integers</a>, <a href="#p21186">floats</a>, 
+  <a href="#p48077">strings</a>, and <a href="#p49347">symbols</a>.
+ </li>
+ <li><a name="p31998" class="glabel"/><b>local</b>
+   <div class="gsyntax">(syntax)</div> A keyword used in user-defined
+  functions to declare that a variable is a 
+  <a href="#p32278">local variable</a> of that function. 
+  Because of default assumptions on
+  variables, such a declaration is not necessary but is available to the
+  user for clarity when appropriate.
+ </li>
+ <li><a name="p32278" class="glabel"/><b>local variable</b>
+   (of a function) a variable <a href="#p4735">bound</a> by that
+  function and such that its binding is invisible to any function that
+  function calls. Also called a <div class="gsyntax">lexical</div>
+  variable. By default in the interpreter:
+  <ol>
+   <li> 
+    any variable <div class="gspad">x</div> which appears on the left hand
+    side of an assignment is regarded a local variable of that
+    function. If the intention of an assignment is to change the value of
+    a <a href="#p24833">global variable</a> <div class="gspad">x</div>,
+    the body of the function must then contain the statement 
+    <div class="gspad">free x</div>.
+   </li>
+   <li> 
+    any other variable is regarded as a <a href="#p22739">free variable</a>. 
+   </li>
+   <li>
+     An optional declaration <div class="gspad">local x</div> is available
+    to explicitly declare a variable to be a local variable. All 
+    <a href="#p21594">formal parameters</a> to the function can be regarded
+    as local variables to the function.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p33121" class="glabel"/><b>loop</b>
+  <ol>
+   <li> an expression containing a <div class="gfunction">repeat</div>
+   </li>
+   <li> 
+    a collection expression having a <div class="gfunction">for</div> or a
+    <div class="gfunction">while</div>, e.g. 
+    <div class="gspad">[f(i) for i in S]</div>.
+  </li>
+  </ol>
+ </li>
+ <li><a name="p33300" class="glabel"/><b>loop body</b>
+   the part of a loop following the <div class="gfunction">repeat</div>
+  that tells what to do each iteration. For example, the body of the
+  loop <div class="gspad">for x in S repeat B</div> is 
+  <div class="gspad">B</div>. For a collection expression, the body of the
+  loop precedes the initial <div class="gfunction">for</div> or 
+  <div class="gfunction">while</div>.
+ </li>
+ <li><a name="p33585" class="glabel"/><b>macro</b>
+  <ol>
+   <li> 
+    <div class="gsyntax">(syntax)</div> An expression of the form 
+    <div class="gspad">macro a == b</div> where <div class="gspad">a</div> is a
+    <a href="#p49347">symbol</a> causes <div class="gspad">a</div> to be
+    textually replaced by the expression <div class="gspad">b</div> at 
+    <a href="#p38242">parse</a> time.
+   </li>
+   <li> 
+    An expression of the form <div class="gspad">macro f(a) == b</div>
+    defines a parameterized macro expansion for a parameterized form 
+    <div class="gspad">f</div> This macro causes a form 
+    <div class="gspad">f</div>(<div class="gspad">x</div>) to be textually
+    replaced by the expression <div class="gspad">c</div> at parse time,
+    where <div class="gspad">c</div> is the expression obtained by
+    replacing <div class="gspad">a</div> by <div class="gspad">x</div>
+    everywhere in <div class="gspad">b</div>. See also 
+    <a href="#p13754">definition</a> where a similar substitution is done
+    during <a href="#p19167">evaluation</a>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p34233" class="glabel"/><b>mode</b>
+   a type expression containing a question-mark 
+  (<div class="gsyntax">?</div>). For example, the mode 
+  <div class="gsyntax">P ?</div> designates <div class="gsyntax">the class
+  of all polynomials over an arbitrary ring</div>.
+ </li>
+ <li><a name="p34266" class="glabel"/><b>monoid</b>
+  is a set with a single, associative operation and an identity element
+ </li>
+ <li><a name="p34398" class="glabel"/><b>mutable</b>
+   objects which contain <a href="#p39600">pointers</a> to other objects
+  and which have operations defined on them which alter these
+  pointers. Contrast <a href="#p26892">immutable</a>. Axiom uses 
+  <a href="#p39949">pointer semantics</a> as does 
+  <a href="#p31518">LISP</a> in contrast with many other languages such as
+  Pascal which use <a href="#p12604">copying semantics</a>. See 
+  <a href="#p39949">pointer semantics</a> for details.
+ </li>
+ <li><a name="p34778" class="glabel"/><b>name</b>
+  <ol>
+   <li>
+    a <a href="#p49347">symbol</a> denoting a <a href="#p52894">variable</a>,
+    i.e. the variable <div class="gspad">x</div>. 
+   </li>
+   <li> 
+    a <a href="#p49347">symbol</a> denoting an 
+    <a href="#p36041">operation</a>,  i.e. the operation
+    <div class="gspad">divide: (Integer, Integer) -> Integer</div>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p35023" class="glabel"/><b>nullary</b>
+  a function with no arguments,  
+  e.g. <div class="gfunction">characteristic</div>.
+ </li>
+ <li><a name="p35104" class="glabel"/><b>nullary</b>
+  operation or function with <a href="#p3173">arity</a> 0
+ </li>
+ <li><a name="p35156" class="glabel"/><b>Object</b>
+   a category with no operations or attributes,  from which most categories
+   in Axiom  are <a href="#p8634">category extensions</a>.
+ </li>
+ <li><a name="p35301" class="glabel"/><b>object</b>
+   a data entity created or manipulated by programs. Elements of
+  domains, functions, and domains themselves are objects. Whereas
+  categories are created by functions, they cannot be dynamically
+  manipulated in the current system and are thus not considered as
+  objects. The most basic objects are <a href="#p31774">literals</a>;
+  all other objects must be created 
+  <a href="#p22911">functions</a>. Objects can refer to other objects using
+  <a href="#p39600">pointers</a>. Axiom language uses 
+  <a href="#p39949">pointer semantics</a> when dealing with 
+  <a href="#p34398">mutable</a> objects.
+ </li>
+ <li><a name="p35854" class="glabel"/><b>object code</b>
+   code which can be directly executed by hardware; also known as 
+  <div class="gsyntax">machine language</div>.
+ </li>
+ <li><a name="p35946" class="glabel"/><b>operand</b>
+   an argument of an <a href="#p36278">operator</a> (regarding an
+  operator as a <a href="#p22911">function</a>).
+ </li>
+ <li><a name="p36041" class="glabel"/><b>operation</b>
+   an abstraction of a <a href="#p22911">function</a>, described by a 
+  <a href="#p46813">signature</a>. For example, 
+  <div align="center" class="gspad">
+   fact: NonNegativeInteger -> NonNegativeInteger
+  </div>
+  describes an operation for "the factorial of a (non-negative) integer".
+ </li>
+ <li><a name="p36278" class="glabel"/><b>operator</b>
+   special reserved words in the language such as 
+  <div class="gfunction">+</div> and <div class="gfunction">*</div>;
+  operators can be either <a href="#p42559">prefix</a> or 
+  <a href="#p27746">infix</a> and have a relative 
+  <a href="#p42098">precedence</a>.
+ </li>
+ <li><a name="p36465" glabel="class"/><b>overloading</b>
+   the use of the same name to denote distinct functions; a function is
+  identified by a <a href="#p46813">signature</a> identifying its name,
+  the number and types of its arguments, and its return types. If two
+  functions can have identical signatures, a
+  <a href="#p37520">package call</a> must be made to distinquish the two.
+ </li>
+ <li><a name="p36778" class="glabel"/><b>package</b>
+   a domain whose exported operations depend solely on the parameters
+  and other explicit domains, e.g. a package for solving systems of
+  equations of polynomials over any field, e.g. floats, rational
+  numbers, complex rational functions, or power series. Facilities for
+  integration, differential equations, solution of linear or polynomial
+  equations, and group theory are provided by "packages". Technically, a
+  package is a domain which has no <a href="#p46813">signature</a>
+  containing the symbol $. While domains intuitively provide
+  computational objects you can compute with, packages intuitively
+  provide functions (<a href="#p41450">polymorphic</a> functions) which
+  will work over a variety of datatypes.
+ </li>
+ <li><a name="p37520" class="glabel"/><b>package call</b>
+   <div class="gsyntax">(syntax)</div> an expression of the form 
+  <div class="gspad">e $ D</div> where <div class="gspad">e</div> is an 
+  <a href="#p2473">application</a> and <div class="gspad">D</div> denotes
+  some <a href="#p36778">package</a> (or <a href="#p17507">domain</a>).
+ </li>
+ <li><a name="p37696" class="glabel"/><b>package call</b>
+   <div class="gsyntax">(syntax)</div> an expression of the form 
+  <div class="gspad">f(x, y)$D</div> used to identify that the function 
+  <div class="gspad">f</div> is to be one from <div class="gspad">D</div>.
+ </li>
+ <li><a name="p37833" class="glabel"/><b>package constructor</b>
+  same as <a href="#p16173">domain constructor</a>.
+ </li>
+ <li><a name="p37878" class="glabel"/><b>parameter</b>
+  see <a href="#p2885">argument</a>
+ </li>
+ <li><a name="p37908" class="glabel"/><b>parameterized datatype</b>
+   a domain that is built on another, for example, polynomials with
+  integer coefficients.
+ </li>
+ <li><a name="p38004" class="glabel"/><b>parameterized form</b>
+   a expression of the form <div class="gspad">f(x, y)</div>, an 
+  <a href="#p2473">application</a> of a function.
+ </li>
+ <li><a name="p38095" class="glabel"/><b>parent</b>
+   (of a domain) a category which is explicitly declared in the source
+  code definition for the domain to be an <a href="#p20171">export</a>
+  of the domain.
+ </li>
+ <li><a name="p38242" class="glabel"/><b>parse</b>
+  <ol>
+   <li>
+     (verb) to produce an internal representation of a user input string;
+    the resultant internal representation is then "interpreted" by Axiom
+    to perform some indicated action.
+   </li>
+   <li>
+    the transformation of a user input string representing a valid Axiom
+    expression into an internal representation as a tree-structure.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p38572" class="glabel"/><b>partially ordered set</b>
+   a set with a reflexive, transitive and antisymetric 
+  <a href="#p4684">binary</a> operation.
+ </li>
+ <li><a name="p38600" class="glabel"/><b>pattern</b>
+  The left hand side of a rewrite rule is called a pattern. Rewrite rules
+  can be used to perform pattern matching, usually for simplification.
+  The right hand side of a rule is called the 
+  <a href="p49000">substitution</a>.
+ </li>
+ <li><a name="p38661" class="glabel"/><b>pattern match</b>
+  <ol>
+   <li>
+     (on expressions) Given a expression called a "subject" 
+    <div class="gspad">u</div>, the attempt to rewrite 
+    <div class="gspad">u</div> using a set of "rewrite rules". Each rule has
+    the form <div class="gspad">A == B</div> where 
+    <div class="gspad">A</div> indicates a expression called a "pattern" and
+    <div class="gspad">B</div> denotes a "replacement". The meaning of
+    this rule is "replace <div class="gspad">A</div> by 
+    <div class="gspad">B"</div>. If a given pattern <div class="gspad">A</div>
+    matches a subexpression of <div class="gspad">u</div>, that
+    subexpression is replaced by <div class="gspad">B</div>. Once
+    rewritten, pattern matching continues until no further changes occur.
+   </li>
+   <li>
+     (on strings) the attempt to match a string indicating a "pattern" to
+    another string called a "subject", for example, for the purpose of
+    identifying a list of names. In a browser, users may enter 
+    <a href="#p46294">search strings</a> for the purpose of identifying
+    constructors, operations, and attributes.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p39400" class="glabel"/><b>pattern variable</b>
+  In a rule a symbol which is not a recognized function acts as a
+  pattern variable and is free to match any subexpression.
+ </li>
+ <li><a name="p39494" class="glabel"/><b>pile</b>
+   alternate syntax for a block, using indentation and column alignment
+  (see also <a href="#p5086">block</a>).
+ </li>
+ <li><a name="p39600" class="glabel"/><b>pointer</b>
+   a reference implemented by a link directed from one object to another
+  in the computer memory. An object is said to 
+  <div class="gsyntax">refer</div> to another if it has a pointer to that
+  other object. Objects can also refer to themselves (cyclic references
+  are legal). Also more than one object can refer to the same
+  object. See also <a href="#p39949">pointer semantics</a>.
+ </li>
+ <li><a name="p39949" class="glabel"/><b>pointer semantics</b>
+   the programming language semantics used in languages such as LISP
+  which allow objects to be <a href="#p34398">mutable</a>. Consider the
+  following sequence of Axiom statements:
+  <ol>
+   <li> <div class="gspad">x : Vector Integer := [1, 4, 7]</div> 
+   </li>
+   <li> <div class="gspad">y := x</div> 
+   </li>
+   <li> <div class="gspad">swap!(x, 2, 3)</div> 
+   </li>
+  </ol>
+  The function <div class="gfunction">swap!</div> from 
+  <div class="gtype">Vector</div> is used to interchange the 2nd and 3rd
+  value in the list <div class="gspad">x</div> producing the value 
+  <div class="gspad">[1, 7, 4]</div>. What value does 
+  <div class="gspad">y</div> have after evaluation of the third statement?
+  The answer is different in Axiom than it is in a language with 
+  <a href="#p12604">copying semantics</a>. In Axiom , first the vector 
+  [1, 2, 3] is created and the variable <div class="gspad">x</div> set to 
+  <a href="#p39600">point</a> to this object. Let
+  <div class="gspad">'s</div> call this object 
+  <div class="gspad">V</div>. Now <div class="gspad">V</div> refers to its 
+  <a href="#p26892">immutable</a> components 1, 2, and 3. Next, the
+  variable <div class="gspad">y</div> is made to point to 
+  <div class="gspad">V</div> just as <div class="gspad">x</div> does. Now the
+  third statement interchanges the last 2 elements of 
+  <div class="gspad">V</div> (the <div class="gsyntax">!</div> at the end of
+  the name <div class="gfunction">swap!</div> from 
+  <div class="gtype">Vector</div> tells you that this operation is
+  destructive, that is, it changes the elements <div class="gsyntax">in
+  place</div>). Both <div class="gspad">x</div> and 
+  <div class="gspad">y</div> perceive this change to 
+  <div class="gspad">V</div>. Thus both <div class="gspad">x</div> and 
+  <div class="gspad">y</div> then have the value 
+  <div class="gspad">[1, 7, 4]</div>. 
+  In Pascal, the second statement causes a copy of 
+  <div class="gspad">V</div> to be stored under 
+  <div class="gspad">y</div>. Thus the change to <div class="gspad">V</div>
+  made by the third statement does not affect 
+  <div class="gspad">y</div>.
+ </li>
+ <li><a name="p41450" class="glabel"/><b>polymorphic</b>
+   a <a href="#p22911">function</a> parameterized by one or more 
+  <a href="#p17507">domains</a>; a <a href="#p2267">algorithm</a> defined
+  <a href="#p6628">categorically</a>. Every function defined in a domain
+  or package constructor with a domain-valued parameter is
+  polymorphic. For example, the same matrix 
+  <div class="gfunction">*</div> function is used to multiply "matrices over
+  integers" as "matrices over matrices over integers"
+ </li>
+ <li><a name="p41972" class="glabel"/><b>postfix</b>
+   an <a href="#p36278">operator</a> that follows its single 
+  <a href="#p35946">operand</a>. Postfix operators are not available in
+  Axiom.
+ </li>
+ <li><a name="p42098" class="glabel"/><b>precedence</b>
+   <div class="gsyntax">(syntax)</div> refers to the so-called 
+  <div class="gsyntax">binding power</div> of an operator. For example, 
+  <div class="gspad">*</div> has higher binding power than 
+  <div class="gspad">+</div> so that the expression
+  <div class="gspad">a + b * c</div> is equivalent to
+  <div class="gspad">a + (b * c)</div>.
+ </li>
+ <li><a name="p42318" class="glabel"/><b>precision</b>
+   the number of digits in the specification of a number, e.g. as set by
+  <div class="gfunction">precision</div> from <div class="gtype">Float</div>.
+ </li>
+ <li><a name="p42440" class="glabel"/><b>predicate</b>
+  <ol>
+   <li> a Boolean valued function,  e.g. 
+        <div class="gspad">odd: Integer -> Boolean</div>. 
+   </li>
+   <li> an Boolean valued expression
+   </li>
+  </ol>
+ </li>
+ <li><a name="p42559" class="glabel"/><b>prefix</b>
+   <div class="gsyntax">(syntax)</div> an 
+  <a href="#p36278">operator</a> such as <div class="gspad">-</div> and
+  <div class="gspad">not</div> that is written 
+  <div class="gsyntax">before</div> its single 
+  <a href="#p35946">operand</a>. Every function of one argument can be used
+  as a prefix operator. For example, all of the following have
+  equivalent meaning in Axiom : <div class="gspad">f(x)</div>, 
+  <div class="gspad">f x</div>, and <div class="gspad">f.x</div>. See also 
+  <a href="#p17269">dot notation</a>.
+ </li>
+ <li><a name="p42917" class="glabel"/><b>quote</b>
+   the prefix <a href="#p36278">operator</a> 
+  <div class="gfunction">'</div> meaning <div class="gsyntax">do not
+  evaluate</div>.
+ </li>
+ <li><a name="p43000" class="glabel"/><b>Record</b>
+   (basic domain constructor) a domain constructor used to create a
+  inhomogeneous aggregate composed of pairs of "selectors" and 
+  <a href="#p52710">values</a>. A Record domain is written in the form 
+  <div class="gspad">Record(a1:D1, ..., an:Dn)</div> 
+  (<div class="gspad">n</div> > 0) where <div class="gspad">a1</div>, ...,
+  <div class="gspad">an</div> are identifiers called the 
+  <div class="gsyntax">selectors</div> of the record, and 
+  <div class="gspad">D1</div>, ..., <div class="gspad">Dn</div> are domains
+  indicating the type of the component stored under selector 
+  <div class="gspad">an</div>.
+ </li>
+ <li><a name="p43448" class="glabel"/><b>recurrence relation</b>
+   A relation which can be expressed as a function 
+  <div class="gspad">f</div> with some argument <div class="gspad">n</div>
+  which depends on the value of <div class="gspad">f</div> at 
+  <div class="gspad">k</div> previous values. In many cases, Axiom will
+  rewrite a recurrence relation on compilation so as to 
+  <a href="#p5499">cache</a> its previous <div class="gspad">k</div> values
+  and therefore make the computation significantly more efficient.
+ </li>
+ <li><a name="p43806" class="glabel"/><b>recursion</b>
+   use of a self-reference within the body of a function. Indirect
+  recursion is when a function uses a function below it in the call
+  chain.
+ </li>
+ <li><a name="p43948" class="glabel"/><b>recursive</b>
+  <ol>
+   <li> A function that calls itself,  either directly or indirectly through
+        another function. 
+   </li>
+   <li> self-referential. See also <a href="#p43948">recursive</a>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p44097" class="glabel"/><b>reference</b>
+  see <a href="#p39600">pointer</a>
+ </li>
+ <li><a name="p44126" class="glabel"/><b>Rep</b>
+   a special identifier used as <a href="#p32278">local variable</a> of
+  a domain constructor body to denote the representation domain for
+  objects of a domain.
+ </li>
+ <li><a name="p44277" class="glabel"/><b>representation</b>
+   a <a href="#p17507">domain</a> providing a data structure for
+  elements of a domain; generally denoted by the special identifier 
+  <a href="#p44126">Rep</a> in the Axiom programming language. As domains
+  are <a href="#p725">abstract datatypes</a>, this representation is not
+  available to users of the domain, only to functions defined in the 
+  <a href="#p23911">function body</a> for a domain constructor. Any domain
+  can be used as a representation.
+ </li>
+ <li><a name="p44698" class="glabel"/><b>reserved word</b>
+   a special sequence of non-blank characters with special meaning in
+  the Axiom language. Examples of reserved words are names such as 
+  <div class="gfunction">for</div>, <div class="gfunction">if</div>, and 
+  <div class="gfunction">free</div>, operator names such as 
+  <div class="gfunction">+</div> and <div class="gspad">mod</div>, special
+  character strings such as <div class="gspad">==</div> and 
+  <div class="gspad">:=</div>.
+ </li>
+ <li><a name="p45044" class="glabel"/><b>retraction</b>
+   to move an object in a parameterized domain back to the underlying
+  domain, for example to move the object <div class="gspad">7</div> from
+  a "fraction of integers" 
+  (domain <div class="gtype">Fraction Integer</div>) to
+  "the integers" (domain <div class="gtype">Integer</div>).
+ </li>
+ <li><a name="p45280" class="glabel"/><b>return</b>
+   when leaving a function, the value of the expression following 
+  <div class="gfunction">return</div> becomes the value of the function.
+ </li>
+ <li><a name="p45405" class="glabel"/><b>ring</b>
+   a set with a commutative addition, associative multiplication, a unit
+  element, and multiplication distributes over addition and subtraction.
+ </li>
+ <li><a name="p45557" class="glabel"/><b>rule</b>
+   <div class="gsyntax">(syntax)</div> 1. An expression of the form
+  <div class="gspad">rule A == B</div> indicating a "rewrite
+  rule". 2. An expression of the form 
+  <div class="gspad">rule(R1;...;Rn)</div> 
+  indicating a set of "rewrite rules" 
+  <div class="gspad">R1</div>, ..., <div class="gspad">Rn</div>. See 
+  <a href="#p38661">pattern matching</a> for details.
+ </li>
+ <li><a name="p45818" class="glabel"/><b>run-time</b>
+   the time of doing a computation. Contrast 
+  <a href="#p10167">compile-time</a>. rather than prior to it; 
+  <a href="#p17507">dynamic</a> as opposed to 
+  <a href="#p47594">static</a>. For example, the decision of the intepreter
+  to build a structure such as "matrices with power series entries" in
+  response to user input is made at run-time.
+ </li>
+ <li><a name="p46129" class="glabel"/><b>run-time check</b>
+   an error-checking which can be done only when the program receives
+  user input; for example, confirming that a value is in the proper
+  range for a computation.
+ </li>
+ <li><a name="p46200" class="glabel"/><b>search order</b>
+   the sequence of <a href="#p13571">default packages</a> for a given
+  domain to be searched during <a href="#p17853">dynamic
+  lookup</a>. This sequence is computed first by ordering the category
+  <a href="#p2335">ancestors</a> of the domain according to their 
+  <div class="gsyntax">level number</div>, an integer equal to to the
+  minimum distance of the domain from the category. Parents have level
+  1, parents of parents have level 2, and so on. Among categories with
+  equal level numbers, ones which appear in the left-most branches of
+  <div class="gsyntax">Join</div><div class="gspad">s</div> in the
+  source code come first. See also <a href="#p17853">dynamic lookup</a>.
+ </li>
+ <li><a name="p46294" class="glabel"/><b>search string</b>
+  a string entered into an <a href="#p28103">input area</a> on a screen
+ </li>
+ <li><a name="p46372" class="glabel"/><b>selector</b>
+  an identifier used to address a component value of a
+  <a href="p43000">Record</a> datatype.
+ </li>
+ <li><a name="p46454" class="glabel"/><b>semantics</b>
+   the relationships between symbols and their meanings. The rules for
+  obtaining the <div class="gsyntax">meaning</div> of any syntactically
+  valid expression.
+ </li>
+ <li><a name="p46594" class="glabel"/><b>semigroup</b>
+   <div class="gsyntax">(algebra)</div> a <a href="#p34266">monoid</a>
+  which need not have an identity; it is closed and associative.
+ </li>
+ <li><a name="p46699" class="glabel"/><b>side effect</b>
+   action which changes a component or structure of a value. See 
+  <a href="#p14365">destructive operation</a> for details.
+ </li>
+ <li><a name="p46813" class="glabel"/><b>signature</b>
+   <div class="gsyntax">(syntax)</div> an expression describing an 
+  <a href="#p36041">operation</a>. A signature has the form as 
+  <div class="gspad">name : source -> target</div>, where 
+  <div class="gspad">source</div> gives the type of the arguments of the
+  operation, and <div class="gspad">target</div> gives the type of the
+  result.
+ </li>
+ <li><a name="p47066" class="glabel"/><b>small float</b>
+  the domain for hardware floating point arithmetic as provided by the
+  computer hardware.
+ </li>
+ <li><a name="p47159" class="glabel"/><b>small integer</b>
+  the domain for hardware integer arithmetic. as provided by the computer 
+  hardware.
+ </li>
+ <li><a name="p47246" class="glabel"/><b>source</b>
+   the <a href="#p50664">type</a> of the argument of a 
+  <a href="#p22911">function</a>; the type expression before the 
+  <div class="gspad">-></div> in a <a href="#p46813">signature</a>. For
+  example, the source of 
+  <div class="gspad">f : (Integer, Integer) -> Integer</div> 
+  is <div class="gspad">(Integer, Integer)</div>.
+ </li>
+ <li><a name="p47486" class="glabel"/><b>sparse</b>
+   data structure whose elements are mostly identical (a sparse matrix
+  is one filled with mostly zeroes).
+ </li>
+ <li><a name="p47594" class="glabel"/><b>static</b>
+  that computation done before run-time, such as compilation. Contrast
+  <a href="#p17507">dynamic</a>.
+ </li>
+ <li><a name="p47691" class="glabel"/><b>step number</b>
+   the number which precedes user input lines in an interactive session;
+  the output of user results is also labeled by this number.
+ </li>
+ <li><a name="p47825" class="glabel"/><b>stream</b>
+   an object of <div class="gtype">Stream(R)</div>, a generalization of
+  a <a href="#p31730">list</a> to allow an infinite number of
+  elements. Elements of a stream are computed "on demand". Strings are
+  used to implement various forms of power series.
+ </li>
+ <li><a name="p48077" class="glabel"/><b>string</b>
+   an object of domain <div class="gtype">String</div>. Strings are 
+  <a href="#p31774">literals</a> consisting of an arbitrary sequence of 
+  <a href="#p9278">characters</a> surrounded by double-quotes 
+  (<div class="gfunction">"</div>), e.g. 
+  <div class="gspad">"Look here!"</div>.
+ </li>
+ <li><a name="p48303" class="glabel"/><b>subdomain</b>
+   <div class="gsyntax">(basic concept)</div> a 
+  <a href="#p17507">domain</a> together with a 
+  <a href="#p42440">predicate</a> characterizing which members of the
+  domain belong to the subdomain. The exports of a subdomain are usually
+  distinct from the domain itself. A fundamental assumption however is
+  that values in the subdomain are automatically 
+  <a href="#p9572">coerceable</a> to values in the domain. For example, if
+  <div class="gspad">n</div> and <div class="gspad">m</div> are declared
+  to be members of a subdomain of the integers, then 
+  <div class="gsyntax">any</div> <a href="#p4684">binary</a> operation from
+  <div class="gtype">Integer</div> is available on 
+  <div class="gspad">n</div> and <div class="gspad">m</div>. On the other
+  hand, if the result of that operation is to be assigned to, say, 
+  <div class="gspad">k</div>, also declared to be of that subdomain, a 
+  <a href="#p45818">run-time</a> check is generally necessary to ensure
+  that the result belongs to the subdomain.
+ </li>
+ <li><a name="p49000" class="glabel"/><b>substitution</b>
+  The right hand side of a rule is called the substitution.
+  The left hand side of a rewrite rule is called a 
+  <a href="p38600">pattern</a>. Rewrite rules
+  can be used to perform pattern matching, usually for simplification.
+ </li>
+ <li><a name="p49128" class="glabel"/><b>such that clause</b>
+   the use of <div class="gfunction">|</div> followed by an expression
+  to filter an iteration.
+ </li>
+ <li><a name="p49209" class="glabel"/><b>suffix</b>
+   <div class="gsyntax">(syntax)</div> an 
+  <a href="#p36278">operator</a> which placed after its operand. Suffix
+  operators are not allowed in the Axiom language.
+ </li>
+ <li><a name="p49347" class="glabel"/><b>symbol</b>
+   objects denoted by <a href="#p26553">identifier</a> 
+  <a href="#p31774">literals</a>; an element of domain 
+  <div class="gtype">Symbol</div>. The interpreter defaultly converts a
+  symbol <div class="gspad">x</div> into 
+  <div class="gtype">Variable(x)</div>.
+ </li>
+ <li><a name="p49538" class="glabel"/><b>syntax</b>
+  rules of grammar,  punctuation etc. for forming correct expressions.
+ </li>
+ <li><a name="p49613" class="glabel"/><b>system commands</b>
+   top-level Axiom statements that begin with 
+  <div class="gsyntax">)</div>. System commands allow users to query the
+  database, read files, trace functions, and so on.
+ </li>
+ <li><a name="p49773" class="glabel"/><b>tag</b>
+  an identifier used to discriminate a branch of a
+  <a href="#p51780">Union</a> type.
+ </li>
+ <li><a name="p49851" class="glabel"/><b>target</b>
+   the <a href="#p50664">type</a> of the result of a 
+  <a href="#p22911">function</a>; the type expression following the 
+  <div class="gspad">-></div> in a <a href="#p46813">signature</a>.
+ </li>
+ <li><a name="p49990" class="glabel"/><b>top-level</b>
+  refers to direct user interactions with the Axiom  interpreter.
+ </li>
+ <li><a name="p50064" class="glabel"/><b>totally ordered set</b>
+   <div class="gsyntax">(algebra)</div> a partially ordered set where
+  any two elements are comparable.
+ </li>
+ <li><a name="p50148" class="glabel"/><b>trace</b>
+   use of system function <div class="gcmd">)trace</div> to track the
+  arguments passed to a function and the values returned.
+ </li>
+ <li><a name="p50262" class="glabel"/><b>tuple</b>
+   an expression of two or more other expressions separated by commas,
+  e.g. <div class="gspad">4, 7, 11</div>. Tuples are also used for
+  multiple arguments both for <a href="#p2473">applications</a>
+  (e.g. <div class="gspad">f(x, y)</div>) and in 
+  <a href="#p46813">signatures</a> (e.g. 
+  <div class="gspad">(Integer, Integer) -> Integer</div>). 
+  A tuple is not a data structure, rather a
+  syntax mechanism for grouping expressions.
+ </li>
+ <li><a name="p50664" class="glabel"/><b>type</b>
+   The type of any <a href="#p48303">subdomain</a> is the unique symbol
+  <div class="gsyntax">Category</div>. The type of a
+  <a href="#p17507">domain</a> is any <a href="#p6628">category</a> that
+  domain belongs to. The type of any other object is either the (unique)
+  domain that object belongs to or any <a href="#p48303">subdomain</a>
+  of that domain. The type of objects is in general not unique.
+ </li>
+ <li><a name="p51002" class="glabel"/><b>type checking</b>
+  a system function which determines whether the datatype of an object is
+  appropriate for a given operation.
+ </li>
+ <li><a name="p51114" class="glabel"/><b>type constructor</b>
+  a <a href="#p16173">domain constructor</a> or
+  <a href="#p8355">category constructor</a>.
+ </li>
+ <li><a name="p51189" class="glabel"/><b>type inference</b>
+   when the interpreter chooses the type for an object based on
+  context. For example, if the user interactively issues the definition
+  <div align="center" class="gspad">f(x) == (x + %i)**2</div> then
+  issues <div class="gspad">f(2)</div>, the interpreter will infer the
+  type of <div class="gspad">f</div> to be 
+  <div class="gspad">Integer -> Complex Integer</div>.
+ </li>
+ <li><a name="p51480" class="glabel"/><b>unary</b>
+  operation or function with <a href="#p3173">arity</a> 1
+ </li>
+ <li><a name="p51532" class="glabel"/><b>underlying domain</b>
+   for a <a href="#p17507">domain</a> that has a single domain-valued
+  parameter, the <div class="gsyntax">underlying domain</div> refers to
+  that parameter. For example, the domain "matrices of integers" 
+  (<div class="gtype">Matrix Integer</div>) has underlying domain 
+  <div class="gtype">Integer</div>.
+ </li>
+ <li><a name="p51780" class="glabel"/><b>Union</b>
+   <div class="gsyntax">(basic domain constructor)</div> a domain
+  constructor used to combine any set of domains into a single domain. A
+  Union domain is written in the form 
+  <div class="gspad">Union(a1:D1,..., an:Dn)</div> 
+  (<div class="gspad">n</div> > 0) where 
+  <div class="gspad">a1</div>, ..., <div class="gspad">an</div> are
+  identifiers called the <div class="gsyntax">tags</div> of the union,
+  and <div class="gspad">D1</div>, ..., <div class="gspad">Dn</div> are
+  domains called the <div class="gsyntax">branches</div> of the
+  union. The tags <div class="gspad">ai</div> are optional, but required
+  when two of the <div class="gspad">Di</div> are equal, e.g. 
+  <div class="gspad">Union(inches:Integer, centimeters:Integer)</div>. In the
+  interpreter, values of union domains are automatically coerced to
+  values in the branches and vice-versa as appropriate. See also 
+  <a href="#p6220">case</a>.
+ </li>
+ <li><a name="p52482" class="glabel"/><b>unit</b>
+  <div class="gsyntax">(algebra)</div> an invertible element.
+ </li>
+ <li><a name="p52526" class="glabel"/><b>user function</b>
+  a function defined by a user during an interactive session. Contrast
+  <a href="#p5399">built-in function</a>.
+ </li>
+ <li><a name="p52631" class="glabel"/><b>user variable</b>
+  a variable created by the user at top-level during an interactive session
+ </li>
+ <li><a name="p52710" class="glabel"/><b>value</b>
+  <ol>
+   <li>
+    the result of <a href="#p19167">evaluating</a> an expression. 
+   </li>
+   <li> 
+    a property associated with a <a href="#p52894">variable</a> in a
+    <a href="#p4735">binding</a> in an <a href="#p19131">environment</a>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p52894" class="glabel"/><b>variable</b>
+  a means of referring to an object but itself is not an object. A
+  variable has a name and an associated <a href="#p4735">binding</a>
+  created by <a href="#p19167">evaluation</a> of Axiom expressions such
+  as <a href="#p12903">declarations</a>, 
+  <a href="#p3322">assignments</a>, and 
+  <a href="#p13754">definitions</a>. In the top-level 
+  <a href="#p19131">environment</a> of the interpreter, variables are 
+  <a href="#p24833">global variables</a>. Such variables can be freely
+  referenced in user-defined functions although a 
+  <a href="#p22113">free</a> declaration is needed to assign values to
+  them. See <a href="#p32278">local variable</a> for details.
+ </li>
+ <li><a name="p53484" class="glabel"/><b>Void</b>
+   the type given when the <a href="#p52710">value</a> and <a
+  href="#p50664">type</a> of an expression are not needed. Also used
+  when there is no guarantee at run-time that a value and predictable
+  mode will result.
+ </li>
+ <li><a name="p53681" class="glabel"/><b>wild card</b>
+   a symbol which matches any substring including the empty string; for
+  example, the search string <div class="gsyntax">*an*</div> matches an
+  word containing the consecutive letters <div class="gsyntax">a</div>
+  and <div class="gsyntax">n</div>
+ </li>
+ <li><a name="p53866" class="glabel"/><b>workspace</b>
+   an interactive record of the user input and output held in an
+  interactive history file. Each user input and corresponding output
+  expression in the workspace has a corresponding <a href="#p47691">step
+  number</a>. The current output expression in the workspace is referred
+  to as <div class="gspad">%</div>. The output expression associated
+  with step number <div class="gspad">n</div> is referred to by <div
+  class="gspad">%%(n)</div>. The <div class="gspad">k</div>-th previous
+  output expression relative to the current step number <div
+  class="gspad">n</div> is referred to by <div class="gspad">%%(-
+  k)</div>. Each interactive <a href="#p21847">frame</a> has its own
+  workspace.
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{graphexamples.xhtml}
+<<graphexamples.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      graphexamples not implemented
+<<page foot>>
+@
+
+\subsection{graphicspage.xhtml}
+<<graphicspage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+Axiom can plot curves and surfaces of various types, as well as
+lists of points in the plane.
+  <table>
+   <tr>
+    <td>
+     <a href="graphexamples.xhtml">Examples</a>
+    </td>
+    <td>
+     See examples of Axiom graphics
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="graph2d.xhtml">2D Graphics</a>
+    </td>
+    <td>
+     Graphics in the real and complex plane
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="graph3d.xhtml">3D Graphics</a>
+    </td>
+    <td>
+     Plot surfaces, curves, or tubes around curves
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="graphviewports.xhtml">Viewports</a>
+    </td>
+    <td>
+     Customize graphics using Viewports
+    </td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{graphviewports.xhtml}
+<<graphviewports.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      graphviewports not implemented
+<<page foot>>
+@
+
+\subsection{graph2d.xhtml}
+<<graph2d.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      graph2d not implemented
+<<page foot>>
+@
+
+\subsection{graph3d.xhtml}
+<<graph3d.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      graph3d not implemented
+<<page foot>>
+@
+
+%%H
+\subsection{htxtoppage.xhtml}
+<<htxtoppage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      htxtoppage not implemented
+<<page foot>>
+@
+
+
+%%I
+\subsection{indefiniteintegral.xhtml}
+<<indefiniteintegral.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    return('integrate('+myform.expr.value+','+myform.vars.value+')');
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <form id="form2">
+   Enter the function you want to integrate:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" 
+     value="1/(x^2+6)"/><br/>
+   Enter the variable of integration:
+   <input type="text" id="vars" size="5" tabindex="20" value="x"/><br/>
+  </form>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+@
+
+%%J
+\subsection{jenks.xhtml}
+<<jenks.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+ <center>
+  <a href="axbook/book-contents.xhtml">
+   <img src="axbook/ps/bluebayou.png"/>
+  </a>
+ </center>
+ <center>
+  <h1>
+   <a href="axbook/book-contents.xhtml">
+    AXIOM -- Richard D. Jenks and Robert S. Sutor
+   </a>
+  </h1>
+ </center>
+ <center>
+  <h2>
+   <a href="axbook/book-contents.xhtml">
+    The Scientific Computation System
+   </a>
+  </h2>
+ </center>
+ <center>
+  <h2>
+   <a href="axbook/book-contents.xhtml">
+    Volume 0 -- The Textbook
+   </a>
+  </h2>
+ </center>
+ <a href="axbook/book-contents.xhtml#chapter0">
+  Chapter 0: Introduction to Axiom
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter1">
+  Chapter 1: An Overview of Axiom
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter2">
+ Chapter 2: Using Types and Modes
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter3">
+ Chapter 3: Using HyperDoc
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter4">
+ Chapter 4: Input Files and Output Styles
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter5">
+ Chapter 5: Overview of Interactive Language
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter6">
+ Chapter 6: User-Defined Functions, Macros and Rules
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter7">
+ Chapter 7: Graphics
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter8">
+ Chapter 8: Advanced Problem Solving
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter9">
+ Chapter 9: Some Examples of Domains and Packages
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter10">
+ Chapter 10: Interactive Programming
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter11">
+ Chapter 11: Packages
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter12">
+ Chapter 12: Categories
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter13">
+ Chapter 13: Domains
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter14">
+ Chapter 14: Browse
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter15">
+ Chapter 15: What's New in Axiom Version 2.0
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter17">
+ Chapter 17: Categories
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter18">
+ Chapter 18: Domains
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter19">
+ Chapter 19: Packages
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter21">
+ Chapter 21: Programs for AXIOM Images
+ </a><br/>
+<<page foot>>
+@
+
+%%K
+%%L
+
+\subsection{laurentseries.xhtml}
+<<laurentseries.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function').value;
+    myivar = document.getElementById('ivar').value;
+    mypvar = document.getElementById('pvar').value;
+    myevar = document.getElementById('evar').value;
+    myival = document.getElementById('ival').value;
+    mysval = document.getElementById('sval').value;
+    ans = 'series('+myivar+'+->'+myfunc+','+mypvar+'='+myevar+','+
+         myival+'..,'+mysval+')';
+    alert(ans);
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td>
+      Enter the formula for the general coefficient of the series:
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <input type="text" id="function" size="80" tabindex="10"
+       value="(-1)^(n-1)/(n+2)"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the index variable for your formula:
+     <input type="text" id="ivar" size="10" tabindex="20" value="n"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the power series variable:
+     <input type="text" id="pvar" size="10" tabindex="30" value="x"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the point about which to expand:
+     <input type="text" id="evar" size="10" tabindex="40" value="0"/>
+    </td>
+   </tr>
+  </table>
+For Laurent Series, the exponent of the power series variable ranges
+from an initial value, an arbitrary integer value, to plus
+infinity; the step size is any positive integer.
+  <table>
+   <tr>
+    <td>
+     Enter the initial value of the index (an integer):
+     <input type="text" id="ival" size="10" tabindex="50" value="-1"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the step size (a positive integer):
+     <input type="text" id="sval" size="10" tabindex="60" value="1"/>
+    </td>
+   </tr>
+  </table>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+
+@
+
+\subsection{linalgpage.xhtml}
+<<linalgpage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td>
+     <a href="linintro.xhtml">Introduction</a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Create and manipulate matrices. Work with the entries of a
+     matrix. Perform matrix arithmetic.
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="lincreate.xhtml">Creating Matrices</a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Create matrices from scratch and from other matrices
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="linoperations.xhtml">Operations on Matrices</a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Algebraic manipulations with matrices. Compute the inverse,
+     determinant, and trace of a matrix. Find the rank, nullspace,
+     and row echelon form of a matrix.
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="lineigen.xhtml">Eigenvalues and Eigenvectors</a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     How to compute eigenvalues and eigenvectors
+    </td>
+   </tr>
+  </table>
+<hr/>
+ <ul>
+  <li>
+   <a href="linhilbert.xhtml">
+    Example: Determinant of a Hilbert Matrix
+   </a>
+  </li>
+  <li>
+   <a href="linpermaent.xhtml">
+    Computing the Permanent
+   </a>
+  </li>
+  <li>
+   <a href="linvectors.xhtml">
+    Working with Vectors
+   </a>
+  </li>
+  <li>
+   <a href="linsquarematrices.xhtml">
+    Working with Square Matrices
+   </a>
+  </li>
+  <li>
+   <a href="lin1darrays.xhtml">
+    Working with One-Dimensional Arrays
+   </a>
+  </li>
+  <li>
+   <a href="lin2darrays.xhtml">
+    Working with Two-Dimensional Arrays
+   </a>
+  </li>
+  <li>
+   <a href="linconversion.xhtml">
+    Conversion (Polynomials of Matrices)
+   </a>
+  </li>
+ </ul>
+<<page foot>>
+@
+
+\subsection{linconversion.xhtml}
+<<linconversion.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      linconversion not implemented
+<<page foot>>
+@
+
+\subsection{lincreate.xhtml}
+<<lincreate.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Creating Matrices</div>
+  <hr/>
+There are many ways to create a matrix from a collection of values or
+from existing matrices.
+
+If the matrix has almost all items equal to the same value, use
+<a href="dbopnew.xhtml">new</a> to create a matrix filled with that value
+and then reset the entries that are different.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:Matrix(Integer):=new(3,3,0)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+To change the entry in the second row, third column to 5, use
+<a href="dbopsetelt.xhtml">setelt</a>.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="setelt(m,2,3,5)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+An alternative syntax is to use assignment.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="m(1,2):=10" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The matrix was destructively modified.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="m" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+If you already have the matrix entries as a list of lists, use
+<a href="dbopmatrix.xhtml">matrix</a>.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="matrix [[1,2,3,4],[0,9,8,7]]" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+If the matrix is diagonal, use
+<a href="dbopdiagonalmatrix.xhtml">diagonalMatrix</a>
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="dm:=diagonalMatrix [1,x^2,x^3,x^4,x^5]" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopsetrowbang.xhtml">setRow!</a> and
+<a href="dbopsetcolumnbang.xhtml">setColumn!</a>
+to change a row or column of a matrix.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value="setRow!(dm,5,vector [1,1,1,1,1])" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p6','p7','p8']);"
+    value="setColumn!(dm,2,vector [y,y,y,y,y])" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopcopy.xhtml">copy</a> to make a copy of a matrix.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p6','p7','p8','p9']);"
+    value="cdm:=copy(dm)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+This is useful if you intend to modify a matrix destructively but want a
+copy of the original.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p6','p7','p8','p9','p10']);"
+    value="setelt(dm,4,1,1-x^7)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p6','p7','p8','p9','p10','p11']);"
+    value="[dm,cdm]" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopsubmatrix.xhtml">subMatrix</a>(dm,2,3,2,4) to extract
+part of an existing matrix. The syntax is
+<pre>
+  subMatrix(m,firstrow,lastrow,firstcol,lastcol)
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p6','p7','p8','p9','p10','p11','p12']);"
+    value="subMatrix(dm,2,3,2,4)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+To change a submatrix, use 
+<a href="dbopsetsubmatrixbang.xhtml">setsubMatrix!</a>.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="makeRequest('p13');"
+    value="d:=diagonalMatrix [1.2,-1.3,1.4,-1.5]" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+If e is too big to fit where you specify, an error message is displayed. Use
+<a href="dbopsubmatrix.xhtml">subMatrix</a>.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="makeRequest('p14');"
+    value="e:=matrix [[6.7,9.11],[-31.33,67.19]]" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+This changes the submatrix of d whose upper left corner is at the first row
+and second column and whose size is that of e.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p13','p14','p15']);"
+    value="setsubMatrix!(d,1,2,e)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p13','p14','p15','p16']);"
+    value="d" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Matrices can be joined either horizontally or vertically to make new
+matrices.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="makeRequest('p17');"
+    value="a:=matrix [[1/2,1/3,1/4],[1/5,1/6,1/7]]" />
+  <div id="ansp17"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="makeRequest('p18');"
+    value="b:=matrix [[3/5,3/7,3/11],[3/13,3/17,3/19]]" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbophorizconcat.xhtml">horizConcat</a> to append them side to
+side. The two matrices must have the same number of rows.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p17','p18','p19']);"
+    value="horizConcat(a,b)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopvertconcat.xhtml">vertConcat</a> to stack one upon the
+other. The two matrices must have the same number of columns.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p17','p18','p20']);"
+    value="vab:=vertConcat(a,b)" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboptranspose.xhtml">transpose</a> is used to create
+a new matrix by reflection across the main diagonal.
+<ul>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="handleFree(['p17','p18','p20','p21']);"
+    value="transpose vab" />
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{lineigen.xhtml}
+<<lineigen.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Computation of Eigenvalues and Eigenvectors</div>
+  <hr/>
+In this section we show you some of Axiom's facilities for computing and
+manipulating eigenvalues and eigenvectors, also called characteristic
+values and characteristic vectors, respectively.
+
+Let's first create a matrix with integer entries.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m1:=matrix [[1,2,1],[2,1,-2],[1,-2,4]]" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+To get a list of the rational eigenvalues, use the operation
+<a href="dbopeigenvalues.xhtml">eigenvalues</a>.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="leig:=eigenvalues(m1)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Given an explicit eigenvalue, 
+<a href="dbopeigenvector.xhtml">eigenvector</a> computes the eigenvectors
+corresponding to it.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="eigenvector(first(leig),m1)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopeigenvectors.xhtml">eigenvectors</a> returns a
+list of pairs of values and vectors. When an eigenvalue is rational, Axiom
+gives you the value explicitly; otherwise, its minimal polynomial is given,
+(the polynomial of lowest degree with the eigenvalues as roots), together
+with a parametric representation of the eigenvector using the eigenvalue.
+This means that if you ask Axiom to <a href="dbopsolve.xhtml">solve</a>
+the minimal polynomial, then you can substitute these roots into the
+parametric form of the corresponding eigenvectors.
+
+You must be aware that unless an exact eigenvalue has been computed, 
+the eigenvector may be badly in error.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="eigenvectors(m1)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Another possibility is to use the operation
+<a href="dbopradicaleigenvectors.xhtml">radicalEigenvectors</a> tries to
+compute explicitly the eignevectors in terms of radicals.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="radicalEigenvectors(m1)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Alternatively, Axiom can compute real or complex approximations to the
+eigenvectors and eigenvalues using the operations
+<a href="dboprealeigenvectors.xhtml">realEigenvectors</a> or
+<a href="dbopcomplexeigenvectors.xhtml">complexEigenvectors</a>. They
+each take an additional argument epsilon to specify the "precision"
+required. In the real case, this means that each approximation will be
+within plus or minus epsilon of the actual result. In the complex case, this
+means that each approximation will be within plus or minus epsilon of the
+actual result in each of the real and imaginary parts.
+
+The precision can be specified as a <a href="db.xhtml?Float">Float</a> if
+the results are desired in floating-point notation, or as
+<a href="dbfractioninteger.xhtml">Fraction Integer</a> if the results are
+to be expressed using rational (or complex rational) numbers.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p6']);"
+    value="realEigenvectors(m1,1/1000)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+If an n by n matrix has n distinct eigenvalues (and therefore n eigenvectors)
+the operation <a href="dbopeigenmatrix.xhtml">eigenMatrix</a> gives you a
+matrix of the eigenvectors.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p7']);"
+    value="eigenMatrix(m1)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="m2:=matrix [[-5,-2],[18,7]]" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p8','p9']);"
+    value="eigenMatrix(m2)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+If a symmetric matrix has a basis of orthonormal eigenvectors, then
+<a href="dboporthonormalbasis.xhtml">orthonormalBasis</a> computes a list
+of these vectors.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="m3:=matrix [[1,2],[2,1]]" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p10','p11']);"
+    value="orthonormalBasis(m3)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{linhilbert.xhtml}
+<<linhilbert.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">An Example: Determinant of a Hilbert Matrix</div>
+  <hr/>
+Consider the problem of computing the determinant of a 10 by 10 Hilbert
+matrix. The (i,j)-th entry of a Hilbert matrix is given by 1/(i+j+1).
+
+First do the computation using rational numbers to obtain the exact result.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+value="a:MATRIX FRAC INT:=matrix [[1/(i+j+1) for j in 0..9] for i in 0..9]" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="d:=determinant a" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="d::Float" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value=
+  "b:Matrix DFLOAT:=matrix [[1/(i+j+1$DFLOAT) for j in 0..9] for i in 0..9]"/>
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+The result given by hardware floats is correct only to four significant digits
+of precision. In the jargon of numerical analysis, the Hilbert matrix is said
+to be "ill-conditioned".
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="determinant b" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Now repeat the computation at a higher precision using Float.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="digits 40" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value=
+  "c:Matrix Float:=matrix [[1/(i+j+1$Float) for j in 0..9] for i in 0..9]" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p6','p7','p8']);"
+    value="determinant c" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Reset <a href="dbopdigits.xhtml">digits</a> to its default value.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="digits 20" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{linintro.xhtml}
+<<linintro.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Expanding to Higher Dimensions</div>
+  <hr/>
+To get higher dimensional aggregates, you can create one-dimensional 
+aggregates with elements that are themselves aggregates, for example,
+lists of list, one-dimensional arrays of list of multisets, and so on. For
+applications requiring two-dimensional homogeneous aggregates, you will
+likely find two-dimensional arrays and matrices useful.
+
+The entries in <a href="db.xhtml?TwoDimensionalArray">TwoDimensionalArray</a>
+and <a href="?Matrix">Matrix</a> objects are all the same type, 
+except that those for <a href="db.xhtml?Matrix">Matrix</a> must belong to a
+<a href="db.xhtml?Ring">Ring</a>. You create and access elements in roughly
+the same way. Since matrices have an understood algebraic structure, certain
+algebraic operations are available for matrices but not for arrays. Because
+of this, we limit our discussion here to <a href="db.xhtml?Matrix">Matrix</a>,
+that can be regarded as an extension of
+<a href="db.xhtml?TwoDimensionalArray">TwoDimensionalArray</a>. See
+<a href="pagetwodimensionalarray.xhtml">TwoDimensionalArray</a>
+For more
+information about Axiom's linear algebra facilities see
+<a href="pagematrix.xhtml">Matrix</a>,
+<a href="pagepermanent.xhtml">Permanent</a>,
+<a href="pagesquarematrix.xhtml">SquareMatrix</a>,
+<a href="pagevector.xhtml">Vector</a>,
+<a href="axbook/section-8.4.xhtml">
+Computation of Eigenvalues and Eigenvectors</a>, and
+<a href="axbook/section-8.5.xhtml">
+Solution of Linear and Polynomial Equations</a>.
+
+You can create a matrix from a list of lists, where each of the inner
+lists represents a row of the matrix.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:=matrix([[1,2],[3,4]])" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The "collections" construct (see
+<a href="axbook/section-5.5.xhtml">
+Creating Lists and Streams with Iterators</a>)
+is useful for creating matrices whose entries are given by formulas.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="matrix([[1/(i+j-x) for i in 1..4] for j in 1..4])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Let vm denote the three by three Vandermonde matrix.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="vm:=matrix [[1,1,1],[x,y,z],[x*x,y*y,z*z]]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Use this syntax to extract an entry in the matrix.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p3','p4']);"
+    value="vm(3,3)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You can also pull out a <a href="dboprow.xhtml">row</a> or a column.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p5']);"
+    value="column(vm,2)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can do arithmetic.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p3','p6']);"
+    value="vm*vm" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+You can perform operations such as 
+<a href="dboptranspose.xhtml">transpose</a>,
+<a href="dboptrace.xhtml">trace</a>, and
+<a href="dbopdeterminant.xhtml">determinant</a>
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p3','p7']);"
+    value="factor determinant vm" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{linoperations.xhtml}
+<<linoperations.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Operations on Matrices</div>
+  <hr/>
+Axiom provides both left and right scalar multiplication.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:=matrix [[1,2],[3,4]]" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="4*m*(-5)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can add, subtract, and multiply matrices provided, of course, that the
+matrices have compatible dimensions. If not, an error message is displayed.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="n:=matrix([[1,0,-2],[-3,5,1]])" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+This following product is defined but n*m is not.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p3','p4']);"
+    value="m*n" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+The operations <a href="dbopnrows.xhtml">nrows</a> and
+<a href="dbopncols.xhtml">ncols</a> return the number of rows and
+columns of a matrix. You can extract a row or a column of a matrix using
+the operations <a href="dboprow.xhtml">row</a> and
+<a href="dbopcolumn.xhtml">column</a>. The object returned ia a
+<a href="db.xhtml?Vector">Vector</a>. Here is the third column of the matrix n.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p5']);"
+    value="vec:=column(n,3)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can multiply a matrix on the left by a "row vector" and on the right by
+a "column vector".
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p5','p6']);"
+    value="vec*m" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopinverse.xhtml">inverse</a> computes the inverse
+of a matrix if the matrix is invertible, and returns "failed" if not. This
+Hilbert matrix invertible.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="hilb:=matrix([[1/(i+j) for i in 1..3] for j in 1..3])" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p7','p8']);"
+    value="inverse(hilb)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+This matrix is not invertible.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="mm:=matrix([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p9','p10']);"
+    value="inverse(mm)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopdeterminant.xhtml">determinant</a> computes the
+determinant of a matrix provided that the entries of the matrix belong to a
+<a href="db.xhtml?CommutativeRing">CommutativeRing</a>. The above matrix mm
+is not invertible and, hence, must have determinant 0.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p9','p11']);"
+    value="determinant(mm)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboptrace.xhtml">trace</a> computes the trace of a
+square matrix.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p9','p12']);"
+    value="trace(mm)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboprank.xhtml">rank</a> computes the rank of a matrix:
+the maximal number of linearly independent rows or columns.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p9','p13']);"
+    value="rank(mm)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopnullity.xhtml">nullity</a> computes the nullity
+of a matrix: the dimension of its null space.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p9','p14']);"
+    value="nullity(mm)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopnullspace.xhtml">nullSpace</a> returns a list 
+containing a basis for the null space of a matrix. Note that the nullity is
+the number of elements in a basis for the null space.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p9','p15']);"
+    value="nullSpace(mm)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboprowechelon.xhtml">rowEchelon</a> returns the row
+echelon form of a matrix. It is easy to see that the rank of this matrix is
+two and that its nullity is also two.
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p9','p16']);"
+    value="rowEchelon(mm)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+For more information see
+<a href="axbook/section-1.6.xhtml">Expanding to Higher Dimensions</a>,
+<a href="axbook/section-8.4.xhtml">
+Computation of Eigenvalues and Eigenvectors</a>, and 
+<a href="axbook/section-9.27.xhtml#subsec-9.27.4">
+An Example: Determinant of a Hilbert Matrix</a>. Also see
+<a href="db.xhtml?Permanent">Permanent</a>,
+<a href="db.xhtml?Vector">Vector</a>,
+<a href="db.xhtml?OneDimensionalArray">OneDimensionalArray</a>, and
+<a href="db.xhtml?TwoDimensionalArray">TwoDimensionalArray</a>. Issue the
+system command
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="showcall('p17');"
+   value=")show Matrix"/>
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+to display the full ist of operations defined by 
+<a href="db.xhtml?Matrix">Matrix</a>.
+<<page foot>>
+@
+
+\subsection{linpermaent.xhtml}
+<<linpermaent.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Permanent</div>
+  <hr/>
+The package <a href="db.xhtml?Permanent">Permanent</a> provides the function
+<a href="dboppermanent.xhtml">permanent</a> for square matrices. The
+<a href="dboppermanent.xhtml">permanent</a> of a square matrix can be
+computed in the same way as the determinant by expansion of minors except
+that for the permanent the sign for each element is 1, rather than being 1
+if the row plus column indices is positive and -1 otherwise. This function
+is much more difficult to compute efficiently than the 
+<a href="dbopdeterminant.xhtml">determinant</a>. An example of the use of 
+<a href="dboppermanent.xhtml">permanent</a> is the calculation of the nth
+derangement number, defined to be the number of different possibilities
+for n couples to dance but never with their own spouse. Consider an n by x
+matrix with entries 0 on the diagonal and 1 elsewhere. Think of the rows as
+one-half of each couple (for example, the males) and the columns the other
+half. The permanent of such a matrix gives the desired derangement number.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="noresult" 
+    onclick="makeRequest('p1');"
+    value=
+     "kn n == (r:MATRIX INT:=new(n,n,1); for i in 1..n repeat r.i.i:=0; r)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Here are some derangement numbers, which you see grow quite fast.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="permanent(kn(5)::SQMATRIX(5,INT))" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="[permanent(kn(n)::SQMATRIX(n,INT)) for n in 1..13]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{linsquarematrices.xhtml}
+<<linsquarematrices.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">SquareMatrix</div>
+  <hr/>
+The top level matrix type in Axiom is 
+<a href="db.xhtml?Matrix">Matrix</a>, see
+(<a href="pagematrix.xhtml">Matrix</a>), which provides basic arithmetic
+and linear algebra functions. However, since the matrices can be of any
+size it is not true that any pair can be added or multiplied. Thus
+<a href="db.xhtml?Matrix">Matrix</a> has little algebraic structure.
+
+Sometimes you want to use matrices as coefficients for polynomials or in
+other algebraic contexts. In this case,
+<a href="db.xhtml?SquareMatrix">SquareMatrix</a> should be used. The
+domain <a href="db.xhtml?SquareMatrix">SquareMatrix(n,R)</a> gives the
+ring of n by n square matrices over R.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:=squareMatrix [[1,-%i],[%i,4]]" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The usual arithmetic operations are available.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="m*m-m" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Square matrices can be used where ring elements are required. For example,
+here is a matrix with matrix entries.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="mm:=squareMatrix [[m,1],[1-m,m^2]]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Or you can construct a polynomial with square matrix coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="p:=(x+m)^2" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+This value can be converted to a square matrix with polynomial coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p4','p5']);"
+    value="p::SquareMatrix(2,?)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+For more information on related topics see 
+<a href="axbook/section-2.2.xhtml#subsec-2.2.4">Modes</a> and
+<a href="pagematrix.xhtml">Matrix</a>. Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="showcall('p6');"
+   value=")show SquareMatrix"/>
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?SquareMatrix">SquareMatrix</a>.
+<<page foot>>
+@
+
+\subsection{linvectors.xhtml}
+<<linvectors.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Vector</div>
+  <hr/>
+The <a href="db.xhtml?Vector">Vector</a> domain is used for storing
+data in a one-dimensonal indexed data structure. A vector is a
+homogeneous data structure in that all the components of the vector
+must belong to the same Axiom domain. Each vector has a fixed length
+specified by the user; vectors are not extensible. This domain is
+similar to the 
+<a href="db.xhtml?OneDimensionalArray">OneDimensionalArray</a> domain,
+except that when the components of a
+<a href="db.xhtml?Vector">Vector</a> belong to a 
+<a href="db.xhtml?Ring">Ring</a>, arithmetic operations are provided. 
+For more examples of operations that are defined for both 
+<a href="db.xhtml?Vector">Vector</a> and
+<a href="db.xhtml?OneDimensionalArray">OneDimensionalArray</a>, see
+<a href="pageonedimensionalarray.xhtml">OneDimensionalArray</a>.
+
+As with the <a href="db.xhtml?OneDimensionalArray">OneDimensionalArray</a>
+domain, a 
+<a href="db.xhtml?Vector">Vector</a> can be created by calling the operation
+<a href="dbopnew.xhtml">new</a>, its components can be accessed by calling
+the operations <a href="dbopelt.xhtml">elt</a> and
+<a href="dbopqelt.xhtml">qelt</a>, and its components can be reset by
+calling the operations
+<a href="dbopsetelt.xhtml">setelt</a> and
+<a href="dbopseteltbang.xhtml">setelt!</a>. This creates a vector of 
+integers of length 5 all of whose components are 12.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="u:VECTOR INT:=new(5,12)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+This is how you create a vector from a list of its components.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="v:VECTOR INT:=vector([1,2,3,4,5])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Indexing for vectors begins at 1. The last element has index equal to
+the length of the vector, which is computed by 
+<a href="dboplength.xhtml">#</a>.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p2','p3']);"
+    value="#(v)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+This is the standard way to use <a href="dbopelt.xhtml">elt</a> to extract
+an element.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p2','p4']);"
+    value="v.2" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+This is the standard way to use setelt to change an element. It is the
+same as if you had typed setelt(v,3,99).
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p2','p5']);"
+    value="v.3:=99" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Now look at v to see the change. You can use 
+<a href="dbopqelt.xhtml">qelt</a> and
+<a href="dbopqseteltbang.xhtml">qsetelt!</a> (instead of
+<a href="dbopelt.xhtml">elt</a> and
+<a href="dbopsetelt.xhtml">setelt</a>, respectively) but only when you
+know that the indexis within the valid range.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p2','p6']);"
+    value="v" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+When the components belong to a 
+<a href="db.xhtml?Ring">Ring</a>, 
+Axiom provides arithmetic operations for
+<a href="db.xhtml?Vector">Vector</a>. These include left and right
+scalar multiplication.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p2','p7']);"
+    value="5*v" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p2','p8']);"
+    value="v*7" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="w:VECTOR INT:=vector([2,3,4,5,6])" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+Addition and subtraction are also available
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p2','p9','p10']);"
+    value="v+w" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+Of course, when adding or subtracting, the two vectors must have the 
+same length or an error message is displayed.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p9','p11']);"
+    value="v-w" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+For more information about other aggregate domains, see
+<a href="pagelist.xhtml">List</a>,
+<a href="pagematrix.xhtml">Matrix</a>,
+<a href="pageonedimensionalarray.xhtml">OneDimensionalArray</a>.
+<a href="pageset.xhtml">Set</a>,
+<a href="pagetable.xhtml">Table</a>, and
+<a href="pagetwodimensionalarray.xhtml">TwoDimensionalArray</a>.
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="showcall('p12');"
+   value=")show Vector"/>
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?Vector">Vector</a>.
+<<page foot>>
+@
+
+\subsection{lin1darrays.xhtml}
+<<lin1darrays.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      lin1darrays not implemented
+<<page foot>>
+@
+
+\subsection{lin2darrays.xhtml}
+<<lin2darrays.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      lin2darrays not implemented
+<<page foot>>
+@
+
+%%M
+\subsection{man0page.xhtml}
+<<man0page.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+Enter search string (use <b>*</b> for wild card unless counter-indicated):
+  <form>
+   <input type="text" name="searchbox" size="50"/>
+  </form>
+
+  <table>
+   <tr>
+    <td>
+     <a href="(|kSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Constructors</b>
+     </a>
+    </td>
+    <td>
+     Search for 
+     <a href="(|cSearch| '|\stringvalue{pattern}|)">
+      <b>categories</b>
+     </a>,
+     <a href="(|dSearch| '|\stringvalue{pattern}|)">
+      <b>domains</b>
+     </a>,
+     or 
+     <a href="(|pSearch| '|\stringvalue{pattern}|)">
+      <b>packages</b>
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|oSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Operations</b>
+     </a>
+    </td>
+    <td>Search for operations.</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|aSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Attributes</b>
+     </a>
+    </td>
+    <td>Search for attributes.</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|aokSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>General</b>
+     </a>
+    </td>
+    <td>Search for all three of the above.</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|docSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Documentation</b>
+     </a>
+    </td>
+    <td>Search library documentation.
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|genSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Complete</b>
+     </a>
+    </td>
+    <td>All of the above.
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|detailedSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Selectable</b>
+     </a>
+    </td>
+    <td>Detailed search with selectable options.
+    </td>
+   </tr>
+   <hr/>
+   <tr>
+    <td>
+     <a href="htsearch \stringvalue{pattern}.xhtml">
+      <b>Reference</b>
+     </a>
+    </td>
+    <td>Search Reference documentation (<b>*</b> wild card is not accepted).
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="ugSysCmdPage.xhtml">
+      <b>Commands</b>
+     </a>
+    </td>
+    <td>View system command documentation.
+    </td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+%%N
+\subsection{numberspage.xhtml}
+<<numberspage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+The following types of numbers are among those available in Axiom
+  <table>
+   <tr>
+    <td>
+     <a href="numintegers.xhtml">Integers</a>
+    </td>
+    <td>
+     Arithmetic with arbitrarily large integers
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="numfractions.xhtml">Fractions</a>
+    </td>
+    <td>
+     Rational numbers and general fractions
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="nummachinefloats.xhtml">Machine Floats</a>
+    </td>
+    <td>
+     Fixed precision machine floating point
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="numfloat.xhtml">Real Numbers</a>
+    </td>
+    <td>
+     Arbitrary precision decimal arithmetic
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="numcomplexnumbers.xhtml">Complex Numbers</a>
+    </td>
+    <td>
+     Complex numbers in general
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="numfinitefields.xhtml">Finite Fields</a>
+    </td>
+    <td>
+     Arithmetic in characteristic p
+    </td>
+   </tr>
+  </table>
+  <hr/>
+Addtional topics
+ <ul>
+  <li> <a href="numnumericfunctions.xhtml">Numeric Functions</a></li>
+  <li> <a href="numcardinalnumbers.xhtml">Cardinal Numbers</a></li>
+  <li> <a href="nummachinesizedintegers.xhtml">Machine-sized Integers</a></li>
+  <li> <a href="numromannumerals.xhtml">Roman Numerals</a></li>
+  <li> <a href="numcontinuedfractions.xhtml">Continued Fractions</a></li>
+  <li> <a href="numpartialfractions.xhtml">Partial Fractions</a></li>
+  <li> <a href="numquaternions.xhtml">Quaternions</a></li>
+  <li> <a href="numoctonions.xhtml">Octonions</a></li>
+  <li> <a href="numrepeatingdecimals.xhtml">Repeating Decimals</a></li>
+  <li> <a href="numrepeatingbinaryexpansions.xhtml">
+        Repeating Binary Expansions
+       </a>
+  </li>
+  <li> <a href="numrepeatinghexexpansions.xhtml">
+        Repeating Hexadecimal Expansions
+       </a>
+  </li>
+  <li> <a href="numotherbases.xhtml">Expansions in other Bases</a></li>
+ </ul>
+<<page foot>>
+@
+
+\subsection{numcardinalnumbers.xhtml}
+<<numcardinalnumbers.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Cardinal Numbers</div>
+  <hr/>
+The <a href="dbopcardinalnumber.xhtml">CardinalNumber</a> can be used for
+values indicating the cardinality of sets, both finite and infinite. For
+example, the <a href="dbopdimension.xhtml">dimension</a> operation in the
+category <a href="dbopvectorspace.xhtml">VectorSpace</a> returns a cardinal
+number.
+
+The non-negative integers have a natural construction as cardinals
+<pre>
+0=#{ }, 1={0}, 2={0,1}, ..., n={i | 0 &#60;= i &#60; n}
+</pre>
+The fact that 0 acts as a zero for the multiplication of cardinals is
+equivalent to the axiom of choice.
+
+Cardinal numbers can be created by conversion from non-negative integers.
+ <ul>
+  <li>
+   <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+     value="c0:=0::CardinalNumber" />
+   <div id="ansp1"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+     value="c1:=1::CardinalNumber" />
+   <div id="ansp2"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+     value="c2:=2::CardinalNumber" />
+   <div id="ansp3"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+     value="c3:=3::CardinalNumber" />
+   <div id="ansp4"><div></div></div>
+  </li>
+ </ul>
+The can also be obtained as the named cardinal Aleph(n)
+ <ul>
+  <li>
+   <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+     value="A0:=Aleph 0" />
+   <div id="ansp5"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+     value="A1:=Aleph 1" />
+   <div id="ansp6"><div></div></div>
+  </li>
+ </ul>
+The <a href="dbopfiniteq.xhtml">finite?</a> operation tests whether a value
+is a finite cardinal, that is, a non-negative integer.
+ <ul>
+  <li>
+   <input type="submit" id="p7" class="subbut" 
+     onclick="handleFree(['p3','p7']);"
+     value="finite? c2" />
+   <div id="ansp7"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p8" class="subbut" 
+     onclick="handleFree(['p5','p8']);"
+     value="finite? A0" />
+   <div id="ansp8"><div></div></div>
+  </li>
+ </ul>
+Similarly, the <a href="dbopcountableq.xhtml">countable?</a> operation
+determines whether a value is a countable cardinal, that is, finite or
+Aleph(0).
+ <ul>
+  <li>
+   <input type="submit" id="p9" class="subbut" 
+     onclick="handleFree(['p3','p9']);"
+     value="countable? c2" />
+   <div id="ansp9"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p10" class="subbut" 
+     onclick="handleFree(['p5','p10']);"
+     value="countable? A0" />
+   <div id="ansp10"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p11" class="subbut" 
+     onclick="handleFree(['p6','p11']);"
+     value="countable? A1" />
+   <div id="ansp11"><div></div></div>
+  </li>
+ </ul>
+Arithmetic operations are defined on cardinal numbers as follows:
+<table>
+ <tr>
+  <td>
+   x+y = #(X+Y)
+  </td>
+  <td>
+   cardinality of the disjoint union
+  </td>
+ </tr>
+ <tr>
+  <td>
+   x-y = #(X-Y)
+  </td>
+  <td>
+   cardinality of the relative complement
+  </td>
+ </tr>
+ <tr>
+  <td>
+   x*y = #(X*Y)
+  </td>
+  <td>
+   cardinality of the Cartesian product
+  </td>
+ </tr>
+ <tr>
+  <td>
+   x+*y = #(X**Y)
+  </td>
+  <td>
+   cardinality of the set of maps from Y to X
+  </td>
+ </tr>
+</table>
+Here are some arithmetic examples:
+ <ul>
+  <li>
+   <input type="submit" id="p12" class="subbut" 
+     onclick="handleFree(['p3','p6','p12']);"
+     value="[c2+c2,c1+A1]" />
+   <div id="ansp12"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p13" class="subbut" 
+     onclick="handleFree(['p1','p2','p3','p5','p6','p13']);"
+     value="[c0*c2,c1*c2,c2*c2,c0*A1,c1*A1,c2*A1,A0*A1]" />
+   <div id="ansp13"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p14" class="subbut" 
+     onclick="handleFree(['p1','p2','p3','p6','p14']);"
+     value="[c2**c0,c2**c1,c2**c2,A1**c0,A1**c1,A1**c2]" />
+   <div id="ansp14"><div></div></div>
+  </li>
+ </ul>
+Subtraction is a partial operation; it is not defined when subtracting
+a larger cardinal from a smaller one, nor when subtracting two equal
+infinite cardinals.
+ <ul>
+  <li>
+   <input type="submit" id="p15" class="subbut" 
+     onclick="handleFree(['p2','p3','p4','p5','p6','p15']);"
+     value="[c2-c1,c2-c2,c2-c3,A1-c2,A1-A0,A1-A1]" />
+   <div id="ansp15"><div></div></div>
+  </li>
+ </ul>
+The generalized continuum hypothesis asserts that
+<pre>
+ 2**Aleph i = Aleph(i+1)
+</pre>
+and is independent of the axioms of set theory. (Goedel, The consistency
+of the continuum hypothesis, Ann. Math. Studies, Princeton Univ. Press,
+1940) The <a href="dbopcardinalnumber.xhtml">CardinalNumber</a> domain 
+provides an operation to assert whether the hypothesis is to be assumed.
+ <ul>
+  <li>
+   <input type="submit" id="p16" class="subbut" 
+     onclick="makeRequest('p16');"
+     value="generalizedContinuumHypothesisAssumed true" />
+   <div id="ansp16"><div></div></div>
+  </li>
+ </ul>
+When the generalized continuum hypothesis is assumed, exponentiation to
+a transfinite power is allowed.
+ <ul>
+  <li>
+   <input type="submit" id="p17" class="subbut" 
+     onclick="handleFree(['p1','p2','p3','p5','p6','p17']);"
+     value="[c0**A0,c1**A0,c2**A0,A0**A0,A0**A1,A1**A0,A1**A1]" />
+   <div id="ansp17"><div></div></div>
+  </li>
+ </ul>
+Three commonly encountered cardinal numbers are
+<pre>
+  a = #Z                 countable infinity
+  c = #R                 the continuum
+  f = #{g|g: [0,1]->R}
+</pre>
+In this domain, these values are obtained under the generalized continuum
+hypothesis in this way:
+ <ul>
+  <li>
+   <input type="submit" id="p18" class="subbut" 
+     onclick="makeRequest('p18');"
+     value="a:=Aleph 0" />
+   <div id="ansp18"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p19" class="subbut" 
+     onclick="handleFree(['p18','p19']);"
+     value="c:=2**a" />
+   <div id="ansp19"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p20" class="subbut" 
+     onclick="handleFree(['p18','p19','p20']);"
+     value="f:=2**c" />
+   <div id="ansp20"><div></div></div>
+  </li>
+ </ul>
+<<page foot>>
+@
+
+\subsection{numcomplexnumbers.xhtml}
+<<numcomplexnumbers.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+<div align="center">Complex Numbers</div>
+<hr/>
+The <a href="db.xhtml?Complex">Complex</a> constructor implements 
+complex objects over a commutative ring R. Typically, the ring R is
+<a href="db.xhtml?Integer">Integer</a>,
+<a href="dbfractioninteger.xhtml">Fraction Integer</a>,
+<a href="db.xhtml?Float">Float</a>,
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>,
+R can also be a symbolic type, like
+<a href="dbpolynomialinteger.xhtml">Polynomial Integer</a>.
+For more information about the numerical and graphical aspects of
+complex numbers, see 
+<a href="axbook/book-contents.xhtml#chapter8">Numeric Functions</a>
+in section 8.1.
+
+Complex objects are created by the
+<a href="dbcomplexcomplex.xhtml">complex</a> operation
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="a:=complex(4/3,5/2)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="b:=complex(4/3,-5/2)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The standard arithmetic operations are available.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="a+b" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p4']);"
+    value="a-b" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p5']);"
+    value="a*b" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+If R is a field, you can also divide the complex objects.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p6']);"
+    value="a/b" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Use a conversion 
+(see <a href="axbook/section-2.7.xhtml">Conversion</a> in 
+section 2.7) to view the last object as a fraction of complex
+integers.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p6','p7']);"
+    value="%::Fraction Complex Integer" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+The predefined macro <tt>%i</tt> is defined to be complex(0,1).
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="3.4+6.7*%i" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+You can also compute the 
+<a href="dbcomplexconjugate.xhtml">conjugate</a> and
+<a href="dbcomplexnorm.xhtml">norm</a> of a complex number.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p9']);"
+    value="conjugate a" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p10']);"
+    value="norm a" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+The <a href="dbcomplexreal.xhtml">real</a> and
+<a href="dbcompleximag.xhtml">imag</a> operations are provided to
+extract the real and imaginary parts, respectively.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p11']);"
+    value="real a" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p12']);"
+    value="imag a" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+The domain 
+<a href="dbcomplexinteger.xhtml">Complex Integer</a>
+is also called the Gaussian integers. If R is the integers (or, more
+generally, a  
+<a href="db.xhtml?EuclideanDomain">Euclidean Domain</a>),
+you can compute greatest common divisors.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="makeRequest('p13');"
+    value="gcd(12-12*%i,31+27*%i)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+You can also compute least common multiples
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="makeRequest('p14');"
+    value="lcm(13-13*%i,31+27*%i)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+You can <a href="dbcomplexfactor.xhtml">factor</a> Gaussian integers.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="makeRequest('p15');"
+    value="factor(13-13*%i)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="makeRequest('p16');"
+    value="factor complex(2,0)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{numcontinuedfractions.xhtml}
+<<numcontinuedfractions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Continued Fractions</div>
+  <hr/>
+Continued fractions have been a fascinating and useful tool in mathematics
+for well over three hundred years. Axiom implements continued fractions
+for fractions of any Euclidean domain. In practice, this usually means
+rational numbers. In this section we demonstrate some of the operations
+available for manipulating both finite and infinite continued fractions.
+It may be helpful if you review
+<a href="db.xhtml?Stream">Stream</a> to remind yourself of some of the 
+operations with streams.
+
+The <a href="db.xhtml?ContinuedFraction">ContinuedFraction</a> domain is a
+field and therefore you can add, subtract, multiply, and divide the
+fractions. The 
+<a href="dbopcontinuedfraction.xhtml">continuedFraction</a> operation 
+converts its fractional argument to a continued fraction.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="c:=continuedFraction(314159/100000)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+This display is the compact form of the bulkier
+<pre>
+  3 +             1
+     ---------------------------
+     7 +            1
+         -----------------------
+         15 +         1
+              ------------------
+              1 +        1
+                  --------------
+                  25 +     1
+                       ---------
+                       1 +   1
+                           -----
+                           7 + 1
+                               -
+                               4
+</pre>
+You can write any rational number in a similar form. The fraction will
+be finite and you can always take the "numerators" to be 1. That is, any
+rational number can be written as a simple, finite continued fraction of
+the form
+<pre>
+a(1) +            1
+     ---------------------------
+  a(2) +            1
+         -----------------------
+       a(3) +         1
+                        .
+                         .
+                          .
+                           1
+
+              -----------------
+              a(n-1) +     1
+                       ---------
+                          a(n)
+</pre>
+The a(i) are called partial quotients and the operation
+<a href="dboppartialquotients.xhtml">partialQuotients</a> creates a
+stream of them.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="partialQuotients c" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+By considering more and more of the fraction, you get the
+<a href="dbopconvergents.xhtml">convergents</a>. For example, the
+first convergent is a(1), the second is a(1)+1/a(2) and so on.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="convergents c" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Since this ia a finite continued fraction, the last convergent is the
+original rational number, in reduced form. The result of
+<a href="dbopapproximants.xhtml">approximants</a> is always an infinite
+stream, though it may just repeat the "last" value.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="approximants c" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Inverting c only changes the partial quotients of its fraction by 
+inserting a 0 at the beginning of the list.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="pq:=partialQuotients(1/c)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Do this to recover the original continued fraction from this list of
+partial quotients. The three argument form of the 
+<a href="dbopcontinuedfraction.xhtml">continuedFraction</a> operation takes
+an element which is the whole part of the fraction, a stream of elements
+which are the denominators of the fraction.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut"
+    onclick="handleFree(['p1','p5','p6']);"
+    value="continuedFraction(first pq,repeating [1],rest pq)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+The streams need not be finite for 
+<a href="dbopcontinuedfraction.xhtml">continuedFraction</a>. Can you guess
+which irrational number has the following continued fraction? See the end
+of this section for the answer.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" onclick="makeRequest('p7');"
+    value="z:=continuedFraction(3,repeating [1],repeating [3,6])" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+In 1737 Euler discovered the infinite continued fraction expansion
+<pre>
+ e - 1                 1
+ ----- =  ---------------------------
+p          2 +            1
+              -----------------------
+              6  +         1
+                   ------------------
+                  10 +        1
+                       --------------
+                       14 +  ... 
+</pre>
+We use this expansion to compute rational and floating point 
+approximations of e. (For this and other interesting expansions,
+see C. D. Olds, Continued Fractions, New Mathematical Library,
+Random House, New York, 1963 pp.134-139).
+
+By looking at the above expansion, we see that the whole part is 0
+and the numerators are all equal to 1. This constructs the stream of
+denominators.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" onclick="makeRequest('p8');"
+    value="dens:Stream Integer:=cons(1,generate((x+->x+4),6))" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Therefore this is the continued fraction expansion for (e-1)/2.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p8','p9']);"
+    value="cf:=continuedFraction(0,repeating [1],dens)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+These are the rational number convergents.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut"
+    onclick="handleFree(['p8','p9','p10']);"
+    value="ccf:=convergents cf" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+You can get rational convergents for e by multiplying by 2 and adding 1.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p8','p9','p10','p11']);"
+    value="eConvergents:=[2*e+1 for e in ccf]" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+You can also compute the floating point approximations to these convergents.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut"
+    onclick="handleFree(['p8','p9','p10','p11','p12']);"
+    value="eConvergents::Stream Float" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+Compare this to the value of e computed by the 
+<a href="dbopexp.xhtml">exp</a> operation in 
+<a href="db.xhtml?Float">Float</a>.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" onclick="makeRequest('p13');"
+    value="exp 1.0" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+In about 1658, Lord Brouncker established the following expansion for 4/pi.
+<pre>
+  1 +             1
+     ---------------------------
+     2 +            9
+         -----------------------
+         2  +         25
+              ------------------
+              2 +        49
+                  --------------
+                  2  +     81
+                       ---------
+                       2 +   ...
+</pre>
+Let's use this expansion to compute rational and floating point 
+approximations for pi.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" onclick="makeRequest('p14');"
+    value="cf:=continuedFraction(1,[(2*i+1)^2 for i in 0..],repeating [2])" />
+  <div id="ansp14"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p14','p15']);"
+    value="ccf:=convergents cf" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p14','p15','p16']);"
+    value="piConvergents:=[4/p for p in ccf]" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+As you can see, the values are converging to 
+<pre>
+  pi = 3.14159265358979323846..., but not very quickly.
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p14','p15','p16','p17']);"
+    value="piConvergents::Stream Float" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+You need not restrict yourself to continued fractions of integers. Here is
+an expansion for a quotient of Gaussian integers.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" onclick="makeRequest('p18');"
+    value="continuedFraction((-122+597*%i)/(4-4*%i))" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+This is an expansion for a quotient of polynomials in one variable with
+rational number coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" onclick="makeRequest('p19');"
+    value="r:Fraction UnivariatePolynomial(x,Fraction Integer)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p19','p20']);"
+    value="r:=((x-1)*(x-2))/((x-3)*(x-4))" />
+  <div id="ansp20"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="handleFree(['p19','p20','p21']);"
+    value="continuedFraction r" />
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+To conclude this section, we give you evidence that
+<pre>
+  z =  3 +             1
+          ---------------------------
+          3 +            1
+              -----------------------
+              6 +          1
+                  -------------------
+                   3 +        1
+                       --------------
+                       6  +     1
+                            ---------
+                            3 + ...
+</pre>
+is the expansion of the square root of 11.
+<ul>
+ <li>
+  <input type="submit" id="p22" class="subbut" 
+    onclick="handleFree(['p7','p22']);"
+    value="[i*i for i in convergents(z)]::Stream Float" />
+  <div id="ansp22"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{numexamples.xhtml}
+<<numexamples.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      numexamples not implemented
+<<page foot>>
+@
+
+\subsection{numfactorization.xhtml}
+<<numfactorization.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      numfactorization not implemented
+<<page foot>>
+@
+
+\subsection{numfinitefields.xhtml}
+<<numfinitefields.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+<div align="center">Finite Fields</div>
+<hr/>
+A <sl>finite field</sl> (also called a <sl>Galois field</sl>) is a finite
+algebraic structure where on can add, multiply, and divide under the same
+laws (for example, commutativity, associativity, or distributivity) as 
+apply to the rational, real, or complex numbers. Unlike those three fields,
+for any finite field there exists a positive prime integer p, called the
+<a href="dbcharacteristic.xhtml">characteristic</a>, such that p*x=0 for 
+any element x in the finite field. In fact, the number of elements in a
+finite filed is a power of the characteristic and for each prime p and
+positive integer n there exists exactly one finite field with p**n elements,
+up to an isomorphism. (For more information about the algebraic structure and
+properties of finite fields, see for example, S. Lang <sl>Algebr</sl>, 
+Second Edition, New York, Addison-Wesley Publishing Company, Inc. 1984,
+ISBN 0 201 05476 6; or R. Lidl, H. Niederreiter, <sl>Finite Fields</sl>,
+Encyclopedia of Mathematics and Its Applications, Vol. 20, Cambridge.
+Cambridge Univ. Press, 1983, ISBN 0 521 30240 4)
+
+When n=1, the field has p elements and is called a <sl>prime field</sl>,
+discussed in 
+<a href="axbook/section-8.11.xhtml#subsec-8.11.1">
+Modular Arithmetic and Prime Fields</a>
+in section 8.11.1. There are several ways of implementing extensions of
+finite fields, and Axiom provides quite a bit of freedom to allow you to
+choose the one that is best for your application. Moreover, we provide
+operations for converting among the different representations of extensions
+and different extensions of a single field. Finally, note that you usually
+need to package call operations from finite fields if the operations do not
+take as an argument an object of the field. See
+<a href="">Package Calling and Target Types</a>
+in section 2.9 for more information on package calling.
+<ul>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.1">
+   Modular Arithmetic and Prime Fields
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.2">
+   Extensions of Finite Fields
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.3">
+   Irreducible Modulus Polynomial Representations
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.4">
+   Cyclic Group Representations
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.5">
+   Normal Basis Representations
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.6">
+   Conversion Operations for Finite Fields
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.7">
+   Utility Operations for Finite Fields
+  </a>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{numfloat.xhtml}
+<<numfloat.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Real Numbers</div>
+  <hr/>
+Axiom provides two kinds of floating point numbers. The domain 
+<a href="db.xhtml?Float">Float</a> 
+(abbreviation <a href="db.xhtml?Float">FLOAT</a>) 
+implements a model of arbitrary precisions floating point numbers. The
+domain
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a> 
+(abbreviation <a href="db.xhtml?DoubleFloat">DFLOAT</a>) 
+is intended to make available hardware floating point arithmetic in Axiom.
+The actual model of floating point 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a> that Axiom
+provides is system dependent. For example, on the IBM System 370, Axiom
+uses IBM double precision which has fourteen hexadecimal digits of 
+precision or roughly sixteen decimal digits. Arbitrary precision floats
+allow the user to specify the precision at which arithmetic operations 
+are computed. Although this is an attractive facility, it comes at a cost.
+Arbitrary precision floating point arithmetic typically takes twenty to
+two hundred times more time than hardware floating point.
+ 
+For more information about Axiom's numeric and graphic facilities
+see <a href="axbook/book-contents.xhtml#chapter7">Graphics</a> in section 7, 
+<a href="axbook/book-contents.xhtml#chapter8">Numeric Functions</a>
+in section 8.1, and <a href="nummachinefloats.xhtml">DoubleFloat</a>
+<ul>
+ <li>
+  <a href="axbook/section-9.27.xhtml#subsec-9.27.1">
+   Introduction to Float
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-9.27.xhtml#subsec-9.27.2">
+   Conversion Functions
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-9.27.xhtml#subsec-9.27.3">
+   Output Functions
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-9.27.xhtml#subsec-9.27.4">
+   An Example: Determinant of a Hilbert Matrx
+  </a>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{numfractions.xhtml}
+<<numfractions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Fractions</div>
+  <hr/>
+Axiom handles fractions in many different contexts and will
+automatically simplify fractions whenever possible. Here are
+some examples:
+ <ul>
+  <li> <input type="submit" id="p1" value="1/4-1/5" class="subbut"
+         onclick="makeRequest('p1');"/>
+       <div id="ansp1"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p2" value="f:=(x^2+1)/(x-1)" class="subbut"
+         onclick="makeRequest('p2');"/>
+       <div id="ansp2"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p3" value="g:=(x^2-3*x+2)/(x+2)" class="subbut"
+         onclick="makeRequest('p3');"/>
+       <div id="ansp3"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p4" value="f*g" class="subbut"
+         onclick="handleFree(['p2','p3','p4']);"/>
+       <div id="ansp4"><div></div></div>
+  </li>
+ </ul>
+ <hr/>
+Additional Topics:
+ <table>
+  <tr>
+   <td>
+    <a href="numrationalnumbers.xhtml">Rational Numbers</a>
+   </td>
+   <td>
+    Quotients of integers
+   </td>
+  </tr>
+  <tr>
+   <td>
+    <a href="numquotientfields.xhtml">Quotient Fields</a>
+   </td>
+   <td>
+    Quotients over an arbitrary integral domain
+   </td>
+  </tr>
+ </table>
+<<page foot>>
+@
+
+\subsection{numfunctions.xhtml}
+<<numfunctions.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      numfunctions not implemented
+<<page foot>>
+@
+
+\subsection{numgeneralinfo.xhtml}
+<<numgeneralinfo.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      numgeneralinfo not implemented
+<<page foot>>
+@
+
+\subsection{numintegers.xhtml}
+<<numintegers.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Integers</div>
+  <hr/>
+In Axiom, integers can be as large as you like. Try the following
+examples.
+ <ul>
+  <li> <input type="submit" id="p1" value="x:=factorial(200)" class="subbut"
+         onclick="makeRequest('p1');"/>
+       <div id="ansp1"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p2" value="y:=2^90-1" class="subbut"
+         onclick="makeRequest('p2');"/>
+       <div id="ansp2"><div></div></div>
+  </li>
+ </ul>
+Of course, you can now do arithmetic as usual on these (very) large
+integers:
+ <ul>
+  <li> <input type="submit" id="p3" value="x+y" class="subbut"
+         onclick="handleFree(['p1','p2','p3']);"/>
+       <div id="ansp3"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p4" value="x-y" class="subbut"
+         onclick="handleFree(['p1','p2','p4']);"/>
+       <div id="ansp4"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p5" value="x*y" class="subbut"
+         onclick="handleFree(['p1','p2','p5']);"/>
+       <div id="ansp5"><div></div></div>
+  </li>
+ </ul>
+Axiom can factor integers, but numbers with small prime factors
+ <ul>
+  <li> <input type="submit" id="p6" value="factor(x)" class="subbut"
+         onclick="handleFree(['p1','p6']);"/>
+       <div id="ansp6"><div></div></div>
+  </li>
+ </ul>
+will factor more rapidly than numbers with large prime factors.
+ <ul>
+  <li> <input type="submit" id="p7" value="factor(y)" class="subbut"
+         onclick="handleFree(['p2','p7']);"/>
+       <div id="ansp7"><div></div></div>
+  </li>
+ </ul>
+ <hr/>
+Additional topics
+ <table>
+  <tr>
+   <td>
+    <a href="numgeneralinfo.xhtml">General Info</a>
+   </td>
+   <td>
+    General information and examples of integers
+   </td>
+  </tr>
+  <tr>
+   <td>
+    <a href="numfactorization.xhtml">Factorization</a>
+   </td>
+   <td>
+    Primes and factorization
+   </td>
+  </tr>
+  <tr>
+   <td>
+    <a href="numfunctions.xhtml">Functions</a>
+   </td>
+   <td>
+    Number theoretic functions
+   </td>
+  </tr>
+  <tr>
+   <td>
+    <a href="numexamples.xhtml">Functions</a>
+   </td>
+   <td>
+    Examples from number theory
+   </td>
+  </tr>
+  <tr>
+   <td>
+    <a href="numproblems.xhtml">Problems</a>
+   </td>
+   <td>
+    Problems from number theory
+   </td>
+  </tr>
+ </table>
+<<page foot>>
+@
+
+\subsection{nummachinefloats.xhtml}
+<<nummachinefloats.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Machine Floats</div>
+  <hr/>
+Axiom provides two kinds of floating point numbers. The domain 
+<a href="db.xhtml?Float">Float</a> 
+(abbreviation <a href="db.xhtml?Float">FLOAT</a>) 
+implements a model of arbitrary precisions floating point numbers. The
+domain
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a> 
+(abbreviation <a href="db.xhtml?DoubleFloat">DFLOAT</a>) 
+is intended to make available hardware floating point arithmetic in Axiom.
+The actual model of floating point 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a> that Axiom
+provides is system dependent. For example, on the IBM System 370, Axiom
+uses IBM double precision which has fourteen hexadecimal digits of 
+precision or roughly sixteen decimal digits. Arbitrary precision floats
+allow the user to specify the precision at which arithmetic operations 
+are computed. Although this is an attractive facility, it comes at a cost.
+Arbitrary precision floating point arithmetic typically takes twenty to
+two hundred times more time than hardware floating point.
+
+By default, floating point numbers that you enter into Axiom are of type
+<a href="db.xhtml?Float">Float</a>.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="2.71828" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You must therefore tell Axiom that you want to use 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a> values and operations. The
+following are some conservative guidelines for getting Axiom to use 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>.
+
+To get a value of type <a href="db.xhtml?DoubleFloat">DoubleFloat</a>., 
+use a target with
+    "@", ...
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="2.71828@DoubleFloat" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+a conversion,...
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="2.71828::DoubleFloat" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or an assignment to a declared variable. It is more efficient if you
+use a target rather than an explicit or implicit conversion.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="eApprox:DoubleFloat:=2.71828" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You also need to declare functions that work with 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="noresult" 
+    onclick="makeRequest('p5');"
+    value="avg:List DoubleFloat -> DoubleFloat" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="noresult" 
+    onclick="makeRequest('p6');"
+    value="avg l==(empty? l => 0::DoubleFloat; reduce(_+,l)/#l)"/>
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p5','p6','p7']);"
+    value="avg []" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p5','p6','p8']);"
+    value="avg [3.4,9.7,-6.8]" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Use package calling for operations from 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>
+unless the arguments themselves are already of type
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="cos(3.1415926)$DoubleFloat" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="cos(3.1415926)::DoubleFloat" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+By far, the most common usage of 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>
+is for functions to be graphied. For more information about Axiom's
+numerical and graphical facilities, see
+<a href="axbook/book-contents.xhtml#chapter7">Graphics</a>
+in section 7, 
+<a href="axbook/book-contents.xhtml#chapter8">Numeric Functions</a>
+in section 8.1, and
+<a href="numfloat.xhtml">Float</a>
+
+The usual arithmetic and elementary functions are available for
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>. Use 
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="showcall('p11');"
+   value=")show DoubleFloat"/>
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+to get a list of operations.
+<<page foot>>
+@
+
+\subsection{nummachinesizedintegers.xhtml}
+<<nummachinesizedintegers.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+<div align="center">Machine-sized Integers</div>
+<hr/>
+The <a href="db.xhtml?SingleInteger">SingleInteger</a> is intended to
+provide support in Axiom for machine integer arithmetic. It is generally
+much faster than (bignum) <a href="db.xhtml?Integer">Integer</a> arithmetic
+but suffers from a limited range of values. Since Axiom can be implemented
+on top of various dialects of Lisp, the actual representation of small
+integers may not correspond exactly to the host machines integer
+representation.
+
+You can discover the minimum and maximum values in your implementation by
+using <a href="dbopmin.xhtml">min</a> and <a href="dbopmax.xhtml">max</a>
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="min()$SingleInteger" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="max()$SingleInteger" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+To avoid confusion with <a href="db.xhtml?Integer">Integer</a>, which is
+the default type for integers, you usually need to work with declared
+variables (see <a href="axbook/section-2.3.xhtml">Declarations</a>).
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="a:=1234::SingleInteger" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or use package calling (see 
+<a href="axbook/section-2.9.xhtml">Package Calling and Target Types</a>).
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="b:=1234$SingleInteger" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You can add, multiply, and subtract
+<a href="db.xhtml?SingleInteger">SingleInteger</a> objects, and ask for the
+greatest common divisor 
+(<a href="dbopgcd.xhtml">gcd</a>).
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p4','p5']);"
+    value="gcd(a,b)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+The least common multiple 
+(<a href="dboplcm.xhtml">lcm</a>) is also available.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p3','p4','p6']);"
+    value="lcm(a,b)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Operations
+<a href="dbopmulmod.xhtml">mulmod</a>,
+<a href="dbopaddmod.xhtml">addmod</a>,
+<a href="dbopsubmod.xhtml">submod</a>, and
+<a href="dbopinvmod.xhtml">invmod</a>
+are similar -- they provide arithmetic modulo a given small integer.
+Here is 5*6 mod 13.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" onclick="makeRequest('p7');"
+    value="mulmod(5,6,13)$SingleInteger" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+To reduce a small integer modulo a prime, use
+<a href="dboppositiveremainder.xhtml">positiveRemainder</a>
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" onclick="makeRequest('p8');"
+    value="positiveRemainder(37,13)$SingleInteger" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Operations <a href="dbopsingleintegerand.xhtml">And</a>,
+<a href="dbopsingleintegeror.xhtml">Or</a>,
+<a href="dbopsingleintegerxor.xhtml">xor</a>,
+and <a href="dbopsingleintegernot.xhtml">Not</a>
+provide bit level operations on small integers.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" onclick="makeRequest('p9');"
+    value="And(3,4)$SingleInteger" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+Use shift(int,numToShift) to shift bits, where int is shifted left if
+numToShift is positive, right if negative.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" onclick="makeRequest('p10');"
+    value="shift(1,4)$SingleInteger" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" onclick="makeRequest('p11');"
+    value="shift(31,-1)$SingleInteger" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+Many other operations are available for small integers, including many of
+those provided for <a href="db.xhtml?Integer">Integer</a>. 
+To see other operations use the system command
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="showcall('p12');"
+   value=")show SingleInteger"/>
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{numnumericfunctions.xhtml}
+<<numnumericfunctions.xhtml>>=
+<<standard head>>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Numeric Functions</div>
+  <hr/>
+Axiom provides two basic floating point types: 
+<a href="numfloat.xhtml">Float</a> and
+<a href="nummachinefloats.xhtml">DoubleFloat</a>. This section
+describes how to use numerical operations defined on these types and
+the related complex types. As we mentioned in
+<a href="axbook/book-contents.xhtml#chapter1">An Overview of Axiom</a>
+in chapter 1., the 
+<a href="numfloat.xhtml">Float</a> type is a software implementation of
+floating point numbers in which the exponent and the significand may have
+any number of digits. See
+<a href="numfloat.xhtml">Float</a> for detailed information about this 
+domain. The 
+<a href="nummachinefloats.xhtml">DoubleFloat</a> is usually a hardware
+implementation of floating point numbers, corresponding to machine double
+precision. The types 
+<a href="dbcomplexfloat.xhtml">Complex Float</a> and 
+<a href="dbcomplexdoublefloat.xhtml">Complex DoubleFloat</a> are the
+corresponding software implementations of complex floating point numbers.
+In this section the term floating point type means any of these four
+types. The floating point types immplement the basic elementary functions.
+These include (where $ means
+<a href="nummachinefloats.xhtml">DoubleFloat</a>,
+<a href="numfloat.xhtml">Float</a>,
+<a href="dbcomplexfloat.xhtml">Complex Float</a>,
+<a href="dbcomplexdoublefloat.xhtml">Complex DoubleFloat</a>):<br/>
+<a href="dbopexp.xhtml">exp</a>,
+<a href="dboplog.xhtml">log</a>: $ -> $<br/>
+<a href="dbopsin.xhtml">sin</a>,
+<a href="dbopcos.xhtml">cos</a>,
+<a href="dboptan.xhtml">tan</a>,
+<a href="dbopcot.xhtml">cot</a>,
+<a href="dbopsec.xhtml">sec</a>,
+<a href="dbopcsc.xhtml">csc</a>: $ -> $<br/>
+<a href="dbopasin.xhtml">asin</a>,
+<a href="dbopacos.xhtml">acos</a>,
+<a href="dbopatan.xhtml">atan</a>,
+<a href="dbopacot.xhtml">acot</a>,
+<a href="dbopasec.xhtml">asec</a>,
+<a href="dbopacsc.xhtml">acsc</a>: $ -> $<br/>
+<a href="dbopsinh.xhtml">sinh</a>,
+<a href="dbopcosh.xhtml">cosh</a>,
+<a href="dboptanh.xhtml">tanh</a>,
+<a href="dbopcoth.xhtml">coth</a>,
+<a href="dbopsech.xhtml">sech</a>,
+<a href="dbopcsch.xhtml">csch</a>: $ -> $<br/>
+<a href="dbopasinh.xhtml">asinh</a>,
+<a href="dbopacosh.xhtml">acosh</a>,
+<a href="dbopatanh.xhtml">atanh</a>,
+<a href="dbopacoth.xhtml">acoth</a>,
+<a href="dbopasech.xhtml">asech</a>,
+<a href="dbopacsch.xhtml">acsch</a>: $ -> $<br/>
+<a href="dboppi.xhtml">pi</a>: () -> $<br/>
+<a href="dbopsqrt.xhtml">sqrt</a>: $ -> $<br/>
+<a href="dbopnthroot.xhtml">nthRoot</a>: ($,Integer) -> $<br/>
+<a href="dbopstarstar.xhtml">**</a>: ($,Fraction Integer) -> $<br/>
+<a href="dbopstarstar.xhtml">**</a>: ($,$) -> $<br/>
+The handling of roots depends on whether the floating point type is
+real or complex: for the real floating point types, 
+<a href="nummachinefloats.xhtml">DoubleFloat</a> and
+<a href="numfloat.xhtml">Float</a>, if a real root exists the one with 
+the same sign as the radicand is returned; for the complex floating
+point types, the principal value is returned. Also, for real floating
+point types the inverse functions produce errors if the results are not
+real. This includes cases such as asin(1.2), log(-3.2), sqrt(-1,1).
+The default floating point type is <a href="numfloat.xhtml">Float</a>
+or <a href="dbcomplexfloat.xhtml">Complex Float</a>, just use normal
+decimal notation.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="exp(3.1)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="exp(3.1+4.5*%i)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+To evaluate functions using 
+<a href="nummachinefloats.xhtml">DoubleFloat</a> or 
+<a href="dbcomplexdoublefloat.xhtml">Complex DoubleFloat</a>, a 
+declaration or conversion is required.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="(r:DFLOAT:=3.1; t:DFLOAT:=4.5; exp(r+t*%i))" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="exp(3.1::DFLOAT+4.5::DFLOAT*%i)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+A number of special functions are provided by the package
+<a href="db.xhtml?DoubleFloatSpecialFunctions">DoubleFloatSpecialFunctions</a>
+for the machine precision floating point types. The special functions
+provided are listed below, where F stands for the types
+<a href="numfloat.xhtml">Float</a>
+or <a href="dbcomplexfloat.xhtml">Complex Float</a>. The real versions
+of the functions yield an error if the result is not real.
+<ul>
+ <li> 
+  <a href="dbopgamma.xhtml">Gamma</a>: F -> F<br/>
+  Gamma(z) is the Euler gamma
+  function, Gamma(Z), defined by<br/>
+  Gamma(z) = integrate(t^(z-1)*exp(-t),t=0..%infinity)
+ </li>
+ <li>
+  <a href="dbopbeta.xhtml">Beta</a>: F -> F<br/>
+  Beta(u,v) is the Euler Beta
+  function B(u,v), defined by <br/>
+  Beta(u,v)=integrate(t^(u-1)*(1-t)^(b-1),t=0..1)<br/>
+  This is related to Gamma(z) by<br/>
+  Beta(u,v)=Gamma(u)*Gamma(v)/Gamma(u+v)
+ </li>
+ <li>
+  <a href="dboploggamma.xhtml">logGamma</a>: F -> F<br/>
+  logGamma(z) is the natural logarithm of Gamma(z). This can often be
+  computed even if Gamma(z) cannot.
+ </li>
+ <li>
+  <a href="dbopdigamma.xhtml">digamma</a>: F -> F<br/>
+  digamma(z), also called psi(z), is the function psi(z), defined by<br/>
+  psi(z)=Gamma'(z)/Gamma(z)
+ </li>
+ <li>
+ <a href="dboppolygamma.xhtml">polygamma</a>: (NonNegativeInteger, F) -> F<br/>
+  polygamma(n,z) is the n-th derivative of digamma(z)
+ </li>
+ <li>
+  <a href="dbopbesselj.xhtml">besselJ</a>: (F, F) -> F<br/>
+  besselJ(v,z) is the Bessel function of the first kind, J(v,z). This 
+  function satisfies the differential equation<br/>
+  z^(2w)''(z)+zw'(z)+(z^2-v^2)w(z)=0
+ </li>
+ <li>
+  <a href="dbopbessely.xhtml">besselY</a>: (F, F) -> F<br/>
+  besselY(v,z) is the Bessel function of the second kind, Y(v,z). This
+  function satisfies the same differential equation as 
+  <a href="dbopbesselj.xhtml">besselJ</a>. The implementation simply
+  uses the relation<br/>
+  Y(v,z)=(J(v,z)cos(v*%pi)-J(-v,z))/sin(v*%pi)
+ </li>
+ <li>
+  <a href="dbopbesseli.xhtml">besselI</a>: (F, F) -> F<br/>
+  besselI(v,z) if the modifed Bessel function of the first kind, I(v,z).
+  This function satisfies the differential equation<br/>
+  z^2w''(z)+zw'(z)-(z^2+v^2)w(z)=0
+ </li>
+ <li>
+  <a href="dbopbesselk.xhtml">besselK</a>: (F, F) -> F<br/>
+  besselK(v,z) is the modifed Bessel function of the second kind, K(v,z).
+  This function satisfies the same differential equation as
+  <a href="dbopbesseli.xhtml">besselI</a>. The implementation simply uses
+  the relation<br/>
+  K(v,z)=%pi*(I(v,z)-I(-v,z))/(2sin(v*%pi))
+ </li>
+ <li>
+  <a href="dbopairyai.xhtml">airyAi</a>: F -> F<br/>
+  airyAi(z) is the Airy function Ai(z). This function satisfies the
+  differential equation<br/>
+  w''(z)-zw(z)=0<br/>
+  The implementation simply uses the relation<br/>
+  Ai(-z)=1/3*sqrt(z)*(J(-1/3,2/3*z^(3/2))+J(1/3,2/3*z^(3/2)))
+ </li>
+ <li>
+  <a href="dbopairybi.xhtml">airyBi</a>: F -> F<br/>
+  airyBi(z) is the Airy function Bi(z). This function satisfies the
+  same differential equation as airyAi.
+  The implementation simply uses the relation<br/>
+  Bi(-z)=1/3*sqrt(3*z)*(J(-1/3,2/3*z^(3/2))-J(1/3,2/3*z^(3/2)))
+ </li>
+ <li>
+  <a href="dbophypergeometric0f1.xhtml">hypergeometric0F1</a>: (F, F) -> F<br/>
+  hypergeometric0F1(c,z) is the hypergeometric function 0F1(;c;z). The above
+  special functions are defined only for small floating point types. If you
+  give <a href="numfloat.xhtml">Float</a> arguments, they are converted to
+  <a href="nummachinefloats.xhtml">DoubleFloat</a> by Axiom.
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+    value="Gamma(0.5)^2" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+    value="(a:=2.1; b:=1.1; besselI(a+%i*b,b*a+1))" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{numoctonions.xhtml}
+<<numoctonions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Octonions</div>
+  <hr/>
+The Octonions, also called the Cayley-Dixon algebra, defined over a
+commutative ring are an eight-dimensional non-associative algebra. Their
+construction from quaternions is similar to the construction of quaternions
+from complex numbers (see <a href="numquaternions.xhtml">Quaternion</a>).
+As <a href="db.xhtml?Octonion">Octonion</a> creates an eight-dimensional
+algebra, you have to give eight components to construct an octonion.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="oci1:=octon(1,2,3,4,5,6,7,8)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="oci2:=octon(7,2,3,-4,5,6,-7,0)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Or you can use two quaternions to create an octonion.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="oci3:=octon(quatern(-7,-12,3,-10),quatern(5,6,9,0))" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+You can easily demonstrate the non-associativity of multiplication.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4']);"
+    value="(oci1*oci2)*oci3-oci1*(oci2*oci3)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+As with the quaternions, we have a real part, the imaginary parts i, j,
+k, and four additional imaginary parts E, I, J, and K. These parts 
+correspond to the canonical basis (1,i,j,k,E,I,J,K). For each basis
+element there is a component operation to extract the coefficient of 
+the basis element for a given octonion.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+value="[real oci1, imagi oci1, imagj oci1, imagk oci1, 
+imagE oci1, imagI oci1, imagJ oci1, imagK oci1]"/>
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+A basis with respect to the quaternions is given by (1,E). However, you 
+might ask, what then are the commuting rules? To answer this, we create
+some generic elements. We do this in Axim by simply changing the ground
+ring from
+<a href="db.xhtml?Integer">Integer</a> to
+<a href="dbpolynomialinteger.xhtml">Polynomial Integer</a>.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+    value="q:Quaternion Polynomial Integer:=quatern(q1,qi,qj,qk)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" onclick="makeRequest('p7');"
+    value="E:Octonion Polynomial Integer:=octon(0,0,0,0,1,0,0,0)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Note that quaternions are automatically converted to octonions in the
+obvious way.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p6','p7','p8']);"
+    value="q*E" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p6','p7','p9']);"
+    value="E*q" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p6','p10']);"
+    value="q*1$(Octonion Polynomial Integer)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p6','p11']);"
+    value="1$(Octonion Polynomial Integer)*q" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+Finally, we check that the <a href="dbopnorm.xhtml">norm</a>, defined as 
+the sum of the squares of the coefficients, is a multiplicative map.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" onclick="makeRequest('p12');"
+    value="o:Octonion Polynomial Integer:=octon(o1,oi,oj,ok,oE,oI,oJ,oK)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p12','p13']);"
+    value="norm o" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" onclick="makeRequest('p14');"
+    value="p:Octonion Polynomial Integer:=octon(p1,pi,pj,pk,pE,pI,pJ,pK)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+Since the result is 0, the norm is multiplicative
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p12','p14','p15']);"
+    value="norm(o*p)-norm(o)*norm(p)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="showcall('p16');"
+   value=")show Octonion"/>
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+to display the list of operations defined by 
+<a href="db.xhtml?Octonion">Octonion</a>.
+<<page foot>>
+@
+
+\subsection{numotherbases.xhtml}
+<<numotherbases.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Expansions in other Bases</div>
+  <hr/>
+It is possible to expand numbers in general bases. Here we expand
+111 in base 5. This means 
+<pre>
+    2   1   0      2    1  -
+  10 +10 +10  = 4*5 +2*5 +5
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="111::RadixExpansion(5)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You can expand fractions to form repeating expansions.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="(5/24)::RadixExpansion(2)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="(5/24)::RadixExpansion(3)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="(5/24)::RadixExpansion(8)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+    value="(5/24)::RadixExpansion(10)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+For bases from 11 to 36 the letters A through Z are used.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+    value="(5/24)::RadixExpansion(12)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" onclick="makeRequest('p7');"
+    value="(5/24)::RadixExpansion(16)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" onclick="makeRequest('p8');"
+    value="(5/24)::RadixExpansion(36)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+For bases greater than 36, the ragits are separated by blanks.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" onclick="makeRequest('p9');"
+    value="(5/24)::RadixExpansion(38)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+The <a href="db.xhtml?RadixExpansion">RadixExpansion</a> type provides 
+operations to obtain the individual ragits. Here is a rational number
+in base 8.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" onclick="makeRequest('p10');"
+    value="a:=(76543/210)::RadixExpansion(8)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopwholeragits.xhtml">wholeRagits</a> returns
+a list of the ragits for the integral part of the number.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p10','p11']);"
+    value="w:=wholeRagits a" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+The operations <a href="dbopprefixragits.xhtml">prefixRagits</a> and 
+<a href="dbopcycleragits.xhtml">cycleRagits</a> returns lists of the
+initial and repeating ragist in the fractional part of the number.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut"
+    onclick="handleFree(['p10','p12']);"
+    value="f0:=prefixRagits a" />
+  <div id="ansp12"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p13" class="subbut"
+    onclick="handleFree(['p10','p13']);"
+    value="f1:=cycleRagits a" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+You can construct any radix expansion by giving the whole, prefix, and 
+cycle parts. The declaration is necessary to let Axiom know the base 
+of the ragits.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut"
+    onclick="handleFree(['p11','p12','p13','p14']);"
+    value="u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+If there is no repeating part, then the list [0] should be used.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" onclick="makeRequest('p15');"
+    value="v:RadixExpansion(12):=fractRadix([1,2,3,11],[0])" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+If you are not interested in the repeating nature of the expansion,
+an infinite stream of ragits can be obtained using
+<a href="dbopfractragits.xhtml">fractRagits</a>
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut"
+     onclick="handleFree(['p14','p16']);"
+    value="fractRagits(u)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Of course, it's possible to recover the fraction representation:n
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p10','p17']);"
+    value="a::Fraction(Integer)" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="showcall('p18');"
+   value=")show RadixExpansion"/>
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by
+<a href="db.xhtml"?RadixExpansion>RadixExpansion</a>. More examples of
+expansions are available in
+<a href="numrepeatingdecimals.xhtml">DecimalExpansion</a>,
+<a href="numrepeatingbinaryexpansions.xhtml">BinaryExpansion</a>, and
+<a href="numrepeatinghexexpansions.xhtml">HexadecimalExpansion</a>
+<<page foot>>
+@
+
+\subsection{numpartialfractions.xhtml}
+<<numpartialfractions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Partial Fractions</div>
+  <hr/>
+A partial fraction is a decomposition of a quotient into a sum of quotients
+where the denominators of the summand are powers of primes. (Most people 
+first encounter partial fractions when they are learning integral calculus.
+For a technical discussion of partial fractions see, for example, Lang's
+Algebra.) For example, the rational number 1/6 is decomposed into 1/2-1/3.
+You can compute partial fractions of quotients of objects from domains
+belonging to the category 
+<a href="db.xhtml?EuclideanDomain">EuclideanDomain</a>. For example,
+<a href="db.xhtml?Integer">Integer</a>,
+<a href="dbcomplexinteger.xhtml">Complex Integer</a>, and
+<a href="db.xhtml?UnivariatePolynomial">
+UnivariatePolynomial(x,Fraction Integer)</a>
+all belong to 
+<a href="db.xhtml?EuclideanDomain">EuclideanDomain</a>. 
+In the examples following, we demonstrate how to decompose quotients of
+each of these kinds of objects into partial fractions. 
+
+It is necessary that we know how to factor the denominator when we want to 
+compute a partial fraction. Although the interpreter can often do this
+automatically, it may be necessary for you to include a call to 
+<a href="dbopfactor.xhtml">factor</a>. In these examples, it is not
+necessary to factor the denominators explicitly. The main operation for
+computing partial fractions is called 
+<a href="dboppartialfraction.xhtml">partialFraction</a> and we use this
+to compute a decomposition of 1/10!. The first argument top
+<a href="dboppartialfraction.xhtml">partialFraction</a> is the numerator
+of the quotient and the second argument is the factored denominator.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="partialFraction(1,factorial 10)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Since the denominators are powers of primes, it may be possible to expand
+the numerators further with respect to those primes. Use the operation
+<a href="dboppadicfraction.xhtml">padicFraction</a> to do this.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="f:=padicFraction(%)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopcompactfraction.xhtml">compactFraction</a>
+returns an expanded fraction into the usual form. The compacted version
+is used internally for computational efficiency.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p2','p3']);"
+    value="compactFraction(f)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+You can add, subtract, multiply, and divide partial fractions. In addition,
+you can extract the parts of the decomposition.
+<a href="dbopnumberoffractionalterms.xhtml">numberOfFractionalTerms</a>
+computes the number of terms in the fractional part. This does not include
+the whole part of the fraction, which you get by calling
+<a href="dbopwholepart.xhtml">wholePart</a>. In this example, the whole part
+is 0.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p2','p4']);"
+    value="numberOfFractionalTerms(f)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+The operation 
+<a href="dbopnthfractionalterm.xhtml">nthFractionalTerm</a>
+returns the individual terms in the decomposition. Notice that the object
+returned is a partial fraction itself. 
+<a href="dbopfirstnumer.xhtml">firstNumer</a> and
+<a href="dbopfirstdenom.xhtml">firstDenom</a> extract the numerator and
+denominator of the first term of the fraction.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p2','p5']);"
+    value="nthFractionalTerm(f,3)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Given two gaussian integers (see <a href="db.xhtml?Complex">Complex</a>),
+you can decompose their quotient into a partial fraction.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+    value="g:=partialFraction(1,-13+14*%i)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+To convert back to a quotient, simply use the conversion
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value="g::Fraction Complex Integer" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+To conclude this section, we compute the decomposition of
+<pre>
+                   1
+     -------------------------------
+                   2       3       4
+     (x + 1)(x + 2) (a + 3) (x + 4)
+</pre>
+The polynomials in this object have type
+<a href="db.xhtml?UnivariatePolynomial">
+UnivariatePolynomial(x,Fraction Integer)</a>.
+We use the <a href="dbopprimefactor.xhtml">primeFactor</a> operation
+(see <a href="db.xhtml?Factored">Factored</a>) to create the denominator
+in factored form directly.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" onclick="makeRequest('p8');"
+   value="u:FR UP(x,FRAC INT):=reduce(*,[primeFactor(x+i,i) for i in 1..4])"/>
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+These are the compact and expanded partial fractions for the quotient.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p8','p9']);"
+    value="pu:=partialFraction(1,u)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p8','p9','p10']);"
+    value="padicFraction pu" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+Also see
+<a href="db.xhtml?FullPartialFractionExpansion">
+FullPartialFractionExpansion</a> for examples of factor-free conversion of
+quotients to full partial fractions.
+
+Issue the system
+command
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="showcall('p11');"
+   value=")show PartialFraction"/>
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?PartialFraction">PartialFraction</a>.
+
+<<page foot>>
+@
+
+\subsection{numproblems.xhtml}
+<<numproblems.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      numproblems not implemented
+<<page foot>>
+@
+
+\subsection{numquaternions.xhtml}
+<<numquaternions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Quaternions</div>
+  <hr/>
+The domain contructor <a href="db.xhtml?Quaternion">Quaternion</a>
+implements quaternions over commutative rings. 
+
+The basic operation for creating quaternions is 
+<a href="dbopquatern.xhtml">quatern</a>. This is a quaternion
+over the rational numbers.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="q:=quatern(2/11,-8,3/4,1)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The four arguments are the real part, the i imaginary part, 
+the j imaginary part, and the k imaginary part, respectively.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="[real q, imagI q, imagJ q, imagK q]" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Because q is over the rationals (and nonzero), you can invert it.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="inv q" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The usual arithmetic (ring) operations are available.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="q^6" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut"  onclick="makeRequest('p5');"
+    value="r:=quatern(-2,3,23/9,-89)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p5','p6']);"
+    value="q+r" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+In general, multiplication is not commutative.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut"
+    onclick="handleFree(['p1','p5','p7']);"
+    value="q*r-r*q" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+There are no predefined constants for the imaginary i, j, and k parts, 
+but you can easily define them
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" onclick="makeRequest('p8');"
+    value="i:=quatern(0,1,0,0)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" onclick="makeRequest('p9');"
+    value="j:=quatern(0,0,1,0)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" onclick="makeRequest('p10');"
+    value="k:=quatern(0,0,0,1)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+These satisfy the normal identities.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p8','p9','p10','p11']);"
+    value="[i*i,j*j,k*k,i*j,j*k,k*i,q*i]" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+The norm is the quaternion times its conjugate.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p12']);"
+    value="norm q" />
+  <div id="ansp12"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p1','p13']);"
+    value="c:=conjugate q" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p1','p13','p14']);"
+    value="q*c" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+For information on
+related topics, see <a href="db.xhtml?Complex">Complex</a> and
+<a href="db.xhtml?Octonion">Octonion</a>. You can also issue the
+system command
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="showcall('p15');"
+   value=")show Quaternion"/>
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?Quaternion">Quaternion</a>.
+<<page foot>>
+@
+
+\subsection{numquotientfields.xhtml}
+<<numquotientfields.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      numquotientfields not implemented
+<<page foot>>
+@
+
+\subsection{numrationalnumbers.xhtml}
+<<numrationalnumbers.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      numrationalnumbers not implemented
+<<page foot>>
+@
+
+\subsection{numrepeatingbinaryexpansions.xhtml}
+<<numrepeatingbinaryexpansions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Repeating Binary Expansions</div>
+  <hr/>
+All rational numbers have repeating binary expansions. Operations to 
+access the individual bits of a binary expansion can be obtained by
+converting the value to 
+<a href="db.xhtml?RadixExpansion">RadixExpansion(2)</a>. More examples
+of expansions are available in
+<a href="numrepeatingdecimals.xhtml">DecimalExpansion</a>,
+<a href="numrepeatinghexexpansions.xhtml">HexadecimalExpansion</a>, and
+<a href="db.xhtml?RadixExpansion">RadixExpansion</a>. 
+
+The expansion (of type 
+<a href="db.xhtml?BinaryExpansion">BinaryExpansion</a>)
+of a rational number is returned by the 
+<a href="dbopbinary.xhtml">binary</a> operation.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="r:=binary(22/7)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Arithmetic is exact.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="r+binary(6/7)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The period of the expansion can be short or long...
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="[binary(1/i) for i in 102..106]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or very long
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="binary(1/1007)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+These numbers are bona fide algebraic objects.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+    value="p:=binary(1/4)*x^2+binary(2/3)*x+binary(4/9)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="q:=D(p,x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut"
+    onclick="handleFree(['p5','p6','p7']);"
+    value="g:=gcd(p,q)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{numrepeatingdecimals.xhtml}
+<<numrepeatingdecimals.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Repeating Decimals</div>
+  <hr/>
+All rationals have repeating decimal expansions. Operations to access
+the individual digits of a decimal expansion can be obtained by converting
+the value to <a href="db.xhtml?RadixExpansion">RadixExpansion(10)</a>.
+
+The operation <a href="dbopdecimal.xhtml">decimal</a> is used to create
+this expansion of type
+<a href="db.xhtml?DecimalExpansion">DecimalExpansion</a>.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="r:=decimal(22/7)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Arithmetic is exact.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="r+decimal(6/7)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The period of the expansion can be short or long...
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="[decimal(1/i) for i in 350..354]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or very long
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="decimal(1/2049)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+These numbers are bona fide algebraic objects.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+    value="p:=decimal(1/4)*x^2+decimal(2/3)*x+decimal(4/9)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="q:=differentiate(p,x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut"
+    onclick="handleFree(['p5','p6','p7']);"
+    value="g:=gcd(p,q)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+More examples of expansions are available in
+<a href="numrepeatingbinaryexpansions.xhtml">BinaryExpansion</a>,
+<a href="numrepeatinghexexpansions.xhtml">HexadecimalExpansion</a>, and
+<a href="db.xhtml?RadixExpansion">RadixExpansion</a>. Issue the system
+command
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="showcall('p8');"
+   value=")show RadixExpansion"/>
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by
+<a href="db.xhtml?RadixExpansion">RadixExpansion</a>.
+<<page foot>>
+@
+
+\subsection{numrepeatinghexexpansions.xhtml}
+<<numrepeatinghexexpansions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Repeating Hexadecimal Expansions</div>
+  <hr/>
+All rationals have repeating hexadecimals expansions. The operation
+<a href="dbophex.xhtml">hex</a> returns these expansions of type
+<a href="db.xhtml?HexadecimalExpansion">HexadecimalExpansion</a>.
+Operations to access the individual numerals of a hexadecimal expansion
+can be obtained by converting the value to 
+<a href="db.xhtml?RadixExpansion">RadixExpansion(16)</a>. More examples of
+expansions are available in 
+<a href="numrepeatingdecimals.xhtml">DecimalExpansion</a>,
+<a href="numrepeatingbinaryexpansions.xhtml">BinaryExpansion</a>, and 
+<a href="db.xhtml?RadixExpansion">RadixExpansion</a>.
+
+This is a hexadecimal expansion of a rational number.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="r:=hex(22/7)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Arithmetic is exact.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="r+hex(6/7)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The period of the expansion can be short or long...
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="[hex(1/i) for i in 350..354]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or very long.
+.<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="hex(1/1007)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+These numbers are bona fide algebraic objects.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+    value="p:=hex(1/4)*x^2+hex(2/3)*x+hex(4/9)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="q:=D(p,x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut"
+    onclick="handleFree(['p5','p6','p7']);"
+    value="g:=gcd(p,q)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="showcall('p8');"
+   value=")show HexadecimalExpansion"/>
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by
+<a href="db.xhtml?HexadecimalExpansion">HexadecimalExpansion</a>.
+
+<<page foot>>
+@
+
+\subsection{numromannumerals.xhtml}
+<<numromannumerals.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Roman Numerals</div>
+  <hr/>
+The Roman numeral package was added to Axiom in MCMLXXXVI for use in
+denoting higher order derivatives.
+
+For example, let f be a symbolic operator.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="f:=operator 'f" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+This is the seventh derivative of f with respect to x
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="D(f x,x,7)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can have integers printed as Roman numerals by declaring variables
+to be of type 
+<a href="db.xhtml?RomanNumeral">RomanNumeral</a> 
+(abbreviation <a href="db.xhtml?RomanNumeral">ROMAN</a>).
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="a:=roman(1978-1965)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+This package now has a small but devoted group of followers that claim
+this domain has shown its efficacy in many other contexts. They claim
+that Roman numerals are every bit as useful as ordinary integers.
+In a sense, they are correct, because Roman numerals form a ring and
+you can therefore construct polynomials with Roman numeral 
+coefficients, matrices over Roman numerals,etc..
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="x:UTS(ROMAN,'x,0):=x" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Was Fibonacci Italian or ROMAN?
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="recip(1-x-x^2)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can also construct fractions with Roman numeral numerators and 
+denominators, as this matrix Hilberticus illustrates.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+    value="m:MATRIX FRAC ROMAN" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value="m:=matrix [ [1/(i+j) for i in 1..3] for j in 1..3]" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Note that the inverse of the matrix has integral 
+<a href="db.xhtml?RomanNumeral">ROMAN</a> entries.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p6','p7','p8']);"
+    value="inverse m" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Unfortunately, the spoil-sports say that the fun stops when the
+numbers get big -- mostly because the Romans didn't establish
+conventions about representing very large numbers.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" onclick="makeRequest('p9');"
+    value="y:=factorial 10" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+You work it out!
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p9','p10']);"
+    value="roman y" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="showcall('p11');"
+   value=")show RomanNumeral"/>
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?RomanNumeral">RomanNumeral</a>).
+<<page foot>>
+@
+
+%%O
+\subsection{ocwmit18085.xhtml}
+<<ocwmit18085.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+18.085 Mathematical Methods for Engineers I Course Notes
+<hr/>
+These are course notes based on the 
+<a href="http://ocw.mit.edu/OcwWeb/Mathematics/18-085Fall-2005/VideoLectures/index.htm">
+ M.I.T. Open Courseware lectures by Gilbert Strang. 
+</a> 
+<ul>
+ <li>
+  <a href="ocwmit18085lecture1.xhtml">
+   Positive Definite Matrices K=A'CA
+  </a>
+ </li>
+ <li>
+  <a href="ocwmit18085lecture2.xhtml">
+   One-dimensional Applications: A = Difference Matrix
+  </a>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{ocwmit18085lecture1.xhtml}
+<<ocwmit18085lecture1.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+ Positive Definite Matrices K=A'CA
+<hr/>
+In applied mathematics we have 2 basic tasks:
+<ul>
+<li>Find the equations</li>
+<li>Solve the equations</li>
+</ul>
+<h4>Positive Definite Matrices</h4>
+Certain matrices occur frequently in applied math. These three
+matrices (K,T,and M) are canonical examples.
+We have 3 3x3 matrices, 
+<pre>
+K:Matrix(Integer):=[[2,-1,0],[-1,2,-1],[0,-1,2]]
+
+        + 2   - 1   0 +
+        |             |
+        |- 1   2   - 1|
+        |             |
+        + 0   - 1   2 +
+               Type: Matrix Integer
+T:Matrix(Integer):=[[1,-1,0],[-1,2,-1],[0,-1,2]]
+
+        + 1   - 1   0 +
+        |             |
+        |- 1   2   - 1|
+        |             |
+        + 0   - 1   2 +
+               Type: Matrix Integer
+B:Matrix(Integer):=[[1,-1,0],[-1,2,-1],[0,-1,1]]
+
+        + 1   - 1   0 +
+        |             |
+        |- 1   2   - 1|
+        |             |
+        + 0   - 1   1 +
+               Type: Matrix Integer
+</pre>
+These matrices are similar and can be generalized to square matrices
+of order N, with n x n elements. All of these matrices have the same
+element along the diagonal. T (aka Top) differs from K in the first row.
+B (aka Both) differs from K in the first and last row. These represent
+different boundary conditions in the problem.
+
+We can create K(n), T(n) and B(n) with the following commands:
+<pre>
+k(n) == 
+ M := diagonalMatrix([2 for i in 1..n]) 
+ for i in 1..n-1 repeat M(i,i+1):=-1 
+ for i in 1..n-1 repeat M(i+1,i):=-1 
+ M::SquareMatrix(n,Fraction(Integer))
+</pre>
+<pre>
+t(n) == 
+ M:=k(n)
+ N:=M::Matrix(Fraction(Integer)) 
+ qsetelt!(N,1,1,1) 
+ N::SquareMatrix(n,Fraction(Integer))
+</pre>
+<pre>
+b(n) == 
+ M:=k(n)
+ N:=M::Matrix(Fraction(Integer)) 
+ qsetelt!(N,1,1,1) 
+ qsetelt!(N,n,n,1)
+ N::SquareMatrix(n,Fraction(Integer))
+</pre>
+
+K:=k(n) has a few key properties:
+<ul>
+<li> K is symmetric, that is K=K^T</li>
+<li> K might be nonsingular, that is, it is invertible</li>
+<li> K has a non-zero determinant</li>
+<li> K is banded (main diagonal and neighbors)</li>
+<li> K is tri-diagonal (main diagonal and nearest neighbors</li>
+<li> K is extremely sparse</li>
+<li> K has constant diagonals, (shift invariant, time invariant)</li>
+<li> K is Toeplitz (constant diagonal, shows up in filters)</li>
+<li> K is good for Fourier analysis</li>
+</ul>
+
+<h5>The inverse of T</h5>
+If we look at the inverse of the T matrix we see:
+<pre>
+T^-1
+
+        +3  2  1+
+        |       |
+        |2  2  1|
+        |       |
+        +1  1  1+
+               Type: Matrix Fraction Integer
+</pre>
+Notice that these are all integers because the determinant of
+this matrix is 1
+<pre>
+determinant T
+
+     1
+               Type: Fraction Integer
+
+</pre>
+We can check that this matrix is the inverse of T. 
+
+When computing the inverse the row pattern [-1 2 -1] is a 
+``second difference''. The first column of the inverse matrix
+is [3 2 1] which is linear. When we take the second difference
+of a linear object we should get 0. Thus,
+<pre>
+[[-1,2,-1]]::MATRIX(INT)*[[3],[2],[1]]
+
+     [0]
+               Type: Matrix Integer
+
+</pre>
+The third column of the T matrix is linear and constant. If we
+take the second difference of that we also find it is zero:
+<pre>
+ [[-1,2,-1]]::MATRIX(INT)*[[1],[1],[1]]
+
+    [0]
+               Type: Matrix Integer
+</pre>
+and the diagonal element of the unit matrix must be one. So
+the second difference of the second column is:
+<pre>
+ [[-1,2,-1]]::MATRIX(INT)*[[2],[2],[1]]
+
+    [1]
+               Type: Matrix Integer
+</pre>
+So these simple checks show that we're getting the correct 
+row and column values for the identity matrix by multiplying
+T times its inverse.
+
+<br/>
+<h5>The inverse of B</h5>
+If we look for the inverse of the B matrix we can observe
+that the rows sum to zero which implies that it is not
+invertible. Thus it is singular.
+
+K and T are positive definite. B is only positive semi-definite.
+
+If we can find a vector that it takes to zero, that is if we can
+solve for x,y,z in:
+<pre>
+        + 1   - 1   0 + + x +    + 0 +
+        |             | |   |    |   |
+        |- 1   2   - 1| | y | =  | 0 |
+        |             | |   |    |   |
+        + 0   - 1   1 + + z +    + 0 +
+
+</pre>
+The constant vector [1 1 1] solves this equation. When
+the rows sum to zero we are adding each row by a constant
+and thus we add each row times the constant one and we
+get zeros. If the matrix takes some vector to zero it
+cannot have an inverse since if
+<pre>
+   B x = 0
+</pre>
+and x is not zero. If B had an inverse only x=0 would
+solve the equation. Since x=1 solves the equation B has
+no inverse. The vector x is in the nullspace of B. In
+fact any constant vector, e.g. [3 3 3] is in the nullspace.
+Thus the nullspace of B is cx for any constant c.
+
+When doing matrix multiplication one way to think about the
+work is to consider the problem by columns. Thus in the
+multiplication
+<pre>
+        + 1   - 1   0 + + x +    + 0 +
+        |             | |   |    |   |
+        |- 1   2   - 1| | y | =  | 0 |
+        |             | |   |    |   |
+        + 0   - 1   1 + + z +    + 0 +
+
+</pre>
+we can think about this as 
+<pre>
+x*(first column) + y*(second column) + z*(third column).
+</pre>
+and for the constant vector [1 1 1] this means that we
+just need to sum the columns.
+
+Alternatively this can be computed by thinking of the 
+multiplication as 
+<pre>
+ (first row)*(vector)
+ (second row)*(vector)
+ (third row)*(vector)
+</pre>
+
+<br/>
+<h5>The inverse of K</h5>
+Now we consider the K matrix we see the inverse
+<pre>
+K
+
+         + 2   - 1   0 +
+         |             |
+         |- 1   2   - 1|
+         |             |
+         + 0   - 1   2 +
+               Type: SquareMatrix(3,Fraction Integer)
+kinv:=K^-1
+
+         +3  1  1+
+         |-  -  -|
+         |4  2  4|
+         |       |
+         |1     1|
+         |-  1  -|
+         |2     2|
+         |       |
+         |1  1  3|
+         |-  -  -|
+         +4  2  4+
+               Type: SquareMatrix(3,Fraction Integer)
+</pre>
+We can take the determinant of k 
+<pre>
+determinant K
+
+    4
+               Type: Fraction Integer
+</pre>
+Thus there is a constant 1/4 which can be factored out
+<pre>
+4*kinv
+
+         +3  2  1+
+         |       |
+         |2  4  2|
+         |       |
+         +1  2  3+
+               Type: SquareMatrix(3,Fraction Integer)
+</pre>
+Notice that the inverse is a symmetric matrix but not tri-diagonal.
+The inverse is not a sparse matrix so much more computation would
+be involved when using the inverse.
+
+In order to solve the system
+<pre>
+ K u = f
+</pre>
+by elimination which implies multiplying and subtracting rows.
+<pre>
+       K    u  =  f    ==>   U     u  =    f
+</pre>                                        
+For the 2x2 case we see:
+<pre>
+                             +2  -1+        +  f1  +
+    +2  -1+  +x+   +f1+      |     |  +x+   |      |
+    |     |  | | = |  |  ==> |    3|  | | = |   1  |
+    +-1  2+  +y+   +f2+      |0   -|  +y+   |f2+-f1|
+                             +    2+        +   2  +
+
+
+</pre>
+By multiplying row1 by 1/2 and adding it to row2 we create an
+upper triangular matrix U. Since we chose K(1,1), the number 2
+is called the first pivot. K(2,2), the number 3/2, is called 
+the second pivot.
+
+For K 2x2 above is symmetric and invertible (since the pivots
+are all non-zero).
+
+For the K 3x3 case the pivots are 2, 3/2, and 4/3. (The next pivots
+would be 5/4, 6/5, etc. for larger matrices).
+
+For the T 3x3 case the pivots are 1, 1, and 1.
+
+For the B 3x3 case the third pivot would be zero.
+
+<hr/>
+<h5>Generalizing the matrix pivot operations</h5>
+For the 2x2 case we see contruct an elimination matrix E which we can use
+to pre-multipy by K to give us the upper triangular matrix U
+<pre>
+      E     K    =   U
+</pre>
+In detail we see
+<pre>
+
+    +1  0+            +2  -1+
+    |    |  +2  -1+   |     |
+    |1   |  |     | = |    3|
+    |-  1|  +-1  2+   |0   -|
+    +2   +            +    2+
+
+</pre>
+We wish to rewrite this as
+<pre>
+       K = L U 
+</pre>
+
+<hr/>
+<h5>The big 4 solve operations in Linear Algebra</h5>
+<ol>
+<li>Elimination</li>
+<li>Gram-Schmidt Orthoginalization</li>
+<li>Eigenvalues</li>
+<li>Singular Value Decomposition</li>
+</ol>
+Each of these operations is described by a factorization of K.
+Elimination is written 
+<pre>
+  K = L U
+</pre>
+where L is lower triangular and U is upper triangular.
+Thus we need a matrix L which when multiplied by U gives K.
+The required matrix is the inverse of the E matrix above since
+<pre>
+
+1)      E K =     U
+
+     -1        -1
+2)  E   E K = E   U
+
+               -1
+3)      I K = E   U
+
+               -1
+4)  but   L = E
+
+5)  so    K = L U
+</pre>
+Given the matrix operations above we had
+<pre>
+      E       K   =   U
+
+    +1  0+            +2  -1+
+    |    |  +2  -1+   |     |
+    |1   |  |     | = |    3|
+    |-  1|  +-1  2+   |0   -|
+    +2   +            +    2+
+
+</pre>
+and the inverse of E is the same matrix with a minus sign in
+the second row, thus:
+<pre>
+        +  1  0+ 
+   -1   |      | 
+  E   = |  1   | = L 
+        |- -  1| 
+        +  2   + 
+
+</pre>
+
+<hr/>
+<h5>Making the matrices symmetric</h5>
+We would like to preserve the symmetry property which we can
+do with a further decomposition of LU as follows:
+<pre>
+      L        U     =     L        D       U'
+
+  +  1  0+  +2  -1+    +  1  0+  +2  0+  +1   1+
+  |      |  |     |    |      |  |    |  |  - -|
+  |  1   |  |    3|  = |  1   |  |   3|  |    2|
+  |- -  1|  |0   -|    |- -  1|  |0  -|  |     |
+  +  2   +  +    2+    +  2   +  +   2+  +0   1+
+
+</pre>
+So now we have 3 matrices; L is the lower triangular,
+D is symmetric and contains the pivots, and U' is upper triangular and
+is the transpose of the lower. So the real form we have is
+<pre>
+           T
+    L  D  L
+</pre>
+This result will always be symmetric. We can check this by taking
+its transpose. If we get the same matrix we must have a symmetric
+matrix. So the transpose of
+<pre>
+            T  T     TT  T   T        T T        T
+  (  L  D  L  )   = L   D   L   =  L D L  = L D L
+</pre>
+<hr/>
+<h5>Positive Definite Matrices</h5>
+There are several ways to recognize a positive definite matrix.
+First, it must be symmetric. The "positive" aspect comes from
+the pivots, all of which must be positive. Note that T is also
+positive definite. B is positive semi-definite because one of
+the pivots is zero. So
+<pre>
+   positive definite      == all pivots >  0
+   positive semi-definite == all pivots >= 0
+</pre>
+When all the pivots are positive then all the eigenvalues are positive.
+
+So a positive definite matrix K and any non-zero vector X
+<pre>
+    T
+   X  K X  > 0
+</pre>
+X transpose is just a row and X is just a column.
+
+<<page foot>>
+@
+
+\subsection{ocwmit18085lecture2.xhtml}
+<<ocwmit18085lecture2.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+ One-dimensional Applications: A = Difference Matrix
+<hr/>
+<h5>Difference Matrices</h5>
+<hr/>
+<h5>Second Differences</h5>
+<hr/>
+<h5>Stiffness Matrix</h5>
+<hr/>
+<h5>Boundary Conditions</h5>
+<<page foot>>
+@
+
+\subsection{operations.xhtml}
+<<operations.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      operations not implemented
+<<page foot>>
+@
+
+
+%%P
+\subsection{pagelist.xhtml}
+<<pagelist.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      pagelist not implemented
+<<page foot>>
+@
+
+\subsection{pagematrix.xhtml}
+<<pagematrix.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      pagematrix not implemented
+<<page foot>>
+@
+
+\subsection{pageonedimensionalarray.xhtml}
+<<pageonedimensionalarray.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      pageonedimensionalarray not implemented
+<<page foot>>
+@
+
+\subsection{pageset.xhtml}
+<<pageset.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      pageset not implemented
+<<page foot>>
+@
+
+\subsection{pagetable.xhtml}
+<<pagetable.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      pagetable not implemented
+<<page foot>>
+@
+
+\subsection{pagepermanent.xhtml}
+<<pagepermanent.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      pagepermanent not implemented
+<<page foot>>
+@
+
+\subsection{pagesquarematrix.xhtml}
+<<pagesquarematrix.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      pagesquarematrix not implemented
+<<page foot>>
+@
+
+\subsection{pagetwodimensionalarray.xhtml}
+<<pagetwodimensionalarray.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">TwoDimensionalArray</div>
+  <hr/>
+The <a href="db.xhtml?TwoDimensionalArray">TwoDimensionalArray</a> is used for
+storing data in a two-dimensional data structure indexed by row and column.
+Such an array is a homogeneous data structure in that all the entries of the
+array must belong to the same Axiom domain (although see 
+<a href="axbook/section-2.6.xhtml">The Any Domain</a>). Each array has a fixed 
+number of rows and columns specified by the user and arrays are not 
+extensible. In Axiom, the indexing of two-dimensional arrays is one-based.
+This means that both the "first" row of an array and the "first" column of
+an array are given the index 1. Thus, the entry in the upper left corner
+of an array is in position (1,1).
+
+The operation <a href="dbopnew.xhtml">new</a> creates an array with a 
+specified number of rows and columns and fills the components of that array 
+with a specified entry. The arguments of this operation specify the number
+of rows, the number of columns, and the entry. This creates a five-by-four
+array of integers, all of whose entries are zero.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="arr:ARRAY2 INT:=new(5,4,0)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The entries of this array can be set to other integers using the operation
+<a href="dbopsetelt.xhtml">setelt</a>. 
+
+Issue this to set the element in the upper left corner of this array to 17.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="setelt(arr,1,1,17)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Now the first element of the array is 17.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="arr" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Likewise, elements of an array are extracted using the operation
+<a href="dbopelt.xhtml">elt</a>.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p4']);"
+    value="elt(arr,1,1)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Another way to use these two operations is as follows. This sets the
+element in position (3,2) of the array to 15.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p5']);"
+    value="arr(3,2):=15" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+This extracts the element in position (3,2) of the array.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p6']);"
+    value="arr(3,2)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopelt.xhtml">elt</a> and 
+<a href="dbopsetelt.xhtml">setelt</a> come equipped with an error check
+which verifies that the indices are in the proper ranges. For example,
+the above array has five rows and four columns, so if you ask for the
+entry in position (6,2) with arr(6,2) Axiom displays an error message.
+If there is no need for an error check, you can call the operations
+<a href="dbopqelt.xhtml">qelt</a> and
+<a href="dbopqseteltbang.xhtml">qsetelt!</a> 
+which provide the same functionality
+but without the error check. Typically, these operations are called in
+well-tested programs.
+
+The operations <a href="dboprow.xhtml">row</a> and
+<a href="dbopcolumn.xhtml">column</a> extract rows and columns, respectively,
+and return objects of 
+<a href="db.xhtml?OneDimensionalArray">OneDimensionalArray</a> with the
+same underlying element type.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p7']);"
+    value="row(arr,1)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p8']);"
+    value="column(arr,1)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+You can determine the dimensions of an array by calling the operations
+<a href="dbopnrows.xhtml">nrows</a> and
+<a href="dbopncols.xhtml">ncols</a>, which return the number of rows
+and columns, respectively.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p9']);"
+    value="nrows(arr)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p10']);"
+    value="ncols(arr)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+To apply an operation to every element of an array, use
+<a href="dbopmap.xhtml">map</a>. This creates a new array. This 
+expression negates every element.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11']);"
+    value="map(-,arr)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+This creates an array where all the elements are doubled.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12']);"
+    value="map((x+->x+x),arr)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+To change the array destructively, use 
+<a href="dbopmapbang.xhtml">map!</a> instead of 
+<a href="dbopmap.xhtml">map</a>.
+If you need to make a copy of an array,
+use <a href="dbopcopy.xhtml">copy</a>.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p13']);"
+    value="arrc:=copy(arr)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p13','p14']);"
+    value="map!(-,arrc)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p13','p14','p15']);"
+    value="arrc" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p16']);"
+    value="arr" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopmemberq.xhtml">member?</a> to see if a given element is in
+an array.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p17']);"
+    value="member?(17,arr)" />
+  <div id="ansp17"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p18']);"
+    value="member?(10317,arr)" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+To see how many times an element appears in an array, use 
+<a href="dbopcount.xhtml">count</a>.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p19']);"
+    value="count(17,arr)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p20']);"
+    value="count(0,arr)" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+For more information about the operations available for 
+<a href="db.xhtml?TwoDimensionalArray">TwoDimensionalArray</a>, issue
+<ul>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="showcall('p21');"
+   value=")show TwoDimensionalArray"/>
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+For more information on related topics, see
+<a href="pagematrix.xhtml">Matrix</a> and
+<a href="pageonedimensionalarray.xhtml">OneDimensionalArray</a>.
+<<page foot>>
+@
+
+\subsection{pagevector.xhtml}
+<<pagevector.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      pagevector not implemented
+<<page foot>>
+@
+
+
+\subsection{polybasicfunctions.xhtml}
+<<polybasicfunctions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Basic Operations on Polynomials</div>
+  <hr/>
+You create polynomials using the usual operations of
+<a href="dbopplus.xhtml">+</a>, 
+<a href="dbopminus.xhtml">-</a>, 
+<a href="dboptimes.xhtml">*</a>
+(for multiplication), and 
+<a href="dbopstarstar.xhtml">**</a> (or 
+<a href="dbopstarstar.xhtml">^</a>. Here are two examples:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="p:=a*x**2+b*x*y+c*y**2" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="q:=12*x^2+3*z" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+These operations can also be used to combine polynomials. Try the following:
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="p+q" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p4']);"
+    value="p-3*q" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p5']);"
+    value="p**2+p*q" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p6']);"
+    value="r:=(p+q)**2" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+As you can see from the above examples, the variables are ordered by defaults
+<pre>
+  z > y > x > c > b > a
+</pre>
+That is, z is the main variable, then y and so on in reverse alphabetical
+order. You can redefine this ordering (for display purposes) with the
+<a href="dbopsetvariableorder.xhtml">setVariableOrder</a>. For example, the
+following makes a the main variable, then b, and so on:
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="setVariableOrder [a,b,c,x,y,z]" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Now compare the way polynomials are displayed:
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p7','p8']);"
+    value="p" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p2','p7','p9']);"
+    value="q" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p6','p7','p10']);"
+    value="r" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+To return to the system's default ordering, use
+<a href="dbopresetvariableorder.xhtml">resetVariableOrder</a>.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="makeRequest('p11');"
+    value="resetVariableOrder()" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p11','p12']);"
+    value="p" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+Polynomial coefficients can be pulled out using the function
+<a href="dbopcoefficient.xhtml">coefficient</a>. For example:
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p2','p13']);"
+    value="coefficient(q,x,2)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+will give you the coefficient of x**2 in the polynomial q. Try these
+commands:
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p6','p14']);"
+    value="coefficient(r,x,3)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p6','p15']);"
+    value="c:=coefficient(r,z,1)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p6','p15','p16']);"
+    value="coefficient(c,x,2)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Coefficients of monomials can be obtained as follows:
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p2','p17']);"
+    value="coefficient(q**2,[x,z],[2,1])" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+This will return the coefficient of x**2*z in the polynomial q**2. Also,
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="handleFree(['p1','p2','p6','p18']);"
+    value="coefficient(r,[x,y],[2,2])" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+will return the coefficient of x**2*y**2 in the polynomial r(x,y).
+<<page foot>>
+@
+
+\subsection{polyfactorization.xhtml}
+<<polyfactorization.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Polynomial Factorization</div>
+  <hr/>
+The Axiom polynomial factorization facilities are available for all
+polynomial types and a wide variety of coefficient domains. Here are
+some examples.
+<ul>
+ <li>
+  <a href="polyfactorization1.xhtml">
+   Integer and Rational Number Coefficients
+  </a>
+ </li>
+ <li>
+  <a href="polyfactorization2.xhtml">
+   Finite Field Coefficients
+  </a>
+ </li>
+ <li>
+  <a href="polyfactorization3.xhtml">
+   Simple Algebraic Extension Field Coefficients
+  </a>
+ </li>
+ <li>
+  <a href="polyfactorization4.xhtml">
+   Factoring Rational Functions
+  </a>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{polyfactorization1.xhtml}
+<<polyfactorization1.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Integer and Rational Number Coefficients</div>
+  <hr/>
+Polynomials with integer coefficients can be factored.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="v:=(4*x^3+2*y^2+1)*(12*x^5-(1/2)*x^3+12)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="factor v" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Also, Axiom can factor polynomials with rational number coefficients
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="w:=(4*x^3+(2/3)*x^2+1)*(12*x^5-(1/2)*x^3+12)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p3','p4']);"
+    value="factor w" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{polyfactorization2.xhtml}
+<<polyfactorization2.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Finite Field Coefficients</div>
+  <hr/>
+Polynomials with coefficients in a finite filed can also be factored.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="u:POLY(PF(19)):=3*x^4+2*x^2+15*x+18" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+These include the integers mod p, where p is prime, and extensions of these
+fields.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="factor u" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Convert this to have coefficients in the finite field with 
+19**3 elements. See
+<a href="axbook/section-8.11.xhtml">FiniteFields</a> for more information
+about finite fields.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="factor(u::POLY FFX(PF 19,3))" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{polyfactorization3.xhtml}
+<<polyfactorization3.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Simple Algebraic Extension Field Coefficients</div>
+  <hr/>
+Polynomials with coefficients in simple algebraic extensions of the 
+rational numbers can be factored. 
+
+Here, aa and bb are symbolic roots of polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="aa:=rootOf(aa^2+aa+1)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="p:=(x^2+aa^2*x+y)*(aa*x^2+aa*x+aa*y^2)^2" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Note that the second argument to factor can be a list of algebraic
+extensions to factor over.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="factor(p,[aa])" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+This factors x^2+3 over the integers.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="factor(x^2+3)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Factor the same polynomial over the field obtained by adjoining aa to the
+rational numbers.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="factor(x^2+3,[aa])" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Factor x^6+108 over the same field.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p6']);"
+    value="factor(x^6+108,[aa])" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="bb:=rootOf(bb^3-2)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p7','p8']);"
+    value="factor(x^6+8,[bb])" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Factor again over the field obtained by adjoining both aa and bb to the 
+rational numbers.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p7','p9']);"
+    value="factor(x^6+108,[aa,bb])" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{polyfactorization4.xhtml}
+<<polyfactorization4.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Factoring Rational Functions</div>
+  <hr/>
+Since fractions of polynomials form a field, every element (other than zero)
+divides any other, so there is no useful notion of irreducible factors. 
+Thus the <a href="dbopfactor.xhtml">factor</a> operation is not very useful
+for fractions of polynomials.
+
+Instead, there is a specific operation 
+<a href="dbopfactorfraction.xhtml">factorFraction</a> that separately
+factors the numerator and denominator and returns a fraction of the
+factored results.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="factorFraction((x^2-4)/(y^2-4))" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You can also use <a href="dbopmap.xhtml">map</a>. This expression applies
+the <a href="dbopfactor.xhtml">factor</a> operation to the numerator and
+denominator.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="map(factor,(x^2-4)/(y^2-4))" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{polygcdandfriends.xhtml}
+<<polygcdandfriends.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+<div align="center">
+ Greatest Common Divisors, Resultants, and Discriminants
+</div>
+<hr/>
+You can compute the greatest common divisor of two polynomials using the
+function <a href="dbopgcd.xhtml">gcd</a>. Here's an example:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="p:=3*x^8+2*x^7+6*x^2+7*x+2" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="q:=2*x^13+9*x^7+2*x^6+10*x+5" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="gcd(p,q)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+You could also see that p and q have a factor in common by using the
+function <a href="dbopresultant.xhtml">resultant</a>:
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p4']);"
+    value="resultant(p,q,x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+The resultant of two polynomials vanishes precisely when they have a
+factor in common. (In the example above we specified the variable with which
+we wanted to compute the resultant because the polynomials could have
+involved variables other than x.)
+<<page foot>>
+@
+
+\subsection{polynomialpage.xhtml}
+<<polynomialpage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Polynomials</div>
+  <hr/>
+<table>
+ <tr>
+  <td>
+   <a href="polybasicfunctions.xhtml">Basic Functions</a>
+  </td>
+  <td>
+   Create and manipulate polynomials
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polysubstitutions.xhtml">Substitutions</a>
+  </td>
+  <td>
+   Evaluate Polynomials
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyfactorization.xhtml">Factorization</a>
+  </td>
+  <td>
+   Factor in different contexts
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polygcdandfriends.xhtml">GCD and Friends</a>
+  </td>
+  <td>
+   Greatest Common Divisors, Resultants, and Discriminants
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyroots.xhtml">Roots</a>
+  </td>
+  <td>
+   Work with and solve for roots
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyspecifictypes.xhtml">Specific Types</a>
+  </td>
+  <td>
+   More specific information
+  </td>
+ </tr>
+</table>
+<<page foot>>
+@
+
+\subsection{polyroots.xhtml}
+<<polyroots.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Roots of Polynomials</div>
+  <hr/>
+<table>
+ <tr>
+  <td>
+   <a href="polyroots1.xhtml">
+    Using a Single Root of a Polynomial
+   </a>
+  </td>
+  <td>
+   Working with a single root of a polynomial
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyroots2.xhtml">
+    Using All Roots of a Polynomial
+   </a>
+  </td>
+  <td>
+   Working with all the roots of a polynomial
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyroots3.xhtml">
+    Solution of a Single Polynomial Equation
+   </a>
+  </td>
+  <td>
+   Finding the roots of one polynomial
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyroots4.xhtml">
+    Solution of Systems of Polynomial Equations
+   </a>
+  </td>
+  <td>
+   Finding the roots of a system of polynomials
+  </td>
+ </tr>
+</table>
+<<page foot>>
+@
+
+\subsection{polyroots1.xhtml}
+<<polyroots1.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Using a Single Root of a Polynomial</div>
+  <hr/>
+Use <a href="dboprootof.xhtml">rootOf</a> to get a symbolic root of a 
+polynomial. The call rootOf(p,x) returns a root of p(x). 
+
+This creates an algebraic number a, which is a root of the polynomial
+returned in symbolic form.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="aa:=rootOf(a^4+1,a)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+To find the algebraic relation that defines a, use
+<a href="dbopdefiningpolynomial.xhtml">definingPolynomial</a>
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="definingPolynomial aa" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can use a in any further expression, including a nested 
+<a href="dboprootof.xhtml">rootOf</a>.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="bb:=rootOf(b^2-aa-1,b)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Higher powers of the roots are automatically reduced during calculations.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p3','p4']);"
+    value="g:=aa+bb" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p3','p4','p5']);"
+    value="g^5" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopzeroof.xhtml">zeroOf</a> is similar to 
+<a href="dboprootof.xhtml">rootOf</a>, except that it may express the
+root using radicals in some cases.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="rootOf(c^2+c+1,c)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="zeroOf(d^2+d+1,d)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="rootOf(e^5-2,e)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="zeroOf(f^5-2,f)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{polyroots2.xhtml}
+<<polyroots2.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Using All Roots of a Polynomial</div>
+  <hr/>
+Use <a href="dboprootsof.xhtml">rootsOf</a> to get all symbolic roots 
+of a polynomial. The call rootsOf(p,x) returns a list of all the roots
+of p(x). If p(x) has a multiple root of order n, then that root appears
+n times in the list.
+
+Compute all the roots of x^4+1.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="l:=rootsOf(x^4+1,x)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+As a side effect, the variables %x0, %x1, and %x2 are bound to the first
+three roots of x^4+1.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="%x0^5" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Although they all satisfy x^4+1=0, %x0, %x1, and %x2 are different
+algebraic numbers. To find the algebraic relation that defines each of
+them, use <a href="dbopdefiningpolynomial.xhtml">definingPolynomial</a>.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="definingPolynomial %x0" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="definingPolynomial %x1" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="definingPolynomial %x2" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+We can check that the sum and product of the roots of x^4+1 are its
+trace and norm.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p6']);"
+    value="x3:=last l" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p6','p7']);"
+    value="%x0+%x1+%x2+x3" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p6','p8']);"
+    value="%x0*%x1*%x2*x3" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Corresponding to the pair of operations
+<a href="dboprootof.xhtml">rootOf</a> and 
+<a href="dbopzeroof.xhtml">zeroOf</a> in 
+<a href="axbook/section-8.5.xhtml#subsec-8.5.2">
+Solution of a Single Polynomial Equation</a>
+there is an operations <a href="dbopzerosof.xhtml">zerosOf</a> that, like
+<a href="dboprootsof.xhtml">rootsOf</a>, computes all the roots of a given
+polynomial, but which expresses some of them in terms of radicals.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="zerosOf(y^4+1,y)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+As you see, only one implicit algebraic number was created (%y1), and its
+defining equation is this. The other three roots are expressed in radicals.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p9','p10']);"
+    value="definingPolynomial %y1" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{polyroots3.xhtml}
+<<polyroots3.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Solution of a Single Polynomial Equation</div>
+  <hr/>
+Axiom can solve polynomial equations producing either approximate or exact
+solutions. Exact solutions are either members of the ground field or can
+be presented symbolically as roots of irreducible polynomials.
+
+This returns one rational root along with an irreducible polynomial 
+describing the other solutions
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="solve(x^3=8,x)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+If you want solutions expressed in terms of radicals you would use this
+instead.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="radicalSolve(x^3=8,x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The <a href="dbopsolve.xhtml">solve</a> command always returns a value but
+<a href="dbopradicalsolve.xhtml">radicalSolve</a> returns only the solutions
+that it is able to express in terms of radicals.
+
+If the polynomial equation has rational coefficients you can ask for
+approximations to its real roots by calling solve with a second argument
+that specifies the "precision" epsilon. This means that each approximation
+will be within plus or minus epsilon of the actual result.
+
+Notice that the type of second argument controls the type of the result.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="solve(x^4-10*x^3+35*x^2-50*x+25,.0001)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+If you give a floating point precision you get a floating point result.
+If you give the precision as a ration number you get a rational result.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="solve(x^2-2,1/1000)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+If you want approximate complex results you should use the command
+<a href="dbopcomplexsolve.xhtml">complexSolve</a> that takes the same
+precision argument epsilon.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="complexSolve(x^3-2,.0001)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Each approximation will be within plus or minus epsilon of the actual result
+in each of the real and imaginary parts.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="complexSolve(x^2-2*%i+1,1/100)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Note that if you omit the = from the first argument Axiom generates
+an equation by equating the first argument to zero. Also, when only one
+variable is present in the equation, you do not need to specify the
+variable to be solved for, that is, you can omit the second argument.
+
+Axiom can also solve equations involving rational functions. Solutions
+where the denominator vanishes are discarded.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="radicalSolve(1/x^3+1/x^2+1/x=0,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{polyroots4.xhtml}
+<<polyroots4.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Solution of Systems of Polynomial Equations</div>
+  <hr/>
+Given a system of equations of rational functions with exact coefficients
+<pre>
+     p1(x1,...,xn)
+         .
+         .
+     pm(x1,...,xn)
+</pre>
+Axiom can find numeric or symbolic solutions. The system is first split 
+into irreducible components, then for each component, a triangular system
+of equations is found that reduces the problem to sequential solutions of
+univariate polynomials resulting from substitution of partial solutions
+from the previous stage.
+<pre>
+     q1(x1,...,xn)
+         .
+         .
+     qm(xn)
+</pre>
+Symbolic solutions can be presented using "implicit" algebraic numbers
+defined as roots of irreducible polynomials or in terms of radicals. Axiom
+can also find approximations to the real or complex roots of a system of
+polynomial equations to any user specified accuracy.
+
+The operation <a href="dbopsolve.xhtml">solve</a> for systems is used in
+a way similar to <a href="dbopsolve.xhtml">solve</a> for single equations.
+Instead of a polynomial equation, one has to give a list of equations and
+instead of a single variable to solve for, a list of variables. For 
+solutions of single equations see
+<a href="axbook/section-8.5.xhtml#subsec-8.5.2">
+Solution of a Single Polynomial Equation</a>
+
+Use the operation <a href="dbopsolve.xhtml">solve</a> if you want
+implicitly presented solutions.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="solve([3*x^2+y+1,y^2-4],[x,y])" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="solve([x=y^2-19,y=z^2+x+3,z=3*x],[x,y,z])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopradialsolve.xhtml">radicalSolve</a> if you want your
+solutions expressed in terms of radicals.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="radicalSolve([3*x^3+y+1,y^2-4],[x,y])" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+To get numeric solutions you only need to give the list of equations and
+the precision desired. The list of variables would be redundant information
+since there can be no parameters for the numerical solver.
+
+If the precision is expressed as a floating point number you get results
+expressed as floats.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="solve([x^2*y-1,x*y^2-2],.01)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+To get complex numeric solutions, use the operation
+<a href="dbopcomplexsolve.xhtml">complexSolve</a>, which takes the same
+arguments as in the real case.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="complexSolve([x^2*y-1,x*y^2-2],1/1000)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+It is also possible to solve systems of equations in rational functions
+over the rational numbers. Note that [x=0.0,a=0.0] is not returned as
+a solution since the denominator vanishes there.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="solve([x^2/a=a,a=a*x],.001)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+When solving equations with denominators, all solutions where the 
+denominator vanishes are discarded.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="radicalSolve([x^2/a+a+y^3-1,a*y+a+1],[x,y])" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{polyspecifictypes.xhtml}
+<<polyspecifictypes.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">The Specific Polynomial Types</div>
+  <hr/>
+<table>
+ <tr>
+  <td>
+   <a href="polyspecifictypes1.xhtml">
+    Polynomial
+   </a>
+  </td>
+  <td>
+   The general type
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyspecifictypes2.xhtml">
+    UnivariatePolynomial
+   </a>
+  </td>
+  <td>
+   One variable polynomials
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyspecifictypes3.xhtml">
+    MultivariatePolynomial
+   </a>
+  </td>
+  <td>
+   Multiple variable polynomials, recursive structure
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyspecifictypes4.xhtml">
+    DistributedMultivariatePolynomial
+   </a>
+  </td>
+   Multiple variable polynomials, non-recursive structure
+  <td>
+  </td>
+ </tr>
+</table>
+<<page foot>>
+@
+
+\subsection{polyspecifictypes1.xhtml}
+<<polyspecifictypes1.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Polynomial</div>
+  <hr/>
+The domain constructor <a href="db.xhtml?Polynomial">Polynomial</a>
+(abbreviation: <a href="db.xhtml?Polynomial">POLY</a>) provides polynomials
+with an arbitrary number of unspecified variables.
+
+It is used to create the default polynomial domains in Axiom. Here the
+coefficients are integers.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="x+1" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Here the coefficients have type <a href="db.xhtml?Float">Float</a>.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="z-2.3" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+And here we have a polynomial in two variables with coefficients which 
+have type <a href="dbfractioninteger.xhtml">Fraction Integer</a>
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="y^2-z+3/4" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The representation of objects of domains created by 
+<a href="db.xhtml?Polynomial">Polynomial</a> is that of recursive univariate
+polynomials. (The term univariate means "one variable". The term 
+multivariate means "possibly more than one variable".) This recursive
+structure is sometimes obvious from the display of a polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="r:=y^2+x*y+y" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+In this example, you see that the polynomial is stored as a polynomial in y
+with coefficients that are polynomials in x with integer coefficients. In 
+fact, you really don't need to worry about the representation unless you are
+working on an advanced application where it is critical. The polynomial
+types created from
+<a href="db.xhtml?DistributedMultivariatePolynomial">
+DistributedMultivariatePolynomial</a> and
+<a href="db.xhtml?XDistributedPolynomial">XDistributedPolynomial</a> 
+(discussed in
+<a href="axbook/section-9.16.xhtml">"DistributedMultivariatePolynomial"</a>
+are stored and displayed in a
+non-recursive manner. You see a "flat" display of the above polynomial by
+converting to one of those types.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="r::DMP([y,x],INT)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+We will demonstrate many of the polynomial facilities by using two 
+polynomials with integer coefficients. By default, the interpreter 
+expands polynomial expressions, even if they are written in a factored
+format.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="p:=(y-1)^2*x*z" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+See <a href="axbook/section-9.22.xhtml">Factored</a> 
+to see how to create objects in factored form directly.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="q:=(y-1)*x*(z+5)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+The fully factored form can be recovered by using 
+<a href="dbopfactor.xhtml">factor</a>
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p7','p8']);"
+    value="factor(q)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+This is the same name used for the operation to factor integer.
+Such reuse of names is called 
+<a href="glossarypage.xhtml#p36465">overloading</a> and makes it much
+easier to think of solving problems in general ways. Axiom facilities
+for factoring polynomials created with 
+<a href="db.xhtml?Polynomial">Polynomial</a>
+are currently restricted to the integer and rational number coefficients
+cases. There are more complete facilities for factoring univariate
+polynomials (see 
+<a href="axbook/section-8.2.xhtml">Polynomial Factorization</a>)
+
+The standard arithmetic operations are available for polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p6','p7','p9']);"
+    value="p-q^2" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopgcd.xhtml">gcd</a> is used to compute the 
+greated common divisor of two polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p6','p7','p10']);"
+    value="m:=gcd(p,q)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+In the case of p and q, the gcd is obvious from their definitions.
+We factor the gcd to show this relationship better.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p6','p7','p10','p11']);"
+    value="factor m" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+The least common multiple is computed by using 
+<a href="dboplcm.xhtml">lcm</a>.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p6','p7','p12']);"
+    value="lcm(p,q)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopcontent.xhtml">content</a> to compute the greatest common
+divisor of the coefficients of the polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p6','p13']);"
+    value="content p" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+Many of the operations on polynomials require you to specify a variable.
+For example, <a href="dbopresultant.xhtml">resultant</a> requires you to
+give the variable in which the polynomials should be expressed. This 
+computes the resultant of the values of p and q, considering them as
+polynomials in the variable z. They do not share a root when thought
+of as polynomials in z.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p6','p7','p14']);"
+    value="resultant(p,q,z)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+This value is 0 because as polynomials in x the polynomials have a
+common root.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p6','p7','p15']);"
+    value="resultant(p,q,x)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+The data type used for the variables created by 
+<a href="db.xhtml?Polynomial">Polynomial</a> is 
+<a href="db.xhtml?Symbol">Symbol</a>. As mentioned above, the representation
+used by <a href="db.xhtml?Polynomial">Polynomial</a> is recursive and so
+there is a main variable for nonconstant polynomials. The operation
+<a href="dbopmainvariable.xhtml">makeVariable</a> returns this variable.
+The return type is actually a union of <a href="db.xhtml?Symbol">Symbol</a>
+and "failed".
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p6','p16']);"
+    value="mainVariable p" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+The latter branch of the union is used if the polynomial has no
+variables, that is, is a constant.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p6','p17']);"
+    value="ground? p" />
+  <div id="ansp17"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="makeRequest('p18');"
+    value="ground?(1::POLY INT)" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+The complete list of variables actually used in a particular polynomial
+is returned by <a href="dbopvariables.xhtml">variables</a>. For constant
+polynomials, this list is empty.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p6','p19']);"
+    value="variables p" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+The <a href="dbopdegree.xhtml">degree</a> operation returns the degree
+of a polynomial in a specific variable.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p6','p20']);"
+    value="degree(p,x)" />
+  <div id="ansp20"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="handleFree(['p6','p21']);"
+    value="degree(p,y)" />
+  <div id="ansp21"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p22" class="subbut" 
+    onclick="handleFree(['p6','p22']);"
+    value="degree(p,z)" />
+  <div id="ansp22"><div></div></div>
+ </li>
+</ul>
+If you give a list of variables for the second argument, a list of the
+degrees in those variables is returned.
+<ul>
+ <li>
+  <input type="submit" id="p23" class="subbut" 
+    onclick="handleFree(['p6','p23']);"
+    value="degree(p,[x,y,z])" />
+  <div id="ansp23"><div></div></div>
+ </li>
+</ul>
+The minimum degree of a variable in a polynomial is computed using
+<a href="dbopminimumdegree.xhtml">minimumDegree</a>.
+<ul>
+ <li>
+  <input type="submit" id="p24" class="subbut" 
+    onclick="handleFree(['p6','p24']);"
+    value="minimumDegree(p,z)" />
+  <div id="ansp24"><div></div></div>
+ </li>
+</ul>
+The total degree of a polynomial is returned by
+<a href="dboptotaldegree.xhtml">totalDegree</a>.
+<ul>
+ <li>
+  <input type="submit" id="p25" class="subbut" 
+    onclick="handleFree(['p6','p25']);"
+    value="totalDegree p" />
+  <div id="ansp25"><div></div></div>
+ </li>
+</ul>
+It is often convenient to think of a polynomial as a leading monomial
+plus the remaining terms, using the operation
+<a href="dbopleadingmonomial.xhtml">leadingMonomial</a>
+<ul>
+ <li>
+  <input type="submit" id="p26" class="subbut" 
+    onclick="handleFree(['p6','p26']);"
+    value="leadingMonomial p" />
+  <div id="ansp26"><div></div></div>
+ </li>
+</ul>
+The <a href="dbopreductum.xhtml">reductum</a> operation returns a polynomial
+consisting of the sum of the monomials after the first.
+<ul>
+ <li>
+  <input type="submit" id="p27" class="subbut" 
+    onclick="handleFree(['p6','p27']);"
+    value="reductum p" />
+  <div id="ansp27"><div></div></div>
+ </li>
+</ul>
+These have the obvious relationship that the original polynomial is equal
+to the leading monomial plus the reductum.
+<ul>
+ <li>
+  <input type="submit" id="p28" class="subbut" 
+    onclick="handleFree(['p6','p28']);"
+    value="p-leadingMonomial p - reductum p" />
+  <div id="ansp28"><div></div></div>
+ </li>
+</ul>
+The value returned by <a href="dbopleadingmonomial.xhtml">leadingMonomial</a>
+includes the coefficient of that term. This is extracted by using 
+<a href="dbopleadingcoefficient.xhtml">leadingCoefficient</a> on the 
+original polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p29" class="subbut" 
+    onclick="handleFree(['p6','p29']);"
+    value="leadingCoefficient p" />
+  <div id="ansp29"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopeval.xhtml">eval</a> is used to substitute a 
+value for a varialbe in a polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p30" class="subbut" 
+    onclick="handleFree(['p6','p30']);"
+    value="p" />
+  <div id="ansp30"><div></div></div>
+ </li>
+</ul>
+This value may be another variable, a constant or a polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p31" class="subbut" 
+    onclick="handleFree(['p6','p31']);"
+    value="eval(p,x,w)" />
+  <div id="ansp31"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p32" class="subbut" 
+    onclick="handleFree(['p6','p32']);"
+    value="eval(p,x,1)" />
+  <div id="ansp32"><div></div></div>
+ </li>
+</ul>
+Actually, all the things being substituted are just polynomials, some 
+more trivial than others.
+<ul>
+ <li>
+  <input type="submit" id="p33" class="subbut" 
+    onclick="handleFree(['p6','p33']);"
+    value="eval(p,x,y^2-1)" />
+  <div id="ansp33"><div></div></div>
+ </li>
+</ul>
+Derivatives are computed using the <a href="dbopd.xhtml">D</a> operation.
+<ul>
+ <li>
+  <input type="submit" id="p34" class="subbut" 
+    onclick="handleFree(['p6','p34']);"
+    value="D(p,x)" />
+  <div id="ansp34"><div></div></div>
+ </li>
+</ul>
+The first argument is the polynomial and the second is the variable.
+<ul>
+ <li>
+  <input type="submit" id="p35" class="subbut" 
+    onclick="handleFree(['p6','p35']);"
+    value="D(p,y)" />
+  <div id="ansp35"><div></div></div>
+ </li>
+</ul>
+Even if the polynomial has only one variable, you must specify it.
+<ul>
+ <li>
+  <input type="submit" id="p36" class="subbut" 
+    onclick="handleFree(['p6','p36']);"
+    value="D(p,z)" />
+  <div id="ansp36"><div></div></div>
+ </li>
+</ul>
+Integration of polynomials is similar and the 
+<a href="dbopintegrate.xhtml">integrate</a> operation is used.
+
+Integration requires that the coefficients support division. 
+Consequently, Axiom converts polynomials over the integers to polynomials
+over the rational numbers before integrating them.
+<ul>
+ <li>
+  <input type="submit" id="p37" class="subbut" 
+    onclick="handleFree(['p6','p37']);"
+    value="integrate(p,y)" />
+  <div id="ansp37"><div></div></div>
+ </li>
+</ul>
+It is not possible, in general, to divide two polynomials. In our example
+using polynomials over the integers, the operation
+<a href="dbopmonicdivide.xhtml">monicDivide</a> divides a polynomial by a
+monic polynomial (that is, a polynomial with leading coefficient equal to
+1). The result is a record of the quotient and remainder of the division.
+You must specify the variable in which to express the polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p38" class="subbut" 
+    onclick="handleFree(['p6','p38']);"
+    value="qr:=monicDivide(p,x+1,x)" />
+  <div id="ansp38"><div></div></div>
+ </li>
+</ul>
+The selectors of the components of the record are quotient and
+remainder. Issue this to extract the remainder:
+<ul>
+ <li>
+  <input type="submit" id="p39" class="subbut" 
+    onclick="handleFree(['p6','p38','p39']);"
+    value="qr.remainder" />
+  <div id="ansp39"><div></div></div>
+ </li>
+</ul>
+Now that we can extract the components, we can demonstrate the 
+relationship among them and the arguments to our original expression
+<pre>
+  qr:=monicDivide(p,x+1,x)
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p40" class="subbut" 
+    onclick="handleFree(['p6','p38','p40']);"
+    value="p-((x+1)*qr.quotient+qr.remainder)" />
+  <div id="ansp40"><div></div></div>
+ </li>
+</ul>
+If the <a href="dbopdivide.xhtml">/</a> operator is used with polynomials,
+a fraction object is created. In this example, the result is an object of
+type 
+<a href="dbfractionpolynomialinteger.xhtml">Fraction Polynomial Integer</a>.
+<ul>
+ <li>
+  <input type="submit" id="p41" class="subbut" 
+    onclick="handleFree(['p6','p7','p41']);"
+    value="p/q" />
+  <div id="ansp41"><div></div></div>
+ </li>
+</ul>
+If you use rational numbers as polynomial coefficients, the resulting
+object is of type 
+<a href="dbpolynomialfractioninteger.xhtml">Polynomial Fraction Integer</a>
+<ul>
+ <li>
+  <input type="submit" id="p42" class="subbut" 
+    onclick="makeRequest('p42');"
+    value="pfi:=(2/3)*x^2-y+4/5" />
+  <div id="ansp42"><div></div></div>
+ </li>
+</ul>
+This can be converted to a fraction of polynomials and back again, if
+required.
+<ul>
+ <li>
+  <input type="submit" id="p43" class="subbut" 
+    onclick="handleFree(['p42','p43']);"
+    value="fpi:=pfi::FRAC POLY INT" />
+  <div id="ansp43"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p44" class="subbut" 
+    onclick="handleFree(['p42','p43','p44']);"
+    value="fpi::POLY FRAC INT" />
+  <div id="ansp44"><div></div></div>
+ </li>
+</ul>
+To convert the coefficients to floating point, map the 
+<a href="dbopnumeric.xhtml">numeric</a> operation on the coefficients
+of the polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p45" class="subbut" 
+    onclick="handleFree(['p42','p45']);"
+    value="map(numeric,pfi)" />
+  <div id="ansp45"><div></div></div>
+ </li>
+</ul>
+For more information on related topcis, see
+<a href="axbook/section-9.83.xhtml">UnivariatePolynomial</a>,
+<a href="axbook/section-9.54.xhtml">MultivariatePolynomial</a>, and
+<a href="axbook/section-9.16.xhtml">DistributedMultivariatePolynomial</a>.
+You can also issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p46" class="subbut" 
+    onclick="showcall('p46');"
+   value=")show Polynomial"/>
+  <div id="ansp46"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?Polynomial">Polynomial</a>.
+<<page foot>>
+@
+
+\subsection{polyspecifictypes2.xhtml}
+<<polyspecifictypes2.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">UnivariatePolynomial</div>
+  <hr/>
+The domain constructor 
+<a href="db.xhtml?UnivariatePolynomial">UnivariatePolynomial</a> 
+(abbreviated <a href="db.xhtml?UnivariatePolynomial">UP</a>)
+creates domains of univariate polynomials in a specified variable.
+For example, the domain UP(a1,POLY FRAC INT) provides polynomials in
+the single variable a1 whose coefficients are general polynomials with
+rational number coefficients.
+<hr/>
+<b>Restriction:</b><br/>
+Axiom does not allow you to create types where
+<a href="db.xhtml?UnivariatePolynomial">UnivariatePolynomial</a> 
+is contained in the coefficient type of 
+<a href="db.xhtml?Polynomial">Polynomial</a>.
+Therefore, UP(x,POLY INT) is legal but POLY UP(x,INT) is not.
+<hr/>
+UP(x,INT) is the domain of polynomials in the single variable x with
+integer coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="(p,q):UP(x,INT)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="p:=(3*x-1)^2*2*(2*x+8)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="q:=(1-6*x+9*x^2)^2" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The usual arithmetic operations are available for univariate polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4']);"
+    value="p^2+p*q" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+The operation 
+<a href="dbopleadingcoefficient.xhtml">leadingCoefficient</a>
+extracts the coefficient of the term of highest degree.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p5']);"
+    value="leadingCoefficient p" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopdegree.xhtml">degree</a> returns the degree of
+the polynomial. Since the polynomial has only one variable, the variable
+is not supplied to operations like <a href="dbopdegree.xhtml">degree</a>.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p6']);"
+    value="degree p" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+The reductum of the polynomial, the polynomial obtained by subtracting
+the term of highest order, is returned by 
+<a href="dbopreductum.xhtml">reductum</a>.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p7']);"
+    value="reductum p" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopgcd.xhtml">gcd</a> computes the greatest common
+divisor of two polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p8']);"
+    value="gcd(p,q)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboplcm.xhtml">lcm</a> computes the least common 
+multiple.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p9']);"
+    value="lcm(p,q)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopresultant.xhtml">resultant</a> computes the
+resultant of two univariate polynomials. In the case of p and q, the
+resultant is 0 because they share a common root.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p10']);"
+    value="resultant(p,q)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+To compute the derivative of a univariate polynomial with respect to 
+its variable, use <a href="dbopd.xhtml">D</a>.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p2','p11']);"
+    value="D p" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+Univariate polynomials can also be used as if they were functions.
+To evaluate a univariate polynomial at some point, apply the polynomial
+to the point.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p2','p12']);"
+    value="p(2)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+The same syntax is used for composing two univariate polynomials, i.e.
+substituting one polynomial for the variable in another. This substitutes q
+for the variable in p.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p13']);"
+    value="p(q)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+This substitutes p for the variable in q.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p14']);"
+    value="q(p)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+To obtain a list of coefficients of the polynomial, use
+<a href="dbopcoefficients.xhtml">coefficients</a>.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p1','p2','p15']);"
+    value="l:=coefficients p" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+From this you can use <a href="dbopgcd.xhtml">gcd</a> and
+<a href="dbopreduce.xhtml">reduce</a> to compute the contents of the
+polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p1','p2','p15','p16']);"
+    value="reduce(gcd,l)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Alternatively (and more easily), you can just call
+<a href="dbopcontent.xhtml">content</a>
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p1','p2','p17']);"
+    value="content p" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+Note that the operation <a href="dbopcoefficients.xhtml">coefficients</a>
+omits the zero coefficients from the list. Sometimes it is useful to 
+convert a univariate polynomial to a vector whose i-th position contains
+the degree i-1 coefficient of the polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="makeRequest('p18');"
+    value="ux:=(x^4+2*x+3)::UP(x,INT)" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+To get a complete vector of coefficients, use the operation 
+<a href="dbopvectorise.xhtml">vectorise</a>, which takes a univariate
+polynomial and an integer denoting the length of the desired vector.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p18','p19']);"
+    value="vectorise(ux,5)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+It is common to want to do something to every term of a polynomial, 
+creating a new polynomial in the process. This is a function for
+iterating across the terms of a polynomial, squaring each term.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="makeRequest('p20');"
+    value="squareTerms(m)==reduce(+,[t^2 for t in monomials m])" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+Recall what p looked like.
+<ul>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="handleFree(['p1','p2','p21']);"
+    value="p" />
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+We can demonstrate squareTerms on p.
+<ul>
+ <li>
+  <input type="submit" id="p22" class="subbut" 
+    onclick="handleFree(['p1','p2','p20','p22']);"
+    value="squareTerms p" />
+  <div id="ansp22"><div></div></div>
+ </li>
+</ul>
+When the coefficients of the univariate polynomial belong to a field,
+(for example, when the coefficients are rational numbers, as opposed to
+integers. The important property of a field is that non-zero elements can
+be divided and produce another element. The quotient of the integers 2 and 3
+is not another integer.) It is possible to compute quotients and remainders.
+<ul>
+ <li>
+  <input type="submit" id="p23" class="subbut" 
+    onclick="makeRequest('p23');"
+    value="(r,s):UP(a1,FRAC INT)" />
+  <div id="ansp23"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p24" class="subbut" 
+    onclick="handleFree(['p23','p24']);"
+    value="r:=a1^2-2/3" />
+  <div id="ansp24"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p25" class="subbut" 
+    onclick="handleFree(['p23','p25']);"
+    value="s:=a1+4" />
+  <div id="ansp25"><div></div></div>
+ </li>
+</ul>
+When the coefficients are rational numbers or rational expressions, the
+operation <a href="dbopquo.xhtml">quo</a> computes the quotient of two
+polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p26" class="subbut" 
+    onclick="handleFree(['p23','p24','p25','p26']);"
+    value="r quo s" />
+  <div id="ansp26"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboprem.xhtml">rem</a> computes the remainder.
+<ul>
+ <li>
+  <input type="submit" id="p27" class="subbut" 
+    onclick="handleFree(['p23','p24','p25','p27']);"
+    value="r rem s" />
+  <div id="ansp27"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopdivide.xhtml">divide</a> can be used to return
+a record of both components.
+<ul>
+ <li>
+  <input type="submit" id="p28" class="subbut" 
+    onclick="handleFree(['p23','p24','p25','p28']);"
+    value="d:=divide(r,s)" />
+  <div id="ansp28"><div></div></div>
+ </li>
+</ul>
+Now we check the arithmetic.
+<ul>
+ <li>
+  <input type="submit" id="p29" class="subbut" 
+    onclick="handleFree(['p23','p24','p25','p28','p29']);"
+    value="r-(d.quotient*s+d.remainder)" />
+  <div id="ansp29"><div></div></div>
+ </li>
+</ul>
+It is also possible to integrate univariate polynomials when the 
+coefficients belong to a field.
+<ul>
+ <li>
+  <input type="submit" id="p30" class="subbut" 
+    onclick="handleFree(['p23','p24','p30']);"
+    value="integrate r" />
+  <div id="ansp30"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p31" class="subbut" 
+    onclick="handleFree(['p23','p25','p31']);"
+    value="integrate s" />
+  <div id="ansp31"><div></div></div>
+ </li>
+</ul>
+One application of univariate polynomials is to see expressions in terms of
+a specific variable. We start with a polynomial in a1 whose coefficients are
+quotients of polynomials in b1 and b2.
+<ul>
+ <li>
+  <input type="submit" id="p32" class="subbut" 
+    onclick="makeRequest('p32');"
+    value="t:UP(a1,FRAC POLY INT)" />
+  <div id="ansp32"><div></div></div>
+ </li>
+</ul>
+Since in this case we are not talking about using multivariate polynomials
+in only two variables, we use <a href="db.xhtml?Polynomial">Polynomial</a>.
+We also use <a href="db.xhtml?Fraction">Fraction</a> because we want fractions.
+<ul>
+ <li>
+  <input type="submit" id="p33" class="subbut" 
+    onclick="handleFree(['p32','p33']);"
+    value="t:=a1^2-a1/b2+(b1^2-b1)/(b2+3)" />
+  <div id="ansp33"><div></div></div>
+ </li>
+</ul>
+We push all the variables into a single quotient of polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p34" class="subbut" 
+    onclick="handleFree(['p32','p33','p34']);"
+    value="u:FRAC POLY INT:=t" />
+  <div id="ansp34"><div></div></div>
+ </li>
+</ul>
+Alternatively, we can view this as a polynomial in the variable. This is a
+mode-directed conversion: You indicate as much of the structure as you care
+about and let Axiom decide on the full type and how to do the transformation.
+<ul>
+ <li>
+  <input type="submit" id="p35" class="subbut" 
+    onclick="handleFree(['p32','p33','p34','p35']);"
+    value="u::UP(b1,?)" />
+  <div id="ansp35"><div></div></div>
+ </li>
+</ul>
+See <a href="axbook/section-8.2.xhtml">Polynomial Factorization</a> for a
+discussion of the factorization facilities in Axiom for univariate
+polynomials. For more information on related topics, see
+<a href="axbook/section-1.8.xhtml">Polynomials</a>,
+<a href="axbook/section-2.7.xhtml">Conversion</a>,
+<a href="polyspecifictypes1.xhtml">Polynomial</a>,
+<a href="polyspecifictypes3.xhtml">MultivariatePolynomial</a>, and
+<a href="polyspecifictypes4.xhtml">DistributedMultivariatePolynomial</a>.
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p36" class="subbut" 
+    onclick="showcall('p36');"
+   value=")show UnivariatePolynomial"/>
+  <div id="ansp36"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by
+<a href="db.xhtml?UnivariatePolynomial">UnivariatePolynomial</a>.
+<<page foot>>
+@
+
+\subsection{polyspecifictypes3.xhtml}
+<<polyspecifictypes3.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">MultivariatePolynomial</div>
+  <hr/>
+The domain constructor 
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a> is
+similar to <a href="db.xhtml?Polynomial">Polynomial</a> except that it
+specifies the variables to be used. 
+<a href="db.xhtml?Polynomial">Polynomial</a> are available for 
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a>.
+The abbreviation for 
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a> is
+<a href="db.xhtml?MultivariatePolynomial">MPOLY</a>. The type expressions
+<pre>
+   MultivariatePolynomial([x,y],Integer)
+</pre>
+and
+<pre>
+         MPOLY([x,y],INT)
+</pre>
+refer to the domain of multivariate polynomials in the variables x and y
+where the coefficients are restricted to be integers. The first variable
+specified is the main variable and the display of the polynomial reflects
+this. This polynomial appears with terms in descending powers of the 
+variable x.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:MPOLY([x,y],INT):=(x^2-x*y^3+3*y)^2" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+It is easy to see a different variable ordering by doing a conversion.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="m::MPOLY([y,x],INT)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can use other, unspecified variables, by using
+<a href="db.xhtml?Polynomial">Polynomial</a> in the coefficient type of
+<a href="db.xhtml?MultivariatePolynomial">MPOLY</a>.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="p:MPOLY([x,y],POLY INT):=(a^2*x-b*y^2+1)^2" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Conversions can be used to re-express such polynomials in terms of the
+other variables. For example, you can first push all the variables into a
+polynomial with integer coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p3','p4']);"
+    value="u:=p::POLY INT" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Now pull out the variables of interest.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p4','p5']);"
+    value="u::MPOLY([a,b],POLY INT)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+<hr/>
+<b>Restriction:</b> Axiom does not allow you to create types where
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a> is
+contained in the coefficient type of 
+<a href="db.xhtml?Polynomial">Polynomial</a>. Therefore, 
+<pre>
+     MPOLY([x,y],POLY INT)
+</pre>
+is legal but this is not:
+<pre>
+     POLY MPOLY([x,y],INT)n
+</pre>
+<hr/>
+Multivariate polynomials may be combined with univariate polynomials to 
+create types with special structures.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="q:UP(x,FRAC MPOLY([y,z],INT)):=(x^2-x*(z+1)/y+2)^2" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+This is a polynomial in x whose coefficients are quotients of polynomials
+in y and z. Use conversions for the structural rearrangements. z does not
+appear in a denominator and so it can be made the main variable.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value="q::UP(z,FRAC MPOLY([x,y],INT))" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Or you can make a multivariate polynomial in x and z whose coefficients
+are fractions in polynomials in y
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p6','p8']);"
+    value="q::MPOLY([x,z],FRAC UP(y,INT))" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+A conversion like 
+<pre>
+  q::MPOLY([x,y],FRAC UP(z,INT))
+</pre>
+is not possible in this example because y appears in the denominator of
+a fraction. As you can see, Axiom provides extraordinary flexibility in
+the manipulation and display of expressions via its conversion facility.
+
+For more information on related topics, see
+<a href="polyspecifictypes1.xhtml">Polynomial</a>,
+<a href="polyspecifictypes2.xhtml">UnivariatePolynomial</a>, and
+<a href="polyspecifictypes4.xhtml">DistributedMultivariatePolynomial</a>.
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="showcall('p9');"
+   value=")show MultivariatePolynomial"/>
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a>.
+<<page foot>>
+@
+
+\subsection{polyspecifictypes4.xhtml}
+<<polyspecifictypes4.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">DistributedMultivariatePolynomial</div>
+  <hr/>
+<a href="db.xhtml?DistributedMultivariatePolynomial">
+DistributedMultivariatePolynomial</a> and
+<a href="db.xhtml?HomogeneousDistributedMultivariatePolynomial">
+HomogeneousDistributedMultivariatePolynomial</a>, abbreviated
+<a href="db.xhtml?DistributedMultivariatePolynomial">DMP</a> and
+<a href="db.xhtml?HomogeneousDistributedMultivariatePolynomial">HDMP</a>
+repspectively, are very similar to 
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a>
+except that they are represented and displayed in a non-recursive manner.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="(d1,d2,d3):DMP([z,y,x],FRAC INT)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The construction 
+<a href="db.xhtml?DistributedMultivariatePolynomial">DMP</a> orders its 
+monomials lexicographically while
+<a href="db.xhtml?HomogeneousDistributedMultivariatePolynomial">HDMP</a>
+orders them by total order refined by reverse lexicographic order.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="d1:=-4*z+4*y^2*x+16*x^2+1" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="d2:=2*z*y^2+4*x+1" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="d3:=2*z*x^2-2*y^2-x" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+These constructors are mostly used in Groebner basis calculations.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5']);"
+    value="groebner [d1,d2,d3]" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="(n1,n2,n3):HDMP([z,y,x],FRAC INT)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p6','p7']);"
+    value="(n1,n2,n3):=(d1,d2,d3)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Note that we get a different Groebner basis when we use the 
+<a href="db.xhtml?HomogeneousDistributedMultivariatePolynomial">HDMP</a>
+polynomials, as expected.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p6','p7','p8']);"
+    value="groebner [n1,n2,n3]" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+<a href="db.xhtml?GeneralDistributedMultivariatePolynomial">
+GeneralDistributedMultivariatePolynomial</a> is somewhat more flexible in
+the sense that as well as accepting a list of variables to specify the
+variable ordering, it also takes a predicate on exponent vectors to specify
+the term ordering. With this polynomial type the user can experiment with 
+the effect of using completely arbitrary term orderings. This flexibility
+is mostly important for algorithms such as Groebner basis calculations
+which can be very sensitive to term orderings.
+
+For more information on related topics, see
+<a href="axbook/section-1.8.xhtml">Polynomials</a>,
+<a href="axbook/section-2.7.xhtml">Conversion</a>,
+<a href="polyspecifictypes1.xhtml">Polynomial</a>,
+<a href="polyspecifictypes2.xhtml">UnivariatePolynomial</a>. and
+<a href="polyspecifictypes3.xhtml">MultivariatePolynomial</a>, 
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="showcall('p9');"
+   value=")show DistributedMultivariatePolynomial"/>
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by
+<a href="db.xhtml?DistributedMultivariatePolynomial">
+DistributedMultivariatePolynomial</a> and
+<<page foot>>
+@
+
+\subsection{polysubstitutions.xhtml}
+<<polysubstitutions.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body onload="resetvars();">
+<<page head>>
+  <div align="center">Polynomial Evaluation and Substitution</div>
+  <hr/>
+The function <a href="dbopeval.xhtml">eval</a> is used to substitute values
+into polynomials. Here's an example of how to use it:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="p:=x^2+y^2" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="eval(p,x=5)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+This example would give you the value of the polynomial p at 5. You can 
+also substitute into polynomials with several variables. First, specify
+the polynomial, then give a list of the bindings of the form
+<pre>
+  variable = value
+</pre>
+For examples:
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="eval(p,[x=a+b,y=c+d])" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Here x was replaced by a+b, and y was replaced by c+d. 
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="q:=x^3+5*x-y^4" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="eval(q,[x=y,y=x])" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Substitution is done "in parallel". That is, Axiom takes q(x,y) and
+returns q(y,x). 
+
+You can also substitute numerical values for some or all of the variables.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p6']);"
+    value="px:=eval(p,y=sin(2.0))" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p6','p7']);"
+    value="eval(px,x=cos(2.0))" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+
+\subsection{puiseuxseries.xhtml}
+<<puiseuxseries.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function').value;
+    myivar = document.getElementById('ivar').value;
+    mypvar = document.getElementById('pvar').value;
+    myevar = document.getElementById('evar').value;
+    myival = document.getElementById('ival').value;
+    mysval = document.getElementById('sval').value;
+    ans = 'series('+myivar+'+->'+myfunc+','+mypvar+'='+myevar+','+
+         myival+'..,'+mysval+')';
+    alert(ans);
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td>
+      Enter the formula for the general coefficient of the series:
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <input type="text" id="function" size="80" tabindex="10"
+       value="(-1)^((3*n-4)/6)/factorial(n-1/3)"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the index variable for your formula:
+     <input type="text" id="ivar" size="10" tabindex="20" value="n"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the power series variable:
+     <input type="text" id="pvar" size="10" tabindex="30" value="x"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the point about which to expand:
+     <input type="text" id="evar" size="10" tabindex="40" value="0"/>
+    </td>
+   </tr>
+  </table>
+For Puiseux Series, the exponent of the power series variable ranges
+from an initial value, an arbitrary rational number, to plus
+infinity; the step size is any positive rational number.
+  <table>
+   <tr>
+    <td>
+     Enter the initial value of the index (a rational number):
+     <input type="text" id="ival" size="10" tabindex="50" value="4/3"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the step size (a positive rational number):
+     <input type="text" id="sval" size="10" tabindex="60" value="2"/>
+    </td>
+   </tr>
+  </table>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+
+@
+
+%%Q
+%%R
+\subsection{reallimit.xhtml}
+<<reallimit.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    var myfunct = myform.expr.value;
+    var myvar = myform.vars.value;
+    var mypoint = "";
+    // decide what the limit point should be
+    var finite = document.getElementById('finite').checked;
+    if (finite == true) 
+      mypoint = document.getElementById('fpoint').value;
+    if (document.getElementById('plus').checked == true) 
+      mypoint = "%plusInfinity";
+    if (document.getElementById('minus').checked == true) 
+      mypoint = "%minusInfinity"; 
+    // decide what the limit statement is
+    if (document.getElementById('both').checked == true) 
+      ans = 'limit('+myform.expr.value+','+myvar+'='+mypoint+')';
+    // note: ignore direction if limit is %plusInfinity
+    if (document.getElementById('right').checked == true) {
+     if (finite == true) {
+       ans = 'limit('+myform.expr.value+','+myvar+'='+mypoint+',"right")';
+     } else {
+       ans = 'limit('+myform.expr.value+','+myvar+'='+mypoint+')';
+     };
+    };
+    // note: ignore direction if limit is %minutInfinity
+    if (document.getElementById('left').checked == true) {
+     if (finite == true) {
+       ans = 'limit('+myform.expr.value+','+myvar+'='+mypoint+',"left")';
+     } else {
+       ans = 'limit('+myform.expr.value+','+myvar+'='+mypoint+')';
+     };
+    };
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <form id="form2">
+   Enter the function you want to compute the limit of:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" 
+     value="x*sin(1/x)"/><br/>
+   Enter the name of the variable:<br/>
+   <input type="text" id="vars" tabindex="20" value="x"/><br/>
+   <input type="radio" id="finite" tabindex="30" checked="checked" 
+     name="point"/>
+    A finite point
+    <input type="text" id="fpoint" tabindex="20" value="0"/><br/>
+   <input type="radio" id="plus" tabindex="40" name="point"/>
+    %plusInfinity<br/>
+   <input type="radio" id="minus" tabindex="50" name="point"/>
+    %minusInfinity<br/><br/><br/>
+   Compute the limit from:<br/>
+   <input type="radio" id="both" tabindex="60" name="direction"
+     checked="checked"/>
+    both directions<br/>
+   <input type="radio" id="right" tabindex="70" name="direction"/>
+    the right<br/>
+   <input type="radio" id="left" tabindex="80" name="direction"/>
+    the left<br/>
+  </form>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+
+@
+\subsection{refsearchpage.xhtml}
+<<refsearchpage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      refsearchpage not implemented
+<<page foot>>
+@
+
+\subsection{releasenotes.xhtml}
+<<releasenotes.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+The <b>November 2007</b> release of Axiom contains
+<ul>
+ <li>
+   New MathML output mode. This mode allows Axiom to output expressions
+   using standard MathML format. This complements the existing ability
+   to output Fortran, IBM script, Latex, OpenMath, and algebra formats.
+ </li>
+ <li>
+   Ninety-five domains have been documented for the )help command. 
+   Type )help to see the list.
+ </li>
+ <li>
+   New regression tests were added to improve the release testing.
+ </li>
+ <li>
+   Hyperdoc can now be restarted. Type )hd
+ </li>
+ <li>
+   Testing has begun against Spiegel's Mathematical Handbook from the
+   Schaum's Outline Series. These tests include Axiom's solutions and
+   have uncovered mistakes in the published text.
+ </li>
+</ul>
+Bug fixes
+<ul>
+ <li>
+   <b>Bug100</b> integrate((z^a+1)^b,z) no longer loops infinitely.
+ </li>
+ <li>
+   <b>Bug101</b> laplace(log(z),z,w) returns "failed" instead of crashing.
+ </li>
+ <li>
+   <b>Bug103</b> solve(z=z,z) returns the correct answer
+ </li>
+</ul>
+Additional information sources:
+<table>
+ <tr>
+  <td>
+   <a href="http://axiom.axiom-developer.org">
+    <b>Online information is available here</b>
+   </a>
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="CHANGELOG.xhtml">
+    The changelog file contains specific file-by-file changes.
+   </a>
+  </td>
+ </tr>
+</table>
+<<page foot>>
+@
+
+\subsection{rootpage.xhtml}
+\begin{verbatim}
+  notangle -R"rootpage.xhtml" bookvol11.pamphlet > rootpage.xhtml
+\end{verbatim}
+<<rootpage.xhtml>>=
+<<standard head>>
+  <style>
+   body { background: url(bigbayou.png) no-repeat; }
+  </style>
+ </head>
+ <body>
+ <center><img src="bitmaps/axiom1.bitmap"/></center>
+  What would you like to do?<br/>
+  <table>
+   <tr>
+    <td>
+     <a href="/home/silver/commandline.xhtml">
+      <b>Any Command</b>
+     </a>
+    </td>
+    <td>Try command line input</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="basiccommand.xhtml">
+      <b>Basic Commands</b>
+     </a>
+    </td>
+    <td>Solve problems by filling in templates</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="jenks.xhtml">
+      <b>Axiom Textbook</b>
+     </a>
+    </td>
+    <td>Read Volume 0 -- The Jenks/Sutor Book</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="tutorial.xhtml">
+      <b>Axiom Tutorial</b>
+     </a>
+    </td>
+    <td>Read Volume 1 -- The Tutorial</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="topreferencepage.xhtml">
+      <b>Reference</b>
+     </a>
+    </td>
+    <td>Scan on-line documentation for AXIOM<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="topicspage.xhtml">
+      <b>Topics</b>
+     </a> 
+    </td>
+    <td> Learn how to use Axiom, by topic<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="man0page.xhtml">
+      <b>Browser</b>
+     </a> 
+    </td>
+    <td> Browse through the AXIOM library<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="topexamplepage.xhtml">
+      <b>Examples</b>
+     </a> 
+    </td>
+    <td> See examples of use of the library<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="topsettingspage.xhtml">
+      <b>Settings</b>
+     </a> 
+    </td>
+    <td> Display and change the system environment<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="releasenotes.xhtml">
+      <b>What's New</b>
+     </a>
+    </td>
+    <td> Enhancements in this version of Axiom<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="axiomfonts.xhtml">
+      <b>Fonts</b>
+     </a>
+    </td>
+    <td> Test Axiom Fonts in your Browser<br/></td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+%%S
+\subsection{series.xhtml}
+<<series.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  Create a series by
+  <table>
+   <tr>
+    <td width="100">
+     <a href="/home/silver/seriesexpand.xhtml">
+      <b>Expansion</b>
+     </a>
+    </td>
+    <td>
+     Expand a function in a series around a point
+    </td>
+   </tr>
+   <tr>
+    <td width="100">
+     <a href="/home/silver/taylorseries.xhtml">
+      <b>Taylor Series</b>
+     </a>
+    </td>
+    <td><br/>
+     Series where the exponent ranges over the integers from a 
+     non-negative integer value to plus infinity by an arbitrary
+     positive integer step size.
+    </td>
+   </tr>
+   <tr>
+    <td width="100">
+     <a href="/home/silver/laurentseries.xhtml">
+      <b>Laurent Series</b>
+     </a>
+    </td>
+    <td><br/>
+     Series where the exponent ranges from an arbitrary integer value
+     to plus infinity by an arbitrary positive integer step size.
+    </td>
+   </tr>
+   <tr>
+    <td width="100">
+     <a href="/home/silver/puiseuxseries.xhtml">
+      <b>Puiseux Series</b>
+     </a>
+    </td>
+    <td><br/>
+     Series where the exponent ranges from an arbitrary rational value
+     to plus infinity by an arbitrary positive rational number step size.
+    </td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{seriesexpand.xhtml}
+<<seriesexpand.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function').value;
+    myvar = document.getElementById('var').value;
+    mypoint = document.getElementById('point').value;
+    ans = 'series('+myfunc+','+myvar+'='+mypoint+')';
+    alert(ans);
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td>
+      What function would you like to expand in a power series?
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <input type="text" id="function" size="80" tabindex="10"
+       value="log(cot(x))"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the power series variable:
+     <input type="text" id="var" size="10" tabindex="20" value="x"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Expand around the point:
+     <input type="text" id="point" size="10" tabindex="30" value="%pi/2"/>
+    </td>
+   </tr>
+  </table>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+
+@
+
+\subsection{solve.xhtml}
+<<solve.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+ What do you want to solve?
+  <table>
+   <tr>
+    <td>
+     <a href="/home/silver/solvelinearequations.xhtml">
+      A System of Linear Equations in equation form
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="/home/silver/solvelinearmatrix.xhtml">
+      A System of Linear Equations in matrix form
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="/home/silver/solvesystempolynomials.xhtml">
+      A System of Polynomial Equations
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="/home/silver/solvesinglepolynomial.xhtml">
+      A Single Polynomial Equation
+     </a>
+    </td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+
+\subsection{solvelinearequations.xhtml}
+<<solvelinearequations.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<![CDATA[
+   function indeps(i) {
+    var ans="";
+    for (var j = 0 ; j < i ; j++) {
+     ans=ans+'x'+j
+     if (j != (i - 1)) ans=ans+',';
+    }
+    return(ans);
+   }
+   function equation(i) {
+    var ans="";
+    for (var j = 0 ; j < i ; j++) {
+     ans=ans+Math.floor(Math.random()*100)+'*x'+j;
+     if (j != (i - 1)) ans=ans+'+';
+    }
+    ans=ans+"="+Math.floor(Math.random()*100);
+    return(ans);
+   }
+   function byelement() {
+      // find out how many rows and columns, must be positive and nonzero
+    var rcnt = parseInt(document.getElementById('rowcnt').value);
+    if (rcnt <= 0) {
+      alert("Rows must be positive and non-zero -- defaulting to 1");
+      rcnt = 1;
+      document.getElementById('rowcnt').value=1;
+      return(false);
+    }
+      // remove the question and the buttons
+    var quest = document.getElementById('question');
+    var clicks = document.getElementById('clicks');
+    quest.removeChild(clicks);
+      // write "Elements"
+    var tbl = document.getElementById('form2');
+    var tblsize = tbl.rows.length;
+    var row = tbl.insertRow(tblsize);
+    var thecell = row.insertCell(0);
+    var tnode = document.createTextNode("Enter the equations:");
+    thecell.appendChild(tnode);
+      // create input boxes for the matrix values
+    for (var i = 0 ; i < rcnt ; i++) {
+     tblsize = tblsize + 1;
+     row = tbl.insertRow(tblsize);
+     thecell = row.insertCell(0);
+     tnode = document.createTextNode('equation '+i+': ');
+     thecell.appendChild(tnode);
+     thecell = row.insertCell(1);
+     tnode = document.createElement('input');
+     tnode.type = 'text';
+     tnode.name = 'a'+i;
+     tnode.id = 'a'+i;
+     tnode.size=50;
+     tnode.value=equation(rcnt);
+     tnode.tabindex=20+i;
+     thecell.appendChild(tnode);
+    }
+      // insert the request for the unknown
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    thecell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the unknowns (comma separated):");
+    thecell.appendChild(tnode);
+    thecell = row.insertCell(1);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'unk';
+    tnode.id = 'unk';
+    tnode.size=10;
+    tnode.value=indeps(rcnt);
+    tnode.tabindex=2000;
+    thecell.appendChild(tnode);
+    tblsize = tblsize + 1;
+      // insert a blank line
+    row = tbl.insertRow(tblsize);
+    thecell = row.insertCell(0);
+    tnode = document.createTextNode("");
+    thecell.appendChild(tnode);
+      // insert the continue button
+    var centnode = document.createElement('center');
+    tbl.parentNode.appendChild(centnode);
+    tnode = document.createElement('input');
+    tnode.type = 'button';
+    tnode.id = 'contbutton';
+    tnode.value = 'Continue';
+    tnode.setAttribute("onclick","makeRequest('');");
+    centnode.appendChild(tnode);
+    return(false);
+   }
+   function commandline(arg) {
+     var rcnt = parseInt(document.getElementById('rowcnt').value);
+     var cmdhead = 'solve(';
+     var cmdtail = '])';
+     var listbody = '[';
+     for (var j = 0 ; j < rcnt ; j++) {
+      var aj = document.getElementById('a'+j).value;
+      listbody = listbody+aj;
+      if (j != (rcnt - 1)) listbody = listbody+',';
+     }
+     listbody = listbody+']';
+     cmdhead = cmdhead+listbody;
+     var ans = cmdhead+',['+document.getElementById('unk').value+cmdtail;
+     alert(ans);
+     return(ans);
+   }
+]]>
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+ <table id="form2">
+  <tr>
+   <td>
+    Enter the number of equations:
+    <input type="text" id="rowcnt" tabindex="10" size="10" value="2"/>
+   </td>
+  </tr>
+ </table>
+ <div id="question">
+  <div id="clicks">
+   <center>
+    <input type="button" value="Continue" onclick="byelement();"/>
+   </center>
+  </div>
+ </div>
+<<answer field>>
+<<page foot>>
+@
+
+\subsection{solvelinearmatrix.xhtml}
+<<solvelinearmatrix.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<![CDATA[
+   function byformula() {
+      // find out how many rows and columns, must be positive and nonzero
+    var rcnt = parseInt(document.getElementById('rowcnt').value);
+     if (rcnt <= 0) {
+      alert("Rows must be positive and non-zero -- defaulting to 1");
+      rcnt = 1;
+      document.getElementById('rowcnt').value=1;
+      return(false);
+     }
+    var ccnt = parseInt(document.getElementById('colcnt').value);
+     if (ccnt <= 0) {
+      alert("Columns must be positive and non-zero -- defaulting to 1");
+      ccnt = 1;
+      document.getElementById('colcnt').value=1;
+      return(false);
+     }
+      // remove the question and the buttons
+    var quest = document.getElementById('question');
+    var clicks = document.getElementById('clicks');
+    quest.removeChild(clicks);
+    var tbl = document.getElementById('form2');
+    var tblsize = tbl.rows.length;
+      // make the row variable question
+      // row variable left cell
+    var row = tbl.insertRow(tblsize);
+    var cell = row.insertCell(0);
+    var tnode = document.createTextNode("Enter the row variable");
+    cell.appendChild(tnode);
+      // row variable right cell
+    cell = row.insertCell(1);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'rowvar';
+    tnode.id = 'rowvar';
+    tnode.size=10;
+    tnode.value='i';
+    tnode.tabindex=21;
+    cell.appendChild(tnode);
+      // make the column variable question
+      // column variable left cell
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the column variable");
+    cell.appendChild(tnode);
+      // column variable right cell
+    cell = row.insertCell(1);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'colvar';
+    tnode.id = 'colvar';
+    tnode.size=10;
+    tnode.tabindex=22;
+    tnode.value='j';
+    cell.appendChild(tnode);
+      // make the formula question
+      // column variable left cell
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the formulas for the elements");
+    cell.appendChild(tnode);
+      // formula input field
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'formula1';
+    tnode.id = 'formula1';
+    tnode.size=50;
+    tnode.value = '1/(x-i-j-1)';
+    tnode.tabindex=23;
+    cell.appendChild(tnode);
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the vector, one per row:");
+    cell.appendChild(tnode);
+      // formula input field
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'vec1';
+    tnode.id = 'vec1';
+    tnode.size=70;
+    tnode.value = '3,5';
+    tnode.tabindex=24;
+    cell.appendChild(tnode);
+      // insert the continue button
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'button';
+    tnode.id = 'contbutton';
+    tnode.value = 'Continue';
+    tnode.setAttribute("onclick","makeRequest('formula');");
+    tnode.tabindex=24;
+    cell.appendChild(tnode);
+    return(false);
+   }
+   function byelement() {
+      // find out how many rows and columns, must be positive and nonzero
+    var rcnt = parseInt(document.getElementById('rowcnt').value);
+     if (rcnt <= 0) {
+      alert("Rows must be positive and non-zero -- defaulting to 1");
+      rcnt = 1;
+      document.getElementById('rowcnt').value=1;
+      return(false);
+     }
+    var ccnt = parseInt(document.getElementById('colcnt').value);
+     if (ccnt <= 0) {
+      alert("Columns must be positive and non-zero -- defaulting to 1");
+      ccnt = 1;
+      document.getElementById('colcnt').value=1;
+      return(false);
+     }
+      // remove the question and the buttons
+    var quest = document.getElementById('question');
+    var clicks = document.getElementById('clicks');
+    quest.removeChild(clicks);
+      // write "Elements"
+    var tbl = document.getElementById('form2');
+    var tblsize = tbl.rows.length;
+    var row = tbl.insertRow(tblsize);
+    var thecell = row.insertCell(0);
+    var tnode = document.createTextNode("Elements");
+    thecell.appendChild(tnode);
+      // create input boxes for the matrix values
+    tblsize = tblsize + 1;
+    for (var i = 0 ; i < rcnt ; i++) {
+     row = tbl.insertRow(tblsize);
+     for (var j = 0 ; j < ccnt ; j++) {
+      thecell = row.insertCell(j);
+      tnode = document.createElement('input');
+      tnode.type = 'text';
+      tnode.name = 'a'+i+'c'+j;
+      tnode.id = 'a'+i+'c'+j;
+      tnode.size=10;
+      tnode.tabindex=20+(i*10)+j;
+      thecell.appendChild(tnode);
+     }
+      thecell = row.insertCell(j);
+      tnode = document.createTextNode(' = ');
+      thecell.appendChild(tnode);
+      thecell = row.insertCell(j+1);
+      tnode = document.createElement('input');
+      tnode.type = 'text';
+      tnode.name = 'k'+i;
+      tnode.id = 'k'+i;
+      tnode.size=10;
+      tnode.value='0';
+      tnode.tabindex=20+(i*10)+j+10;
+      thecell.appendChild(tnode);
+      tblsize = tblsize + 1;
+    }
+      // insert a blank line
+    row = tbl.insertRow(tblsize);
+    thecell = row.insertCell(0);
+    tnode = document.createTextNode("");
+    thecell.appendChild(tnode);
+      // insert the continue button
+    var centnode = document.createElement('center');
+    tbl.parentNode.appendChild(centnode);
+    tnode = document.createElement('input');
+    tnode.type = 'button';
+    tnode.id = 'contbutton';
+    tnode.value = 'Continue';
+    tnode.setAttribute("onclick","makeRequest('element');");
+    centnode.appendChild(tnode);
+    return(false);
+   }
+   function commandline(arg) {
+    if (arg == 'element') {
+     var rcnt = parseInt(document.getElementById('rowcnt').value);
+     var ccnt = parseInt(document.getElementById('colcnt').value);
+      // get the right side vector into list form
+     var vecbody = '[';
+     var homogeneous = true;
+     for (var k = 0 ; k < rcnt ; k++) {
+       var ki = document.getElementById('k'+k).value;
+         // is it homogeneous?
+       if (parseInt(ki) != 0) homogeneous = false;
+       vecbody = vecbody+ki;
+       if (k != (rcnt - 1)) vecbody = vecbody+',';
+     }
+     vecbody = vecbody+']';
+     alert('vecbody='+vecbody);
+       // get the matrix elements, make them into lists of lists
+     var listbody = '';
+     for (var i = 0 ; i < rcnt ; i++) {
+      var listbody = listbody+'[';
+      for (var j = 0 ; j < ccnt ; j++) {
+       var aij = document.getElementById('a'+i+'c'+j).value;
+       listbody = listbody+aij;
+       if (j != (ccnt - 1)) listbody = listbody+',';
+      }
+      listbody = listbody+']';
+      if (i != (rcnt - 1)) listbody = listbody+',';
+     }
+     var matcmd = 'matrix(['+listbody+'])';
+     alert('matcmd='+matcmd);
+      // now we decide whether to compute the nullSpace or solve
+     if (homogeneous == true) 
+       cmd = 'nullSpace('+matcmd+')';
+     else
+       cmd = 'solve('+matcmd+','+vecbody+')';
+     alert(cmd);
+     return(cmd);
+    } else {
+     var rcnt = parseInt(document.getElementById('rowcnt').value);
+     var ccnt = parseInt(document.getElementById('colcnt').value);
+     var vec = '['+document.getElementById('vec1').value+']';
+     var cmdhead = 'matrix([[';
+     var cmdtail = '])';
+     var formula = document.getElementById('formula1').value;
+     var rowv = document.getElementById('rowvar').value;
+     var colv = document.getElementById('colvar').value;
+     var cmd = cmdhead+formula+' for '+colv+' in 1..'+ccnt+']'+
+                               ' for '+rowv+' in 1..'+rcnt+cmdtail;
+     return(cmd);
+    }
+   }
+]]>
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+Enter the size of the matrix:
+<table id="form2">
+ <tr>
+  <td size="10">Rows</td>
+  <td><input type="text" id="rowcnt" tabindex="10" size="10" value="2"/></td>
+ </tr>
+ <tr>
+  <td>Columns</td>
+  <td><input type="text" id="colcnt" tabindex="20" size="10" value="3"/></td>
+ </tr>
+</table>
+<div id="question">
+ <div id="clicks">
+  How would you like to enter the matrix elements?
+  <center>
+   <input type="button" value="By Formula" onclick="byformula();"/>
+   <input type="button" value="By Element" onclick="byelement();"/>
+  </center>
+ </div>
+</div>
+<<answer field>>
+<<page foot>>
+@
+
+
+@
+
+\subsection{solvesinglepolynomial.xhtml}
+<<solvesinglepolynomial.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      solvesinglepolynomial.xhtml not implemented
+<<page foot>>
+
+@
+
+\subsection{solvesystempolynomials.xhtml}
+<<solvesystempolynomials.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+     solvesystempolynomials.xhtml  not implemented
+<<page foot>>
+
+@
+
+\subsection{summation.xhtml}
+<<summation.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    return('sum('+myform.expr.value+','+myform.vars.value+'='+
+                  myform.lower.value+'..'+myform.upper.value+')');
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <form id="form2">
+   Enter the function you want to sum:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" value="i^3"/><br/>
+   Enter the summation index:
+   <input type="text" id="vars" tabindex="20" value="i" size="5"/><br/>
+   Enter the limits of the sum: From:
+   <input type="text" id="lower" tabindex="30" value="1" size="5"/>
+   To:
+   <input type="text" id="upper" tabindex="40" value="n" size="5"/><br/>
+  </form>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+@
+
+\subsection{systemvariables.xhtml}
+<<systemvariables.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      systemvariables not implemented
+<<page foot>>
+@
+
+
+%%T
+
+\subsection{taylorseries.xhtml}
+<<taylorseries.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function').value;
+    myivar = document.getElementById('ivar').value;
+    mypvar = document.getElementById('pvar').value;
+    myevar = document.getElementById('evar').value;
+    myival = document.getElementById('ival').value;
+    mysval = document.getElementById('sval').value;
+    ans = 'series('+myivar+'+->'+myfunc+','+mypvar+'='+myevar+','+
+         myival+'..,'+mysval+')';
+    alert(ans);
+    return(ans);
+   }
+<<showfullanswer>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td>
+      Enter the formula for the general coefficient of the series:
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <input type="text" id="function" size="80" tabindex="10"
+       value="1/factorial(i)"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the index variable for your formula:
+     <input type="text" id="ivar" size="10" tabindex="20" value="i"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the power series variable:
+     <input type="text" id="pvar" size="10" tabindex="30" value="x"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the point about which to expand:
+     <input type="text" id="evar" size="10" tabindex="40" value="0"/>
+    </td>
+   </tr>
+  </table>
+For Taylor Series, the exponent of the power series variable ranges
+from an initial value, an arbitrary non-negative integer, to plus
+infinity; the step size is any positive integer.
+  <table>
+   <tr>
+    <td>
+     Enter the initial value of the index (an integer):
+     <input type="text" id="ival" size="10" tabindex="50" value="0"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the step size (a positive integer):
+     <input type="text" id="sval" size="10" tabindex="60" value="1"/>
+    </td>
+   </tr>
+  </table>
+<<continue button>>
+<<answer field>>
+<<page foot>>
+
+@
+
+\subsection{topexamplepage.xhtml}
+<<topexamplepage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td><a href="graphicsexamplepage.xhtml"><b>Graphics</b></a></td>
+    <td>Examples of Axiom Graphics</td>
+   </tr>
+   <tr>
+    <td><a href="examplesexposedpage.xhtml"><b>Domains</b></a></td>
+    <td>Examples of use of Axiom domains and packages</td>
+   </tr>
+   <tr>
+    <td><a href="examplecoverpage.xhtml"><b>Operations</b></a></td>
+    <td>Examples of Axiom Operations, by topic</td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{topicspage.xhtml}
+<<topicspage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td><a href="numberspage.xhtml"><b>Numbers</b></a></td>
+    <td>A look at different types of numbers</td>
+   </tr>
+   <tr>
+    <td><a href="polynomialpage.xhtml"><b>Polynomials</b></a></td>
+    <td>Polynomials in Axiom</td>
+   </tr>
+   <tr>
+    <td><a href="functionpage.xhtml"><b>Functions</b></a></td>
+    <td>Built-in and user-defined functions</td>
+   </tr>
+   <tr>
+    <td><a href="equationpage.xhtml"><b>Solving Equations</b></a></td>
+    <td>Facilities for solving equations</td>
+   </tr>
+   <tr>
+    <td><a href="calculuspage.xhtml"><b>Calculus</b></a></td>
+    <td>Using Axiom to do calculus</td>
+   </tr>
+   <tr>
+    <td><a href="linalgpage.xhtml"><b>Linear Algebra</b></a></td>
+    <td>Axiom's linear algebra facilities</td>
+   </tr>
+   <tr>
+    <td><a href="graphicspage.xhtml"><b>Graphics</b></a></td>
+    <td>Axiom's graphics facilities</td>
+   </tr>
+   <tr>
+    <td><a href="algebrapage.xhtml"><b>Algebra</b></a></td>
+    <td>Axiom's abstract algebra facilities</td>
+   </tr>
+   <tr>
+    <td><a href="cryptopage.xhtml"><b>Cryptography</b></a></td>
+    <td>Alasdair McAndrew's Crytography Course Notes</td>
+   </tr>
+   <tr>
+    <td><a href="ocwmit18085.xhtml"><b>Mathematical Methods</b></a></td>
+    <td>MIT 18-08 Mathematical Methods for Engineers Course Notes</td>
+   </tr>
+   <tr>
+    <td><a href="cats.xhtml"><b>CATS</b></a></td>
+    <td>Computer Algebra Test Suite</td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{topreferencepage.xhtml}
+<<topreferencepage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+  <table>
+   <tr>
+    <td><a href="usersguidepage.xhtml"><b>AXIOM Book</b></a></td>
+    <td>The on-line version of the Jenks/Sutor book.</td>
+   </tr>
+   <tr>
+    <td><a href="aldorusersguidepage.xhtml"><b>Aldor Guide</b></a></td>
+    <td>The on-line Aldor Users Guide.</td>
+   </tr>
+   <tr>
+    <td><a href="foundationlibrarydocpage.xhtml"><b>NAG Library</b></a></td>
+    <td>The on-line NAG Library documentation.</td>
+   </tr>
+   <tr>
+    <td><a href="topicspage.xhtml"><b>Topics</b></a></td>
+    <td>Learn how to use Axiom, by topic.</td>
+   </tr>
+   <tr>
+    <td><a href="uglangpage.xhtml"><b>Language</b></a></td>
+    <td>Introduction to the Axiom language.</td>
+   </tr>
+   <tr>
+    <td><a href="examplesexposedpage.xhtml"><b>Examples</b></a></td>
+    <td>Examples for exposed domains and packages</td>
+   </tr>
+   <tr>
+    <td><a href="ugsyscmdpage.xhtml"><b>Commands</b></a></td>
+    <td>System commands that control your workspace.</td>
+   </tr>
+   <tr>
+    <td><a href="operations.xhtml"><b>Operations</b></a></td>
+    <td>A guide to useful operations</td>
+   </tr>
+   <tr>
+     <td><a href="systemvariables.xhtml"><b>System Variables</b></a></td>
+    <td>View and change a system-defined variable</td>
+   </tr>
+   <tr>
+    <td><a href="glossarypage.xhtml"><b>Glossary</b></a></td>
+    <td>A glossary of Axiom terms.</td>
+   </tr>
+   <tr>
+    <td><a href="htxtoppage.xhtml"><b>HyperDoc</b></a></td>
+    <td>How to write your own HyperDoc pages.</td>
+   </tr>
+   <tr>
+    <td><a href="refsearchpage.xhtml"><b>Search</b></a></td>
+    <td>Reference pages for occurrences of a string.</td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{topsettingspage.xhtml}
+<<topsettingspage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+System commands are used to perform Axiom environment
+management and change Axiom system variables.
+  <hr/>
+  <table>
+   <tr>
+    <td><a href="ugsyscmdpage.xhtml"><b>Commands</b></a></td>
+    <td>System commands that control your environment.</td>
+   </tr>
+   <tr>
+    <td><a href="htSystemVariables.js"><b>Settings</b></a></td>
+    <td>Change an Axiom variable.</td>
+   </tr>
+  </table>
+<<page foot>>
+@
+
+\subsection{tutorial.xhtml}
+<<tutorial.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      tutorial not implemented
+<<page foot>>
+@
+
+%%U
+\subsection{uglangpage.xhtml}
+<<uglangpage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      uglangpage not implemented
+<<page foot>>
+@
+
+\subsection{ugsyscmdpage.xhtml}
+<<ugsyscmdpage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      ugsyscmdpage not implemented
+<<page foot>>
+@
+
+
+\subsection{usersguidepage.xhtml}
+<<usersguidepage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+      usersguidepage not implemented
+<<page foot>>
+@
+
+
+%%V
+%%W
+%%X
+%%Y
+%%Z
+\subsection{rcm3720.input}
+<<rcm3720.input>>=
+str2lst(str) == [ord(str.i)-65 for i in 1..#str]
+
+lst2str(lst) == concat [char(lst.i+65)::String for i in 1..#lst]
+
+str2num(str) ==
+  local strlst
+  strlst:=[ord(str.i) for i in 1..#str]
+  return wholeRadix(strlst)$RadixExpansion(256)::INT
+
+num2str(n) ==
+  local tmp
+  tmp:=wholeRagits(n::RadixExpansion(256))
+  return concat [char(tmp.i)::String for i in 1..#tmp]
+
+superIncreasing?(lst) ==
+  reduce(/\,[lst.i>reduce(+,[lst.j for j in 1..i-1]) for i in 2..#lst])
+
+siSolve(lst,n) ==
+  local res,m,i
+  if not superIncreasing?(lst) then error "The list is not super-increasing"
+  m := n
+  res := [0 for i in 1..#lst]
+  for i in #lst..1 by -1 repeat
+    if lst.i <= m then
+      res.i := 1
+      m := m - lst.i
+      if m = 0 then return res
+  error "Unsolvable"
+
+subsetsum(L:List(INT),N:INT):List(INT) ==
+  local x,Y
+  if N=0 then return([])
+  if N<0 or #L=0 then return([-1])
+  for x in L repeat
+    Y:=subsetsum(remove(x,L),N)
+    if Y~=[-1] then return(Y)
+    Y:=subsetsum(remove(x,L),N-x)
+    if Y~=[-1] then return(cons(x,Y))
+    return([-1])
+@
+
+\subsection{signatures.txt}
+<<signatures.txt>>=
+RSA --- 
+n = 2^137-1 e = 17 
+message = "This is my text." 
+signature = 68767027465671577191073128495082795700768 
+n = (6^67-1)/5 e = 17 
+message = "Please feed my dog!" 
+signature = 1703215098456351993605104919259566435843590978852633 
+
+Rabin ----- 
+n = (3^59-1)/2 
+message = "Leave now." 
+signature = 
+n = (7^47-1)/6 
+message = "Arrive Thursday." 
+signature = 189479723122534414019783447271411895509 
+
+El Gamal -------- 
+p = next prime after 2^150 
+a = 2 
+B = 1369851585774063312693119161120024351761244461 
+message = "Leave AT ONCE!" 
+signature r = 1389080525305754392111976715361069425353578198 
+s = 1141326468070168229982976133801721430306004477 
+
+DSS --- 
+p = next prime after 2^170 
+q = 143441505468590696209 
+g = 672396402136852996799074813867123583326389281120278 
+B = 1394256880659595564848116770226045673904445792389839 
+message = "Now's your chance!" 
+signature r = 64609209464638355801 
+s = 13824808741200493330 
+@
+
+\subsection{strang.input}
+<<strang.input>>=
+rowmatrix(r:List(Fraction(Integer))):Matrix(Fraction(Integer)) ==
+ [r]::Matrix(Fraction(Integer))
+
+columnmatrix(c:List(Fraction(Integer))):Matrix(Fraction(Integer)) ==
+ [[i] for i in c]::Matrix(Fraction(Integer))
+
+k(n) == 
+ M := diagonalMatrix([2 for i in 1..n]) 
+ for i in 1..n-1 repeat M(i,i+1):=-1 
+ for i in 1..n-1 repeat M(i+1,i):=-1 
+ M::SquareMatrix(n,Fraction(Integer))
+
+t(n) == 
+ M:=k(n)
+ N:=M::Matrix(Fraction(Integer)) 
+ qsetelt!(N,1,1,1) 
+ N::SquareMatrix(n,Fraction(Integer))
+
+b(n) == 
+ M:=k(n)
+ N:=M::Matrix(Fraction(Integer)) 
+ qsetelt!(N,1,1,1) 
+ qsetelt!(N,n,n,1)
+ N::SquareMatrix(n,Fraction(Integer))
+
+K:=k(3)
+T:=t(3)
+B:=b(3)
+
+
+@
+\subsection{bitmaps/axiom1.bitmap}
+<<axiom1.bitmap>>=
+#define axiom_width 270
+#define axiom_height 100
+static char axiom_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x80, 0x3f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xf2, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x92, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x02,
+   0x00, 0xe0, 0x01, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0xe0,
+   0x00, 0xc0, 0x7f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0xd2, 0x02, 0x00, 0xe0,
+   0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0x03,
+   0xe0, 0x07, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0x01, 0xf8,
+   0xff, 0x03, 0x00, 0xf8, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
+   0xff, 0x3f, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0x01, 0xf8, 0x07,
+   0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x01, 0xfe, 0xff, 0x07,
+   0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f,
+   0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xfd, 0xff, 0x07, 0x00, 0xe0,
+   0xff, 0xff, 0x7f, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x0f, 0x00, 0xff,
+   0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x8f, 0xff, 0xff, 0xe0, 0xff,
+   0x7f, 0x00, 0x80, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0x00, 0xf0, 0xff, 0xff,
+   0xff, 0x80, 0xff, 0xff, 0xc0, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x07,
+   0x00, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0xf0, 0xff, 0x81, 0xff, 0x3f, 0x00,
+   0x00, 0xff, 0x07, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xc3,
+   0xff, 0xff, 0xf0, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00,
+   0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x01, 0xff, 0x3f, 0x00, 0x00, 0xfe,
+   0x03, 0xe0, 0xff, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff,
+   0xf8, 0xff, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0,
+   0x0f, 0x00, 0xc0, 0xff, 0x01, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x01, 0xc0,
+   0xff, 0x03, 0x80, 0xff, 0x00, 0xfc, 0xff, 0x07, 0xf8, 0xff, 0xfc, 0x01,
+   0xff, 0x3f, 0xfe, 0x80, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00,
+   0xc0, 0xff, 0x03, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x80, 0xff, 0x03,
+   0xc0, 0x3f, 0x00, 0xe0, 0xff, 0x0f, 0xe0, 0xff, 0x3f, 0x00, 0xfe, 0xbf,
+   0x3f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x80, 0xff,
+   0x03, 0xf8, 0x3f, 0x00, 0x80, 0x7f, 0x00, 0x80, 0xff, 0x03, 0xe0, 0x0f,
+   0x00, 0x80, 0xff, 0x1f, 0xe0, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x0f, 0x00,
+   0xfc, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xff, 0x03, 0xf8,
+   0x7f, 0x00, 0x80, 0x3f, 0x00, 0x80, 0xff, 0x03, 0xf0, 0x0f, 0x00, 0x00,
+   0xff, 0x1f, 0xe0, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x07, 0x00, 0xfc, 0x1f,
+   0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xff, 0x03, 0xf0, 0xff, 0x00,
+   0xc0, 0x1f, 0x00, 0x80, 0xff, 0x03, 0xf8, 0x07, 0x00, 0x00, 0xfe, 0x3f,
+   0xe0, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf8, 0x3f, 0x00, 0x00,
+   0x00, 0x78, 0x00, 0x00, 0x00, 0xff, 0x03, 0xe0, 0xff, 0x00, 0xc0, 0x0f,
+   0x00, 0x80, 0xff, 0x03, 0xfc, 0x03, 0x00, 0x00, 0xfc, 0x3f, 0xe0, 0xff,
+   0x03, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x3c,
+   0x00, 0x00, 0x00, 0xff, 0x03, 0xc0, 0xff, 0x01, 0xe0, 0x0f, 0x00, 0x80,
+   0xff, 0x03, 0xfc, 0x03, 0x00, 0x00, 0xfc, 0x3f, 0xe0, 0xff, 0x01, 0x00,
+   0xf0, 0xff, 0x01, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
+   0x00, 0xff, 0x03, 0xc0, 0xff, 0x03, 0xf0, 0x07, 0x00, 0x80, 0xff, 0x03,
+   0xfe, 0x01, 0x00, 0x00, 0xf8, 0x7f, 0xe0, 0xff, 0x01, 0x00, 0xf0, 0xff,
+   0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+   0x03, 0x80, 0xff, 0x07, 0xf8, 0x01, 0x00, 0x80, 0xff, 0x03, 0xff, 0x01,
+   0x00, 0x00, 0xf8, 0x7f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00,
+   0xff, 0x0f, 0xf8, 0x01, 0x00, 0x80, 0xff, 0x03, 0xff, 0x01, 0x00, 0x00,
+   0xf0, 0x7f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xfe, 0x1f,
+   0xf8, 0x00, 0x00, 0x80, 0xff, 0x83, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff,
+   0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xfc, 0x3f, 0x7e, 0x00,
+   0x00, 0x80, 0xff, 0xc3, 0xff, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xe0, 0xff,
+   0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x7f, 0x3e, 0x00, 0x00, 0x80,
+   0xff, 0xc3, 0xff, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xe0, 0xff, 0x00, 0x00,
+   0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xff, 0x03, 0x00, 0xf8, 0x7f, 0x3f, 0x00, 0x00, 0x80, 0xff, 0xc3,
+   0xff, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f,
+   0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
+   0x03, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xff, 0xc3, 0xff, 0x00,
+   0x00, 0x00, 0xe0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00,
+   0xe0, 0xff, 0x0f, 0x00, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00,
+   0xc0, 0xff, 0xe1, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f,
+   0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xc0, 0xff,
+   0x07, 0x00, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff,
+   0xe1, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00,
+   0x00, 0x00, 0xe0, 0xff, 0x7f, 0xff, 0x03, 0x00, 0x80, 0xff, 0x07, 0x00,
+   0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe1, 0xff,
+   0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00,
+   0xfc, 0xff, 0x07, 0xff, 0x03, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x80,
+   0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe1, 0xff, 0x00, 0x00,
+   0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f,
+   0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x80, 0xff, 0xe3,
+   0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f,
+   0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x07, 0x00, 0xff,
+   0x03, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x00,
+   0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xff, 0x03, 0x00,
+   0x00, 0xfe, 0x1f, 0x00, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00,
+   0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f,
+   0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff,
+   0x3f, 0x00, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff,
+   0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00,
+   0x00, 0xf8, 0x3f, 0x00, 0x00, 0xff, 0x03, 0x00, 0x80, 0xff, 0x7f, 0x00,
+   0x00, 0x80, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff,
+   0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0xfc,
+   0x1f, 0x00, 0x00, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x80,
+   0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00,
+   0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00,
+   0x00, 0xff, 0x03, 0x00, 0xc0, 0xef, 0xff, 0x01, 0x00, 0x80, 0xff, 0xe3,
+   0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f,
+   0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff,
+   0x03, 0x00, 0xe0, 0xc7, 0xff, 0x01, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x01,
+   0x00, 0x00, 0xc0, 0xff, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x1f, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00,
+   0xf0, 0x83, 0xff, 0x07, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x01, 0x00, 0x00,
+   0xc0, 0x7f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f,
+   0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x83,
+   0xff, 0x0f, 0x00, 0x80, 0xff, 0xe3, 0xff, 0x01, 0x00, 0x00, 0xc0, 0x7f,
+   0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00,
+   0x80, 0xff, 0x07, 0x00, 0x80, 0xff, 0x03, 0x00, 0xf8, 0x01, 0xff, 0x0f,
+   0x00, 0x80, 0xff, 0xc3, 0xff, 0x01, 0x00, 0x00, 0xc0, 0x3f, 0xe0, 0xff,
+   0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff,
+   0x03, 0x00, 0x80, 0xff, 0x03, 0x00, 0xfc, 0x00, 0xfe, 0x1f, 0x00, 0x80,
+   0xff, 0xc3, 0xff, 0x03, 0x00, 0x00, 0xe0, 0x3f, 0xe0, 0xff, 0x00, 0x00,
+   0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00,
+   0x80, 0xff, 0x03, 0x00, 0xfe, 0x00, 0xfc, 0x3f, 0x00, 0x80, 0xff, 0xc3,
+   0xff, 0x03, 0x00, 0x00, 0xe0, 0x3f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f,
+   0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0xc0, 0xff,
+   0x03, 0x00, 0x7f, 0x00, 0xf8, 0x7f, 0x00, 0x80, 0xff, 0xc3, 0xff, 0x07,
+   0x00, 0x00, 0xe0, 0x1f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x03, 0x80,
+   0x3f, 0x00, 0xf8, 0x7f, 0x00, 0x80, 0xff, 0x83, 0xff, 0x07, 0x00, 0x00,
+   0xf0, 0x0f, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f,
+   0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0xe0, 0xff, 0x03, 0x80, 0x1f, 0x00,
+   0xf0, 0xff, 0x00, 0x80, 0xff, 0x83, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0x0f,
+   0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00,
+   0x80, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x03, 0xc0, 0x1f, 0x00, 0xf0, 0xff,
+   0x01, 0x80, 0xff, 0x83, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0xe0, 0xff,
+   0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff,
+   0x07, 0x00, 0xf8, 0xff, 0x03, 0xe0, 0x0f, 0x00, 0xe0, 0xff, 0x03, 0x80,
+   0xff, 0x03, 0xff, 0x3f, 0x00, 0x00, 0xf8, 0x03, 0xe0, 0xff, 0x00, 0x00,
+   0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x0f, 0x00,
+   0xf8, 0xff, 0x03, 0xf0, 0x07, 0x00, 0xc0, 0xff, 0x07, 0x80, 0xff, 0x03,
+   0xfe, 0x7f, 0x00, 0x00, 0xfc, 0x01, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f,
+   0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x1f, 0x00, 0xfe, 0xff,
+   0x07, 0xf8, 0x07, 0x00, 0xc0, 0xff, 0x0f, 0x80, 0xff, 0x03, 0xfe, 0xff,
+   0x00, 0x00, 0xfe, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00,
+   0xf8, 0x3f, 0x00, 0x00, 0x80, 0xff, 0x1f, 0x00, 0x7f, 0xff, 0x0f, 0xf8,
+   0x07, 0x00, 0x80, 0xff, 0x1f, 0x80, 0xff, 0x03, 0xfc, 0xff, 0x01, 0x00,
+   0x7f, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f,
+   0x00, 0x00, 0x00, 0xff, 0xff, 0xf1, 0x1f, 0xfe, 0xff, 0xff, 0x03, 0x00,
+   0x80, 0xff, 0x3f, 0xc0, 0xff, 0x07, 0xf8, 0xff, 0x1f, 0xf0, 0x3f, 0x00,
+   0xf0, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00,
+   0x00, 0xfe, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff,
+   0x7f, 0xc0, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff,
+   0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xfc,
+   0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xe0,
+   0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x03, 0x00,
+   0xf8, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0x01, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xfb, 0xff, 0x3f,
+   0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfc, 0xff,
+   0x07, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0xfc,
+   0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff,
+   0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0x7f, 0x80,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0xff,
+   0x3f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0x3f,
+   0x00, 0xc0, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0x7f, 0xc0, 0xff, 0xff,
+   0x3f, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x00, 0x1f, 0x00,
+   0xfc, 0x0f, 0xfe, 0xff, 0xcf, 0xff, 0x03, 0xfc, 0xff, 0x0f, 0x00, 0xe0,
+   0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0x00, 0xf8, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+   0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00};
+@
+
+\section{License}
+<<license>>=
+--Copyright (c) 2007 Arthur C. Ralfs
+--All rights reserved.
+--
+--Redistribution and use in source and binary forms, with or without
+--modification, are permitted provided that the following conditions are
+--met:
+--
+--    - Redistributions of source code must retain the above copyright
+--      notice, this list of conditions and the following disclaimer.
+--
+--    - Redistributions in binary form must reproduce the above copyright
+--      notice, this list of conditions and the following disclaimer in
+--      the documentation and/or other materials provided with the
+--      distribution.
+--
+--    - Neither the name of Arthur C. Ralfs nor the
+--      names of its contributors may be used to endorse or promote products
+--      derived from this software without specific prior written permission.
+--
+--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+--IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+--TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+--PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+--OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+--EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+--PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+--PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+--LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+--NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+@
+
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
diff --git a/src/axiom-website/hyperdoc/calculus.xhtml b/src/axiom-website/hyperdoc/calculus.xhtml
new file mode 100644
index 0000000..6cb3fcf
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calculus.xhtml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td>
+     <a href="differentiate.xhtml">
+      <b>Differentiate</b>
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td><a href="indefiniteintegral.xhtml">
+      <b>Do an Indefinite Integral</b></a></td>
+   </tr>
+   <tr>
+    <td><a href="definiteintegral.xhtml">
+     <b>Do a Definite Integral</b></a></td>
+   </tr>
+   <tr>
+    <td><a href="basiclimit.xhtml"><b>Find a limit</b></a></td>
+   </tr>
+   <tr>
+    <td><a href="summation.xhtml">
+      <b>Do a summation</b>
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td><a href="(|bcProduct|).xhtml"><b>Compute a product</b></a></td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calculuspage.xhtml b/src/axiom-website/hyperdoc/calculuspage.xhtml
new file mode 100644
index 0000000..0f5320e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calculuspage.xhtml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td>
+     <a href="callimits.xhtml">Limits</a>
+    </td>
+    <td>
+     Compute limits of functional expressions
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="calderivatives.xhtml">Derivatives</a>
+    </td>
+    <td>
+     Compute derivatives and partial derivatives
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="calintegrals.xhtml">Integrals</a>
+    </td>
+    <td>
+     Introduction to Axiom's symbolic integration
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="calmoreintegrals.xhtml">More Integrals</a>
+    </td>
+    <td>
+     More information about symbolic integration
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="callaplace.xhtml">Laplace</a>
+    </td>
+    <td>
+     Computing Laplace transforms
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="calseries.xhtml">Series</a>
+    </td>
+    <td>
+     Compute series expansions of expressions
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="equdifferential.xhtml">Differential Equations</a>
+    </td>
+    <td>
+     Solve differential equations
+    </td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calderivatives.xhtml b/src/axiom-website/hyperdoc/calderivatives.xhtml
new file mode 100644
index 0000000..1bdf4a2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calderivatives.xhtml
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Derivatives</div>
+  <hr/>
+Use the Axiom function <a href="dbopd.xhtml">D</a> to differentiate an
+expression. 
+
+To find the derivative of an expression f with respect to a variable x,
+enter D(f,x).
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=exp exp x" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="D(f,x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+An optional third argument n in <a href="dbopd.xhtml">D</a> asks Axiom for 
+the nth derivative of f. This finds the fourth derivative of f with 
+respect to x.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="D(f,x,4)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+You can also compute partial derivatives by specifying the order of 
+differentiation.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="g:=sin(x^2+y)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="D(g,y)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p4','p6']);"
+    value="D(g,[y,y,x,x])" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Axiom can manipulate the derivatives (partial or iterated) of expressions
+involving formal operators. All the dependencies must be explicit. This
+returns 0 since F (so far) does not explicitly depend on x.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="D(F,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Suppose that we have F a function of x, y, and z, where x and y are 
+themselves functions of z. Start by declaring that F, x, and y are
+operators.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="F:=operator 'F; x:=operator 'x; y:=operator 'y" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+You can use F, x, and y in expressions.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p8','p9']);"
+    value="a:=F(x z, y z, z^2)+x y(z+1)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+Differentiate formally with respect to z. The formal derivatives appearing
+in dadz are not just formal symbols, but do represent derivatives of x, y, and
+F.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p8','p9','p10']);"
+    value="dadz:=D(a,z)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+You can evaluate the above for particular functional values of F, x, and y.
+If x(z) is exp(z) and y(z) is log(z+1), then this evaluates dadz.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p8','p9','p10','p11']);"
+    value="eval(eval(dadz,'x,z+->exp z),'y,z+->log(z+1))" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+You obtain the same result by first evaluating a and then differentiating.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p8','p9','p10','p12']);"
+    value="m:=eval(eval(a,'x,z+->exp z),'y,z+->log(z+1))" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p8','p9','p10','p12','p13']);"
+    value="D(m,z)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calintegrals.xhtml b/src/axiom-website/hyperdoc/calintegrals.xhtml
new file mode 100644
index 0000000..0287f01
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calintegrals.xhtml
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Integration</div>
+  <hr/>
+Axiom has extensive library facilities for integration.
+
+The first example is the integration of a fraction with a denominator that
+factors into a quadratic and a quartic irreducible polynomial. The usual
+partial fraction approach used by most other computer algebra systems either
+fails or introduces expensive unneeded algebraic numbers.
+
+We use a factorization-free algorithm.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="integrate((x^2+2*x+1)/((x+1)^6+1),x)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+When real parameters are present, the form of the integral can depend on the
+signs of some expressions.
+
+Rather than query the user or make sign assumptions, Axiom returns all
+possible answers.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="integrate(1/(x^2+a),x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The <a href="dbopintegrate.xhtml">integrate</a> operation generally assumes
+that all parameters are real. The only exception is when the integrand has
+complex valued quantities.
+
+If the parameter is complex instead of real, then the notion of sign is
+undefined and there is a unique answer. You can request this answer by
+"prepending" the word "complex" to the command name.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="complexIntegrate(1/(x^2+a),x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The following two examples illustrate the limitations of table-based
+approaches. The two integrands are very similar, but the answer to one of
+them requires the addition of two new algebraic numbers.
+
+This is the easy one. The next one looks very similar but the answer is
+much more complicated.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="integrate(x^3/(a+b*x)^(1/3),x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Only an algorithmic approach is guaranteed to find what new constants must
+be added in order to find a solution.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="integrate(1/(x^3*(a+b*x)^(1/3)),x)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Some computer algebra systems use heuristics or table-driven approaches to
+integration. When these systems cannot determine the answer to an
+integration problem, they reply "I don't know". Axiom uses an algorithm
+for integration that conclusively proves that an integral cannot be expressed
+in terms of elementary functions.
+
+When Axiom returns an integral sign, it has proved that no answer exists as
+an elementary function.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="integrate(log(1+sqrt(a*x+b))/x,x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Axiom can handle complicated mixed functions much beyond what you can find
+in tables. Whenever possible, Axiom tries to express the answer using the
+functions present in the integrand.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b))/(sqrt(x+b)*(x+cosh(1+sqrt(x+b)))),x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+A strong structure-checking algorithm in Axiom finds hidden algebraic 
+relationships between functions.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="integrate(tan(atan(x)/3),x)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+The discovery of this algebraic relationship is necessary for correct
+integration of this function. Here are the details:
+<ol>
+ <li>
+  If x=tan(t) and g=tan(t/3) then the following algebraic relationship is true:
+<pre>
+      g^3 - 3xg^2 - 3g + x = 0    
+</pre>
+ </li>
+ <li>
+  Integrate g using this algebraic relation; this produces:
+<pre>
+((24g^2-8)log(3g^2-1) + (81x^2+24)g^2 + 72xg - 27x^2 - 16) / (54g^2 - 18)
+</pre>
+ </li>
+ <li>
+  Rationalize the denominator, producing:
+<pre>
+     (8log(3g^2-1) - 3g^2 + 18xg + 16)/18
+</pre>
+  Replace g by the initial definition g=tan(arctan(x)/3) to produce the
+final result.
+ </li>
+</ol>
+This is an example of a mixed function where the algebraic layer is over
+the transcendental one.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="integrate((x+1)/(x*(x+log x)^(3/2)),x)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+While incomplete for non-elementary functions, Axiom can handle some of them.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="integrate(exp(-x^2)*erf(x)/(erf(x)^3-erf(x)^2-erf(x)+1),x)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+More examples of Axiom's integration capabilities are discussed in
+<a href="axbook/section-8.8.xhtml">Integration</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/callaplace.xhtml b/src/axiom-website/hyperdoc/callaplace.xhtml
new file mode 100644
index 0000000..0ed79e5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/callaplace.xhtml
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Laplace Transforms</div>
+  <hr/>
+Axiom can compute some forward Laplace transforms, mostly of elementary
+functions not involving logarithms, although some cases of special functions
+are handled. To compute the forward Laplace transform of F(t) with respect
+to t and express the result as f(s), issue the command laplace(F(t),t,s).
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="laplace(sin(a*t)*cosh(a*t)-cos(a*t)*sinh(a*t),t,s)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Here are some other non-trivial examples.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="laplace((exp(a*t)-exp(b*t))/t,t,s)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="laplace(2/t*(1-cos(a*t)),t,s)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="laplace(exp(-a*t)*sin(b*t)/b^2,t,s)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="laplace((cos(a*t)-cos(b*t))/t,t,s)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Axiom also knows about a few special functions.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="laplace(exp(a*t+b)*Ei(c*t),t,s)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="laplace(a*Ci(b*t)+c*Si(d*t),t,s)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+When Axiom does not know about a particular transform, it keeps it as a
+formal transform in the answer.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="laplace(sin(a*t)-a*t*cos(a*t)+exp(t^2),t,s)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/callimits.xhtml b/src/axiom-website/hyperdoc/callimits.xhtml
new file mode 100644
index 0000000..8a1632d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/callimits.xhtml
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Limits</div>
+  <hr/>
+To compute a limit, you must specify a functional expression, a variable,
+and a limiting value for that variable. If you do not specify a direction,
+Axiom attempts to compute a two-sided limit.
+
+Issue this to compute the limit of (x^2-2*x+2)/(x^2-1) as x approaches 1.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="limit((x^2-3*x+2)/(x^2-1),x=1)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Sometimes the limit when approached from the left is different from the
+limit from the right and, in this case, you may wish to ask for a one-sided
+limit. Also, if you have a function that is only defined on one side of a
+particular value, you can compute a one-sided limit.
+
+The function log(x) is only defined to the right of zero, that is, for
+x>0. Thus, when computing limits of functions involving log(x), you probably
+want a "right-hand" limit.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value='limit(x*log(x),x=0,"right")' />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+When you do not specify "right" or "left" as the optional fourth argument,
+<a href="dboplimit.xhtml">limit</a> tries to compute a two-sided limit.
+Here the limit from the left does not exist, as Axiom indicates when you
+try to take a two-sided limit.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="limit(x*log(x),x=0)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+A function can be defined on both sides of a particular value, but tend to
+different limits as its variable approaches that value from the left and
+from the right. We can construct an example of this as follows: Since 
+sqrt(y^2) is simply the absolute value of y, the function sqrt(y^2)/y is
+simply the sign (+1 or -1) of the nonzero real number y. Therefore,
+sqrt(y^2)/y=-1 for y&#60;0 and sqrt(y^2)/y=+1 for y>0. This is what happens 
+when we take the limit at y=0. The answer returned by Axiom gives both a
+"left-handed" and a "right-handed" limit.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="limit(sqrt(y^2)/y,y=0)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Here is another example, this time using a more complicated function.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="limit(sqrt(1-cos(t))/t,t=0)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can compute limits at infinity by passing either "plus infinity" or
+"minus infinity" as the third argument of <a href="dboplimit.xhtml">limit</a>.
+To do this, use the constants %plusInfinity and %minusInfinity.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="limit(sqrt(3*x^2+1)/(5*x),x=%plusInfinity)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="limit(sqrt(3*x^2+1)/(5*x),x=%minusInfinity)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+You can take limits of functions with parameters. As you can see, the limit
+is expressed in terms of the parameters.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="limit(sinh(a*x)/tan(b*x),x=0)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+When you use <a href="dboplimit.xhtml">limit</a>, you are taking the limit
+of a real function of a real variable. When you compute this, Axiom returns
+0 because, as a function of a real variable, sin(1/z) is always between -1
+and 1, so z*sin(1/z) tends to 0 as z tends to 0.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="limit(z*sin(1/z),z=0)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+However, as a function of a complex variable, sin(1/z) is badly behaved
+near 0 (one says that sin(1/z) has an essential singularlity at z=0). When
+viewed as a function of a complex variable, z*sin(1/z) does not approach any
+limit as z tends to 0 in the complex plane. Axiom indicates this when we
+call <a href="dbopcomplexlimit.xhtml">complexLimit</a>.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="complexLimit(z*sin(1/z),z=0)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+You can also take complex limits at infinity, that is, limits of a function
+of z as z approaches infinity on the Riemann sphere. Use the symbol
+%infinity to denote "complex infinity". As above, to compute complex limits
+rather than real limits, use <a href="dbopcomplexlimit.xhtml">complexLimit</a>.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="makeRequest('p11');"
+    value="complexLimit((2+z)/(1-z),z=%infinity)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+In many cases, a limit of a real function of a real variable exists when
+the corresponding complex limit does not. This limit exists.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="makeRequest('p12');"
+    value="limit(sin(x)/x,x=%plusInfinity)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+But this limit does not.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="makeRequest('p13');"
+    value="complexLimit(sin(x)/x,x=%infinity)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calmoreintegrals.xhtml b/src/axiom-website/hyperdoc/calmoreintegrals.xhtml
new file mode 100644
index 0000000..d45dd47
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calmoreintegrals.xhtml
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Integration</div>
+  <hr/>
+Integration is the reverse process of differentiation, that is, an integral
+of a function f with respect to a variable x is any function g such that
+D(g,x) is equal to f. The package
+<a href="db.xhtml?FunctionSpaceIntegration">FunctionSpaceIntegration</a>
+provides the top-level integration operation
+<a href="dbopintegrate.xhtml">integrate</a>, for integrating real-valued
+elementary functions.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="integrate(cosh(a*x)*sinh(a*x),x)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Unfortunately, antiderivatives of most functions cannot be expressed in
+terms of elementary functions.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="integrate(log(1+sqrt(a*x+b)),x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Given an elementary function to integrate, Axiom returns a formal integral
+as above only when it can prove that the integral is not elementary and
+not when it cannot determine the integral. In this rare case it prints a
+message that it cannot determine if an elementary integral exists. Similar
+functions may have antiderivatives that look quite different because the
+form of the antiderivative depends on the sign of a constant that appears
+in the function.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="integrate(1/(x^2-2),x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="integrate(1/(x^2+2),x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+If the integrand contains parameters, then there may be several possible
+antiderivatives, depending on the signs of expressions of the parameters.
+In this case Axiom returns a list of answers that cover all possible cases.
+Here you use the answer involving the square root of a when a>0 and the
+answer involving the square root of -a when a&#60;0.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="integrate(x^2/(x^4-a^2),x)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+If the parameters and the variables of integration can be complex numbers
+rather than real, then the notion of sign is not defined. In this case all
+the possible answers can be expressed as one complex function. To get that
+function, rather than a list of real functions, use
+<a href="dbopcomplexintegrate.xhtml">complexIntegrate</a>, which is provided
+by the package
+<a href="db.xhtml?FunctionSpaceComplexIntegration">
+FunctionSpaceComplexIntegration</a>.
+
+This operation is used for integrating complex-valued elementary functions.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="complexIntegrate(x^2/(x^4-a^2),x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+As with the real case, antiderivatives for most complex-valued functions
+cannot be expressed in terms of elementary functions.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="complexIntegrate(log(1+sqrt(a*x+b))/x,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Sometimes <a href="dbopintegrate.xhtml">integrate</a> can involve 
+symbolic algebraic numbers such as those returned by 
+<a href="dboprootof.xhtml">rootOf</a>. To see how to work with these
+strange generated symbols (such as %%a0), see
+<a href="axbook/section-8.3.xhtml#subsec-8.3.2">
+Using All Roots of a Polynomial</a>.
+
+Definite integration is the process of computing the area between the x-axis
+and the curve of a function f(x). The fundamental theorem of calculus 
+states that if f is continuous on an interval a..b and such that D(g,x) is
+equal to f, then the definite integral of f for x in the interval a..b is
+equal to g(b)-g(a).
+
+The package
+<a href="db.xhtml?RationalFunctionDefiniteIntegration">
+RationalFunctionDefiniteIntegration</a>
+provides the top-level definite integration operation,
+<a href="dbopintegrate.xhtml">integrate</a>, 
+for integrating real-valued rational functions.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="integrate((x^4-3*x^2+6)/(x^6-5*x^4+5*x^2+4),x=1..2)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Axiom checks beforehand that the function you are integrating is defined on
+the interval a..b, and prints an error message if it finds that this is not
+the case, as in the following example:
+<pre>
+ integrate(1/(x^2-2),x=1..2)
+
+ Error detected within library code:
+ Pole in path of integration
+</pre>
+When parameters are present in the function, the function may or may not be
+defined on the interval of integration.
+
+If this is the case, Axiom issues a warning that a pole might lie in the 
+path of integration, and does not compute the integral.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="integrate(1/(x^2-a),x=1..2)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+If you know that you are using values of the parameter for which the 
+function has no pole in the interval of integration, use the string
+"noPole" as a third argument to <a href="dbopintegrate.xhtml">integrate</a>.
+
+The value here is, of course, incorrect if sqrt(a) is between 1 and 2.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value='integrate(1/(x^2-a),x=1..2,"noPole")' />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calseries.xhtml b/src/axiom-website/hyperdoc/calseries.xhtml
new file mode 100644
index 0000000..3a97230
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calseries.xhtml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Working with Power Series</div>
+  <hr/>
+Axiom has very sophisticated facilities for working with power series.
+Infinite series are represented by a list of the coefficients that have
+already been determined, together with a function for computing the
+additional coefficients if needed. The system command that determines how
+many terms of a series is displayed is
+<pre>
+  )set streams calculate
+</pre>
+By default Axiom will display ten terms. Series can be created from
+expressions, from functions for the series coefficients, and from applications
+of operations on existing series. The most general function for creating
+a series is called <a href="dbopseries.xhtml">series</a>, although you can
+also use 
+<a href="dboptaylor.xhtml">taylor</a>,
+<a href="dboplaurent.xhtml">laurent</a>, and
+<a href="dboppuiseux.xhtml">puiseux</a> in situations where you know what 
+kind of exponents are involved.
+
+For information about solving differential equations in terms of power
+series see
+<a href="axbook/section-8.10.xhtml#subsec-8.10.3">
+Power Series Solutions of Differential Equations</a>
+<ul>
+ <li>
+  <a href="calseries1.xhtml">
+   Creation of Power Series
+  </a>
+ </li>
+ <li>
+  <a href="calseries2.xhtml">
+   Coefficients of Power Series
+  </a>
+ </li>
+ <li>
+  <a href="calseries3.xhtml">
+   Power Series Arithmetic
+  </a>
+ </li>
+ <li>
+  <a href="calseries4.xhtml">
+   Functions on Power Series
+  </a>
+ </li>
+ <li>
+  <a href="calseries5.xhtml">
+   Converting to Power Series
+  </a>
+ </li>
+ <li>
+  <a href="calseries6.xhtml">
+   Power Series from Formulas
+  </a>
+ </li>
+ <li>
+  <a href="calseries7.xhtml">
+   Substituting Numerical Values in Power Series
+  </a>
+ </li>
+ <li>
+  <a href="calseries8.xhtml">
+   Example: Bernoulli Polynomials and Sums of Powers
+  </a>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calseries1.xhtml b/src/axiom-website/hyperdoc/calseries1.xhtml
new file mode 100644
index 0000000..d4bd89f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calseries1.xhtml
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Creation of Power Series</div>
+  <hr/>
+This is the easiest way to create a power series. This tells Axiom that x
+is to be treated as a power series, so funcitons of x are again power series.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="x:=series 'x" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+We didn't say anything about the coefficients of the power series, so the
+coefficients are general expressions over the integers. This allows us to
+introduce denominators, symbolic constants, and other variables as needed.
+Here the coefficents are integers (note that the coefficients are the
+Fibonacci numbers).
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="1/(1-x-x^2)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+This series has coefficients that are rational numbers.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="sin(x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+When you enter this expression you introduce the symbolic constants sin(1)
+and cos(1).
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="sin(1+x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+When you enter the expression the variable a appears in the resulting 
+series expansion.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="sin(a*x)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can also convert an expression into a series expansion. This expression
+creates the series expansion of 1/log(v) about v=1. For details and more
+examples see
+<a href="axbook/section-8.9.xhtml#subsec-8.9.5">
+Converting to Power Series</a>
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="series(1/log(v),v=1)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+You can create power series with more general coefficients. You normally
+accomplish this via a type declaration, see 
+<a href="axbook/section-2.3.xhtml">Declarations</a>. See
+<a href="axbook/section-8.9.xhtml#subsec-8.9.4">
+Functions on Power Series</a> for some warnings about working with 
+declared series.
+
+We delcare that y is a one-variable Taylor series 
+(<a href="db.xhtml?UnivariateTaylorSeries">UTS</a> is the abbreviation for
+<a href="db.xhtml?UnivariateTaylorSeries">UnivariateTaylorSeries</a> in the
+variable z with <a href="db.xhtml?Float">FLOAT</a> (that is, floating-point)
+coefficients, centered about 0. Then, by assignment, we obtain the Taylor
+expansion of exp(z) with floating-point coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="y:UTS(FLOAT,'z,0):=exp(z)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+You can also create a power series by giving an explicit formula for the
+nth coefficient. For details and more examples see
+<a href="axbook/section-8.9.xhtml#subsec-8.9.6">
+Power Series from Formulas</a>
+
+To create a series about w=0 whose nth Taylor coefficient is 1/n!, you can
+evaluate this expression. This is the Taylor expansion of exp(w) at w=0.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="series(1/factorial(n),n,w=0)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calseries2.xhtml b/src/axiom-website/hyperdoc/calseries2.xhtml
new file mode 100644
index 0000000..a5715d4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calseries2.xhtml
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Coefficients of Power Series</div>
+  <hr/>
+You can extract any coefficient from a power series -- even on that
+hasn't been computed yet. This is possible because in Axiom, infinite
+series are represented by a list of the coefficients that have already
+been determined, together with a function for computing additional 
+coefficients. (This is known as lazy evaluation.) When you ask for a
+coefficient that hasn't yet been computed, Axiom computes whatever
+additional coefficients it needs and then stores them in the representation
+of the power series.
+
+Here's an example of how to extract the coefficients of a power series.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="x:=series('x)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="y:=exp(x)*sin(x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+This coefficient is readily available
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="coefficient(y,6)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+But let's get the fifteenth coefficient of y
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p4']);"
+    value="coefficient(y,15)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+If you look at y then you see that the coefficients up to order 15 have 
+all been computed.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p5']);"
+    value="y" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calseries3.xhtml b/src/axiom-website/hyperdoc/calseries3.xhtml
new file mode 100644
index 0000000..107b0dd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calseries3.xhtml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Power Series Arithmetic</div>
+  <hr/>
+You can manipulate power series using the usual arithmetic operations
+<a href="dbopplus.xhtml">+</a>,
+<a href="dbopminus.xhtml">-</a>,
+<a href="dbopstar.xhtml">*</a>, and
+<a href="dbopdivide.xhtml">/</a>.
+
+The results of these operations are also power series.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="x:=series 'x" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="(3+x)/(1+7*x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can also compute f(x)^g(x), where f(x) and g(x) are two power series.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="base:=1/(1-x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p3','p4']);"
+    value="expon:=x*base" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p3','p4','p5']);"
+    value="base^expon" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calseries4.xhtml b/src/axiom-website/hyperdoc/calseries4.xhtml
new file mode 100644
index 0000000..23f4f1f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calseries4.xhtml
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Functions on Power Series</div>
+  <hr/>
+Once you have created a power series, you can apply transcendental 
+functions (for example, 
+<a href="dbopexp.xhtml">exp</a>,
+<a href="dboplog.xhtml">log</a>,
+<a href="dbopsin.xhtml">sin</a>,
+<a href="dboptan.xhtml">tan</a>,
+<a href="dbopcosh.xhtml">cosh</a>, etc.) to it.
+
+To demonstrate this, we first create the power series expansion of the
+rational function x^2/(1-6*x+x^2) about x=0.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="x:=series 'x" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="rat:=x^2/(1-6*x+x^2)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+If you want to compute the series expansion of 
+sin(x^2/1-6*x+x^2) you simply compute the sine of rat.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="sin(rat)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+<hr/>
+<b>Warning:</b> the type of the coefficients of a power series may affect
+the kind of computations that you can do with that series. This can only
+happen when you have made a declaration to specify a series domain with a
+certain type of coefficient.
+<hr/>
+If you evaluate then you have declared that y is a one variable Taylor
+series (<a href="db.xhtml?UnivariateTaylorSeries">UTS</a> is the abbreviation
+for <a href="db.xhtml?UnivariateTaylorSeries">UnivariateTaylorSeries</a>) in
+the variable y with <a href="dbfractioninteger.xhtml">FRAC INT</a> (that is,
+fractions of integers) coefficients, centered about 0.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="y:UTS(FRAC INT,'y,0):='y" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You can now compute certain power series in y, provided that these series
+have rational coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="exp(y)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can get examples of such series by applying transcendental functions
+to series in y that have no constant terms.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p4','p5','p6']);"
+    value="tan(y^2)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p4','p5','p7']);"
+    value="cos(y+y^5)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Similarly, you can compute the logarithm of a power series with rational
+coefficients if the constant coefficient is 1.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p4','p5','p8']);"
+    value="log(1+sin(y))" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+If you wanted to apply, say, the operation <a href="dbopexp.xhtml">exp</a> to
+a power series with a nonzero constant coefficient a0, then the constant
+coefficient of the result would be exp(a0), which is not a rationa number.
+Therefore, evaluating exp(2+tan(y)) would generate an error message.
+
+If you want to compute the Taylor expansion of exp(2+tan(y)), you must 
+ensure that the coefficient domain has an operation 
+<a href="dbopexp.xhtml">exp</a> defined for it. An example of such a domain
+is <a href="dbexpressioninteger.xhtml">Expression Integer</a>, the type of
+formal functional expressions over the integers. When working with 
+coefficients of this type
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="z:UTS(EXPR INT,'z,0):='z" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+this presents no problems.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p9','p10']);"
+    value="exp(2+tan(z))" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+Another way to create Taylor series whose coefficients are expressions over
+the integers is to use <a href="dboptaylor.xhtml">taylor</a> which works
+similarly to <a href="dbopseries.xhtml">series</a>. This is equivalent to
+the previous computation, except that now we are using the variable w 
+instead of z.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="makeRequest('p11');"
+    value="w:=taylor 'w" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p11','p12']);"
+    value="exp(2+tan(w))" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calseries5.xhtml b/src/axiom-website/hyperdoc/calseries5.xhtml
new file mode 100644
index 0000000..5d7ac34
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calseries5.xhtml
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Converting to Power Series</div>
+  <hr/>
+The <a href="db.xhtml?ExpressionToUnivariatePowerSeries">
+ExpressionToUnivariatePowerSeries</a> package provides operations for
+computing series expansions of functions. 
+
+Evaluate this to compute the Taylor expansion of sin x about x=0. The first
+argument, sin(x), specifies the function whose series expansion is to be
+computed and the second argument, x=0, specifies that the series is to be
+expanded in powers of (x-0), that is, in powers of x.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="taylor(sin(x),x=0)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Here is the Taylor expansion of sin x about x=%pi/6:
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="taylor(sin(x),x=%pi/6)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The function to be expanded into a series may have variables other than the
+series variable. For example, we may expand tan(x*y) as a Taylor series in x.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="taylor(tan(x*y),x=0)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or as a Taylor series in y.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="taylor(tan(x*y),y=0)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+A more interesting function it (t*%e^(x*t))/(%e^t-1).
+When we expand this function as a Taylor series in t the nth order
+coefficient is the nth Bernoulli polynomial divided by n!.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="bern:=taylor(t*exp(x*t)/(exp(t)-1),t=0)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Therefore, this and the next expression produce the same result.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="factorial(6)*coefficient(bern,6)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value="bernoulliB(6,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Technically, a series with terms of negative degree is not considered to
+be a Taylor series, but rather a Laurent series. If you try to compute a
+Taylor series expansion of x/log(x) at x=1 via taylor(x/log(x),x=1) you 
+get an error message. The reason is that the function has a pole at x=1,
+meaning that its series expansion about this point has terms of negative
+degree. A series with finitely many terms of negative degree is called a
+Laurent series. You get the desired series expansion by issuing this.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="laurent(x/log(x),x=1)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Similarly, a series with terms of fractional degree is neither a Taylor
+series nor a Laurent series. Such a series is called a Puiseux series. The
+expression laurent(sqrt(sec(x)),x=3*%pi/2) results in an error message 
+because the series expansion about this point has terms of fractional degree.
+However, this command produces what you want.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="puiseux(sqrt(sec(x)),x=3*%pi/2)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+Finally, consider the case of functions that do not have Puiseux expansions
+about certain points. An example of this is x^x about x=0. puiseux(x^x,x=0)
+produces an error message because of the type of singularity of the 
+function at x=0. The general function <a href="dbopseries.xhtml">series</a>
+can be used in this case. Notice that the series returned is not, strictly
+speaking, a power series because of the log(x) in the expansion.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="series(x^x,x=0)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+<hr/>
+The operation <a href="dbopseries.xhtml">series</a> returns the most general
+type of infinite series. The user who is not interested in distinguishing
+between various types of infinite series may wish to use this operation
+exclusively.
+<hr/>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calseries6.xhtml b/src/axiom-website/hyperdoc/calseries6.xhtml
new file mode 100644
index 0000000..22c6246
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calseries6.xhtml
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Power Series from Formulas</div>
+  <hr/>
+The <a href="db.xhtml?GenerateUnivariatePowerSeries">
+GenerateUnivariatePowerSeries</a> package enables you to create power series
+from explicit formulas for their nth coefficients. In what follows, we
+construct series expansions for certain transcendental functions by giving
+forumulas for their coefficients. You can also compute such series 
+expansions directly by simply specifying the function and the point about
+which the series is to be expanded. See
+<a href="axbook/section-8.9.xhtml#subsec-8.9.5">
+Converting to Power Series</a> for more information.
+
+Consider the Taylor expansion of %e^x about x=0:
+<pre>
+  %e^x = 1 + x + x^2/2 + x^3/6 + ... 
+       = sum from n=0 to n=%infinity of x^n/n!
+</pre>
+The nth Taylor coefficient is 1/n!. This is how to create this series in
+Axiom.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="series(n+->1/factorial(n),x=0)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The first argument specifies the formula for the nth coefficient by giving
+a function that maps n to 1/n!. The second argument specifies that the
+series is to be expanded in powers of (x-0), that is, in powers of x. Since
+we did not specify an initial degress, the first term in the series was the
+term of degree 0 (the constant term). Note that the formula was given as
+an anonymous function. These are discussed in
+<a href="axbook/section-6.17.xhtml">Anonymous Functions</a>
+
+Consider the Taylor expansion of log x about x=1:
+<pre>
+ log x = (x-1) - (x-1)^2/2 + (x-1)^3/3 - ... 
+       = sum from n=1 to n=%infinity of (-1_^(n-1) (x-1)^n/n
+</pre>
+If you were to evaluate the expression series(n+->(-1)^(n-1)/n,x=1) you
+would get an error message because Axiom would try to calculate a term of
+degree n=1,... are to be computed.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="series(n+->(-1)^(n-1)/n,x=1,1..)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Next consider the Taylor expansion of an odd function, say, sin(x):
+<pre>
+  sin x = x = x^2/3! + x^5/5! - ...
+</pre>
+Here every other coefficient is zero and we would like to give an explicit
+formula onloy for the odd Taylor coefficients. This is one way to do it.
+The third argument, 1.., specifies that the first term to be computed is
+the term of degree 1. The fourth argument, 2, specifies that we increment
+by 2 to find the degrees of subsequent terms, that is, the next term is of
+degree 1+2, the next of degree 1+2+2, etc.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="series(n+->(-1)^((n-1)/2)/factorial(n),x=0,1..,2)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The initial degree and the increment do not have to be integers. For
+example, this expression produces a series expansion of sin(x^(1/3)).
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="series(n+->(-1)^((3*n-1)/2)/factorial(3*n),x=0,1/3..,2/3)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+While the increment must be positive, the initial degree may be negative.
+This yields the Laurent expansion of csc(x) at x=0.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="cscx:=series(n+->(-1)^((n-1)/2)*2*(2^n-1)*bernoulli(numer(n+1))/factorial(n+1),x=0,-1..,2)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Of course, the reciprocal of this power series is the Taylor expansion of
+sin(x).
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="1/cscx" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+As a final example, here is the Taylor expansion of asin(x) about x=0.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="asinx:=series(n+->binomial(n-1,(n-1)/2)/(n*2^(n-1)),x=0,1..,2)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+When we compute the sine of this series, we get x (in the sense that all
+higher terms computed so far are zero).
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p7','p8']);"
+    value="sin(asinx)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+As we discussed in 
+<a href="calseries5.xhtml">Converting to Power Series</a>, you can also use
+the operations
+<a href="dboptaylor.xhtml">taylor</a>,
+<a href="dboplaurent.xhtml">laurent</a>, and
+<a href="dboppuiseux.xhtml">puiseux</a>, instead of 
+<a href="dbopseries.xhtml">series</a> if you know ahead of time what
+kind of exponents a series has. You can't go wrong with 
+<a href="dbopseries.xhtml">series</a> though.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calseries7.xhtml b/src/axiom-website/hyperdoc/calseries7.xhtml
new file mode 100644
index 0000000..ce666ea
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calseries7.xhtml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Substituting Numerical Values in Power Series</div>
+  <hr/>
+Use <a href="dbopeval.xhtml">eval</a> to substitute a numerical value for a
+variable in a power series. For example, here's a way to obtain numerical
+approximations of %e from the Taylor series expansion of exp(x).
+
+First you create the desired Taylor expansion.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=taylor(exp(x))" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Then you evaluate the series at the value 1.0. The result is a sequence
+of the partial sums.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="eval(f,1.0)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/calseries8.xhtml b/src/axiom-website/hyperdoc/calseries8.xhtml
new file mode 100644
index 0000000..157a85c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/calseries8.xhtml
@@ -0,0 +1,383 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Example: Bernoulli Polynomials and Sums of Powers</div>
+  <hr/>
+Axiom provides operations for computing definite and indefinite sums.
+
+You can compute the sum of the first ten fourth powers by evaluating this.
+This creates a list whose entries are m^4 as m ranges from 1 to 10, and then
+computes the sum of the entries of that list.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="reduce(+,[m^4 for m in 1..10])" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You can also compute a formula for the sum of the first k fourth powers, 
+where k is an unspecified positive integer.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="sum4:=sum(m^4,m=1..k)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+This formula is valid for any positive integer k. For instance, if we 
+replace k by 10, we obtain the number we computed earlier.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p2','p3']);"
+    value="eval(sum4,k=10)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+You can compute a formula for the sum of the first k nth powers in a
+similar fashion. Just replace the 4 in the definition of sum4 by any
+expression not involving k. Axiom computes these formulas using Bernoulli 
+polynomials; we use the rest of this section to describe this method.
+
+First consider this function of t and x.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="f:=t*exp(x*t)/(exp(t)-1)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Since the expressions involved get quite large, we tell Axiom to show us only
+terms of degree up to 5.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="noresult" 
+    onclick="makeRequest('p5');"
+    value=")set streams calculate 5" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+If we look at the Taylor expansion of f(x,t) about t=0, we see that the 
+coefficients of the powers of t are polynomials in x.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p4','p5','p6']);"
+    value="ff:=taylor(f,t=0)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+In fact, the nth coefficient in this series is essentiall the nth Bernoulli
+polynomial: the nth coefficient of the series is 1/n!*Bn(x), where Bn(x) is
+the nth Bernoulli polynomial. Thus, to obtain the nth Bernoulli polynomial,
+we multiply the nth coefficient of the series ff by n!. For example, the
+sixth Bernoulli polynomial is this.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p4','p5','p6','p7']);"
+    value="factorial(6)*coefficient(ff,6)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+We derive some properties of the function f(x,t). First we compute
+f(x+1,t)-f(x-t).
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p4','p8']);"
+    value="g:=eval(f,x=x+1)-f" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+If we normalize g, we see that it has a particularly simple form.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p4','p8','p9']);"
+    value="normalize(g)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+From this it follows that the nth coefficient in the Taylor expansion of
+g(x,t) at t=0 is 1/(n-1)!*x^(n-1). If you want to check this, evaluate the
+next expression.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p4','p5','p8','p9','p10']);"
+    value="taylor(g,t=0)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+However, since 
+<pre>
+  g(x,t)=f(x+1,t)-f(x,t)
+</pre> 
+it follows that the nth coefficient
+is 
+<pre>
+   1/n! * (Bn(x+1) - Bn(x))
+</pre> 
+Equating coefficients, we see that 
+<pre>
+   1/(n-1)! * x^(n-1) = 1/n! * (Bn(x+1) - Bn(x))
+</pre>
+and, therefore
+<pre>
+   x^(n-1) = 1/n * (Bn(x+1) - Bn(x))
+</pre>
+Let's apply this formula repeatedly, letting x vary between two integers
+a and b, with a&#60;b:
+<pre>
+       a^(n-1) = 1/n * (Bn(a+1) - Bn(a))
+   (a+1)^(n-1) = 1/n * (Bn(a+2) - Bn(a+1))
+   (a+2)^(n-1) = 1/n * (Bn(a+3) - Bn(a+2))
+               .
+               .
+   (b-1)^(n-1) = 1/n * (Bn(b)   - Bn(b-1))
+       b^(n-1) = 1/n * (Bn(b+1) - Bn(b))
+</pre>
+When we add these equations we find that the sum of the left-hand sides is
+<pre>
+   sum(m=a..b,m^(n-1)) 
+</pre>
+the sum of the (n-1)-st powers from a to b. The sum
+of the right-hand sides is a "telescoping series". After cancellation, the
+sum is simply 
+<pre>
+   1/n*(Bn(b+1)-Bn(a))
+</pre>
+
+Replacing n by n+1, we have shown that
+<pre>
+   sum(m=a..b,m^n) = 1/(n+1)*(B&#60;n+1>(b+1)-B&#60;n+1>(a))
+</pre>
+
+Let's use this to obtain the formula for the sum of fourth powers. 
+First we obtain the Bernoulli polynomial B5.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p4','p5','p6','p11']);"
+    value="B5:=factorial(5)*coefficient(ff,5)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+To find the sum of the first k 4th powers, we multiply 1/5 by 
+B5(k+1)-B5(1)
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p4','p5','p6','p11','p12']);"
+    value="1/5*(eval(B5,x=k+1)-eval(B5,x=1))" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+This is the same formula that we obtained via sum(m^4,m=1..k)
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p2','p13']);"
+    value="sum4" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+At this point you may want to do the same computation, but with an exponent
+other than 4. For example, you might try to find a formula for the sum of
+the first k 20th powers.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cats.xhtml b/src/axiom-website/hyperdoc/cats.xhtml
new file mode 100644
index 0000000..8d45b01
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cats.xhtml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+    CATS -- Computer Algebra Test Suite
+  </div>
+<hr/>
+The Computer Algebra Test Suite is intended to show that Axiom conforms
+to various published standards. Axiom implementations of these functions
+are tested against reference publications. 
+
+In order to show standards compliance we need to examine Axiom's behavior
+against known good results. Where possible, these results are also tested
+against other available computer algebra systems.
+
+The available test suites are:
+<ol>
+ <li><a href="dlmf.xhtml">Gamma Function</a></li>
+</ol>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/commandline.xhtml b/src/axiom-website/hyperdoc/commandline.xhtml
new file mode 100644
index 0000000..9f24c91
--- /dev/null
+++ b/src/axiom-website/hyperdoc/commandline.xhtml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    return(document.getElementById('comm').value);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <form id="commreq">
+    <p>
+      Type an input command line to Axiom:<br/>
+      <input type="text" id="p1" 
+       onclick="interpcall('p1');"
+       value="integrate(sin(x),x)" />
+    </p>
+  </form>
+  <center>
+    <input type="button" value="Continue" name="continue" 
+      onclick="intercall('p1');"/>
+  </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/complexlimit.xhtml b/src/axiom-website/hyperdoc/complexlimit.xhtml
new file mode 100644
index 0000000..83a17f8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/complexlimit.xhtml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    var myfunct = myform.expr.value;
+    var myvar = myform.vars.value;
+    var ans = "";
+    // decide what the limit point should be
+    var finite = document.getElementById('finite').checked;
+    if (finite == true) {
+      var myreal = document.getElementById('fpreal').value;
+      var mycomplex = document.getElementById('fpcomplex').value;
+      if (myreal == 0) {
+       if (mycomplex == 0) {
+         ans = 'complexLimit('+myfunct+','+myvar+'=0)';
+       } else {
+         ans = 'complexLimit('+myfunct+','+myvar+'='+mycomplex+'*%i)';
+       }
+      } else {
+       if (mycomplex == 0) {
+         ans = 'complexLimit('+myfunct+','+myvar+'='+myreal+')';
+       } else {
+         ans = 
+          'complexLimit('+myfunct+','+myvar+'='+myreal+'+'+mycomplex+'*%i)';
+       }
+      }
+    } else {
+     ans = 'complexLimit('+myfunct+','+myvar+'=%infinity)';
+    }
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <form id="form2">
+   Enter the function you want to compute the limit of:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" 
+     value="sin(a*x)/tan(b*x)"/><br/>
+   Enter the name of the variable:<br/>
+   <input type="text" id="vars" tabindex="20" value="x"/><br/>
+   <input type="radio" id="finite" tabindex="30" checked="checked" 
+     name="point"/>
+    A finite point: Real part:
+    <input type="text" id="fpreal" tabindex="40" value="0"/>
+    Complex part:
+    <input type="text" id="fpcomplex" tabindex="50" value="0"/><br/>
+   <input type="radio" id="plus" tabindex="60" name="point"/>
+    %infinity<br/>
+  </form>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass1.xhtml b/src/axiom-website/hyperdoc/cryptoclass1.xhtml
new file mode 100644
index 0000000..ec41b5b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass1.xhtml
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+  <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+  <h3>Laboratory Class 1: Introduction to Axiom</h3>
+</center>
+<hr/>
+
+<b>Numbers and arithmetic</b>
+
+<ul>
+ <li> You can treat Axiom like a glorified calculator.  Enter the following:
+  <ul>
+   <li> <span class="cmd">3+5</span></li>
+   <li> <span class="cmd">5*7</span></li>
+   <li> <span class="cmd">2^3/3^5</span></li>
+   <li> <span class="cmd">(3^4)^5</span></li>
+   <li> <span class="cmd">3^(4^5)</span></li>
+  </ul>
+ </li>
+ <li> What happens if you enter the last command without the brackets?</li>
+
+ <li> To obtain the factorial <tt>n!</tt>, use the Axiom command 
+      <tt>factorial</tt>:
+  <ul>
+   <li> <span class="cmd">factorial(10)</span></li>
+  </ul>
+ </li>
+ <li> By trial and error, find the smallest number whose factorial 
+      ends in six zeros.
+ </li>
+</ul>
+
+<b>Lists</b>
+
+<ul> 
+ <li> Assignment is done using "<tt>:=</tt>" 
+      where the <i>colon-equals</i> symbols are 
+      used for assigning a particular object to a variable.
+  <ul>
+   <li> <span class="cmd">var:=3</span></li>
+  </ul>
+ </li>
+ <li> Lists are created using square brackets;
+  <ul>
+   <li> <span class="cmd">mylist1:=[k^2 for k in 1..10]</span></li>
+  </ul>
+ </li>
+ <li> We can operate on all elements of a list using the 
+      <tt>reduce</tt> command:
+  <ul>
+   <li> <span class="cmd">reduce(+,mylist1)</span></li>
+   <li> <span class="cmd">reduce(*,mylist2)</span></li>
+  </ul>
+ </li>
+ <li> Of course, these could be done as single commands:
+  <ul>
+   <li> <span class="cmd">reduce(+,[k^2 for k in 1..10])</span></li>
+   <li> <span class="cmd">reduce(*,[1/j for j in 5..15])</span></li>
+  </ul>
+ </li>
+ <li> Notice how the last result is given as a single large fraction.  To
+      obtain a decimal result we can do either of two things:
+  <ol>
+   <li> Convert the output to be of type ``Float'':
+    <ul>
+     <li> <span class="cmd">reduce(*,[1/j for j in 5..15])::Float</span></li>
+     <li> Two colons can be used to change the type of an object.</li>
+    </ul>
+   </li>
+   <li> Use floats in the initial command: 
+    <ul>
+     <li> <span class="cmd">reduce(*,[1.0/j for j in 5..15])</span></li>
+    </ul>
+   </li>
+  </ol>
+ </li>
+ <li> Using lists, add up the first 1000 integers.</li>
+  
+ <li> By trial and error, find the smallest number <i>n</i> for which 
+      the sum of the first <i>n</i> reciprocals is bigger than 8.
+ </li>
+ <li> We can also add numbers by using the <tt>sum</tt> function; here's how
+      to add the first 100 reciprocals:
+  <ul>
+   <li> <span class="cmd">sum(1.0/k,k = 1..100)</span></li>
+  </ul>
+ </li>
+</ul>
+
+<b>Functions and maps</b>
+
+<ul>
+ <li> We shall create a simple function, and apply it to <tt>mylist1</tt> from
+      above:
+  <ul>
+   <li> <span class="cmd">f(x) == x-2</span></li>
+   <li> <span class="cmd">map(f,mylist1)</span></li>
+  </ul>
+ </li>  
+ <li> Supposing we want to subtract 2 from every element of a list without
+      having to create a function first.  In this case we can use the 
+      "mapping" symbols:
+  <ul>
+   <li> <span class="cmd">map(x +-> x-2,mylist1)</span></li>
+  </ul>
+ </li>  
+ <li> Create a list called <tt>nums</tt> containing all the integers from 1 
+      to 100.  Now we shall create a simple function <tt>f(x)</tt> which 
+      returns <tt>x</tt> if it is prime, and 0 otherwise.  The Axiom 
+      function <tt>prime?</tt> tests for primality:
+  <ul>
+   <li> <span class="cmd">f(x)==if prime?(x) then x else 0</span></li>
+  </ul>
+ </li>
+ <li> Now apply this function <tt>f</tt> to <tt>nums</tt>.  
+      Remove all the zeros:
+      <i>(% refers to the output of the last command.)</i>
+  <ul>
+   <li> <span class="cmd">remove(0,%)</span></li>
+  </ul>
+ </li>
+ <li> and determine how many primes there are, using the hash symbol #
+      which can be used to count the number of elements in a list:
+  <ul>
+   <li> <span class="cmd">#%</span></li>
+  </ul>
+ </li>
+ <li> These last commands can be done as a single command:
+  <ul>
+   <li> <span class="cmd">#remove(0,map(f,nums))</span></li>
+  </ul>
+ </li>
+ <li> Use the last command to create a function called <tt>numprimes</tt>
+      which will count the number of primes below any given integer.
+ </li>
+ <li> How many primes are there less than 1000?  Less than 10000?</li>
+  
+ <li> Alternatively, we can list all the primes below 100 by creating our 
+      list using the "such that" operator---a vertical stroke:
+  <ul>
+   <li> <span class="cmd">[k for k in 1..100 | prime?(k)]</span></li>
+  </ul>
+ </li>
+ <li> or we could just return the length of the list:
+  <ul>
+   <li> <span class="cmd">#[k for k in 1..100 | prime?(k)]</span></li>
+  </ul>
+ </li>
+ <li> Use this approach to create a function called <tt>numprimes2</tt>
+      which will count the number of primes below any given integer.
+ </li>
+ <li>How many primes are there less than 2000?  Less than 15000?</li>
+</ul>
+
+<b>Housekeeping</b><br/>
+
+Axiom contains many commands for managing your workspace and your
+environment; such commands are all prefixed with a right parenthesis.
+
+<ul>
+ <li> Sometimes you need to clear a variable, say a variable <tt>x</tt>:
+  <ul>
+   <li> <span class="cmd">)clear properties x</span></li>
+  </ul>
+ </li>
+ <li> Most commands of this sort can be abbreviated using their 
+      first two letters:
+  <ul>
+   <li> <span class="cmd">)cl pr x</span></li>
+  </ul>
+ </li>
+ <li> To clean out everything:
+  <ul>
+   <li> <span class="cmd">)cl all</span></li>
+  </ul>
+ </li>
+ <li> To see what variables you've accumulated over your work:
+  <ul>
+   <li> <span class="cmd">)display names</span></li>
+   <li> <i>or abbreviated as</i> )d n</li>
+  </ul>
+ </li>
+ <li> You may have noticed earlier that Axiom poured out lots 
+      of messages when it first "got going".  These can be turned off:
+  <ul>
+   <li> <span class="cmd">)set messages autoload off</span></li>
+  </ul>
+ </li>
+ <li> Note here that if you just type in "<tt>)set</tt>" or its abbreviation
+      "<tt>)se</tt>", you'll be presented with the list of all the possible
+      options.  Likewise "<tt>)se me</tt>" lists all possible options for
+      messages, and so on.
+ </li>
+ <li> Can you find the command which turns on a time function, 
+      so gives the time to compute each command?
+ </li>
+ <li> The command "<tt>)summary</tt> gives a quick summary of these
+      commands.
+ </li>
+ <li> To quit Axiom, type
+  <ul>
+   <li> <span class="cmd">)quit</span></li>
+  </ul>
+ </li>
+ <li> or its one letter abbreviation "<tt>)q</tt>", followed by <tt>y</tt> to
+      confirm.
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass10.xhtml b/src/axiom-website/hyperdoc/cryptoclass10.xhtml
new file mode 100644
index 0000000..2016d42
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass10.xhtml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 10: The Data Encryption Standard</h3>
+</center>
+<hr/>
+
+The object of this lab will be to build up the necessary functions and
+tools to implement simplified DES (sDES).  All operations will be done on
+binary lists.  Since the definitions of the sDES functions require lists to be
+indexed starting at 0, but in Axiom lists are indexed starting at 1, many of
+the operations will have extra ones added at some stage.
+
+<ul> 
+ <li> Save the file <tt>des.input</tt> to a directory in which you
+      have write access.  Read the file into Axiom, and open up the file
+      with a text editor.  
+ </li>
+
+ <li> Compare the first command <tt>perm(b)</tt> with the initial
+      permutation for sDES defined in page 94 of the notes.  How do the
+      indices in the Axiom command relate to the indices of the
+      permutation in the notes?  
+ </li>
+  
+ <li> Now using the above procedure as a guide, write a procedure called
+      <tt>invperm</tt> to perform the inverse permutation.
+ </li>
+
+ <li> Test this procedure: it should invert the permutation you
+      obtained from the <tt>perm</tt> procedure.  
+ </li>
+  
+<li> The <tt>subkey</tt> procedure creates two lists: one for the
+     first subkey, and one for the second.  Edit the procedure to include
+     the second subkey as given on the bottom of page 95.
+ </li>
+  
+ <li> Write a procedure called <tt>expperm</tt> which implements the
+      expansion permutation on page 96; use the <tt>perm</tt> and
+      <tt>invperm</tt> procedures as guides.
+ </li>
+  
+ <li> Using the <tt>sbox0</tt> procedure as a guide, write a procedure
+      to implement S-box 1.
+ </li>
+  
+ <li> The mixing function shown in figure 8.5 in the notes is
+      implemented as <tt>mix</tt>.  This procedure has been
+      commented.
+ </li>
+  
+ <li> Comment each line of the <tt>feistel</tt> and <tt>sdes</tt>
+      procedures in a similar fashion.
+ </li>
+  
+ <li> Test the <tt>sdes</tt> procedure on the example given in the notes.
+ </li>
+  
+ <li> Modify your procedure to implement sDES decryption, using the
+      scheme given on page 99.
+ </li>
+
+ <li> Test that your decryption procedure works; that it decrypts the
+      ciphertext produced by your encryption procedure to the original
+      plaintext.
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass11.xhtml b/src/axiom-website/hyperdoc/cryptoclass11.xhtml
new file mode 100644
index 0000000..ab44439
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass11.xhtml
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 11: Finite Fields</h3>
+</center>
+<hr/>
+
+<ul>
+ <li> Enter the following definition of the finite field 
+<pre>
+           3
+   Z [x]/(x +x+1)
+    2
+</pre>
+  <ul>
+   <li> <span class="cmd">F:=FFP(PF 2,x^3+x+1) </span></li>
+  </ul>
+ </li>
+ <li> To perform field operations, we need to create a generator of the field:
+  a symbol which can be used to generate all elements as polynomials:
+  <ul>
+   <li> <span class="cmd">x:=generator()$F</span>
+    <br/> Now field arithmetic is easy:
+   </li>
+   <li> (x^2+1)(x+1) in the field:
+    <ul>
+     <li> <span class="cmd">(x^2+1)*(x+1)</span> </li>
+    </ul>
+   </li>
+   <li> 1/(x^2+x):
+    <ul>
+     <li> <span class="cmd">1/(x^2+x)</span>
+      <br/>Note that Axiom returns its answer in terms of a dummy variable.
+     </li>
+    </ul>
+   </li>
+   <li> We can also list tables of powers:
+    <ul>
+     <li> 
+      <span class="cmd">
+       for i in 0..7 repeat output (i::String, x^i) 
+      </span>
+     </li>
+    </ul>
+   </li>
+  </ul>
+ </li>
+ <li> Before we enter a new field, we need to clear <tt>x</tt> and its
+  properties:
+  <ul>
+   <li> <span class="cmd">)cl pr x </span></li>
+  </ul>
+  Now for a slightly bigger field: 
+<pre>
+           4  3
+   Z [x]/(x +x +1)
+    2
+</pre>
+  <ul>
+   <li> <span class="cmd">F2:=FFP(PF 2,x^4+x^3+1)</span> </li>
+  </ul>
+  <ul>
+   <li> Create a list of powers of <tt>x</tt>. </li>
+   <li> Evaluate (x^3+x+1)/(x^3+x^2) in this field. </li>
+  </ul>
+ </li>
+ <li> Enter the Rijndael field, 
+<pre>
+         8  4  3
+ Z [x]/(x +x +x +x+1)
+  2
+</pre>
+ and call it <tt>GR</tt>.
+ </li>
+ <li> Determine whether <tt>x</tt> is a primitive element in this field:
+  <ul>
+   <li> <span class="cmd">x:=generator()$GR</span> </li>
+   <li> <span class="cmd">primitive?(x)</span> </li>
+  </ul>
+ </li>
+ <li>
+  Is <tt>x+1</tt> a primitive element?
+ </li>
+ <li> Investigate the workings of MixColumn.  First create the matrix:
+  <ul>
+   <li>
+    <span class="cmd">
+     M:Matrix GR:=matrix([[x,x+1,1,1],[1,x,x+1,1],[1,1,x,x+1],[x+1,1,1,x]])
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li>
+  Instead of multiplying a matrix <tt>C</tt> by <tt>M</tt>, 
+  we shall just look at a single column, created randomly:
+  <ul>
+   <li>
+    <span class="cmd">
+     C:Matrix GR:=matrix([[random()$FR] for j in 1..4]) 
+    </span>
+   </li>
+  </ul>
+ <li>
+ </li>
+  These can be multiplied directly in Axiom:
+  <ul>
+   <li> <span class="cmd">D:=M*C</span> </li>
+  </ul>
+ </li>
+ <li> Remarkably enough, Axiom can operate on matrices over a finite field as
+      easily as it can operate on numerical matrices.  For example, given that
+<pre>
+   D=MC 
+</pre>
+ </li>
+ <li>  it follows that
+<pre>
+      -1
+   C=M  D
+</pre>
+ </li>
+ <li> or that
+<pre>
+    -1
+   M  D-C=0
+</pre>
+ </li>
+ <li> To test this, first create the matrix inverse:
+  <ul>
+   <li> <span class="cmd">MI:=inverse(M)</span> </li>
+  </ul>
+ </li>
+ <li>
+  Now multiply by <tt>D</tt> and subtract <tt>C</tt>.  What does the result
+  tell you about the truth of the final equation?
+ </li>
+ <li> To explore MixColumn a bit more, we shall look at the inverse of
+      <tt>M</tt>.  First, here's a small function which converts from
+      a polynomial to an integer (treating the coefficients of the
+      polynomial as digits of a binary number):
+  <ul>
+   <li>
+    <span class="cmd">
+      poly2int(p)==(tmp:=reverse(coordinates(p)),return 
+          integer wholeRadix(tmp::LIST INT)$RadixExpansion(2))
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> First check the matrix <tt>M</tt>:
+  <ul>
+   <li> <span class="cmd">map((x +-> poly2int(x)::INT), M)</span></li>
+  </ul>
+ </li>
+ <li>
+  Is this what you should have?
+ </li>
+ <li>
+  Now apply the same command but to <tt>MI</tt> instead of to <tt>M</tt>.
+  What is the result?
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass2.xhtml b/src/axiom-website/hyperdoc/cryptoclass2.xhtml
new file mode 100644
index 0000000..83e220b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass2.xhtml
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 2: Strings and Values</h3>
+</center>
+<hr/>
+
+<b>Characters and Strings</b>
+
+<ul>
+ <li> All printable characters have a fixed ASCII value; some of which are:
+<br/>
+<pre>
+      Character |  A   B   Y   Z   a   b   y   z
+    ------------+-------------------------------
+    ASCII Value | 65  66  89  90  97  98  121 122
+                |
+      Character |  0   1   8   9   ,   -   .   /
+    ------------+-------------------------------
+    ASCII Value | 48  49  56  57  44  45  46  47 
+</pre>
+ </li>
+ <li> To obtain values 0 to 25 for A to Z, we need to subtract 65 from 
+      the ASCII values.  
+ </li>
+ <li> In Axiom, the <tt>ord</tt> command gives the ASCII value of a
+      character.  Create a string such as:
+  <ul>
+   <li> <span class="cmd">str:="THISISASTRING"</span></li>
+  </ul>
+ </li>
+ <li> A string can be turned into a list of characters using <tt>members</tt>:
+  <ul>
+   <li> <span class="cmd">members(str)</span></li>
+  </ul>
+ </li>
+ <li> This means a string can be turned into a list of ASCII values by 
+      mapping the <tt>ord</tt> function onto the list of members:
+  <ul>
+   <li> <span class="cmd">map(ord,members(str))</span></li>
+  </ul>
+ </li>
+ <li> To obtain values in the 0--25 range, try using an unnamed function:
+  <ul>
+   <li> <span class="cmd">strn:=map(x +-> ord(x)-65,members(str))</span></li>
+  </ul>
+ </li>
+ <li> Use this last command to create a function <tt>str2lst</tt> which will
+      take a string (assumed to be of capital letters, with no spaces or
+      punctuation), and return a list of values between 0 and 25.
+ </li>
+ <li> To go the other way, we first need to add 65 to all elements of
+      <tt>strn</tt>:
+  <ul>
+   <li> <span class="cmd">map(x +-> x+65,strn)</span></li>
+  </ul>
+ </li>
+ <li> Turn this into characters with <tt>char</tt>:
+  <ul>
+   <li> <span class="cmd">map(char,%)</span></li>
+  </ul>
+ </li>
+ <li> These can be done as a single command:
+  <ul>
+   <li> <span class="cmd">map(x +-> char(x+65),strn)</span></li>
+  </ul>
+ </li>
+ <li> To put them all together as a single string we can concatenate them 
+      with the <tt>concat</tt> function from the <tt>String</tt> domain:
+  <ul>
+   <li> <span class="cmd">concat(%)$String</span></li>
+  </ul>
+ </li>
+ <li> In one line:
+  <ul>
+   <li> <span class="cmd">concat(map(x +-> char(x+65),strn))$String</span></li>
+  </ul>
+ </li>
+ <li> Alternatively, we could convert the characters to type <tt>String</tt>
+      before concatenation:
+  <ul>
+   <li> 
+    <span class="cmd">
+     concat(map(x +-> char(x+65)::String,strn))
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Use either version of this last command to create a function
+      <tt>lst2str</tt> which will take a list of values between 0 and 25 and
+      return a string.
+ </li>
+ <li> Create a text file in one of your private directories called
+      <tt>my3720.input</tt> and copy your <tt>str2lst</tt> and 
+      <tt>lst2str</tt> functions to it.
+ </li>
+ <li> You can read command line input from a file with the extension
+      <tt>.input</tt> using the <tt>)read</tt> command:
+  <ul>
+   <li> <span class="cmd">)read my3720</span></li>
+  </ul>
+ </li>
+ <li> The Caesar cipher can be implemented by the following three steps:
+  <ol>
+   <li> Turn the string into a list,</li>
+   <li> Add 3 to every number in the list,</li>
+   <li> Turn this new list back into a string.</li>
+  </ol>
+ </li>
+ <li> To ensure that step (2) remains in the 0--25 range, we need to use the
+      <tt>rem</tt> function.  These can all be put together as:
+  <ul>
+   <li> 
+    <span class="cmd">
+     caesar(str) == lst2str(map(x +-> (x+3) rem 26, str2lst(str)))
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Try this out on a few strings of your choice.</li>
+  
+ <li> By replacing the "<tt>+3</tt>" in the <tt>caesar</tt> function with
+  "<tt>+n</tt>" create a new function called <tt>trans(str,n)</tt> which
+  implements a general translation cipher.
+ </li>
+ <li> Test it out; these two commands should produce the same results.
+  <ul>
+   <li> <span class="cmd">caesar("MYSTRING")</span></li>
+   <li> <span class="cmd">trans("MYSTRING",3)</span></li>
+  </ul>
+ </li>
+ <li> If you like, add the <tt>caesar</tt> and <tt>trans</tt> functions to
+      your <tt>my3720.input</tt> file.
+ </li>
+ <li> Test your <tt>trans</tt> function out on a few other strings and
+      translation values.
+ </li>
+ <li> The <tt>ROT13</tt> cipher is used in Usenet postings to hide information
+      which might be considered offensive.  It is a translation cipher with a
+      shift of 13.  Since 13 is half of 26, this means that encrytion and
+      decryption are exactly the same.  Apply <tt>ROT13</tt> to:
+  <ul>
+   <li> GUVFVFNIRELFREVBHFOHFVARFF</li>
+  </ul>
+ </li>
+ <li> Consider this string which has been produced with a translation cipher.
+      To decrypt it, simply apply all possible shifts until you obtain 
+      understandable text. 
+  <ul>
+   <li> IUDTCUQBBOEKHCEDUO</li>
+  </ul>
+ </li>
+ <li> To apply all the possible shifts do:
+  <ol>
+   <li> <span class="cmd">ct:="IUDTCUQBBOEKHCEDUO"</span></li>
+   <li> <span class="cmd">for i in 1..26 repeat output trans(ct,i)</span></li>
+  </ol>
+ </li>
+ <li> What is the plaintext?</li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass3.xhtml b/src/axiom-website/hyperdoc/cryptoclass3.xhtml
new file mode 100644
index 0000000..57fced4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass3.xhtml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 3: Number Theory</h3>
+</center>
+<hr/>
+
+<ul>
+
+ <li> Check out the commands <tt>gcd</tt> and <tt>factor</tt>, and test them
+  on different numbers, small and large.
+ </li>  
+ <li> Axiom provides a few useful commands for taking apart the factors of an
+  object:
+  <ul>
+   <li> <span class="cmd">n:=5040</span></li>
+   <li> <span class="cmd">f:=factor(n)</span></li>
+   <li> <span class="cmd">numf:=numberOfFactors(f)</span></li>
+   <li> <span class="cmd">fs:=[nthFactor(f,i) for i in 1..numf]</span></li>
+   <li> <span class="cmd">es:=[nthExponent(f,i) for i in 1..numf]</span></li>
+   <li> <span class="cmd">reduce(*,[fs.i^es.i for i in 1..numf])</span></li>
+  </ul>
+ </li>
+ <li> The last command simply multiplies all the factors to their powers.</li>
+ 
+ <li> Check out the commands <tt>prime?</tt>, <tt>nextPrime</tt> and
+      <tt>prevPrime</tt>.
+ </li>
+ <li> To compute the <tt>i</tt>-th prime, we can construct a <i>stream</i>
+      (an infinite list) in Axiom:
+  <ul>
+   <li> 
+    <span class="cmd">
+     primes:Stream Integer:=[i for i in 2.. | prime? i]
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Now we can find, for example, the 100-th prime, and the 2500-th prime:
+  <ul>
+   <li> <span class="cmd">primes.100</span></li>
+   <li> <span class="cmd">primes.2500</span></li>
+  </ul>
+ </li>
+ <li> Create random 10 digit primes:
+  <ul>
+   <li> <span class="cmd">p := nextPrime(random(10^10))</span></li>
+   <li> <span class="cmd">q := nextPrime(random(10^10))</span></li>
+  </ul>
+ </li>
+ <li> Now multiply them and factor the product.  How long did it take?</li>
+
+ <li> Try the same thing with 12 digit primes and 15 digit primes.</li>
+  
+ <li> The extended Euclidean algorithm is implemented by the command
+  <tt>extendedEuclidean</tt>.  Here's how to use it:
+  <ul>
+   <li> <span class="cmd">a:=1149</span></li>
+   <li> <span class="cmd">b:=3137</span></li>
+   <li> <span class="cmd">g:=extendedEuclidean(a,b)</span></li>
+   <li> <span class="cmd">s:=g.coef1</span></li>
+   <li> <span class="cmd">t:=g.coef2</span></li>
+  </ul>
+ </li>
+ <li> and now test them:
+  <ul>
+   <li> <span class="cmd">s*a+t*b</span></li>
+  </ul>
+ </li>
+ <li> Try this on a few other numbers.</li>
+  
+ <li> Axiom uses the command <tt>positiveRemainder</tt> instead of
+      <tt>mod</tt> command, so let's define <tt>mod</tt> to be a renaming 
+      of the <tt>positiveRemainder</tt> function:
+  <ul>
+   <li> <span class="cmd">mod ==> positiveRemainder</span></li>
+  </ul>
+ </li>
+ <li> Now the commands <tt>addmod</tt>, <tt>submod</tt>, <tt>mulmod</tt>, and
+      <tt>invmod</tt> can be used to perform modular arithmetic.  Here's a few
+      examples; first a simple modulus calculation:
+  <ul>
+   <li> <span class="cmd">-10 mod 3</span></li>
+  </ul>
+ </li>
+ <li> Addition, subtraction and multiplication mod 14:
+  <ul>
+   <li> <span class="cmd">addmod(10,13,14)</span></li>
+   <li> <span class="cmd">submod(17,23,14)</span></li>
+   <li> <span class="cmd">mulmod(13,27,14)</span></li>
+  </ul>
+ </li>
+ <li> Powers and inverses:
+  <ul>
+   <li> <span class="cmd">powmod(19,237,14)</span></li>
+   <li> <span class="cmd">invmod(11,14)</span></li>
+  </ul>
+ </li>
+ <li> Find out what happens if you try to take an inverse of a number not
+      relatively prime to the modulus:
+  <ul>
+   <li> <span class="cmd">invmod(12,14)</span></li>
+  </ul>
+ </li>
+ <li> Try these command with a few other numbers, and test out the examples in
+  the notes.
+ </li>
+ <li> The second method, which can be more powerful, is to treat all numbers
+  as elements of the residue values 0 to <tt>n-1</tt>.  This can be done with 
+  the <tt>IntegerMod</tt> construction, or its abbreviation <tt>ZMOD</tt>.  
+  Here's a few examples:
+  <ul>
+   <li> <span class="cmd">a:=11::ZMOD 14</span></li>
+  </ul>
+ </li>
+ <li> This declares the variable <tt>a</tt> to be a member of the residue 
+      class modulo 14.  Now all arithmetic including <tt>a</tt> will be 
+      reduced to this same class of values:
+  <ul>
+   <li> <span class="cmd">a+25</span></li>
+   <li> <span class="cmd">a*39</span></li>
+   <li> <span class="cmd">a^537</span></li>
+  </ul>
+ </li>
+ <li> Inversion can be done with the <tt>recip</tt> command:
+  <ul>
+   <li> <span class="cmd">recip(a)</span></li>
+  </ul>
+ </li>  
+ <li> We don't have to define a variable first.  All the above commands could
+      be equivalently written as:
+  <ul>
+   <li> <span class="cmd">(11::ZMOD 14)+25</span></li>
+   <li> <span class="cmd">11::ZMOD 14*39</span></li>
+   <li> <span class="cmd">11::ZMOD 14^537</span></li>
+   <li> <span class="cmd">recip(11::ZMOD 14)</span></li>
+  </ul>
+ </li>  
+ <li> If the modulus is a prime, then division (by non-zero values) is also
+      possible.  Axiom provides the alternative construction 
+      <tt>PrimeField</tt> or more simply <tt>PF</tt>.  For example:
+  <ul>
+   <li> <span class="cmd">a:=7::PF 11</span></li>
+  </ul>
+ </li>
+ <li> All the above arithmetic operations of addition, subtraction, 
+      multiplication and powers work, but now we also have inversion:
+  <ul>
+   <li> <span class="cmd">1/a</span></li>
+  </ul>
+ </li>
+ <li> Using any of the methods you like, test out Fermat's theorem for a large
+      prime <tt>p</tt> and an integer <tt>a</tt>.
+ </li>  
+ <li> Euler's totient function is implemented with <tt>eulerPhi</tt>.  Choose
+      a large integer <tt>n</tt>, a random <tt>a</tt> with 
+      <tt>gcd(a,n)=1</tt> , and test Euler's theorem
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass4.xhtml b/src/axiom-website/hyperdoc/cryptoclass4.xhtml
new file mode 100644
index 0000000..adba468
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass4.xhtml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 4: Simple Cryptosystems</h3>
+</center>
+<hr/>
+
+We have experimented with the Caesar cipher and the more general
+translation cipher.  We shall start looking at the Vigen&#x0E8;re cipher.
+The trick is to add the correct letter of the code to the letter of
+the key:
+<pre>
+ Index of plain text i: 1  2  3  4  5  6  7  8
+             Plaintext: W  I  T  H  D  R  A  W
+                   Key: C  O  D  E  C  O  D  E
+        Index of key j: 1  2  3  4  1  2  3  4
+</pre>
+
+The indices of the key repeat 1, 2, 3, 4.  We can get a repetition of
+length four by using a modulus of 4:
+<pre>
+                     i: 1  2  3  4  5  6  7  8
+             i (mod 4): 1  2  3  0  1  2  3  0
+</pre>
+
+What we need to do is to subtract one before the modulus, and add one after:
+<pre>
+                     i: 1  2  3  4  5  6  7  8
+                   i-1: 0  1  2  3  4  5  6  7
+           i-1 (mod 4): 0  1  2  3  0  1  2  3
+       i-1 (mod 4) + 1: 1  2  3  4  1  2  3  4
+</pre>
+
+This means that in the Vigen&#x0E8;re cipher, we add the <i>i</i>-th
+character of the plaintext, and the <i>j</i>-th character of the key, where
+<pre>
+   j=i-1 (mod n) + 1
+</pre>
+with <i>n</i> being the length of the key.
+
+<ul>
+
+ <li> First read in the <tt>rcm3720.input</tt> file you have created:
+  <ul>
+   <li> <span class="cmd">)read rcm3720</span></li>
+  </ul>
+
+  You may have to include the full path here.
+ </li>
+ <li> Enter a plaintext
+  <ul>
+   <li> <span class="cmd">plaintext:="WITHDRAWONEHUNDREDDOLLARS"</span></li>
+  </ul>
+ </li>
+ <li> and a keyword:
+  <ul>
+   <li> <span class="cmd">key := "CODE"</span></li>
+  </ul>
+ </li>
+ <li> Now we can obtain the lengths of the plaintext and key with the hash
+      symbol:
+  <ul>
+   <li> <span class="cmd">pn:=#plaintext</span></li>
+   <li> <span class="cmd">kn:=#key</span></li>
+  </ul>
+ </li>
+ <li> Turn both plaintext and key into lists of numbers:
+  <ul>
+   <li> <span class="cmd">pl:=str2lst(plaintext)</span></li>
+   <li> <span class="cmd">kl:=str2lst(key)</span></li>
+  </ul>
+ </li>  
+ <li> Now we can add them using the formula for <tt>j</tt> above to obtain 
+      the list corresponding to the ciphertext:
+  <ul>
+   <li> 
+    <span class="cmd">
+     cl:=[(pl.i+kl.((i-1) rem kn+1))::ZMOD 26 for i in 1..pn]
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> And obtain the ciphertext (we need to convert our list to a list of
+      integers first):
+  <ul>
+   <li> <span class="cmd">ciphertext:=lst2str(cl::List INT)</span></li>
+  </ul>
+ </li>
+ <li> Try a few other Vigen&#x0E8;re encryptions.</li>
+  
+ <li> To decrypt, we just <i>subtract</i> the key value from the ciphertext
+  value:
+  <ul>
+   <li> 
+    <span class="cmd">
+     pl:=[(cl.i+kl.((i-1) rem kn+1))::ZMOD 26 for i in 1..pn]
+    </span>
+    </li>
+   <li> <span class="cmd">lst2str(pl::List INT)</span></li>
+  </ul>
+ </li>  
+ <li> Now for the Hill (matrix) cipher.  We shall use <tt>3 x 3</tt>
+  matrices, so first create a plaintext whose length is a multiple of 3:
+  <ul>
+   <li> <span class="cmd">plaintext:="WITHDRAWONEHUNDREDDOLLARSXX"</span></li>
+   <li> <span class="cmd">pl:=str2lst(plaintext)</span></li>
+   <li> <span class="cmd">r:=3</span></li>
+   <li> <span class="cmd">c:INT:=#pl/r</span></li>
+  </ul>
+ </li>
+ <li> The values <tt>r</tt> and <tt>c</tt> are the row and column numbers 
+      of the plaintext matrix.
+ </li>  
+ <li> Now put all the plaintext values into a <tt>r x c</tt> matrix:
+  <ul>
+   <li> 
+    <span class="cmd">
+     S:=matrix([[pl.(r*(i-1)+j) for i in 1..c] for j in 1..r])
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Create the key matrix:
+  <ul>
+   <li> 
+    <span class="cmd">
+     M:Matrix ZMOD 26:=matrix([[22,11,19],[15,20,24],[25,21,16]])
+    </span>
+   </li>
+  </ul>
+ </li>  
+ <li> Multiply the two matrices:
+  <ul>
+   <li> <span class="cmd">C:=M*S</span></li>
+  </ul>
+ </li>
+ <li> Notice how the results are automatically reduced modulo 26,
+      because that is how the matrix <tt>M</tt> was defined.
+ </li> 
+ <li> Now we have to read off the elements of <tt>C</tt> into a single list;
+  this can be done by transposing the matrix, and reading off the rows as
+  lists:
+  <ul>
+   <li> 
+    <span class="cmd">
+     CL:=concat(transpose(C)::List List ZMOD 26)
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> And finally turn into ciphertext:
+  <ul>
+   <li> <span class="cmd">lst2str(CL::List INT)</span></li>
+  </ul>
+ </li>
+ <li> Finally, here's how we can invert our matrix <tt>M</tt> modulo 26:
+  <ul>
+   <li> <span class="cmd">adj:=adjoint(M).adjMat</span></li>
+   <li> <span class="cmd">invdet:=recip(determinant(M))</span></li>
+   <li> <span class="cmd">MI:=invdet*adj</span></li>
+  </ul>
+ </li>
+ <li> Or alternatively, as one command:
+  <ul>
+   <li> 
+    <span class="cmd">
+     MI:=recip(determinant(M))*adjoint(M).adjMat
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Check the result:
+  <ul>
+   <li> <span class="cmd">M*MI</span></li>
+  </ul>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass5.xhtml b/src/axiom-website/hyperdoc/cryptoclass5.xhtml
new file mode 100644
index 0000000..09a7182
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass5.xhtml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 5: RSA and public-key cryptosystems</h3>
+</center>
+<hr/>
+<ul>
+ <li> Read in this file:
+  <ul>
+   <li> 
+    <span class="cmd">
+     )read "S:/Samples/RCM3720/rcm3720.input" )quiet
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> You can leave the "<tt>)quiet</tt>" off if you like.  The file
+  is also available <a href="rcm3720.input">here</a>.  
+  If you obtain it from the
+  website, save it to a place of your choice, and <tt>read</tt> it
+  into your Axiom session using the full path, as shown above.
+ </li>
+ <li> Now create some large primes and their product:
+  <ul>
+   <li> <span class="cmd">r() == rand(2^100)</span></li>
+   <li> <span class="cmd">p:=nextPrime(r())</span></li>
+   <li> <span class="cmd">q:=nextPrime(r())</span></li>
+   <li> <span class="cmd">n:=p*q</span></li>
+  </ul>
+ </li>
+ <li> Choose a value <tt>e</tt> and ensure that it is relatively prime 
+      to your <tt>(p-1)(q-1)</tt>, and determine 
+      <tt>d=e^-1 mod (p-1)(q-1)</tt>.  (Use the <tt>invmod</tt> function here).
+ </li>
+ <li> Create a plaintext:
+  <ul>
+   <li> <span class="cmd">pl:="This is my plaintext."</span></li>
+  </ul>
+ </li>
+ <li> (or any plaintext you like), and convert it to a number using the
+      <tt>str2num</tt> procedure from the file above:
+  <ul>
+    <li> <span class="cmd">pln:=str2num(pl)</span></li>
+  </ul>
+ </li>
+ <li> Encrypt this number using the RSA method:
+  <ul>
+   <li> <span class="cmd">ct:=powmod(pln,e,n)</span></li>
+  </ul>
+ </li>
+ <li> and decrypt the result:
+  <ul>
+   <li> <span class="cmd">decrypt:=powmod(ct,d,n)</span></li>
+   <li> <span class="cmd">num2str(decrypt)</span></li>
+  </ul>  
+ </li>
+ <li> With a friend, swap your public keys and use them to send
+      each other a ciphertext encrypted with your friend's public key.
+ </li>
+ <li> Now decrypt the ciphertext you have received using your private key.</li>
+  
+ <li> Now try Rabin: create two large primes <tt>p</tt> and <tt>q</tt> and 
+      ensure that each is equal to 3 mod 4.  (You might have to run the 
+      <tt>nextPrime</tt> command a few times until you get primes which work.)
+ </li>
+ <li> Create <tt>N=pq</tt> and create a plaintext <tt>pl</tt>, and its 
+      numerical equivalent.
+ </li>
+ <li> Determine the ciphertext <tt>c</tt> by squaring your 
+      number mod <tt>N</tt>.
+ </li>
+ <li> Determine the <tt>s</tt> and <tt>t</tt> for which <tt>sp+tq=1</tt> 
+      by using the <tt>extendedEuclidean</tt> function.
+ </li> 
+ <li> Now follow through the Rabin decryption:
+  <ul>
+   <li> <span class="cmd">cp:=powmod(c,(p+1)/4,N) </span></li>
+   <li> <span class="cmd">cq:=powmod(c,(q+1)/4,N)</span></li>
+   <li> 
+    <span class="cmd">
+     c1:=(s*p*cq+t*q*cp)::ZMOD N,num2str(c1::INT)
+    </span>
+   </li>
+   <li> 
+    <span class="cmd">
+     c2:=(s*p*cq-t*q*cp)::ZMOD N,num2str(c2::INT)
+    </span>
+   </li>
+   <li> 
+    <span class="cmd">
+     c3:=(-s*p*cq-t*q*cp)::ZMOD N,num2str(c3::INT)
+    </span>
+   </li>
+   <li> 
+    <span class="cmd">
+     c4:=(-s*p*cq+t*q*cp)::ZMOD N,num2str(c4::INT)
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> One of the outputs <tt>c1</tt>, <tt>c2</tt>, <tt>c3</tt> and
+      <tt>c4</tt> should produce the correct plaintext; the others should be
+      gibberish.
+ </li>
+ <li> As above, swap public keys with a friend, and use those public
+      keys to encrypt a message to him or her.  Now decrypt the ciphertext
+      you have been given.
+ </li>
+ <li> For the el Gamal system, you need a large prime and a primitive
+      root. Create a large prime <tt>p</tt> and find a primitive root 
+      <tt>a</tt> using.
+  <ul>
+   <li> <span class="cmd">a:=primitiveElement()$PF p</span></li>
+  </ul>
+ </li>
+ <li> The <tt>primitiveElement</tt> command is not very efficient, so
+      if it seems to be taking a long time, abort the computation and try
+      with another prime.
+ </li>
+ <li> Do this in pairs with a friend, so that you each agree on a
+      large prime and a primitive root.
+ </li>
+ <li> Now choose a random value <tt>A</tt>:
+  <ul>
+   <li> <span class="cmd">A:=random(p-1)</span></li>
+  </ul>
+ </li>
+ <li> and create your public key <tt>A1=a^A (mod p)</tt>:
+  <ul>
+   <li> <span class="cmd">A1:=a^A</span></li>
+  </ul>
+ </li>
+ <li> Swap public keys with your friend.</li>
+  
+ <li> Create a plaintext <tt>pl</tt> and its number <tt>pln</tt>, and create
+      the ciphertext as follows (where <tt>A1</tt> is your friend's 
+      public key):
+  <ul>
+   <li> <span class="cmd">k:=random(p-1)</span></li>
+   <li> <span class="cmd">K:=A1^k</span></li>
+   <li> <span class="cmd">C:=[a^k, K*pln]</span></li>
+  </ul>
+ </li>
+ <li> This pair <tt>C</tt> is the ciphertext you send to your friend.</li>
+  
+ <li> Now decrypt the ciphertext you have been sent:
+  <ul>
+   <li> <span class="cmd">K:=C.1 ^ A</span></li>
+   <li> <span class="cmd">m:=C.2/K</span></li>
+   <li> <span class="cmd">num2str(m::INT)</span></li>
+  </ul>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass6.xhtml b/src/axiom-website/hyperdoc/cryptoclass6.xhtml
new file mode 100644
index 0000000..db0d903
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass6.xhtml
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 6: Digital Signatures</h3>
+</center>
+<hr/>
+
+You will need to read in the <a href="rcm3720.input">rcm3720.input</a>
+file for the <tt>str2num</tt> and <tt>num2str</tt> procedures.
+<br/>
+<b>NOTE:</b> To save typing in all the messages and long signature
+numbers, just copy them from <a href="signatures.txt">signatures.txt</a>
+
+<ul>
+
+ <li> For an RSA signature scheme, I provide the public key <i>(n,e)</i>, where
+<pre>
+      137
+   n=2   -1,  e=17
+</pre>
+ </li>
+ <li> This value <tt>n</tt> has two large prime factors. 
+      Use my public key to verify my signature of the following message:
+<pre>
+   This is my text.
+   68767027465671577191073128495082795700768
+</pre>
+ </li> 
+ <li> Now try with the public key
+<pre>
+      67
+  n=(6   - 1)/5,  e=17
+</pre>
+ </li>
+ <li> to verify my signature:
+<pre>
+   Please feed my dog!
+   1703215098456351993605104919259566435843590978852633
+</pre>
+ </li>
+ <li> For a Rabin signature scheme, I provide the public key 
+<pre>
+       74
+   N=(7  -1)/6,
+</pre>
+  which I know can be factorized into two large primes.
+ </li>
+ <li> Check the following message and signature:
+<pre>
+   Arrive Thursday.
+   189479723122534414019783447271411895509
+</pre>
+ </li> 
+  
+ <li> For an El Gamal signature scheme, I choose the next prime after
+<pre>
+     150
+    2
+</pre>
+  which has a primitive root <tt>a=2</tt>.  My public key is
+<pre>
+    B=1369851585774063312693119161120024351761244461
+</pre>
+ </li>
+ <li> Verify the signature
+<pre>
+    Leave AT ONCE!,
+    1389080525305754392111976715361069425353578198
+    1141326468070168229982976133801721430306004477
+</pre>
+ </li> 
+ <li> For a DSS signature, choose <tt>p</tt> to be the next prime after
+<pre>
+     170
+    2     and q=143441505468590696209
+</pre>
+ </li>
+ <li> Verify that <tt>q</tt> is a divisor of <tt>p-1</tt>.
+  
+  A primitive root of <tt>p</tt> is <tt>a=3</tt>.  
+  Use this primitive root to determine
+<pre>
+         (p-1)/q
+    g = a        mod p
+</pre>
+ </li>
+ <li> The public key value is
+<pre>
+    B=1394256880659595564848116770226045673904445792389839.
+</pre>
+ </li>
+ <li> Now using these values, verify this signature:
+<pre>
+    Now's your chance!
+    64609209464638355801
+    13824808741200493330
+</pre>
+ </li>
+ <li> Now exchange some public keys with a friend, and sign messages to each
+      other. Then verify the signatures you have been sent. Make sure you try
+      each of
+  <ul>
+   <li> RSA signatures,</li>
+   <li> Rabin signatures,</li>
+   <li> El Gamal signatures,</li>
+   <li> DSS.</li>
+  </ul>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass7.xhtml b/src/axiom-website/hyperdoc/cryptoclass7.xhtml
new file mode 100644
index 0000000..13111d9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass7.xhtml
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 7: Knapsack cryptosystems</h3>
+</center>
+<hr/>
+
+You will need to read in the <a href="rcm3720.input">rcm3720.input</a>
+file for various necessary procedures.
+<br/><br/>
+<b>The subset sum problem</b>
+<br/><br/>
+
+We will first experiment with this problem; creating random lists and adding
+up elements from them.
+
+<ul>
+ <li> Start with a list of eight elements:
+  <ul>
+   <li> <span class="cmd">ln:=8</span></li>
+   <li> <span class="cmd">lst:=[random(10^6) for i in 1..ln]</span></li>
+   <li> <span class="cmd">m:=[random(2) for i in 1..ln]</span></li>
+   <li> <span class="cmd">c:=reduce(+,[m.i*lst.i for i in 1..ln])</span></li>
+   <li> <span class="cmd">subsetsum(lst,c)</span></li>
+  </ul>
+ </li>
+ <li> The <tt>subsetsum</tt> command implements a fairly non-efficient 
+      command for attemping to solve the subset sum problem for an 
+      arbitrary list.
+ </li>
+ <li> Try the above commands, but starting with a length <tt>ln</tt> of
+      12. You should find the command is a bit slower this time.  
+      Use this command to time it:
+  <ul>
+   <li> <span class="cmd">)set messages time on</span></li>
+  </ul>
+ </li>
+ <li> Experiment with lengths of 16 and 20.  How long does the
+      <tt>subsetsum</tt> command take for each of these values?
+ </li>
+</ul>
+<br/><br/>
+<b>Superincreasing sequences</b>
+
+<ul>
+ <li> Create a superincreasing sequence with
+  <ul>
+   <li> <span class="cmd">ln:=8</span></li>
+   <li> <span class="cmd">lst:=[random(10^6) for i in 1..ln]</span></li>
+   <li> 
+    <span class="cmd">
+     for i in 2..ln repeat lst.i:=reduce(+,[lst.j for j in 1..i-1])+random(10)+1
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Now create <tt>m</tt> and <tt>c</tt> as above.  This time, solve the
+      problem with
+  <ul>
+   <li> <span class="cmd">siSolve(lst,c)</span></li>
+  </ul>  
+ </li>
+ <li> Now try with larger lengths: 12, 16 and 20, and time the commands each
+      time.
+ </li>
+ <li> What can you say about solving the subset sum problem for general and
+      superincreasing lists?
+ </li>
+</ul>
+<br/><br/>
+<b>The Merkle-Hellman additive knapsack system</b>
+
+<ul>
+ <li> Create a superincreasing list of length <tt>ln</tt> 10, and call it
+  <tt>a</tt>.  Create a new number <tt>N</tt> greater than the sum of all
+  values of <tt>a</tt>.  Check with
+  <ul>
+   <li> <span class="cmd">N>reduce(+,[a.i for i in 1..ln])</span></li>
+  </ul>
+ </li>
+ <li> Now choose (randomly) a value <b>wN</b> and which is
+      relatively prime to <b>N</b>.  Then construct your public key:
+  <ul>
+   <li> <span class="cmd">b:=map(x +-> x*w rem N,a)</span></li>
+  </ul>  
+ </li>
+ <li> Now for an encryption and decryption. Create a random message <tt>m</tt>
+  as above, and encrypt it to a ciphertext <tt>c</tt> using the public key
+  <tt>b</tt>. 
+ </li>
+ <li> Decrypt it as follows:
+  <ul>
+   <li> <span class="cmd">c1:=inv_mod(w,N)*c rem N</span></li>
+   <li> <span class="cmd">siSolve(a,c1)</span></li>
+  </ul>
+ </li>
+ <li> 
+  Experiment with longer lists and messages: 12, 16, 20 or even larger.
+ </li>
+</ul>
+<br/><br/>
+<b>The Merkle-Hellman multiplicative knapsack system</b>
+
+<ul>
+ <li> Choose <tt>a</tt> to be the first ten primes, 
+      and a large prime <tt>p</tt>:
+  <ul>
+   <li> <span class="cmd">a:=[2,3,5,7,11,13,17,19,23,29]</span></li>
+   <li> <span class="cmd">p:=6469785001</span></li>
+  </ul>
+ </li>
+ <li> Check that <tt>p</tt> is greater than the product of all elements of
+      <tt>a</tt>:
+  <ul>
+   <li> <span class="cmd">p>reduce(*,[a.i for i in 1..10])</span></li>
+  </ul>
+ </li>
+ <li> and that <tt>p-1</tt> has only small factors:
+  <ul>
+   <li> <span class="cmd">factor(p-1)</span></li>
+  </ul>
+ </li>
+ <li> Choose as a primitive root the value 34:
+  <ul>
+   <li> <span class="cmd">r:=34</span></li>
+   <li> <span class="cmd">primitive?(r)$PF(p)</span></li>
+  </ul>  
+ </li>  
+ <li> and compute the public key: 
+  <ul>
+   <li> <span class="cmd">b:=map(x +-> discreteLog(r,x)$PF(p),a)</span></li>
+  </ul>  
+ </li>
+ <li> Create a message of length 10, and encrypt it using the public key
+  <tt>b</tt>:
+  <ul>
+   <li> 
+    <span class="cmd">
+     c:=reduce(+,[m.i*b.i::INT for i in 1..ln])
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Decryption is now done with:
+  <ul>
+   <li> <span class="cmd">c1:=powmod(r,c,p)</span></li>
+   <li> <span class="cmd">factor(c1)</span></li>
+  </ul>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass8.xhtml b/src/axiom-website/hyperdoc/cryptoclass8.xhtml
new file mode 100644
index 0000000..4829caf
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass8.xhtml
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 8: Modes of Encryption</h3>
+</center>
+<hr/>
+
+We will investigate the different modes of encryption using the Hill
+(matrix) cryptosystem.  Start off by entering some matrices:
+  <ul>
+   <li> 
+    <span class="cmd">
+     M:=matrix([[15,9,21],[2,10,7],[16,11,12]])::Matrix ZMOD 26
+    </span>
+   </li>
+   <li> 
+    <span class="cmd">
+     MI:=matrix([[7,17,19],[24,0,23],[12,25,10]])::Matrix ZMOD 26
+    </span>
+   </li>
+  </ul>
+
+Check that you've entered everything correctly with
+  <ul>
+   <li> <span class="cmd">M*MI</span></li>
+  </ul>
+
+Note that because the matrices were defined in terms of numbers mod 26,
+their product is automatically reduced mod 26.
+
+Now enter the following column vector:
+  <ul>
+   <li> 
+    <span class="cmd">
+     zero31:=matrix([[0],[0],[0]])::Matrix ZMOD 26
+    </span>
+   </li>
+  </ul>
+ 
+For this lab, rather than fiddling about with translations between 
+letters and numbers, all our work will be done with numbers alone 
+(in the range 0..25).
+
+<br/><br/>
+<b>ECB</b>
+<br/><br/>
+For electronic codebook mode, encryption is performed by multiplying each
+plaintext block by the matrix, and decryption by multiplying each ciphertext
+block by the inverse matrix:
+<pre>
+                  -1
+    C =M.P ,  P =M  C
+     i    i    i     i
+</pre>
+where all arithmetic is performed mod 26.
+
+<ul>
+ <li> Start by entering a plaintext, which will be a list of column vectors:
+  <ul>
+   <li> 
+    <span class="cmd">
+     P:=[matrix([[3*i],[3*i+1],[3*i+2]]) for i in 0..7]
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> and a list which will receive the ciphertext:
+  <ul>
+   <li> <span class="cmd">C:=[zero31 for i in 1..8]</span></li>
+  </ul>
+ </li>
+ <li> and encrypt it: 
+  <ul>
+   <li> <span class="cmd">for i in 1..8 repeat C.i:=M*P.i</span></li>
+  </ul>
+ </li>
+ <li> Now decrypt (first make an empty list <tt>D</tt>):
+  <ul>
+   <li> <span class="cmd">D:=[zero31 for i in 1..8]</span></li>
+   <li> <span class="cmd">for i in 1..8 repeat D.i:=MI*C.i</span></li>
+  </ul>
+ </li>
+ <li> If all has worked out, the list <tt>D</tt> should be the same 
+      plaintext you obtained earlier.
+ </li>
+ <li> Now change one value in the plaintext:
+  <ul>
+   <li> <span class="cmd">Q:=P</span></li>
+   <li> <span class="cmd">Q.3:=matrix([[6],[19],[8]])</span></li>
+  </ul>
+ </li>
+ <li> Now encrypt the new plaintext <tt>Q</tt> to a ciphertext <tt>E</tt>. How
+  does this ciphertext differ from the ciphertext <tt>C</tt> obtained from
+  <tt>P</tt>?
+ </li>
+ <li> Check that you can decrypt <tt>E</tt> to obtain <tt>Q</tt>.</li>
+</ul>
+<br/><br/>
+<b>CBC</b>
+<br/><br/>
+For cipherblock chaining mode, the encryption formula for the Hill
+cryptosystem is
+<pre>
+   C =M(P +C   )
+    i    i  i-1
+</pre>
+and decryption is
+<pre>
+       -1
+   P =M  C -C
+    i     i  i-1
+</pre>
+
+<ul>
+ <li> To enable us to use these formulas, we shall first add an extra column
+  to the front of <tt>P</tt> and <tt>C</tt>:
+  <ul>
+   <li> <span class="cmd">P:=append([zero31],P)</span></li>
+   <li> <span class="cmd">C:=append([zero31],C)</span></li>
+  </ul>
+ </li>
+ <li> And we need to create a initialization vector:
+  <ul>
+   <li> <span class="cmd">IV:=matrix([[random(26)] for i in 1..3])</span></li>
+  </ul>
+ </li>
+ <li> Now for encryption:
+  <ul>
+   <li> <span class="cmd">C.1:=IV</span></li>
+   <li> 
+    <span class="cmd">
+     for i in 2..9 repeat C.i:=M*(P.i+C.(i-1))
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Let's try to decrypt the ciphertext, using the CBC formula:
+  <ul>
+   <li> <span class="cmd">D:=[zero31 for i in 1..9]</span></li>
+   <li>
+    <span class="cmd">
+     for i in 2..9 repeat D.i:=MI*(C.i)-C.(i-1)
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Did it work out?</li>
+  
+ <li> As before, change one value in the plaintext:
+  <ul>
+   <li> <span class="cmd">Q:=P</span></li>
+   <li> <span class="cmd">Q.4:=matrix([[6],[19],[8]])</span></li>
+  </ul>
+ </li>
+ <li> Now encrypt <tt>Q</tt> to <tt>E</tt> following the procedure outlined
+      above.  Compare <tt>E</tt> with <tt>C</tt>---
+      how much difference is there?
+      How does this difference compare with the differences of ciphertexts
+      obtained with ECB?
+ </li>
+ <li> Just to make sure you can do it, decrypt <tt>E</tt> and make sure you
+  end up with a list equal to <tt>Q</tt>.
+ </li>
+</ul>
+<br/><br/>
+<b>OFB</b>
+<br/><br/>
+Output feedback mode works by creating a <i>key stream</i>, and then adding 
+it to the plaintext to obtain the ciphertext.  With the Hill system, and an
+initialization vector <tt>IV</tt>:
+<pre>
+   k =IV,   k =Mk
+    1        i   i-1
+</pre>
+and then
+<pre>
+   c =p +k
+    i  i  i
+</pre>
+
+<ul>
+ <li> First, the key stream:
+  <ul>
+   <li> <span class="cmd">K:=[zero31 for i in 1..9]</span></li>
+   <li> <span class="cmd">K.1:=IV</span></li>
+   <li> <span class="cmd">for i in 2..9 repeat K.i:=M*K.(i-1)</span></li>
+  </ul>
+ </li>
+ <li> and next the encryption:
+  <ul>
+   <li> <span class="cmd">for i in 2..9 repeat C.i:=K.i+P.i</span></li>
+  </ul>
+ </li>
+ <li> What is the formula for decryption?  
+      Apply it to your ciphertext <tt>C</tt>.
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptoclass9.xhtml b/src/axiom-website/hyperdoc/cryptoclass9.xhtml
new file mode 100644
index 0000000..b077bf3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptoclass9.xhtml
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+ <h3>Laboratory Class 9: Hash Functions</h3>
+</center>
+<hr/>
+<br/><br/>
+<b>A simple hash</b>
+<br/><br/>
+Given two prime numbers <tt>p</tt> and <tt>q</tt>, and their product 
+<tt>N</tt>, we can define a hash of a number <tt>n</tt> to be
+<pre>
+           n
+   hash = g  (mod N)
+</pre>
+
+This is provably collision resistant, because if we want to find two hashes
+which are equal, then we need to find <tt>m</tt> and <tt>n</tt> for which
+<pre>
+    m    n
+   g  = g  (mod N)
+</pre>
+or that
+<pre>
+    m-n
+   g    = 1 (mod N)
+</pre>
+
+By Euler's theorem, we know that
+<pre>
+    &#x3D5;(N)
+   g         = 1 (mod N)
+</pre>
+
+This means that finding a collision requires finding two numbers 
+<tt>m</tt> and <tt>n</tt> for which
+<pre>
+   m = n (mod &#x3D5;(N))
+</pre>
+
+Since computing &#x3D5;(N) requires a knowledge of the factorization of 
+<tt>N</tt>, this will be hard if <tt>p</tt> and <tt>q</tt> are large.
+
+<ul>
+ <li> Enter the following commands:
+  <ul>
+   <li> <span class="cmd">p:=nextPrime(87654321)</span></li>
+   <li> <span class="cmd">q:=nextPrime(98765432)</span></li>
+   <li> <span class="cmd">N:=p*q</span></li>
+   <li> <span class="cmd">g:=17</span></li>
+  </ul>
+ </li>
+ <li> Read in the utility file <a href="rcm3720.input">rcm3720.input</a></li>
+
+ <li> Now experiment with the following hashes:
+  <ul>
+   <li> <span class="cmd">n:=str2num("A cat")</span></li>
+   <li> <span class="cmd">h:=powmod(g,n,N)</span></li>
+   <li> <span class="cmd">n:=str2num("A bat")</span></li>
+   <li> <span class="cmd">h:=powmod(g,n,N)</span></li>
+  </ul>
+ </li>
+   
+ <li> Even though the strings are very similar, 
+      how similar are the hash values?
+ </li>
+ <li> Experiment with hashing some other strings---some short, some long.</li>
+
+ <li> Read in a text file (any text file, of any length) as follows:</li>
+  <ul>
+   <li> 
+    <span class="cmd">
+     f:TextFile:=open("\full\path\to\file","input")
+    </span>
+   </li>
+   <li> <span class="cmd">str:=""</span></li>
+   <li> 
+    <span class="cmd">
+     while not endOfFile?(f) repeat str:=concat(str,readLine(f));
+    </span>
+   </li>
+  </ul>
+  
+ <li> Now the variable <tt>str</tt> will contain the file as one long string.
+      Hash this string, by converting it to a number first.
+ </li> 
+ <li> Try this with a few different text files, 
+      of different lengths---some short, some long.
+ </li>
+</ul>
+
+<br/><br/>
+<b>A simplified version of MASH</b>
+<br/><br/>
+We shall experiment with a simplified version of the MASH hash function:
+
+ <ol>
+  <li> Start with two prime numbers <tt>p</tt> and <tt>q</tt>, 
+      and their product <tt>N</tt>.
+  </li>
+  <li> Turn the data to be hashed into a single integer <tt>n</tt>.</li>
+  
+  <li> Express <tt>n</tt> as ``digits'' in base <tt>N</tt>:</li>
+<pre>
+                    2      3            q
+   n = a + a N + a N  + a N  + ... + a N
+        0   1     2      3            q
+</pre>
+
+  <li> Start with <tt>H</tt> being the largest prime less than <tt>N</tt>.</li>
+
+  <li> For <tt>i</tt> from 0 to <tt>q</tt></li>
+<pre>
+                     2
+      H &#60;-- (H + a_i)  +H (mod N)
+</pre>
+
+  <li> The final value of <tt>H</tt> is the hash.</li>
+ </ol>
+
+<ul>
+ <li> With <tt>p</tt>, <tt>q</tt> and <tt>N</tt> as before, pick a long 
+      string (or the string from a text file) to be hashed, and turn it 
+      into a number <tt>n</tt>.
+ </li>
+ <li> Determine the ``digits'' in base <tt>N</tt>:
+  <ul>
+   <li> 
+    <span class="cmd">
+     a:=wholeRagits(n::RadixExpansion(N))::List ZMOD N
+    </span>
+   </li>
+  </ul>
+ </li>
+ <li> Now create the hash:
+  <ul>
+   <li> <span class="cmd">H:=prevPrime(N)</span></li>  
+   <li> <span class="cmd">for i in 1..#a repeat H:=(H+a.i)^2+H</span></li>  
+  </ul>
+ </li> 
+ <li> Note that since the elements of the list <tt>a</tt> are already 
+      defined as being modulo <tt>N</tt>, we don't have to use a mod 
+      function in this last step.
+ </li>  
+ <li> Create the hashes of a few other strings and files.  What happens if you
+      try to hash a really long text file?
+ </li>  
+ <li> Experiment with hashing using some other (large) primes.</li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/cryptopage.xhtml b/src/axiom-website/hyperdoc/cryptopage.xhtml
new file mode 100644
index 0000000..825629e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/cryptopage.xhtml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<center>
+ <h2>RCM3720 Cryptography, Network and Computer Security</h2>
+</center>
+<hr/>
+<ol>
+ <li> <a href="cryptoclass1.xhtml">
+       Laboratory Class 1: Introduction to Axiom
+      </a>
+ </li>
+ <li> <a href="cryptoclass2.xhtml">
+       Laboratory Class 2: Strings and Values
+      </a>
+ </li>
+ <li> <a href="cryptoclass3.xhtml">
+       Laboratory Class 3: Number Theory
+      </a>
+ </li>
+ <li> <a href="cryptoclass4.xhtml">
+       Laboratory Class 4: Simple Cryptosystems
+      </a>
+ </li>
+ <li> <a href="cryptoclass5.xhtml">
+       Laboratory Class 5: RSA and public-key cryptosystems
+      </a>
+ </li>
+ <li> <a href="cryptoclass6.xhtml">
+       Laboratory Class 6: Digital Signatures
+      </a>
+ </li>
+ <li> <a href="cryptoclass7.xhtml">
+       Laboratory Class 7: Knapsack cryptosystems
+      </a>
+ </li>
+ <li> <a href="cryptoclass8.xhtml">
+       Laboratory Class 8: Modes of Encryption
+      </a>
+ </li>
+ <li> <a href="cryptoclass9.xhtml">
+       Laboratory Class 9: Hash Functions
+      </a>
+ </li>
+</ol>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbcharacteristic.xhtml b/src/axiom-website/hyperdoc/dbcharacteristic.xhtml
new file mode 100644
index 0000000..6d6c3e5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbcharacteristic.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbcharacteristic not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbcomplexcomplex.xhtml b/src/axiom-website/hyperdoc/dbcomplexcomplex.xhtml
new file mode 100644
index 0000000..6ff662c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbcomplexcomplex.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbcomplexcomplex not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbcomplexconjugate.xhtml b/src/axiom-website/hyperdoc/dbcomplexconjugate.xhtml
new file mode 100644
index 0000000..675086a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbcomplexconjugate.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbcomplexconjugate not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbcomplexdoublefloat.xhtml b/src/axiom-website/hyperdoc/dbcomplexdoublefloat.xhtml
new file mode 100644
index 0000000..c1256e6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbcomplexdoublefloat.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbcomplexdoublefloat not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbcomplexfactor.xhtml b/src/axiom-website/hyperdoc/dbcomplexfactor.xhtml
new file mode 100644
index 0000000..45a4040
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbcomplexfactor.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbcomplexfactor not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbcomplexfloat.xhtml b/src/axiom-website/hyperdoc/dbcomplexfloat.xhtml
new file mode 100644
index 0000000..c7fe521
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbcomplexfloat.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbcomplexfloat not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbcompleximag.xhtml b/src/axiom-website/hyperdoc/dbcompleximag.xhtml
new file mode 100644
index 0000000..696f009
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbcompleximag.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbcompleximag not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbcomplexinteger.xhtml b/src/axiom-website/hyperdoc/dbcomplexinteger.xhtml
new file mode 100644
index 0000000..80a69c5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbcomplexinteger.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbcomplexinteger not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbcomplexnorm.xhtml b/src/axiom-website/hyperdoc/dbcomplexnorm.xhtml
new file mode 100644
index 0000000..734a403
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbcomplexnorm.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbcomplexnorm not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbcomplexreal.xhtml b/src/axiom-website/hyperdoc/dbcomplexreal.xhtml
new file mode 100644
index 0000000..19d7073
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbcomplexreal.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbcomplexreal not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbexpressioninteger.xhtml b/src/axiom-website/hyperdoc/dbexpressioninteger.xhtml
new file mode 100644
index 0000000..baa3f28
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbexpressioninteger.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbexpressioninteger not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbfractioninteger.xhtml b/src/axiom-website/hyperdoc/dbfractioninteger.xhtml
new file mode 100644
index 0000000..2f5465b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbfractioninteger.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbfractioninteger not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbfractionpolynomialinteger.xhtml b/src/axiom-website/hyperdoc/dbfractionpolynomialinteger.xhtml
new file mode 100644
index 0000000..9cf07fc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbfractionpolynomialinteger.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbfractionpolynomialinteger not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dblookup.xhtml b/src/axiom-website/hyperdoc/dblookup.xhtml
new file mode 100644
index 0000000..97a57e6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dblookup.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dblookup not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopacos.xhtml b/src/axiom-website/hyperdoc/dbopacos.xhtml
new file mode 100644
index 0000000..7059d60
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopacos.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopacos not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopacosh.xhtml b/src/axiom-website/hyperdoc/dbopacosh.xhtml
new file mode 100644
index 0000000..a50b26a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopacosh.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopacosh not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopacot.xhtml b/src/axiom-website/hyperdoc/dbopacot.xhtml
new file mode 100644
index 0000000..f7fcb71
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopacot.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopacot not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopacoth.xhtml b/src/axiom-website/hyperdoc/dbopacoth.xhtml
new file mode 100644
index 0000000..28d4b85
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopacoth.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopacoth not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopacsc.xhtml b/src/axiom-website/hyperdoc/dbopacsc.xhtml
new file mode 100644
index 0000000..159b93f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopacsc.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopacsc not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopacsch.xhtml b/src/axiom-website/hyperdoc/dbopacsch.xhtml
new file mode 100644
index 0000000..f982002
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopacsch.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopacsch not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopaddmod.xhtml b/src/axiom-website/hyperdoc/dbopaddmod.xhtml
new file mode 100644
index 0000000..94ea83f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopaddmod.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopaddmod not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopairyai.xhtml b/src/axiom-website/hyperdoc/dbopairyai.xhtml
new file mode 100644
index 0000000..eb9fe6a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopairyai.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopairyai not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopairybi.xhtml b/src/axiom-website/hyperdoc/dbopairybi.xhtml
new file mode 100644
index 0000000..8fb7789
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopairybi.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopairybi not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopapproximants.xhtml b/src/axiom-website/hyperdoc/dbopapproximants.xhtml
new file mode 100644
index 0000000..81ce3bb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopapproximants.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopapproximants not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopasec.xhtml b/src/axiom-website/hyperdoc/dbopasec.xhtml
new file mode 100644
index 0000000..13ca60f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopasec.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopasec not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopasech.xhtml b/src/axiom-website/hyperdoc/dbopasech.xhtml
new file mode 100644
index 0000000..ea83dfa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopasech.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopasech not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopasin.xhtml b/src/axiom-website/hyperdoc/dbopasin.xhtml
new file mode 100644
index 0000000..45d19f9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopasin.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopasin not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopasinh.xhtml b/src/axiom-website/hyperdoc/dbopasinh.xhtml
new file mode 100644
index 0000000..4f8b0c3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopasinh.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopasinh not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopatan.xhtml b/src/axiom-website/hyperdoc/dbopatan.xhtml
new file mode 100644
index 0000000..aaf9eb2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopatan.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopatan not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopatanh.xhtml b/src/axiom-website/hyperdoc/dbopatanh.xhtml
new file mode 100644
index 0000000..891293d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopatanh.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopatanh not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopbesseli.xhtml b/src/axiom-website/hyperdoc/dbopbesseli.xhtml
new file mode 100644
index 0000000..2aeec16
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopbesseli.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopbesseli not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopbesselj.xhtml b/src/axiom-website/hyperdoc/dbopbesselj.xhtml
new file mode 100644
index 0000000..ce95a6c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopbesselj.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopbesselj not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopbesselk.xhtml b/src/axiom-website/hyperdoc/dbopbesselk.xhtml
new file mode 100644
index 0000000..0df49fa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopbesselk.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopbesselk not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopbessely.xhtml b/src/axiom-website/hyperdoc/dbopbessely.xhtml
new file mode 100644
index 0000000..21d9ac4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopbessely.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopbessely not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopbeta.xhtml b/src/axiom-website/hyperdoc/dbopbeta.xhtml
new file mode 100644
index 0000000..7bdc464
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopbeta.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopbeta not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopbinary.xhtml b/src/axiom-website/hyperdoc/dbopbinary.xhtml
new file mode 100644
index 0000000..81f4dfd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopbinary.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopbinary not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcardinalnumber.xhtml b/src/axiom-website/hyperdoc/dbopcardinalnumber.xhtml
new file mode 100644
index 0000000..cbce300
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcardinalnumber.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcardinalnumber not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcoefficient.xhtml b/src/axiom-website/hyperdoc/dbopcoefficient.xhtml
new file mode 100644
index 0000000..85a5b13
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcoefficient.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcoefficient not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcoefficients.xhtml b/src/axiom-website/hyperdoc/dbopcoefficients.xhtml
new file mode 100644
index 0000000..0911ffb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcoefficients.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcoefficients not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcoerce.xhtml b/src/axiom-website/hyperdoc/dbopcoerce.xhtml
new file mode 100644
index 0000000..daf2d83
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcoerce.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcoerce not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcolumn.xhtml b/src/axiom-website/hyperdoc/dbopcolumn.xhtml
new file mode 100644
index 0000000..263f58e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcolumn.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcolumn not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcompactfraction.xhtml b/src/axiom-website/hyperdoc/dbopcompactfraction.xhtml
new file mode 100644
index 0000000..febc921
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcompactfraction.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcompactfraction not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcomplexeigenvectors.xhtml b/src/axiom-website/hyperdoc/dbopcomplexeigenvectors.xhtml
new file mode 100644
index 0000000..97a7201
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcomplexeigenvectors.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcomplexeigenvectors not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcomplexelementary.xhtml b/src/axiom-website/hyperdoc/dbopcomplexelementary.xhtml
new file mode 100644
index 0000000..81b7d7c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcomplexelementary.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcomplexelementary not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcomplexintegrate.xhtml b/src/axiom-website/hyperdoc/dbopcomplexintegrate.xhtml
new file mode 100644
index 0000000..3865c76
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcomplexintegrate.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcomplexintegrate not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcomplexlimit.xhtml b/src/axiom-website/hyperdoc/dbopcomplexlimit.xhtml
new file mode 100644
index 0000000..2ba2b67
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcomplexlimit.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcomplexlimit not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcomplexsolve.xhtml b/src/axiom-website/hyperdoc/dbopcomplexsolve.xhtml
new file mode 100644
index 0000000..bc587a3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcomplexsolve.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcomplexsolve not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcontent.xhtml b/src/axiom-website/hyperdoc/dbopcontent.xhtml
new file mode 100644
index 0000000..a0caa49
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcontent.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcontent not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcontinuedfraction.xhtml b/src/axiom-website/hyperdoc/dbopcontinuedfraction.xhtml
new file mode 100644
index 0000000..717d471
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcontinuedfraction.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcontinuedfraction not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopconvergents.xhtml b/src/axiom-website/hyperdoc/dbopconvergents.xhtml
new file mode 100644
index 0000000..28038b5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopconvergents.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopconvergents not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcopy.xhtml b/src/axiom-website/hyperdoc/dbopcopy.xhtml
new file mode 100644
index 0000000..850f227
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcopy.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcopy not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcos.xhtml b/src/axiom-website/hyperdoc/dbopcos.xhtml
new file mode 100644
index 0000000..e64ba0d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcos.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopcos not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcosh.xhtml b/src/axiom-website/hyperdoc/dbopcosh.xhtml
new file mode 100644
index 0000000..1055a35
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcosh.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopcosh not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcot.xhtml b/src/axiom-website/hyperdoc/dbopcot.xhtml
new file mode 100644
index 0000000..68b6f6a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcot.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcot not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcoth.xhtml b/src/axiom-website/hyperdoc/dbopcoth.xhtml
new file mode 100644
index 0000000..6e940bf
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcoth.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcoth not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcount.xhtml b/src/axiom-website/hyperdoc/dbopcount.xhtml
new file mode 100644
index 0000000..ee9caff
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcount.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcount not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcountableq.xhtml b/src/axiom-website/hyperdoc/dbopcountableq.xhtml
new file mode 100644
index 0000000..d0e784c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcountableq.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcountableq not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcsc.xhtml b/src/axiom-website/hyperdoc/dbopcsc.xhtml
new file mode 100644
index 0000000..31ef3d0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcsc.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopcsc not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcsch.xhtml b/src/axiom-website/hyperdoc/dbopcsch.xhtml
new file mode 100644
index 0000000..f4ac7ee
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcsch.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopcsch not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopcycleragits.xhtml b/src/axiom-website/hyperdoc/dbopcycleragits.xhtml
new file mode 100644
index 0000000..8e5a105
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopcycleragits.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopcycleragits not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopd.xhtml b/src/axiom-website/hyperdoc/dbopd.xhtml
new file mode 100644
index 0000000..32cb4c4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopd.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopd not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopdecimal.xhtml b/src/axiom-website/hyperdoc/dbopdecimal.xhtml
new file mode 100644
index 0000000..01bbc86
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopdecimal.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopdecimal not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopdefiningpolynomial.xhtml b/src/axiom-website/hyperdoc/dbopdefiningpolynomial.xhtml
new file mode 100644
index 0000000..450880f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopdefiningpolynomial.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopdefiningpolynomial not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopdegree.xhtml b/src/axiom-website/hyperdoc/dbopdegree.xhtml
new file mode 100644
index 0000000..70b8799
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopdegree.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopdegree not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopdenom.xhtml b/src/axiom-website/hyperdoc/dbopdenom.xhtml
new file mode 100644
index 0000000..6a25be5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopdenom.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopdenom not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopdeterminant.xhtml b/src/axiom-website/hyperdoc/dbopdeterminant.xhtml
new file mode 100644
index 0000000..b76370b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopdeterminant.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopdeterminant not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopdiagonalmatrix.xhtml b/src/axiom-website/hyperdoc/dbopdiagonalmatrix.xhtml
new file mode 100644
index 0000000..2a1052f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopdiagonalmatrix.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopdiagonalmatrix not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopdigamma.xhtml b/src/axiom-website/hyperdoc/dbopdigamma.xhtml
new file mode 100644
index 0000000..07ae855
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopdigamma.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopdigamma not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopdigits.xhtml b/src/axiom-website/hyperdoc/dbopdigits.xhtml
new file mode 100644
index 0000000..db1c5a4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopdigits.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopdigits not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopdimension.xhtml b/src/axiom-website/hyperdoc/dbopdimension.xhtml
new file mode 100644
index 0000000..7fd332c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopdimension.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopdimension not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopdivide.xhtml b/src/axiom-website/hyperdoc/dbopdivide.xhtml
new file mode 100644
index 0000000..6d22286
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopdivide.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopdivide not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopeigenmatrix.xhtml b/src/axiom-website/hyperdoc/dbopeigenmatrix.xhtml
new file mode 100644
index 0000000..6d7daca
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopeigenmatrix.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopeigenmatrix not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopeigenvalues.xhtml b/src/axiom-website/hyperdoc/dbopeigenvalues.xhtml
new file mode 100644
index 0000000..dad09c3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopeigenvalues.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopeigenvalues not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopeigenvector.xhtml b/src/axiom-website/hyperdoc/dbopeigenvector.xhtml
new file mode 100644
index 0000000..2a2169b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopeigenvector.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopeigenvector not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopeigenvectors.xhtml b/src/axiom-website/hyperdoc/dbopeigenvectors.xhtml
new file mode 100644
index 0000000..a701e19
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopeigenvectors.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopeigenvectors not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopelt.xhtml b/src/axiom-website/hyperdoc/dbopelt.xhtml
new file mode 100644
index 0000000..ea29b58
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopelt.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopelt not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopeval.xhtml b/src/axiom-website/hyperdoc/dbopeval.xhtml
new file mode 100644
index 0000000..86069eb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopeval.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopeval not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopevenq.xhtml b/src/axiom-website/hyperdoc/dbopevenq.xhtml
new file mode 100644
index 0000000..3fb1d78
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopevenq.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopevenq not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopexp.xhtml b/src/axiom-website/hyperdoc/dbopexp.xhtml
new file mode 100644
index 0000000..0ea12ce
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopexp.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopexp not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopfactor.xhtml b/src/axiom-website/hyperdoc/dbopfactor.xhtml
new file mode 100644
index 0000000..1a96d21
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopfactor.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopfactor not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopfactorfraction.xhtml b/src/axiom-website/hyperdoc/dbopfactorfraction.xhtml
new file mode 100644
index 0000000..f88e798
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopfactorfraction.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopfactorfraction not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopfiniteq.xhtml b/src/axiom-website/hyperdoc/dbopfiniteq.xhtml
new file mode 100644
index 0000000..814be93
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopfiniteq.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopfiniteq not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopfirstdenom.xhtml b/src/axiom-website/hyperdoc/dbopfirstdenom.xhtml
new file mode 100644
index 0000000..3f61251
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopfirstdenom.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopfirstdenom not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopfirstnumer.xhtml b/src/axiom-website/hyperdoc/dbopfirstnumer.xhtml
new file mode 100644
index 0000000..1f69be2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopfirstnumer.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopfirstnumer not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopfractragits.xhtml b/src/axiom-website/hyperdoc/dbopfractragits.xhtml
new file mode 100644
index 0000000..bd7b2db
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopfractragits.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopfractragits not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopgamma.xhtml b/src/axiom-website/hyperdoc/dbopgamma.xhtml
new file mode 100644
index 0000000..898cc95
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopgamma.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopgamma not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopgcd.xhtml b/src/axiom-website/hyperdoc/dbopgcd.xhtml
new file mode 100644
index 0000000..60640e6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopgcd.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopgcd not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbophex.xhtml b/src/axiom-website/hyperdoc/dbophex.xhtml
new file mode 100644
index 0000000..5c550a7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbophex.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbophex not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbophorizconcat.xhtml b/src/axiom-website/hyperdoc/dbophorizconcat.xhtml
new file mode 100644
index 0000000..3232fe8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbophorizconcat.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbophorizconcat not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbophtrigs.xhtml b/src/axiom-website/hyperdoc/dbophtrigs.xhtml
new file mode 100644
index 0000000..58ee402
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbophtrigs.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbophtrigs not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbophypergeometric0f1.xhtml b/src/axiom-website/hyperdoc/dbophypergeometric0f1.xhtml
new file mode 100644
index 0000000..5c5306f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbophypergeometric0f1.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbophypergeometric0f1 not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopinteger.xhtml b/src/axiom-website/hyperdoc/dbopinteger.xhtml
new file mode 100644
index 0000000..d845832
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopinteger.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopinteger not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopintegrate.xhtml b/src/axiom-website/hyperdoc/dbopintegrate.xhtml
new file mode 100644
index 0000000..a40274a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopintegrate.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopintegrate not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopinverse.xhtml b/src/axiom-website/hyperdoc/dbopinverse.xhtml
new file mode 100644
index 0000000..2415e10
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopinverse.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopinverse not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopinvmod.xhtml b/src/axiom-website/hyperdoc/dbopinvmod.xhtml
new file mode 100644
index 0000000..4671d68
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopinvmod.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopinvmod not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboplaurent.xhtml b/src/axiom-website/hyperdoc/dboplaurent.xhtml
new file mode 100644
index 0000000..ad13536
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboplaurent.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboplaurent not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboplcm.xhtml b/src/axiom-website/hyperdoc/dboplcm.xhtml
new file mode 100644
index 0000000..2e3ca85
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboplcm.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dboplcm not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopleadingcoefficient.xhtml b/src/axiom-website/hyperdoc/dbopleadingcoefficient.xhtml
new file mode 100644
index 0000000..fca52b0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopleadingcoefficient.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopleadingcoefficient not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopleadingmonomial.xhtml b/src/axiom-website/hyperdoc/dbopleadingmonomial.xhtml
new file mode 100644
index 0000000..1d95340
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopleadingmonomial.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopleadingmonomial not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboplength.xhtml b/src/axiom-website/hyperdoc/dboplength.xhtml
new file mode 100644
index 0000000..8b34990
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboplength.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboplength not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboplimit.xhtml b/src/axiom-website/hyperdoc/dboplimit.xhtml
new file mode 100644
index 0000000..b34930d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboplimit.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboplimit not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboplog.xhtml b/src/axiom-website/hyperdoc/dboplog.xhtml
new file mode 100644
index 0000000..22f21ce
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboplog.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dboplog not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboploggamma.xhtml b/src/axiom-website/hyperdoc/dboploggamma.xhtml
new file mode 100644
index 0000000..ba57019
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboploggamma.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboploggamma not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopmainvariable.xhtml b/src/axiom-website/hyperdoc/dbopmainvariable.xhtml
new file mode 100644
index 0000000..56ac87d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopmainvariable.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopmainvariable not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopmap.xhtml b/src/axiom-website/hyperdoc/dbopmap.xhtml
new file mode 100644
index 0000000..d39b151
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopmap.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopmap not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopmapbang.xhtml b/src/axiom-website/hyperdoc/dbopmapbang.xhtml
new file mode 100644
index 0000000..3e688dc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopmapbang.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopmapbang not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopmatrix.xhtml b/src/axiom-website/hyperdoc/dbopmatrix.xhtml
new file mode 100644
index 0000000..6d960d7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopmatrix.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopmatrix not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopmax.xhtml b/src/axiom-website/hyperdoc/dbopmax.xhtml
new file mode 100644
index 0000000..32b7787
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopmax.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopmax not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopmemberq.xhtml b/src/axiom-website/hyperdoc/dbopmemberq.xhtml
new file mode 100644
index 0000000..dd37dc3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopmemberq.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopmemberq not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopmin.xhtml b/src/axiom-website/hyperdoc/dbopmin.xhtml
new file mode 100644
index 0000000..459129e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopmin.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopmin not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopminimumdegree.xhtml b/src/axiom-website/hyperdoc/dbopminimumdegree.xhtml
new file mode 100644
index 0000000..405de72
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopminimumdegree.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopminimumdegree not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopminus.xhtml b/src/axiom-website/hyperdoc/dbopminus.xhtml
new file mode 100644
index 0000000..c36606e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopminus.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopminus not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopmonicdivide.xhtml b/src/axiom-website/hyperdoc/dbopmonicdivide.xhtml
new file mode 100644
index 0000000..40f49af
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopmonicdivide.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopmonicdivide not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopmulmod.xhtml b/src/axiom-website/hyperdoc/dbopmulmod.xhtml
new file mode 100644
index 0000000..551820f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopmulmod.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopmulmod not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopncols.xhtml b/src/axiom-website/hyperdoc/dbopncols.xhtml
new file mode 100644
index 0000000..5a2eb37
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopncols.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopncols not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopnew.xhtml b/src/axiom-website/hyperdoc/dbopnew.xhtml
new file mode 100644
index 0000000..7ff320f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopnew.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopnew not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopnorm.xhtml b/src/axiom-website/hyperdoc/dbopnorm.xhtml
new file mode 100644
index 0000000..6023692
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopnorm.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopnorm not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopnrows.xhtml b/src/axiom-website/hyperdoc/dbopnrows.xhtml
new file mode 100644
index 0000000..e06c218
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopnrows.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopnrows not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopnthfractionalterm.xhtml b/src/axiom-website/hyperdoc/dbopnthfractionalterm.xhtml
new file mode 100644
index 0000000..42ddb25
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopnthfractionalterm.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopnthfractionalterm not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopnthroot.xhtml b/src/axiom-website/hyperdoc/dbopnthroot.xhtml
new file mode 100644
index 0000000..6e10f3c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopnthroot.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopnthroot not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopnullity.xhtml b/src/axiom-website/hyperdoc/dbopnullity.xhtml
new file mode 100644
index 0000000..36ec717
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopnullity.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopnullity not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopnullspace.xhtml b/src/axiom-website/hyperdoc/dbopnullspace.xhtml
new file mode 100644
index 0000000..b62ead1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopnullspace.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopnullspace not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopnumberoffractionalterms.xhtml b/src/axiom-website/hyperdoc/dbopnumberoffractionalterms.xhtml
new file mode 100644
index 0000000..ec0a23a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopnumberoffractionalterms.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopnumberoffractionalterms not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopnumer.xhtml b/src/axiom-website/hyperdoc/dbopnumer.xhtml
new file mode 100644
index 0000000..6ad101e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopnumer.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopnumer not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopnumeric.xhtml b/src/axiom-website/hyperdoc/dbopnumeric.xhtml
new file mode 100644
index 0000000..d741ef7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopnumeric.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopnumeric not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopoperator.xhtml b/src/axiom-website/hyperdoc/dbopoperator.xhtml
new file mode 100644
index 0000000..ac889a2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopoperator.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopoperator not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboporthonormalbasis.xhtml b/src/axiom-website/hyperdoc/dboporthonormalbasis.xhtml
new file mode 100644
index 0000000..0d2fc66
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboporthonormalbasis.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboporthonormalbasis not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboppadicfraction.xhtml b/src/axiom-website/hyperdoc/dboppadicfraction.xhtml
new file mode 100644
index 0000000..2d38b25
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboppadicfraction.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboppadicfraction not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboppartialfraction.xhtml b/src/axiom-website/hyperdoc/dboppartialfraction.xhtml
new file mode 100644
index 0000000..7c680a0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboppartialfraction.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboppartialfraction not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboppartialquotients.xhtml b/src/axiom-website/hyperdoc/dboppartialquotients.xhtml
new file mode 100644
index 0000000..eb2b35f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboppartialquotients.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboppartialquotients not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboppattern.xhtml b/src/axiom-website/hyperdoc/dboppattern.xhtml
new file mode 100644
index 0000000..162d09f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboppattern.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboppattern not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboppermanent.xhtml b/src/axiom-website/hyperdoc/dboppermanent.xhtml
new file mode 100644
index 0000000..32d4232
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboppermanent.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboppermanent not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboppi.xhtml b/src/axiom-website/hyperdoc/dboppi.xhtml
new file mode 100644
index 0000000..dc5e5a3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboppi.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboppi not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopplus.xhtml b/src/axiom-website/hyperdoc/dbopplus.xhtml
new file mode 100644
index 0000000..9b91091
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopplus.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopplus not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboppolygamma.xhtml b/src/axiom-website/hyperdoc/dboppolygamma.xhtml
new file mode 100644
index 0000000..bdeb1b1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboppolygamma.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboppolygamma not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboppositiveremainder.xhtml b/src/axiom-website/hyperdoc/dboppositiveremainder.xhtml
new file mode 100644
index 0000000..cc35966
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboppositiveremainder.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboppositiveremainder not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopprefixragits.xhtml b/src/axiom-website/hyperdoc/dbopprefixragits.xhtml
new file mode 100644
index 0000000..915dec5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopprefixragits.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopprefixragits not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopprimefactor.xhtml b/src/axiom-website/hyperdoc/dbopprimefactor.xhtml
new file mode 100644
index 0000000..52e29de
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopprimefactor.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopprimefactor not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboppuiseux.xhtml b/src/axiom-website/hyperdoc/dboppuiseux.xhtml
new file mode 100644
index 0000000..3ab2237
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboppuiseux.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboppuiseux not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopqelt.xhtml b/src/axiom-website/hyperdoc/dbopqelt.xhtml
new file mode 100644
index 0000000..b4aacca
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopqelt.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopqelt not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopqseteltbang.xhtml b/src/axiom-website/hyperdoc/dbopqseteltbang.xhtml
new file mode 100644
index 0000000..f241d05
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopqseteltbang.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopqseteltbang not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopquatern.xhtml b/src/axiom-website/hyperdoc/dbopquatern.xhtml
new file mode 100644
index 0000000..24cf283
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopquatern.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopquatern not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopquo.xhtml b/src/axiom-website/hyperdoc/dbopquo.xhtml
new file mode 100644
index 0000000..6c7035d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopquo.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopquo not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopradicaleigenvectors.xhtml b/src/axiom-website/hyperdoc/dbopradicaleigenvectors.xhtml
new file mode 100644
index 0000000..1be5f22
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopradicaleigenvectors.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopradicaleigenvectors not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopradicalsolve.xhtml b/src/axiom-website/hyperdoc/dbopradicalsolve.xhtml
new file mode 100644
index 0000000..d875c3b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopradicalsolve.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopradicalsolve not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboprank.xhtml b/src/axiom-website/hyperdoc/dboprank.xhtml
new file mode 100644
index 0000000..ae271dc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboprank.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboprank not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopratdenom.xhtml b/src/axiom-website/hyperdoc/dbopratdenom.xhtml
new file mode 100644
index 0000000..22f56da
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopratdenom.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopratdenom not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboprealeigenvectors.xhtml b/src/axiom-website/hyperdoc/dboprealeigenvectors.xhtml
new file mode 100644
index 0000000..5643b38
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboprealeigenvectors.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboprealeigenvectors not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboprealelementary.xhtml b/src/axiom-website/hyperdoc/dboprealelementary.xhtml
new file mode 100644
index 0000000..d7483ca
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboprealelementary.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboprealelementary not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopreduce.xhtml b/src/axiom-website/hyperdoc/dbopreduce.xhtml
new file mode 100644
index 0000000..e93d240
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopreduce.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopreduce not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopreductum.xhtml b/src/axiom-website/hyperdoc/dbopreductum.xhtml
new file mode 100644
index 0000000..aa712ba
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopreductum.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopreductum not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboprem.xhtml b/src/axiom-website/hyperdoc/dboprem.xhtml
new file mode 100644
index 0000000..4d993a1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboprem.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboprem not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopresetvariableorder.xhtml b/src/axiom-website/hyperdoc/dbopresetvariableorder.xhtml
new file mode 100644
index 0000000..f980ae9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopresetvariableorder.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopresetvariableorder not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopresultant.xhtml b/src/axiom-website/hyperdoc/dbopresultant.xhtml
new file mode 100644
index 0000000..3c4ef7e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopresultant.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopresultant not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboprootof.xhtml b/src/axiom-website/hyperdoc/dboprootof.xhtml
new file mode 100644
index 0000000..ac6c100
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboprootof.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboprootof not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboprootsimp.xhtml b/src/axiom-website/hyperdoc/dboprootsimp.xhtml
new file mode 100644
index 0000000..41f8a91
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboprootsimp.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboprootsimp not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboprootsof.xhtml b/src/axiom-website/hyperdoc/dboprootsof.xhtml
new file mode 100644
index 0000000..9342253
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboprootsof.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboprootsof not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboprow.xhtml b/src/axiom-website/hyperdoc/dboprow.xhtml
new file mode 100644
index 0000000..df0af7d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboprow.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboprow not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboprowechelon.xhtml b/src/axiom-website/hyperdoc/dboprowechelon.xhtml
new file mode 100644
index 0000000..d4a1abb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboprowechelon.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboprowechelon not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsec.xhtml b/src/axiom-website/hyperdoc/dbopsec.xhtml
new file mode 100644
index 0000000..9a1cbcd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsec.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopsec not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsech.xhtml b/src/axiom-website/hyperdoc/dbopsech.xhtml
new file mode 100644
index 0000000..7649217
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsech.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopsech not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopseries.xhtml b/src/axiom-website/hyperdoc/dbopseries.xhtml
new file mode 100644
index 0000000..450ed42
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopseries.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopseries not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopseriessolve.xhtml b/src/axiom-website/hyperdoc/dbopseriessolve.xhtml
new file mode 100644
index 0000000..e80cca5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopseriessolve.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopseriessolve not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsetcolumnbang.xhtml b/src/axiom-website/hyperdoc/dbopsetcolumnbang.xhtml
new file mode 100644
index 0000000..bb98a59
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsetcolumnbang.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsetcolumnbang not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsetelt.xhtml b/src/axiom-website/hyperdoc/dbopsetelt.xhtml
new file mode 100644
index 0000000..099a37e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsetelt.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsetelt not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopseteltbang.xhtml b/src/axiom-website/hyperdoc/dbopseteltbang.xhtml
new file mode 100644
index 0000000..dd86883
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopseteltbang.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopseteltbang not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsetrowbang.xhtml b/src/axiom-website/hyperdoc/dbopsetrowbang.xhtml
new file mode 100644
index 0000000..586b703
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsetrowbang.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsetrowbang not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsetsubmatrixbang.xhtml b/src/axiom-website/hyperdoc/dbopsetsubmatrixbang.xhtml
new file mode 100644
index 0000000..d100ee8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsetsubmatrixbang.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsetsubmatrixbang not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsetvariableorder.xhtml b/src/axiom-website/hyperdoc/dbopsetvariableorder.xhtml
new file mode 100644
index 0000000..044d09c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsetvariableorder.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopsetvariableorder not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsimplify.xhtml b/src/axiom-website/hyperdoc/dbopsimplify.xhtml
new file mode 100644
index 0000000..3b9d49f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsimplify.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsimplify not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsin.xhtml b/src/axiom-website/hyperdoc/dbopsin.xhtml
new file mode 100644
index 0000000..b929208
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsin.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsin not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsingleintegerand.xhtml b/src/axiom-website/hyperdoc/dbopsingleintegerand.xhtml
new file mode 100644
index 0000000..9171ef4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsingleintegerand.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsingleintegerand not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsingleintegernot.xhtml b/src/axiom-website/hyperdoc/dbopsingleintegernot.xhtml
new file mode 100644
index 0000000..42e9157
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsingleintegernot.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsingleintegernot not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsingleintegeror.xhtml b/src/axiom-website/hyperdoc/dbopsingleintegeror.xhtml
new file mode 100644
index 0000000..c187827
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsingleintegeror.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsingleintegeror not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsingleintegerxor.xhtml b/src/axiom-website/hyperdoc/dbopsingleintegerxor.xhtml
new file mode 100644
index 0000000..898839d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsingleintegerxor.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsingleintegerxor not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsinh.xhtml b/src/axiom-website/hyperdoc/dbopsinh.xhtml
new file mode 100644
index 0000000..8043c13
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsinh.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dbopsinh not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsolve.xhtml b/src/axiom-website/hyperdoc/dbopsolve.xhtml
new file mode 100644
index 0000000..1fa3336
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsolve.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsolve not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsqrt.xhtml b/src/axiom-website/hyperdoc/dbopsqrt.xhtml
new file mode 100644
index 0000000..1ba8fe8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsqrt.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsqrt not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopstar.xhtml b/src/axiom-website/hyperdoc/dbopstar.xhtml
new file mode 100644
index 0000000..4850e24
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopstar.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+       dbopstar not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopstarstar.xhtml b/src/axiom-website/hyperdoc/dbopstarstar.xhtml
new file mode 100644
index 0000000..2504858
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopstarstar.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopstarstar not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsubmatrix.xhtml b/src/axiom-website/hyperdoc/dbopsubmatrix.xhtml
new file mode 100644
index 0000000..3e5fa77
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsubmatrix.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsubmatrix not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopsubmod.xhtml b/src/axiom-website/hyperdoc/dbopsubmod.xhtml
new file mode 100644
index 0000000..63949f1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopsubmod.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopsubmod not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboptan.xhtml b/src/axiom-website/hyperdoc/dboptan.xhtml
new file mode 100644
index 0000000..d68acb5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboptan.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dboptan not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboptanh.xhtml b/src/axiom-website/hyperdoc/dboptanh.xhtml
new file mode 100644
index 0000000..5459c15
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboptanh.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dboptanh not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboptaylor.xhtml b/src/axiom-website/hyperdoc/dboptaylor.xhtml
new file mode 100644
index 0000000..cb9fabc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboptaylor.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboptaylor not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboptimes.xhtml b/src/axiom-website/hyperdoc/dboptimes.xhtml
new file mode 100644
index 0000000..6e07c86
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboptimes.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     dboptimes not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboptotaldegree.xhtml b/src/axiom-website/hyperdoc/dboptotaldegree.xhtml
new file mode 100644
index 0000000..1b821c4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboptotaldegree.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboptotaldegree not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboptrace.xhtml b/src/axiom-website/hyperdoc/dboptrace.xhtml
new file mode 100644
index 0000000..8da0d03
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboptrace.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboptrace not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboptranspose.xhtml b/src/axiom-website/hyperdoc/dboptranspose.xhtml
new file mode 100644
index 0000000..780f8d8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboptranspose.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboptranspose not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dboptrigs.xhtml b/src/axiom-website/hyperdoc/dboptrigs.xhtml
new file mode 100644
index 0000000..2b47a58
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dboptrigs.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dboptrigs not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopvariables.xhtml b/src/axiom-website/hyperdoc/dbopvariables.xhtml
new file mode 100644
index 0000000..8594c58
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopvariables.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopvariables not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopvectorise.xhtml b/src/axiom-website/hyperdoc/dbopvectorise.xhtml
new file mode 100644
index 0000000..fbf9274
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopvectorise.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopvectorise not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopvectorspace.xhtml b/src/axiom-website/hyperdoc/dbopvectorspace.xhtml
new file mode 100644
index 0000000..8bfe13e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopvectorspace.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopvectorspace not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopvertconcat.xhtml b/src/axiom-website/hyperdoc/dbopvertconcat.xhtml
new file mode 100644
index 0000000..6660fe0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopvertconcat.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopvertconcat not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopwholepart.xhtml b/src/axiom-website/hyperdoc/dbopwholepart.xhtml
new file mode 100644
index 0000000..9b616e5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopwholepart.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopwholepart not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopwholeragits.xhtml b/src/axiom-website/hyperdoc/dbopwholeragits.xhtml
new file mode 100644
index 0000000..b09ad52
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopwholeragits.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopwholeragits not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopzeroof.xhtml b/src/axiom-website/hyperdoc/dbopzeroof.xhtml
new file mode 100644
index 0000000..d09a53f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopzeroof.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopzeroof not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbopzerosof.xhtml b/src/axiom-website/hyperdoc/dbopzerosof.xhtml
new file mode 100644
index 0000000..d93ce24
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbopzerosof.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbopzerosof not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbpolynomialfractioninteger.xhtml b/src/axiom-website/hyperdoc/dbpolynomialfractioninteger.xhtml
new file mode 100644
index 0000000..11496e5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbpolynomialfractioninteger.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbpolynomialfractioninteger not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dbpolynomialinteger.xhtml b/src/axiom-website/hyperdoc/dbpolynomialinteger.xhtml
new file mode 100644
index 0000000..b16471e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dbpolynomialinteger.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      dbpolynomialinteger not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/definiteintegral.xhtml b/src/axiom-website/hyperdoc/definiteintegral.xhtml
new file mode 100644
index 0000000..56aec47
--- /dev/null
+++ b/src/axiom-website/hyperdoc/definiteintegral.xhtml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    var ans='integrate('+myform.expr.value+','+myform.vars.value+'='+
+           myform.lower.value+'..'+myform.upper.value+')';
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <form id="form2">
+   Enter the function you want to integrate:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" 
+     value="1/(x^2+6)"/><br/>
+   Enter the variable of integration:<br/>
+   <input type="text" id="vars" tabindex="20" size="5" value="x"/><br/>
+   Enter a lower limit:<br/>
+   <input type="text" id="lower" tabindex="30" value="%minusInfinity"/><br/>
+   Enter an upper limit:<br/>
+   <input type="text" id="upper" tabindex="40" value="%plusInfinity"/><br/>
+  </form>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
+
diff --git a/src/axiom-website/hyperdoc/differentiate.xhtml b/src/axiom-website/hyperdoc/differentiate.xhtml
new file mode 100644
index 0000000..abe5476
--- /dev/null
+++ b/src/axiom-website/hyperdoc/differentiate.xhtml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    return('differentiate('+myform.expr.value+',['+
+                            myform.vars.value+'],['+
+                            myform.powers.value+'])');
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <form id="form2">
+   Enter the function you want to differentiate:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" value="sin(x*y)"/><br/>
+   List the variables you want to differentiate with respect to:<br/>
+   <input type="text" id="vars" tabindex="20" value="x,y"/><br/>
+   List the number of times you want to differentiate with respect
+   to each variable (leave blank if once for each)<br/>
+   <input type="text" id="powers" tabindex="30" value="1,2"/><br/>
+  </form>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmf.xhtml b/src/axiom-website/hyperdoc/dlmf.xhtml
new file mode 100644
index 0000000..d961607
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmf.xhtml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function by R. A. Askey and R. Roy
+  </div>
+  <hr/>
+<p>
+The Gamma function is an extension of the factorial function to 
+real and complex numbers. For positive integers, 
+<m:math display="inline">
+ <m:mi mathvariant="normal">&#x0393;</m:mi>
+ <m:mrow>
+  <m:mo>(</m:mo>
+  <m:mi>n</m:mi>
+  <m:mo>)</m:mo>
+ </m:mrow>
+ <m:mo>=</m:mo>
+ <m:mrow>
+  <m:mo>(</m:mo>
+  <m:mi>n</m:mi>
+  <m:mo>-</m:mo>
+  <m:mn>1</m:mn>
+  <m:mo>)</m:mo>
+  <m:mi mathvariant="normal">!</m:mi>
+ </m:mrow>
+</m:math>.
+</p>
+
+<p>
+These pages explore Axiom's facilities for handling the Gamma function.
+In particular we try to show that Axiom conforms to published standards.
+</p>
+<ul>
+ <li><b>Notation</b></li>
+ <ul>
+  <li><a href="dlmfnotation.xhtml">Notation</a></li>
+ </ul>
+ <li><b>Properties</b></li>
+ <ul>
+  <li><a href="dlmfdefinitions.xhtml">Definitions</a></li>
+  <li><a href="dlmfgraphics.xhtml">Graphics</a></li>
+  <li><a href="dlmfspecialvaluesandextrema.xhtml">
+       Special Values and Extrema</a></li>
+  <li><a href="dlmffunctionrelations.xhtml">Function Relations</a></li>
+  <li><a href="dlmfinequalities.xhtml">Inequalities</a></li>
+  <li><a href="dlmfseriesexpansions.xhtml">Series Expansions</a></li>
+  <li><a href="dlmfinfiniteproducts.xhtml">Infinite Products</a></li>
+  <li><a href="dlmfintegralrepresentations.xhtml">
+       Integral Representations</a></li>
+  <li><a href="dlmfcontinuedfractions.xhtml">Continued Fractions</a></li>
+  <li><a href="dlmfasymptoticexpansions.xhtml">Asymptotic Expansions</a></li>
+  <li><a href="dlmfbetafunction.xhtml">Beta Function</a></li>
+  <li><a href="dlmfintegrals.xhtml">Integrals</a></li>
+  <li><a href="dlmfmultidimensionalintegral.xhtml">
+       Multidimensional Integral</a></li>
+  <li><a href="dlmfpolygammafunctions.xhtml">Polygamma Functions</a></li>
+  <li><a href="dlmfsums.xhtml">Sums</a></li>
+  <li><a href="dlmfbarnesgfunction.xhtml">
+       Barnes <i>G</i>-Function (Double Gamma Function)</a></li>
+  <li><a href="dlmfqgammaandbetafunctions.xhtml">
+       <i>q</i>-Gamma and Beta Functions</a></li>
+ </ul>
+ <li><b>Applications</b></li>
+ <ul>
+  <li><a href="dlmfmathematicalapplications.xhtml">
+      Mathematical Applications</a></li>
+  <li><a href="dlmfphysicalapplications.xhtml">
+      Physical Applications</a></li>
+ </ul>
+ <li><b>Computation</b></li>
+ <ul>
+  <li><a href="dlmfmethodsofcomputation.xhtml">
+      Methods of Computation</a></li>
+  <li><a href="dlmftables.xhtml">Tables</a></li>
+  <li><a href="dlmfapproximations.xhtml">Approximations</a></li>
+  <li>Axiom Software</li>
+ </ul>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfapproximations.xhtml b/src/axiom-website/hyperdoc/dlmfapproximations.xhtml
new file mode 100644
index 0000000..56c1b3a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfapproximations.xhtml
@@ -0,0 +1,517 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Approximations
+  </div>
+  <hr/>
+<h3>Approximations</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Rational Approximations</li>
+ <li>Expansions in Chebyshev Series</li>
+ <li>Approximations in the Complex Plane</li>
+</ul>
+
+<h4>Rational Approximations</h4>
+
+<p>
+ <a href="http://dlmf.nist.gov/Contents/bib/C#cody:1967:ca">
+  Cody and Hillstrom(1967)
+ </a> gives minimax rational approximations for
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> for the ranges 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0.5</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1.5</m:mn>
+  </m:mrow>
+ </m:math>,
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>1.5</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>4</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>4</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>12</m:mn>
+  </m:mrow>
+ </m:math>; precision is variable.
+ <a href="http://dlmf.nist.gov/Contents/bib/H#hart:1968:ca">
+  Hart <em>et.al.</em>(1968)
+ </a> gives minimax polynomial and rational approximations to
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> in the intervals
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>8</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1000</m:mn>
+  </m:mrow>
+ </m:math>, 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>12</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1000</m:mn>
+  </m:mrow>
+ </m:math>; precision is variable. 
+
+ <a href="http://dlmf.nist.gov/Contents/bib/C#cody:1973:cap">
+  Cody <em>et.al.</em>(1973)
+ </a> gives minimax rational approximations for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> for the ranges 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0.5</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>3</m:mn>
+  </m:mrow>
+ </m:math> and
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>3</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math>; precision is variable.
+</p>
+
+<p>For additional approximations see 
+ <a href="http://dlmf.nist.gov/Contents/bib/H#hart:1968:ca">
+  Hart <em>et.al.</em>(1968)
+ </a>(Appendix B),
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1975:mfa">
+  Luke(1975)
+ </a>(pp. 22–23), and 
+ <a href="http://dlmf.nist.gov/Contents/bib/W#weniger:2003:dig">
+  Weniger(2003)
+ </a>.
+</p>
+
+<h4>Expansions in Chebyshev Series</h4>
+
+<p>
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1969:sfa2">
+  Luke(1969)
+ </a> 
+ gives the coefficients to 20D for the Chebyshev-series expansions of 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mn>1</m:mn>
+     <m:mo>+</m:mo>
+     <m:mi>x</m:mi>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mfrac bevelled="true">
+   <m:mn>1</m:mn>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>+</m:mo>
+      <m:mi>x</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mfrac>
+ </m:math>,
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>x</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>3</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>x</m:mi>
+      <m:mo>+</m:mo>
+      <m:mn>3</m:mn>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>x</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>3</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, and the first six derivatives of 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>x</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>3</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> for 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>. These coefficients are reproduced in 
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1975:mfa">
+  Luke(1975)
+ </a>. 
+
+ <a href="http://dlmf.nist.gov/Contents/bib/C#clenshaw:1962:csm">
+  Clenshaw(1962)
+ </a> also gives 20D Chebyshev-series coefficients for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mn>1</m:mn>
+     <m:mo>+</m:mo>
+     <m:mi>x</m:mi>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and its reciprocal for 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&#x2264;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>. See 
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1975:mfa">
+  Luke(1975)
+ </a>(pp. 22–23) for additional expansions.
+</p>
+
+<h4>Approximations in the Complex Plane</h4>
+
+<p>Rational approximations for 
+ <m:math display="inline">
+  <m:mfrac bevelled="true">
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>z</m:mi>
+      <m:mo>+</m:mo>
+      <m:mn>1</m:mn>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mrow>
+    <m:mi>A</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mfrac>
+ </m:math>, where 
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>A</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mfrac bevelled="true">
+      <m:mn>1</m:mn>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+    </m:msup>
+    <m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mi>c</m:mi>
+       <m:mo>+</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mi>z</m:mi>
+      <m:mo>+</m:mo>
+      <m:mn>1</m:mn>
+     </m:mrow>
+    </m:msup>
+    <m:mrow>
+     <m:mi>exp</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>c</m:mi>
+         <m:mo>+</m:mo>
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, and approximations for
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>z</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> based on the Padé approximants for two forms of the incomplete 
+  gamma function are in 
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1969:sfa2">
+  Luke(1969)
+ </a>.
+ <a href="http://dlmf.nist.gov/Contents/bib/L#luke:1975:mfa">
+  Luke(1975)
+ </a>(pp. 13–16) provides explicit rational approximations for
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>&#x03C8;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>+</m:mo>
+   <m:mi>&#x03B3;</m:mi>
+  </m:mrow>
+ </m:math>
+</p>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfasymptoticexpansions.xhtml b/src/axiom-website/hyperdoc/dlmfasymptoticexpansions.xhtml
new file mode 100644
index 0000000..2a99c43
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfasymptoticexpansions.xhtml
@@ -0,0 +1,2455 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Asymptotic Expansions
+  </div>
+  <hr/>
+<h3>Asymptotic Expansions</h3>
+
+<h6>Contents</h6>
+<ul>
+ <li>Poincaré-Type Expansions</li>
+ <li>Error Bounds and Exponential Improvement</li>
+ <li>Ratios</li>
+</ul>
+
+<h4>Poincaré-Type Expansions</h4>
+
+<p>As 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> in the sector 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B4;</m:mi>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:none/>
+      <m:mo>&lt;</m:mo>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<a name="equation1"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>ln</m:mi>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>-</m:mo>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msub>
+        <m:mi>B</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>k</m:mi>
+        </m:mrow>
+       </m:msub>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>k</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>k</m:mi>
+          </m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>k</m:mi>
+          </m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<a name="equation2"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>ln</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msub>
+        <m:mi>B</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>k</m:mi>
+        </m:mrow>
+       </m:msub>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>k</m:mi>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For the Bernoulli numbers 
+ <m:math>
+  <m:msub>
+   <m:mi>B</m:mi>
+   <m:mrow>
+    <m:mn>2</m:mn>
+    <m:mi>k</m:mi>
+   </m:mrow>
+  </m:msub>
+ </m:math>,
+ Also,
+</p>
+
+<a name="equation3"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi>z</m:mi>
+      <m:mi>z</m:mi>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mi>z</m:mi>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x2211;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>0</m:mn>
+        </m:mrow>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:munderover>
+       <m:mfrac>
+        <m:msub>
+         <m:mi>g</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mi>k</m:mi>
+        </m:msup>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>0</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>1</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>12</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>2</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>288</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>3</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>139</m:mn>
+      <m:mn>51840</m:mn>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>4</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>571</m:mn>
+      <m:mn>24 88320</m:mn>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>5</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1 63879</m:mn>
+     <m:mn>2090 18880</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mn>6</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>52 46819</m:mn>
+     <m:mn>7 52467 96800</m:mn>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>g</m:mi>
+     <m:mi>k</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msqrt>
+      <m:mn>2</m:mn>
+     </m:msqrt>
+     <m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mstyle displaystyle="false">
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mstyle>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>k</m:mi>
+     </m:msub>
+     <m:msub>
+      <m:mi>a</m:mi>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>k</m:mi>
+      </m:mrow>
+     </m:msub>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msub>
+    <m:mi>a</m:mi>
+    <m:mn>0</m:mn>
+   </m:msub>
+   <m:mo>=</m:mo>
+   <m:mrow> 
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>2</m:mn>
+    </m:mfrac>
+    <m:msqrt>
+     <m:mn>2</m:mn>
+    </m:msqrt>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, and
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mn>0</m:mn>
+      </m:msub>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mi>k</m:mi>
+      </m:msub>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mn>1</m:mn>
+      </m:msub>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msub>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>3</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mn>2</m:mn>
+      </m:msub>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>2</m:mn>
+       </m:mrow>
+      </m:msub>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:mfrac>
+      </m:mstyle>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mi>k</m:mi>
+      </m:msub>
+      <m:msub>
+       <m:mi>a</m:mi>
+       <m:mn>0</m:mn>
+      </m:msub>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="false">
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mi>k</m:mi>
+      </m:mfrac>
+     </m:mstyle>
+     <m:msub>
+      <m:mi>a</m:mi>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msub>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<p>
+ <a href="http://dlmf.nist.gov/Contents/bib/W#wrench:1968:cts">
+    Wrench(1968)
+ </a> gives exact values of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>g</m:mi>
+   <m:mi>k</m:mi>
+  </m:msub>
+ </m:math> up to 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>g</m:mi>
+   <m:mn>20</m:mn>
+  </m:msub>
+ </m:math>.
+ <a href="http://dlmf.nist.gov/Contents/bib/S#spira:1971:cot">
+  Spira(1971)
+ </a> 
+ corrects errors in Wrench's results and also supplies exact and 45D values of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>g</m:mi>
+   <m:mi>k</m:mi>
+  </m:msub>
+ </m:math> for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>21</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>22</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+    <m:mo>,</m:mo>
+    <m:mn>30</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>. For an asymptotic expansion of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>g</m:mi>
+   <m:mi>k</m:mi>
+  </m:msub>
+ </m:math> as 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> see 
+ <a  href="http://dlmf.nist.gov/Contents/bib/B#boyd:1994:gfa">Boyd(1994)
+ </a>.
+</p>
+
+<p>With the same conditions
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>+</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:msqrt>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:msqrt>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>a</m:mi>
+   <m:mrow> 
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:none/>
+     <m:mo>&gt;</m:mo>
+     <m:mn>0</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>b</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:none/>
+     <m:mo>&#x2208;</m:mo>
+     <m:mi mathvariant="normal">&#x2102;</m:mi>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> are both fixed, and
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>ln</m:mi>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>h</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>h</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>2</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mrow>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>k</m:mi>
+        </m:msup>
+        <m:mrow>
+         <m:msub>
+          <m:mi>B</m:mi>
+          <m:mi>k</m:mi>
+         </m:msub>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>h</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>h</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:none/>
+      <m:mo>&#x2208;</m:mo>
+      <m:mrow>
+      <m:mo>[</m:mo>
+      <m:mrow>
+       <m:mn>0</m:mn>
+       <m:mo>,</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>]</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> is fixed.
+</p>
+
+<p>Also as 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>y</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mrow>
+    <m:mo>&#x00B1;</m:mo>
+    <m:mi mathvariant="normal">&#x221E;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow> 
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:msqrt>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:msqrt>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mi>y</m:mi>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>x</m:mi>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mfrac bevelled="true">
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mrow>
+          <m:mo>|</m:mo>
+          <m:mi>y</m:mi>
+          <m:mo>|</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>uniformly for bounded real values of 
+ <m:math display="inline">
+  <m:mi>x</m:mi>
+ </m:math>.
+</p>
+
+<h4>Error Bounds and Exponential Improvement</h4>
+
+<p>If the sums in the expansions 
+(<a href="#equation1">Equation 1</a>) and 
+(<a href="#equation2">Equation 2</a>) are terminated at 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mi>n</m:mi>
+    <m:mo>-</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math> (
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>) and 
+ <m:math display="inline">
+  <m:mi>z</m:mi>
+ </m:math> 
+is real and positive, then the remainder terms are bounded in magnitude by 
+the first neglected terms and have the same sign. If 
+ <m:math display="inline">
+  <m:mi>z</m:mi>
+ </m:math> 
+is complex, then the remainder terms are bounded in magnitude by 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msup>
+    <m:mi>sec</m:mi>
+    <m:mrow>
+     <m:mn>2</m:mn>
+     <m:mi>n</m:mi>
+    </m:mrow>
+   </m:msup>
+   <m:mrow>
+    <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:mi>ph</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:math> for 
+(<a href="#equation1">Equation 1</a>), and
+ <m:math display="inline">
+  <m:mrow>
+   <m:msup>
+    <m:mi>sec</m:mi>
+    <m:mrow>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mi>n</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+   </m:msup>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi>ph</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>z</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> for 
+(<a href="#equation2">Equation 2</a>), times the first neglected terms.</p>
+
+<p>For the remainder term in 
+(<a href="#equation3">Equation 3</a>) write
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi>z</m:mi>
+      <m:mi>z</m:mi>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mi>z</m:mi>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:mrow>
+       <m:mo>(</m:mo>
+      <m:mrow>
+        <m:mrow>
+        <m:munderover>
+         <m:mo movablelimits="false">&#x2211;</m:mo>
+          <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>=</m:mo>
+          <m:mn>0</m:mn>
+         </m:mrow>
+         <m:mrow>
+          <m:mi>K</m:mi>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:munderover>
+        <m:mfrac>
+         <m:msub>
+          <m:mi>g</m:mi>
+          <m:mi>k</m:mi>
+          </m:msub>
+         <m:msup>
+          <m:mi>z</m:mi>
+          <m:mi>k</m:mi>
+          </m:msup>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:msub>
+         <m:mi>R</m:mi>
+         <m:mi>K</m:mi>
+        </m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mi>z</m:mi>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>K</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<p>Then
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:msub>
+       <m:mi>R</m:mi>
+       <m:mi>K</m:mi>
+      </m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi>&#x03B6;</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mi>K</m:mi>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mi>K</m:mi>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>K</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+       <m:msup>
+        <m:mrow>
+         <m:mo>|</m:mo>
+         <m:mi>z</m:mi>
+         <m:mo>|</m:mo>
+        </m:mrow>
+        <m:mi>K</m:mi>
+       </m:msup>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mo movablelimits="false">min</m:mo>
+        <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mi>sec</m:mi>
+            <m:mrow>
+             <m:mo>(</m:mo>
+             <m:mrow>
+              <m:mi>ph</m:mi>
+              <m:mspace width="0.2em"/>
+              <m:mi>z</m:mi>
+             </m:mrow>
+             <m:mo>)</m:mo>
+            </m:mrow>
+           </m:mrow>
+           <m:mo>,</m:mo>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:msup>
+             <m:mi>K</m:mi>
+             <m:mstyle scriptlevel="+1">
+             <m:mfrac>
+              <m:mn>1</m:mn>
+              <m:mn>2</m:mn>
+             </m:mfrac>
+            </m:mstyle>
+           </m:msup>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>2</m:mn>
+    </m:mfrac>
+    <m:mi>&#x03C0;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+
+<h4>Ratios</h4>
+
+<p>If 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>a</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:none/>
+     <m:mo>&#x2208;</m:mo>
+     <m:mi mathvariant="normal">&#x2102;</m:mi>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>b</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:none/>
+     <m:mo>&#x2208;</m:mo>
+     <m:mi mathvariant="normal">&#x2102;</m:mi>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> are fixed as 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> in
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B4;</m:mi>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:none/>
+      <m:mo>&lt;</m:mo>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, then
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>a</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&#x223C;</m:mo>
+    <m:msup>
+     <m:mi>z</m:mi>
+     <m:mrow>
+      <m:mi>a</m:mi>
+      <m:mo>-</m:mo>
+      <m:mi>b</m:mi>
+     </m:mrow>
+    </m:msup>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>a</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mi>z</m:mi>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mrow>
+        <m:msub>
+         <m:mi>G</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>,</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:msup>
+        <m:mi>z</m:mi>
+        <m:mi>k</m:mi>
+       </m:msup>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Also, with the added condition 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>b</m:mi>
+      <m:mo>-</m:mo>
+      <m:mi>a</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>a</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mrow>
+          <m:mrow>
+           <m:mi>a</m:mi>
+           <m:mo>+</m:mo>
+           <m:mi>b</m:mi>
+          </m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mrow>
+        <m:msub>
+         <m:mi>H</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>,</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mrow>
+              <m:mi>a</m:mi>
+              <m:mo>+</m:mo>
+              <m:mi>b</m:mi>
+             </m:mrow>
+             <m:mo>-</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>k</m:mi>
+        </m:mrow>
+       </m:msup>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Here
+</p>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>G</m:mi>
+      <m:mn>0</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>G</m:mi>
+      <m:mn>1</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>G</m:mi>
+      <m:mn>2</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="true">
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>12</m:mn>
+      </m:mfrac>
+     </m:mstyle>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="true">
+       <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+        <m:mtr>
+         <m:mtd>
+          <m:mrow>
+           <m:mi>a</m:mi>
+            <m:mo>-</m:mo>
+           <m:mi>b</m:mi>
+           </m:mrow>
+          </m:mtd>
+        </m:mtr>
+         <m:mtr>
+         <m:mtd>
+          <m:mn>2</m:mn>
+          </m:mtd>
+        </m:mtr>
+       </m:mtable>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mn>3</m:mn>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mi>a</m:mi>
+            <m:mo>+</m:mo>
+            <m:mi>b</m:mi>
+           </m:mrow>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mn>2</m:mn>
+        </m:msup>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>H</m:mi>
+      <m:mn>0</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>H</m:mi>
+      <m:mn>1</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="true">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>12</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mstyle displaystyle="true">
+        <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+         <m:mtr>
+          <m:mtd>
+           <m:mrow>
+            <m:mi>a</m:mi>
+            <m:mo>-</m:mo>
+            <m:mi>b</m:mi>
+           </m:mrow>
+          </m:mtd>
+         </m:mtr>
+         <m:mtr>
+          <m:mtd>
+           <m:mn>2</m:mn>
+          </m:mtd>
+         </m:mtr>
+        </m:mtable>
+       </m:mstyle>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>-</m:mo>
+         <m:mi>b</m:mi> 
+        </m:mrow>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>H</m:mi>
+      <m:mn>2</m:mn>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="true">
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>240</m:mn>
+      </m:mfrac>
+     </m:mstyle>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="true">
+       <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+       <m:mtr>
+        <m:mtd>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+        </m:mtd>
+       </m:mtr>
+       <m:mtr>
+        <m:mtd>
+         <m:mn>4</m:mn>
+        </m:mtd>
+       </m:mtr>
+      </m:mtable>
+     </m:mstyle>
+     <m:mo>)</m:mo>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>+</m:mo>
+      <m:mrow>
+       <m:mn>5</m:mn>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mi>a</m:mi>
+           <m:mo>-</m:mo>
+           <m:mi>b</m:mi>
+          </m:mrow>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:msup>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>In terms of generalized Bernoulli polynomials we have for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>k</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>0</m:mn>
+     <m:mo>,</m:mo>
+     <m:mn>1</m:mn>
+     <m:mo>,</m:mo>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>G</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+       <m:mtr>
+        <m:mtd>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+        </m:mtd>
+       </m:mtr>
+       <m:mtr>
+        <m:mtd>
+         <m:mi>k</m:mi>
+        </m:mtd>
+       </m:mtr>
+      </m:mtable>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:msubsup>
+       <m:mi>B</m:mi>
+       <m:mi>k</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:msubsup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>a</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>H</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+       <m:mtr>
+        <m:mtd>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+        </m:mtd>
+       </m:mtr>
+       <m:mtr>
+        <m:mtd>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+        </m:mtd>
+       </m:mtr>
+      </m:mtable>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:msubsup>
+       <m:mi>B</m:mi>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>k</m:mi>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:msubsup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>c</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>k</m:mi>
+     </m:msup>
+     <m:mfrac>
+      <m:mrow>
+       <m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>c</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>a</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>k</m:mi>
+       </m:msub>
+       <m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>c</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>k</m:mi>
+       </m:msub>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mi mathvariant="normal">!</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mrow>
+          <m:mrow>
+           <m:mi>a</m:mi>
+           <m:mo>+</m:mo>
+           <m:mi>b</m:mi>
+          </m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>k</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfbarnesgfunction.xhtml b/src/axiom-website/hyperdoc/dlmfbarnesgfunction.xhtml
new file mode 100644
index 0000000..3b71c14
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfbarnesgfunction.xhtml
@@ -0,0 +1,908 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Barnes G-Function (Double Gamma Function)
+  </div>
+  <hr/>
+<h3>Barnes 
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">G</m:mi>
+ </m:math>-Function (Double Gamma Function)
+</h3>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>G</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>G</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>G</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>G</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>n</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>2</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>3</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>G</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mfrac bevelled="true">
+        <m:mi>z</m:mi>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:msup>
+      <m:mrow>
+       <m:mi>exp</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mrow>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>2</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+           <m:mspace width="0.2em"/>
+           <m:mi>z</m:mi>
+           <m:mspace width="0.2em"/>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>z</m:mi>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mstyle displaystyle="false">
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+          </m:mstyle>
+          <m:mi>&#x03B3;</m:mi>
+          <m:msup>
+           <m:mi>z</m:mi>
+           <m:mn>2</m:mn>
+          </m:msup>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>&#x00D7;</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>+</m:mo>
+          <m:mfrac>
+           <m:mi>z</m:mi>
+           <m:mi>k</m:mi>
+          </m:mfrac>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>k</m:mi>
+       </m:msup>
+       <m:mrow>
+        <m:mi>exp</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>z</m:mi>
+          </m:mrow>
+          <m:mo>+</m:mo>
+          <m:mfrac>
+           <m:msup>
+            <m:mi>z</m:mi>
+            <m:mn>2</m:mn>
+           </m:msup>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi>k</m:mi>
+           </m:mrow>
+          </m:mfrac>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>Ln</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>G</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mspace width="0.2em"/>
+        <m:mi>z</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mrow>
+         <m:mi>ln</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>&#x03C0;</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mspace width="0.2em"/>
+        <m:mi>z</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>+</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi>Ln</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>+</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>0</m:mn>
+       <m:mi>z</m:mi>
+      </m:msubsup>
+      <m:mrow>
+       <m:mi>Ln</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>t</m:mi>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mspace width="0.2em"/>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>The 
+ <m:math display="inline">
+  <m:mi>Ln</m:mi>
+ </m:math>'s have their principal values on the positive real axis and are
+             continued via continuity.
+</p>
+
+<p>When 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> in 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B4;</m:mi>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:none/>
+      <m:mo>&lt;</m:mo>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>Ln</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>G</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>4</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msup>
+       </m:mrow>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>+</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mstyle displaystyle="false">
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+          </m:mstyle>
+          <m:mspace width="0.2em"/>
+          <m:mi>z</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mi>z</m:mi>
+            <m:mo>+</m:mo>
+            <m:mn>1</m:mn>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>12</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi>Ln</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+        <m:mi>A</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msub>
+        <m:mi>B</m:mi>
+        <m:mrow>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>2</m:mn>
+        </m:mrow>
+       </m:msub>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>k</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>k</m:mi>
+          </m:mrow>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>k</m:mi>
+          </m:mrow>
+          <m:mo>+</m:mo>
+          <m:mn>2</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+   </m:mrow>
+ </m:math>
+</div>
+
+<p>see 
+<a href="http://dlmf.nist.gov/Contents/bib/F#ferreira:2001:aae">
+ Ferreira and López(2001)
+</a>. This reference also provides bounds for the error term. Here 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>B</m:mi>
+   <m:mrow>
+    <m:mrow>
+     <m:mn>2</m:mn>
+     <m:mi>k</m:mi>
+    </m:mrow>
+    <m:mo>+</m:mo>
+    <m:mn>2</m:mn>
+   </m:mrow>
+  </m:msub>
+ </m:math> is the Bernoulli number,  and 
+ <m:math display="inline">
+  <m:mi>A</m:mi>
+ </m:math> is <em>Glaisher's constant</em>, given by
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>A</m:mi>
+    <m:mo>=</m:mo>
+    <m:msup>
+     <m:mi mathvariant="normal">&#x2147;</m:mi>
+     <m:mi>C</m:mi>
+    </m:msup>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>1.28242 71291 00622 63687</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>C</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munder>
+      <m:mo movablelimits="false">lim</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>&#x2192;</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:mrow>
+     </m:munder>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:munderover>
+          <m:mo movablelimits="false">&#x2211;</m:mo>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mo>=</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mi>n</m:mi>
+         </m:munderover>
+         <m:mi>k</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mrow>
+          <m:mi>ln</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi>k</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mstyle displaystyle="false">
+             <m:mfrac>
+              <m:mn>1</m:mn>
+              <m:mn>2</m:mn>
+             </m:mfrac>
+            </m:mstyle>
+            <m:msup>
+             <m:mi>n</m:mi>
+             <m:mn>2</m:mn>
+            </m:msup>
+           </m:mrow>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mstyle displaystyle="false">
+             <m:mfrac>
+              <m:mn>1</m:mn>
+              <m:mn>2</m:mn>
+             </m:mfrac>
+            </m:mstyle>
+            <m:mi>n</m:mi>
+           </m:mrow>
+           <m:mo>+</m:mo>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>12</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mspace width="0.2em"/>
+         <m:mrow>
+          <m:mi>ln</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi>n</m:mi>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>4</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:msup>
+         <m:mi>n</m:mi>
+         <m:mn>2</m:mn>
+        </m:msup>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi>&#x03B3;</m:mi>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mn>12</m:mn>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>&#x03B6;</m:mi>
+        <m:mo>&#x2032;</m:mo>
+       </m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mn>2</m:mn>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:msup>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mn>2</m:mn>
+       </m:msup>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mn>12</m:mn>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:msup>
+       <m:mi>&#x03B6;</m:mi>
+       <m:mo>&#x2032;</m:mo>
+      </m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>and 
+ <m:math display="inline">
+  <m:msup>
+   <m:mi>&#x03B6;</m:mi>
+   <m:mo>&#x2032;</m:mo>
+  </m:msup>
+ </m:math> is the derivative of the zeta function
+</p>
+
+<p>For Glaisher's constant see also 
+ <a href="http://dlmf.nist.gov/Contents/bib/G#greene:1982:mft">
+  Greene and Knuth(1982)
+ </a>(p. 100).
+</p>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfbetafunction.xhtml b/src/axiom-website/hyperdoc/dlmfbetafunction.xhtml
new file mode 100644
index 0000000..f04baf9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfbetafunction.xhtml
@@ -0,0 +1,1510 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Beta Function
+  </div>
+  <hr/>
+<h3>Beta Function</h3>
+
+<p>In this section all fractional powers have their principal values, except 
+where noted otherwise. In the next 4 equations it is assumed
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi> 
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>.
+</p>
+
+<h5>Euler's Beta Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">B</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mn>1</m:mn>
+     </m:msubsup>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>b</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>a</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>b</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mfrac bevelled="true">
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msubsup>
+     <m:mrow>
+      <m:msup>
+       <m:mi>sin</m:mi>
+       <m:mrow>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:mi>&#x03B8;</m:mi>
+     </m:mrow>
+     <m:mrow>
+      <m:msup>
+       <m:mi>cos</m:mi>
+       <m:mrow>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:mi>&#x03B8;</m:mi>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>&#x03B8;</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="false">
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:mstyle>
+     <m:mrow>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>,</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">B</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mn>1</m:mn>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>t</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>,</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>a</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi>z</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>with 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mi>&#x03C0;</m:mi>
+  </m:mrow>
+ </m:math> and the integration path along the real axis.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mfrac bevelled="true">
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msubsup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>cos</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>cos</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>b</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mi>&#x03C0;</m:mi>
+      <m:msup>
+       <m:mn>2</m:mn>
+       <m:mi>a</m:mi>
+      </m:msup>
+     </m:mfrac>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mrow>
+        <m:mi mathvariant="normal">B</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>a</m:mi>
+             <m:mo>+</m:mo>
+             <m:mi>b</m:mi>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>,</m:mo>
+          <m:mrow>
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mrow>
+              <m:mi>a</m:mi>
+              <m:mo>-</m:mo>
+              <m:mi>b</m:mi>
+             </m:mrow>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi>&#x03C0;</m:mi>
+     </m:msubsup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>sin</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+       <m:mi>b</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mi>&#x03C0;</m:mi>
+      <m:msup>
+       <m:mn>2</m:mn>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+     </m:mfrac>
+     <m:mfrac>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mfrac bevelled="true">
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:msup>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mrow>
+        <m:mi mathvariant="normal">B</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>a</m:mi>
+             <m:mo>+</m:mo>
+             <m:mi>b</m:mi>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>,</m:mo>
+          <m:mrow>
+           <m:mfrac>
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mrow>
+              <m:mi>a</m:mi>
+              <m:mo>-</m:mo>
+              <m:mi>b</m:mi>
+             </m:mrow>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi>cosh</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>b</m:mi>
+         <m:mi>t</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>cosh</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi>t</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>a</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mfrac>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mn>4</m:mn>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>,</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>-</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>b</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow> 
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:mfrac>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mrow>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>w</m:mi>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>a</m:mi>
+        </m:msup>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>-</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>b</m:mi>
+        </m:msup>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>w</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">B</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>a</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>b</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>w</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>The fractional powers have their principal values when 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>w</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, and are continued via continuity.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mi>c</m:mi>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x221E;</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>c</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x221E;</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mi>t</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>a</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mrow>
+      <m:mi>b</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">B</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow> 
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>c</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>a</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>b</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>0</m:mn>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mi>t</m:mi>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>t</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>b</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi>sin</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>,</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <!-- Need a better Axiom graphic for this
+ <img width="302" height="151" alt="" src="bitmaps/12F1.png"/> -->
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mi>t</m:mi>
+ </m:math>-plane. Contour for first loop integral for the beta function.
+</div>
+
+<p>In the next two equations the fractional powers are continuous on the 
+   integration paths and take their principal values at the beginning.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>a</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>+</m:mo>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mi>t</m:mi>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">B</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p> when
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math>
+  <m:mi>a</m:mi>
+ </m:math> is not an integer and the contour cuts the real axis between
+ <m:math>
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math> and the origin.
+</p>
+
+<div align="center">
+ <!-- Need a better Axiom graphic for this
+ <img width="302" height="151" alt="" src="bitmaps/12F2.png"/> -->
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mi>t</m:mi>
+ </m:math>-plane. Contour for second loop integral for the beta function.
+</div>
+
+<h5>Pochhammer's Integral</h5>
+<p>When 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>a</m:mi>
+    <m:mo>,</m:mo>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&#x2208;</m:mo>
+   <m:mi mathvariant="normal">&#x2102;</m:mi>
+  </m:mrow>
+ </m:math>
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow> 
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mi>P</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+        </m:mrow>
+        <m:mo>,</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>+</m:mo>
+        </m:mrow>
+        <m:mo>,</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+        </m:mrow>
+        <m:mo>,</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>-</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:msubsup>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>b</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>4</m:mn>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi>sin</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>sin</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">B</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where the contour starts from an arbitrary point  
+ <m:math display="inline">
+  <m:mi>P</m:mi>
+ </m:math> in the interval 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>(</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>)</m:mo>
+  </m:mrow>
+ </m:math>,circles 
+ <m:math display="inline">
+  <m:mn>1</m:mn>
+ </m:math> and then 
+ <m:math display="inline">
+  <m:mn>0</m:mn>
+ </m:math> in the positive sense, circles 
+ <m:math display="inline">
+  <m:mn>1</m:mn>
+ </m:math> and then 
+ <m:math display="inline">
+  <m:mn>0</m:mn>
+ </m:math> in the negative sense, and returns to 
+ <m:math display="inline">
+  <m:mi>P</m:mi>
+ </m:math>. It can always be deformed into the contour shown here.
+</p>
+
+<div align="center">
+ <!-- Need a better Axiom graphic for this
+ <img width="302" height="104" alt="" src="bitmaps/12F3.png"/> -->
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mi>t</m:mi>
+ </m:math>-plane. Contour for Pochhammer's integral.
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfcontinuedfractions.xhtml b/src/axiom-website/hyperdoc/dlmfcontinuedfractions.xhtml
new file mode 100644
index 0000000..3dc576e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfcontinuedfractions.xhtml
@@ -0,0 +1,392 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Continued Fractions
+  </div>
+  <hr/>
+<h3>Continued Fractions</h3>
+
+<p>For 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mi>z</m:mi>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>+</m:mo>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>-</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mfrac>
+       <m:msub>
+        <m:mi>a</m:mi>
+        <m:mn>0</m:mn>
+       </m:msub>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>+</m:mo>
+       </m:mrow>
+      </m:mfrac>
+      <m:mrow>
+       <m:mfrac>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>+</m:mo>
+          <m:mi>z</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+        </m:mrow>
+       </m:mfrac>
+       <m:mrow>
+        <m:mfrac>
+         <m:msub>
+          <m:mi>a</m:mi>
+          <m:mn>2</m:mn>
+         </m:msub>
+         <m:mrow>
+          <m:mrow>
+           <m:mo>+</m:mo>
+           <m:mi>z</m:mi>
+          </m:mrow>
+          <m:mo>+</m:mo>
+         </m:mrow>
+        </m:mfrac>
+        <m:mrow>
+         <m:mfrac>
+          <m:msub>
+           <m:mi>a</m:mi>
+           <m:mn>3</m:mn>
+          </m:msub>
+          <m:mrow>
+           <m:mrow>
+            <m:mo>+</m:mo>
+            <m:mi>z</m:mi>
+           </m:mrow>
+           <m:mo>+</m:mo>
+          </m:mrow>
+         </m:mfrac>
+         <m:mrow>
+          <m:mfrac>
+           <m:msub>
+            <m:mi>a</m:mi>
+            <m:mn>4</m:mn>
+           </m:msub>
+           <m:mrow>
+            <m:mrow>
+             <m:mo>+</m:mo>
+             <m:mi>z</m:mi>
+            </m:mrow>
+            <m:mo>+</m:mo>
+           </m:mrow>
+          </m:mfrac>
+          <m:mfrac>
+           <m:msub>
+            <m:mi>a</m:mi>
+            <m:mn>5</m:mn>
+           </m:msub>
+           <m:mrow>
+            <m:mi>z</m:mi>
+            <m:mo>+</m:mo>
+           </m:mrow>
+          </m:mfrac>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>0</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>12</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>1</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mn>30</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>2</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>53</m:mn>
+     <m:mn>210</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>3</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>195</m:mn>
+     <m:mn>371</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>4</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>22999</m:mn>
+     <m:mn>22737</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>5</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>299 44523</m:mn>
+     <m:mn>197 33142</m:mn>
+    </m:mfrac>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mn>6</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mn>10 95352 41009</m:mn>
+     <m:mn>4 82642 75462</m:mn>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For rational values of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>a</m:mi>
+   <m:mn>7</m:mn>
+  </m:msub>
+ </m:math> to 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>a</m:mi>
+   <m:mn>11</m:mn>
+  </m:msub>
+ </m:math> and 40S values of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>a</m:mi>
+   <m:mn>0</m:mn>
+  </m:msub>
+ </m:math> to 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>a</m:mi>
+   <m:mn>40</m:mn>
+  </m:msub>
+ </m:math>, see 
+<a href="http://dlmf.nist.gov/Contents/bib/C#char:1980:osc">
+   Char(1980)
+</a>. Also see 
+<a href="http://dlmf.nist.gov/Contents/bib/J#jones:1980:con">
+   Jones and Thron(1980)
+</a>(pp. 348–350) and
+<a href="http://dlmf.nist.gov/Contents/bib/L#lorentzen:1992:cfa">
+   Lorentzen and Waadeland(1992)
+</a>(pp. 221–224) for further information.
+</p>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfdefinitions.xhtml b/src/axiom-website/hyperdoc/dlmfdefinitions.xhtml
new file mode 100644
index 0000000..711a3ef
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfdefinitions.xhtml
@@ -0,0 +1,505 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Definitions
+  </div>
+  <hr/>
+<h3>Definitions</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Gamma and Psi Functions</li>
+ <li>Euler's Constant</li>
+ <li>Pochhammer's Symbol</li>
+</ul>
+<h4>Gamma and Psi Functions</h4>
+<h5>Euler's Integral</h5>
+<m:math display="block">
+ <m:mrow>
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x00393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:msubsup>
+     <m:mo>&#x222B;</m:mo>
+     <m:mn>0</m:mn>
+     <m:mi mathvariant="normal">&#x221E;</m:mi>
+    </m:msubsup>
+    <m:msup>
+     <m:mi mathvariant="normal">&#x02147;</m:mi>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:msup>
+    <m:msup>
+     <m:mi>t</m:mi>
+     <m:mrow>
+      <m:mi>z</m:mi>
+      <m:mo>-</m:mo>
+      <m:mn>1</m:mn>
+     </m:mrow>
+    </m:msup>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x2146;</m:mi>
+     <m:mi>t</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:mrow>
+</m:math>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+    <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+When 
+<m:math display="inline">
+ <m:mrow>
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x211C;</m:mi>
+   <m:mi>z</m:mi>
+  </m:mrow>
+  <m:mo>&#x2264;</m:mo>
+  <m:mn>0</m:mn>
+ </m:mrow>
+</m:math>, 
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mi mathvariant="normal">&#x0393;</m:mi>
+  <m:mrow>
+   <m:mo>(</m:mo>
+   <m:mi>z</m:mi>
+   <m:mo>)</m:mo>
+  </m:mrow>
+ </m:mrow>
+</m:math> is defined by analytic continuation. It is a meromorphic 
+          function with no zeros, and with simple poles of residue 
+
+<m:math display="inline">
+ <m:mfrac bevelled="true">
+  <m:msup>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+   <m:mi>n</m:mi>
+  </m:msup>
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mi mathvariant="normal">!</m:mi>
+  </m:mrow>
+ </m:mfrac>
+</m:math> at 
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mi>z</m:mi>
+  <m:mo>=</m:mo>
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mi>n</m:mi>
+  </m:mrow>
+ </m:mrow>
+</m:math>.  
+
+<m:math display="inline">
+ <m:mfrac bevelled="true">
+  <m:mn>1</m:mn>
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:mfrac>
+</m:math> is entire, with simple zeros at 
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mi>z</m:mi>
+  <m:mo>=</m:mo>
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mi>n</m:mi>
+  </m:mrow>
+ </m:mrow>
+</m:math>.
+
+<p>
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac bevelled="true">
+     <m:mrow>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mo>&#x2032;</m:mo>
+      </m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+</p>
+   
+<p>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> is meromorphic with simple poles of residue 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math> at 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mi>n</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</p>
+
+<h4>Euler's Constant</h4>
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>&#x03B3;</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munder>
+      <m:mo movablelimits="false">lim</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>&#x2192;</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:mrow>
+     </m:munder>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>3</m:mn>
+        </m:mfrac>
+        <m:mo>+</m:mo>
+        <m:mi mathvariant="normal">&#x2026;</m:mi>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mi>n</m:mi>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mi>n</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>0.57721 56649 01532 86060</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+
+<h4>Pochhammer's Symbol</h4>
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>a</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mn>0</m:mn>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>a</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi>n</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>a</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>2</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> 
+</div>
+
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>a</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi>n</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mfrac bevelled="true">
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>a</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:math>
+
+<div align="right">
+  <m:math display="inline">
+   <m:mrow>
+    <m:mi>a</m:mi>
+    <m:mo>&#x2260;</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>n</m:mi>
+     </m:mrow>
+     <m:mo>,</m:mo>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>n</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mn>1</m:mn>
+     </m:mrow>
+     <m:mo>,</m:mo>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>n</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mn>2</m:mn>
+     </m:mrow>
+     <m:mo>,</m:mo>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:math>
+ </div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmffunctionrelations.xhtml b/src/axiom-website/hyperdoc/dlmffunctionrelations.xhtml
new file mode 100644
index 0000000..39086ad
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmffunctionrelations.xhtml
@@ -0,0 +1,928 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Function Relations
+  </div>
+  <hr/>
+<h3>Functional Relations</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Recurrence</li>
+ <li>Reflection</li>
+ <li>Multiplication</li>
+ <li>Bohr-Mollerup Theorem</li>
+</ul>
+<h4>Recurrence</h4>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+       </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>z</m:mi>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mi>z</m:mi>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+
+<h4>Reflection</h4>
+<a name="equation3"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac bevelled="true">
+     <m:mi>&#x03C0;</m:mi>
+     <m:mrow>
+      <m:mi>sin</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>&#x0177;</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac bevelled="true">
+      <m:mi>&#x03C0;</m:mi>
+      <m:mrow>
+       <m:mi>tan</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>&#x0177;</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<h4>Multiplication</h4>
+<div align="left">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mn>2</m:mn>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C0;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mfrac bevelled="true">
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="left">
+ <m:math display="inline">
+  <m:mrow> 
+   <m:mrow>
+    <m:mn>3</m:mn>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>3</m:mn>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mn>3</m:mn>
+      <m:mrow>
+       <m:mrow>
+        <m:mn>3</m:mn>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>3</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>2</m:mn>
+          <m:mn>3</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="left">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>n</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:mi>n</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:msup>
+      <m:mi>n</m:mi>
+      <m:mrow>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:munderover>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mi>k</m:mi>
+         <m:mi>n</m:mi>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:munderover>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mfrac>
+       <m:mi>k</m:mi>
+       <m:mi>n</m:mi>
+      </m:mfrac>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:msup>
+      <m:mi>n</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mfrac bevelled="true">
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>&#x03C8;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>z</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C8;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>+</m:mo>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>2</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mi>ln</m:mi>
+      <m:mn>2</m:mn>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mi>n</m:mi>
+      </m:mfrac>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x2211;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>0</m:mn>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:munderover>
+       <m:mi>&#x03C8;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mfrac>
+          <m:mi>k</m:mi>
+          <m:mi>n</m:mi>
+         </m:mfrac>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mi>ln</m:mi>
+      <m:mi>n</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<a name="bohrmolleruptheorem"/>
+<h4>Bohr-Mollerup Theorem</h4>
+
+<br/>
+If a positive function 
+<m:math display="inline">
+ <m:mrow>
+  <m:mi>f</m:mi>
+  <m:mrow>
+   <m:mo>(</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>)</m:mo>
+  </m:mrow>
+ </m:mrow>
+</m:math> on 
+<m:math display="inline">
+ <m:mrow>
+  <m:mo>(</m:mo>
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>,</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+  <m:mo>)</m:mo>
+ </m:mrow>
+</m:math> satisfies 
+<m:math display="inline">
+ <m:mrow>
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>x</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+  <m:mo>=</m:mo>
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mrow>
+    <m:mi>f</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:mrow>
+</m:math>,
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mn>1</m:mn>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+  <m:mo>=</m:mo>
+  <m:mn>1</m:mn>
+ </m:mrow>
+</m:math>, and 
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mi>ln</m:mi>
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:mrow>
+</m:math> is convex, then
+
+<m:math display="inline">
+ <m:mrow>
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+  <m:mo>=</m:mo>
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:mrow>
+</m:math>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfgraphics.xhtml b/src/axiom-website/hyperdoc/dlmfgraphics.xhtml
new file mode 100644
index 0000000..fc4266f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfgraphics.xhtml
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Graphics
+  </div>
+  <hr/>
+<h3>Graphics</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Real Argument</li>
+ <li>The Psi Function</li>
+ <li>Complex Argument</li>
+</ul>
+<h4>Real Argument</h4>
+ <img width="403" height="482" src="bitmaps/gammareal3.png"/>
+ <br/>
+This graph shows the 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mfrac bevelled="true">
+   <m:mn>1</m:mn>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mfrac>
+ </m:math>.
+
+To create these two graphs in Axiom:
+<pre>
+ -- Draw the first graph in a viewport
+ viewport1:=draw(Gamma(i), i=-4.2..4, adaptive==true, unit==[1.0,1.0])
+ -- Draw the second graph in a viewport
+ viewport2:=draw(1/Gamma(i), i=-4.2..4, adaptive==true, unit==[1.0,1.0])
+ -- Get the Gamma graph from the first viewport and layer it on top
+ putGraph(viewport2,getGraph(viewport1,1),2)
+ -- Remove the points and leave the lines
+ points(viewport2,1,"off")
+ points(viewport2,2,"off")
+ -- Show the combined graph
+ makeViewport2D(viewport2)
+</pre>
+
+ <img width="300" height="176" alt="" src="bitmaps/loggamma.png"/>
+ <br/>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>. This function is convex on 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>(</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x221E;</m:mi>
+   </m:mrow>
+   <m:mo>)</m:mo>
+  </m:mrow>
+ </m:math>;
+ <br/>
+  compare <a href="dlmffunctionalrelations.xhtml#bohrmolleruptheorem">
+           Functional Relations</a>
+ <p>
+You can construct this graph with the Axiom commands:
+<pre>
+  -- draw the graph of log(Gamma) in a viewport
+  viewport1:=draw(log Gamma(i), i=0..8, adaptive==true, unit==[1.0,1.0])
+  -- turn off the points and leave the lines
+  points(viewport1,1,"off")
+</pre>
+</p>
+ <br/>
+
+ <h4>The Psi Function 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</h4>
+
+<p> This function is a special case of the polygamma function.
+In particular, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>x</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> is equal to polygamma(0,x).
+ </p>
+ <br/>
+ <br/>
+
+ <img width="522" height="556" alt="" src="bitmaps/psi.png"/>
+ <br/>
+You can reconstruct this graph in Axiom by:
+<pre>
+  -- first construct the psi function
+  psi(x)==polygamma(0,x)
+  -- draw the graph in a viewport
+  viewport:=draw(psi(y),y=-3.5..4,adaptive==true)
+  -- make the gradient obvious
+  scale(viewport,1,0.9,22.5)
+  -- and recenter the graph
+  translate(viewport,1,0,-0.02)
+  -- turn off the points and keep the line
+  points(viewport,1,"off")
+</pre>
+
+ <h4>Complex Argument</h4>
+
+ <img width="400" height="400" alt="" src="bitmaps/gammacomplex.png"/>
+ <br/>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>x</m:mi>
+      <m:mo>+</m:mo>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+       <m:mi>y</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+ <br/>
+
+You can reconstruct this image in Axiom with:
+<pre>
+  -- Set up the default viewpoint
+  viewPhiDefault(-%pi/4)
+  -- define the point set function
+  gam(x,y)== 
+    g:=Gamma complex(x,y) 
+    point [x,y,max(min(real g,4),-4), argument g] 
+  -- draw the image and remember the viewport
+  viewport:=draw(gam, -4..4,-3..3,var1Steps==100,var2Steps==100)
+  -- set the color mapping for the image
+  colorDef(viewport,blue(),blue())
+  -- and smoothly shade it
+  drawStyle(viewport,"smooth")
+</pre>
+ <img width="400" height="400" src="bitmaps/gammacomplexinverse.png"/>
+<br/>
+ <m:math display="inline">
+  <m:mfrac bevelled="true">
+   <m:mn>1</m:mn>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>x</m:mi>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+        <m:mi>y</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mfrac>
+ </m:math>
+ <br/>
+
+<p>
+You can reproduce this image from Axiom with:
+<pre>
+  -- Set up the default viewpoint
+  viewPhiDefault(-%pi/4)
+  -- Define the complex Gamma inverse function
+  gaminv(x,y)== 
+    g:=1/(Gamma complex(x,y)) 
+    point [x,y,max(min(real g,4),-4), argument g]
+  -- draw the 3D image and remember the viewport
+  viewport:=draw(gaminv, -4..4,-3..3,var1Steps==100,var2Steps==100)
+  -- make the image a uniform color
+  colorDef(viewport,blue(),blue())
+  -- and make it pretty
+  drawStyle(viewport,"smooth")
+</pre>
+</p>
+
+
+<p>
+To get these exact images with the colored background you need
+to use GIMP to set the background. The steps I used are:
+<ol>
+<li>Save the image as a pixmap</li>
+<li>Open the saved file in gimp</li>
+<li>Dialogs->Colors->ColorPicker button</li>
+<li>Eyedrop the color of the web page</li>
+<li>Set the color as the foreground on the FG/BG page</li>
+<li>Dialogs->Layers</li>
+<li>Duplicate Layer</li>
+<li>Layer->Stack->Select bottom layer</li>
+<li>Edit->Fill with Foreground color</li>
+<li>(on Layers panel)Select image</li>
+<li>(on Layers panel) Mode->Darken Only</li>
+</ol>
+Note that you may have to use "lighten only" first before it will
+allow you to choose "darken only".
+</p>
+
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfinequalities.xhtml b/src/axiom-website/hyperdoc/dlmfinequalities.xhtml
new file mode 100644
index 0000000..e5f9037
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfinequalities.xhtml
@@ -0,0 +1,777 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Inequalities
+  </div>
+  <hr/>
+<h3>Inequalities</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Real Variables</li>
+ <li>Complex Variables</li>
+</ul>
+
+<h4>Real Variables</h4>
+<p>Throughout this subsection 
+<m:math display="inline">
+ <m:mrow>
+  <m:mi>x</m:mi>
+  <m:mo>&gt;</m:mo>
+  <m:mn>0</m:mn>
+ </m:mrow>
+</m:math>.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>&lt;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mfrac bevelled="true">
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi>x</m:mi>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>x</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mi>x</m:mi>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>x</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&lt;</m:mo>
+    <m:msup>
+     <m:mi mathvariant="normal">&#x2147;</m:mi>
+     <m:mfrac bevelled="true">
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>12</m:mn>
+        <m:mi>x</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mfrac>
+    </m:msup>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>x</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>+</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mi>x</m:mi>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mn>2</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>x</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:msup>
+     </m:mfrac>
+     <m:mo>+</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mfrac bevelled="true">
+           <m:mn>1</m:mn>
+           <m:mi>x</m:mi>
+          </m:mfrac>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:msup>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mn>2</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msup>
+     <m:mi>x</m:mi>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>-</m:mo>
+      <m:mi>s</m:mi>
+     </m:mrow>
+    </m:msup>
+    <m:mo>&lt;</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>s</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&lt;</m:mo>
+    <m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>x</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>-</m:mo>
+      <m:mi>s</m:mi>
+     </m:mrow>
+    </m:msup>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>s</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>exp</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:mi>s</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow> 
+        <m:mi>&#x03C8;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>x</m:mi>
+          <m:mo>+</m:mo>
+          <m:msup>
+           <m:mi>s</m:mi>
+           <m:mfrac bevelled="true">
+            <m:mn>1</m:mn>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+          </m:msup>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>s</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>&#x2264;</m:mo>
+    <m:mrow>
+     <m:mi>exp</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:mi>s</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>&#x03C8;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>x</m:mi>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>2</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>s</m:mi>
+             <m:mo>+</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>s</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h4>Complex Variables</h4>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>x</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>x</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+    <m:mo>&#x2265;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>sech</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>&#x03C0;</m:mi>
+          <m:mi>y</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>x</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mfrac>
+    <m:mn>1</m:mn>
+    <m:mn>2</m:mn>
+   </m:mfrac>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>b</m:mi>
+    <m:mo>-</m:mo>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>a</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mi>x</m:mi>
+    <m:mo>+</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x2148;</m:mi>
+     <m:mi>y</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> with 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>&#x2223;</m:mo>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>&#x2223;</m:mo>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>b</m:mi>
+       <m:mo>-</m:mo>
+       <m:mi>a</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>|</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>|</m:mo>
+    </m:mrow>
+    <m:mo>&#x2264;</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac bevelled="true">
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+     </m:msup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>x</m:mi>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mfrac bevelled="true">
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mrow>
+          <m:mo>|</m:mo>
+          <m:mi>y</m:mi>
+          <m:mo>|</m:mo>
+         </m:mrow> 
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>exp</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>6</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:msup>
+         <m:mrow>
+          <m:mo>|</m:mo>
+          <m:mi>z</m:mi>
+          <m:mo>|</m:mo>
+         </m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfinfiniteproducts.xhtml b/src/axiom-website/hyperdoc/dlmfinfiniteproducts.xhtml
new file mode 100644
index 0000000..fd4f0d3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfinfiniteproducts.xhtml
@@ -0,0 +1,546 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Infinite Products
+  </div>
+  <hr/>
+<h3>Infinite Products</h3>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munder>
+      <m:mo movablelimits="false">lim</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>&#x2192;</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:mrow>
+     </m:munder>
+     <m:mfrac>
+      <m:mrow>
+       <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mi mathvariant="normal">!</m:mi>
+      </m:mrow>
+      <m:msup>
+       <m:mi>k</m:mi>
+       <m:mi>z</m:mi>
+      </m:msup>
+     </m:mrow>
+     <m:mrow>
+      <m:mi>z</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>k</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>z</m:mi>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mi>&#x03B3;</m:mi>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mi>z</m:mi>
+         <m:mi>k</m:mi>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mi>z</m:mi>
+         <m:mi>k</m:mi>
+        </m:mfrac>
+       </m:mrow>
+      </m:msup>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msup>
+     <m:mrow>
+      <m:mo>|</m:mo>
+      <m:mfrac>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mi>x</m:mi>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>x</m:mi>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mi mathvariant="normal">&#x2148;</m:mi>
+           <m:mi>y</m:mi>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+      <m:mo>|</m:mo>
+     </m:mrow>
+     <m:mn>2</m:mn>
+    </m:msup>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>+</m:mo>
+      <m:mfrac>
+       <m:msup>
+        <m:mi>y</m:mi>
+        <m:mn>2</m:mn>
+       </m:msup>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>x</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:msup>
+      </m:mfrac>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi>m</m:mi>
+     </m:munderover>
+     <m:msub>
+      <m:mi>a</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi>m</m:mi>
+     </m:munderover>
+     <m:msub>
+      <m:mi>b</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>then
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mfrac>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>a</m:mi>
+          <m:mn>1</m:mn>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>a</m:mi>
+          <m:mn>2</m:mn>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x22EF;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>a</m:mi>
+          <m:mi>m</m:mi>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>b</m:mi>
+          <m:mn>1</m:mn>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>b</m:mi>
+          <m:mn>2</m:mn>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x22EF;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:msub>
+          <m:mi>b</m:mi>
+          <m:mi>m</m:mi>
+         </m:msub>
+         <m:mo>+</m:mo>
+         <m:mi>k</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>b</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>b</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>b</m:mi>
+         <m:mi>m</m:mi>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mi>m</m:mi>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>provided that none of the 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>b</m:mi>
+   <m:mi>k</m:mi>
+  </m:msub>
+ </m:math>
+ is zero or a negative integer.
+</p>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfintegralrepresentations.xhtml b/src/axiom-website/hyperdoc/dlmfintegralrepresentations.xhtml
new file mode 100644
index 0000000..798ffa0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfintegralrepresentations.xhtml
@@ -0,0 +1,1968 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Integral Representations
+  </div>
+  <hr/>
+<h3>Integral Representations</h3>
+
+<h6>Contents</h6>
+<ul>
+ <li>Gamma Function</li>
+ <li>Psi Function and Euler's Constant</li>
+</ul>
+
+<h4>Gamma Function</h4>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mi>&#x03BC;</m:mi>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mi>&#x03BD;</m:mi>
+        <m:mi>&#x03BC;</m:mi>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mi>z</m:mi>
+       <m:mfrac bevelled="true">
+        <m:mi>&#x03BD;</m:mi>
+        <m:mi>&#x03BC;</m:mi>
+       </m:mfrac>
+      </m:msup>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mi>exp</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:msup>
+          <m:mi>t</m:mi>
+          <m:mi>&#x03BC;</m:mi>
+         </m:msup>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>&#x03BD;</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>&#x03BD;</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03BC;</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>. (The fractional powers have their principal values.)
+</p>
+
+<h5>Hankel's Loop Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>+</m:mo>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mi>t</m:mi>
+      </m:msup>
+      <m:msup>
+       <m:mi>t</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where the contour begins at 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math>, circles the origin once in the positive direction, and returns to 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>-</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math>. 
+ <m:math display="inline">
+  <m:msup>
+   <m:mi>t</m:mi>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mi>z</m:mi>
+   </m:mrow>
+  </m:msup>
+ </m:math> has its principal value where 
+ <m:math display="inline">
+  <m:mi>t</m:mi>
+ </m:math> crosses the positive real axis, and is continuous. 
+</p>
+
+<div align="center">
+ <!-- need a better Axiom graphic than this
+  <img width="302" height="150" alt="" src="bitmaps/9F1.png"/> -->
+</div>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mi>t</m:mi>
+ </m:math>-plane. Contour for Hankel's loop integral.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msup>
+      <m:mi>c</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mi>t</m:mi>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mi>c</m:mi>
+        <m:msup>
+         <m:mi>t</m:mi>
+         <m:mn>2</m:mn>
+        </m:msup>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>c</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where the path is the real axis.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>1</m:mn>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:msup>
+       <m:mi>t</m:mi>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>k</m:mi>
+       </m:msup>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mi mathvariant="normal">!</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:munderover>
+         <m:mo movablelimits="false">&#x2211;</m:mo>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>=</m:mo>
+          <m:mn>0</m:mn>
+         </m:mrow>
+         <m:mi>n</m:mi>
+        </m:munderover>
+        <m:mfrac>
+         <m:mrow>
+          <m:msup>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mo>-</m:mo>
+             <m:mn>1</m:mn>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+           <m:mi>k</m:mi>
+          </m:msup>
+          <m:msup>
+           <m:mi>t</m:mi>
+           <m:mi>k</m:mi>
+          </m:msup>
+         </m:mrow>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mi mathvariant="normal">!</m:mi>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mspace width="0.2em"/>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>n</m:mi>
+    </m:mrow>
+    <m:mo>-</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mi>n</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>cos</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>cos</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>t</m:mi>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>sin</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:msup>
+      <m:mi>t</m:mi>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>sin</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>t</m:mi>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mi>n</m:mi>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>cos</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>n</m:mi>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mi>cos</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mi>n</m:mi>
+       </m:msup>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>4</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mi>n</m:mi>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi>sin</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>n</m:mi>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mi>sin</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mi>n</m:mi>
+       </m:msup>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>4</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<h5>Binet's Formula</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>ln</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>-</m:mo>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:msubsup>
+        <m:mo>&#x222B;</m:mo>
+        <m:mn>0</m:mn>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:msubsup>
+       <m:mfrac>
+        <m:mrow>
+         <m:mi>arctan</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mfrac bevelled="true">
+           <m:mi>t</m:mi>
+           <m:mi>z</m:mi>
+          </m:mfrac>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:msup>
+          <m:mi mathvariant="normal">&#x2147;</m:mi>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>t</m:mi>
+          </m:mrow>
+         </m:msup>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:mfrac>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mo>&#x2061;</m:mo>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mfrac bevelled="true">
+    <m:mi>&#x03C0;</m:mi>
+    <m:mn>2</m:mn>
+   </m:mfrac>
+  </m:mrow>
+ </m:math> and the inverse tangent has its principal value.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>ln</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>&#x03B3;</m:mi>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+       </m:mrow>
+      </m:mfrac>
+      <m:mrow>
+       <m:msubsup>
+        <m:mo>&#x222B;</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x221E;</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x221E;</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+         </m:mrow>
+        </m:mrow>
+       </m:msubsup>
+       <m:mfrac>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:msup>
+          <m:mi>z</m:mi>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>s</m:mi>
+          </m:mrow>
+         </m:msup>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>s</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mrow>
+          <m:mi>sin</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mi>&#x03C0;</m:mi>
+            <m:mi>s</m:mi>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+        </m:mrow>
+       </m:mfrac>
+       <m:mrow>
+        <m:mi>&#x03B6;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>s</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>s</m:mi>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mo>&#x2061;</m:mo>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mi>&#x03C0;</m:mi>
+    <m:mo>-</m:mo>
+    <m:mi>&#x03B4;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math> (
+ <m:math display="inline">
+  <m:mrow>
+   <m:none/>
+   <m:mo>&lt;</m:mo>
+   <m:mi>&#x03C0;</m:mi>
+  </m:mrow>
+ </m:math>), 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>1</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>c</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>, and
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03B6;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>s</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</p>
+
+<p>For additional representations see
+<a href="http://dlmf.nist.gov/Contents/bib/W#whittaker:1927:cma">
+   Whittaker and Watson(1927)</a>
+</p>
+
+<h4>Psi Function and Euler's Constant</h4>
+<p>For 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>z</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:msup>
+        <m:mi>t</m:mi>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:mfrac>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mi>t</m:mi>
+          </m:mrow>
+         </m:mrow>
+        </m:msup>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:msup>
+          <m:mi mathvariant="normal">&#x2147;</m:mi>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>t</m:mi>
+          </m:mrow>
+         </m:msup>
+        </m:mrow>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>ln</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>0</m:mn>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mi>t</m:mi>
+        </m:mfrac>
+        <m:mo>-</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>-</m:mo>
+          <m:msup>
+           <m:mi mathvariant="normal">&#x2147;</m:mi>
+           <m:mrow>
+            <m:mo>-</m:mo>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:msup>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mspace width="0.2em"/>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi>t</m:mi>
+         <m:mi>z</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:msup>
+      <m:mspace width="0.2em"/>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:mo>-</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>1</m:mn>
+           <m:mo>+</m:mo>
+           <m:mi>t</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>z</m:mi>
+        </m:msup>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+      <m:mi>t</m:mi>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>ln</m:mi>
+      <m:mspace width="0.2em"/>
+      <m:mi>z</m:mi>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>z</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:msubsup>
+        <m:mo>&#x222B;</m:mo>
+        <m:mn>0</m:mn>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:msubsup>
+       <m:mfrac>
+        <m:mrow>
+         <m:mi>t</m:mi>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2146;</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:msup>
+            <m:mi>t</m:mi>
+            <m:mn>2</m:mn>
+           </m:msup>
+           <m:mo>+</m:mo>
+           <m:msup>
+            <m:mi>z</m:mi>
+            <m:mn>2</m:mn>
+           </m:msup>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:msup>
+            <m:mi mathvariant="normal">&#x2147;</m:mi>
+            <m:mrow>
+             <m:mn>2</m:mn>
+             <m:mi>&#x03C0;</m:mi>
+             <m:mi>t</m:mi>
+            </m:mrow>
+           </m:msup>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mfrac>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:mo>-</m:mo>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+     </m:mfrac>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mn>1</m:mn>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>&#x03B3;</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+       </m:mrow>
+      </m:mfrac>
+      <m:mrow>
+       <m:msubsup>
+        <m:mo>&#x222B;</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x221E;</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x221E;</m:mi>
+          <m:mspace width="0.2em"/>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+         </m:mrow>
+        </m:mrow>
+       </m:msubsup>
+       <m:mfrac>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:msup>
+          <m:mi>z</m:mi>
+          <m:mrow>
+           <m:mrow>
+            <m:mo>-</m:mo>
+            <m:mi>s</m:mi>
+           </m:mrow>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+         </m:msup>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>sin</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>s</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mfrac>
+       <m:mrow>
+        <m:mi>&#x03B6;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>s</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mspace width="0.2em"/>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>s</m:mi>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B4;</m:mi>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:none/>
+      <m:mo>&lt;</m:mo>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> and 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>1</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>c</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>&#x03B3;</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>0</m:mn>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mspace width="0.2em"/>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mi>t</m:mi>
+      </m:mrow>
+      <m:mspace width="0.2em"/>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:msup>
+        <m:mi mathvariant="normal">&#x2147;</m:mi>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mi>t</m:mi>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+      <m:mi>t</m:mi>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>0</m:mn>
+       <m:mn>1</m:mn>
+      </m:msubsup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mspace width="0.2em"/>
+      <m:mfrac>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mi>t</m:mi>
+      </m:mfrac>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mn>1</m:mn>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mfrac>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:mi>t</m:mi>
+       </m:mrow>
+       <m:mi>t</m:mi>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:msup>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:msup>
+          <m:mi mathvariant="normal">&#x2147;</m:mi>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>t</m:mi>
+          </m:mrow>
+         </m:msup>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:mfrac>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:msup>
+        <m:mi>t</m:mi>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mspace width="0.2em"/>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfintegrals.xhtml b/src/axiom-website/hyperdoc/dlmfintegrals.xhtml
new file mode 100644
index 0000000..fa9c972
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfintegrals.xhtml
@@ -0,0 +1,954 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Integrals
+  </div>
+  <hr/>
+<h3>Integrals</h3>
+
+<a name="equation1"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mi>c</m:mi>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x221E;</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>c</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x221E;</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:msubsup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>s</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>a</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mo>-</m:mo>
+         <m:mi>s</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mi>z</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>s</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>s</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mi>z</m:mi>
+       <m:mi>a</m:mi>
+      </m:msup>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>+</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>a</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>b</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>a</m:mi>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mi>c</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mi>&#x03C0;</m:mi>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:msup>
+       <m:mrow>
+        <m:mo>|</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>a</m:mi>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>|</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:msup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>b</m:mi>
+          </m:mrow>
+          <m:mo>-</m:mo>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>t</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>a</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mrow>
+         <m:mi>sin</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mi>b</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>a</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>a</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>b</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mi>&#x03C0;</m:mi>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<h5>Barnes's Beta Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>c</m:mi>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>d</m:mi>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:mi>t</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>c</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>d</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>c</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>d</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>c</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>d</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow> 
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>a</m:mi>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>b</m:mi>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>c</m:mi>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x211C;</m:mi>
+     <m:mi>d</m:mi>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h5>Ramanujan's Beta Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>b</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>c</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>d</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>t</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>b</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>c</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>d</m:mi>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>3</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>d</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>b</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>b</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>d</m:mi>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>a</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>b</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>c</m:mi>
+      <m:mo>+</m:mo>
+      <m:mi>d</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>3</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<h5>de Branges-Wilson Beta Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>4</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>⁢</m:mo>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x222B;</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msubsup>
+      <m:mfrac>
+       <m:mrow>
+        <m:msubsup>
+         <m:mo>&#x220F;</m:mo>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>=</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mn>4</m:mn>
+        </m:msubsup>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:msub>
+            <m:mi>a</m:mi>
+            <m:mi>k</m:mi>
+           </m:msub>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:msub>
+            <m:mi>a</m:mi>
+            <m:mi>k</m:mi>
+           </m:msub>
+           <m:mo>-</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi mathvariant="normal">&#x2148;</m:mi>
+           <m:mi>t</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>t</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>t</m:mi>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mo>&#x220F;</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi>j</m:mi>
+        <m:mo>&lt;</m:mo>
+        <m:mi>k</m:mi>
+        <m:mo>&#x2264;</m:mo>
+        <m:mn>4</m:mn>
+       </m:mrow>
+      </m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mi>j</m:mi>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>3</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>a</m:mi>
+         <m:mn>4</m:mn>
+        </m:msub>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:msub>
+      <m:mi>a</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+    <m:mo>,</m:mo>
+    <m:mn>4</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfmathematicalapplications.xhtml b/src/axiom-website/hyperdoc/dlmfmathematicalapplications.xhtml
new file mode 100644
index 0000000..e4163dd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfmathematicalapplications.xhtml
@@ -0,0 +1,545 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Mathematical Applications
+  </div>
+  <hr/>
+<h3>Mathematical Applications</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Summation of Rational Functions</li>
+ <li>Mellin-Barnes Integrals</li>
+ <li>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">n</m:mi>
+ </m:math>-Dimensional Sphere</li>
+</ul>
+
+<h4>Summation of Rational Functions</h4>
+
+<p>As shown in 
+ <a href="http://dlmf.nist.gov/Contents/bib/T#temme:1996:sfi">
+  Temme(1996)
+ </a>(§3.4), the results given in
+ <a href="dlmfseriesexpansions.xhtml">
+  Series Expansions
+ </a> can be used to sum infinite series of rational functions.
+</p>
+
+<h5>Example</h5>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>S</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="false">
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+     </m:mstyle>
+     <m:msub>
+      <m:mi>a</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mi>k</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mstyle displaystyle="true">
+     <m:mfrac>
+      <m:mi>k</m:mi>
+      <m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mn>3</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>2</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mstyle>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>By decomposition into partial fractions</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>a</m:mi>
+     <m:mi>k</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>+</m:mo>
+       <m:mfrac>
+        <m:mn>2</m:mn>
+        <m:mn>3</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>+</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mrow>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:mfrac>
+        <m:mo>-</m:mo>
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>+</m:mo>
+          <m:mfrac>
+           <m:mn>2</m:mn>
+           <m:mn>3</m:mn>
+          </m:mfrac>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Hence from (
+ <a href="dlmfseriesexpansions.xhtml#equation6">Series Expansions 6
+ </a>), ( Special Values and Extrema
+ <a href="dlmfspecialvaluesandextrema.xhtml#equation13">
+  Equation 13
+ </a> and 
+ <a href="dlmfspecialvaluesandextrema.xhtml#equation19">
+  Equation 19
+ </a>)
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>S</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mstyle displaystyle="false">
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mstyle>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mi>&#x03C8;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>2</m:mn>
+          <m:mn>3</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mn>3</m:mn>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mn>3</m:mn>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mn>2</m:mn>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>3</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mi>&#x03C0;</m:mi>
+      <m:msqrt>
+       <m:mn>3</m:mn>
+      </m:msqrt>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h4>Mellin-Barnes Integrals</h4>
+<p>Many special functions 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> can be represented as a <em>Mellin-Barnes integral</em>, that is, 
+  an integral of a product of gamma functions, reciprocals of gamma 
+  functions, and a power of 
+ <m:math display="inline">
+  <m:mi>z</m:mi>
+ </m:math>, the integration contour being doubly-infinite and eventually 
+  parallel to the imaginary axis. The left-hand side of (
+ <a href="dlmfintegrals.xhtml#equation1">
+  Integral Equation 1
+ </a>) is a typical example. By translating the contour parallel to itself 
+ and summing the residues of the integrand, asymptotic expansions of 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>f</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> for large 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>|</m:mo>
+   <m:mi>z</m:mi>
+   <m:mo>|</m:mo>
+  </m:mrow>
+ </m:math>, or small 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mo>|</m:mo>
+   <m:mi>z</m:mi>
+   <m:mo>|</m:mo>
+  </m:mrow>
+ </m:math>, can be obtained complete with an integral representation of the 
+  error term. 
+</p>
+
+<h4>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">n</m:mi>
+ </m:math>-Dimensional Sphere</h4>
+
+<p>The volume 
+ <m:math display="inline">
+  <m:mi>V</m:mi>
+ </m:math> and surface area 
+ <m:math display="inline">
+  <m:mi>A</m:mi>
+ </m:math> of the 
+ <m:math display="inline">
+  <m:mi>n</m:mi>
+ </m:math>-dimensional sphere of radius
+ <m:math display="inline">
+  <m:mi>r</m:mi>
+ </m:math> are given by
+</p>
+
+<div align="center">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>V</m:mi>
+    <m:mo>=</m:mo>
+    <m:mstyle displaystyle="true">
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mrow>
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+         <m:mi>n</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:msup>
+        <m:mi>r</m:mi>
+        <m:mi>n</m:mi>
+       </m:msup>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+          <m:mi>n</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mstyle>
+   </m:mrow>
+   <m:mo>,</m:mo>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>S</m:mi>
+    <m:mo>=</m:mo>
+    <m:mstyle displaystyle="true">
+     <m:mfrac>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:msup>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mrow>
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+         <m:mi>n</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:msup>
+        <m:mi>r</m:mi>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+         <m:mi>n</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mfrac>
+    </m:mstyle>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mstyle displaystyle="true">
+      <m:mfrac>
+       <m:mi>n</m:mi>
+       <m:mi>r</m:mi>
+      </m:mfrac>
+     </m:mstyle>
+     <m:mi>V</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfmethodsofcomputation.xhtml b/src/axiom-website/hyperdoc/dlmfmethodsofcomputation.xhtml
new file mode 100644
index 0000000..93bb08e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfmethodsofcomputation.xhtml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Methods of Computation
+  </div>
+  <hr/>
+<h3>Methods of Computation</h3>
+
+<p>An effective way of computing 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> 
+in the right half-plane is backward recurrence, beginning with a value 
+generated from the 
+<a href="dlmfasymptoticexpansions.xhtml#equation3">
+ asymptotic expansion
+</a>
+Or we can use forward recurrence, with an 
+<a href="dlmfseriesexpansions.xhtml#equation3">
+ initial value
+</a>.
+For the left half-plane we can continue the backward recurrence or 
+make use of the 
+<a href="dlmffunctionrelations.xhtml#equation3">
+ reflection formula
+</a>.
+</p>
+
+<p>Similarly for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x0393;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, and the polygamma functions.
+</p>
+
+<p>For a comprehensive survey see 
+ <a href="http://dlmf.nist.gov/Contents/bib/V#vanderlaan:1984:csf">
+  van der Laan and Temme(1984)
+ </a>(Chapter III).
+ See also 
+ <a href="http://dlmf.nist.gov/Contents/bib/B#borwein:1992:feg">
+  Borwein and Zucker(1992)
+ </a>.
+</p>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfmultidimensionalintegral.xhtml b/src/axiom-website/hyperdoc/dlmfmultidimensionalintegral.xhtml
new file mode 100644
index 0000000..f69d074
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfmultidimensionalintegral.xhtml
@@ -0,0 +1,1483 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Multidimensional Integral
+  </div>
+  <hr/>
+<h3>Multidimensional Integrals</h3>
+
+<p>Let 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>V</m:mi>
+   <m:mi>n</m:mi>
+  </m:msub>
+ </m:math> be the simplex: 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>t</m:mi>
+     <m:mn>1</m:mn>
+    </m:msub>
+    <m:mo>+</m:mo>
+    <m:msub>
+     <m:mi>t</m:mi>
+     <m:mn>2</m:mn>
+    </m:msub>
+    <m:mo>+</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+    <m:mo>+</m:mo>
+    <m:msub>
+     <m:mi>t</m:mi>
+     <m:mi>n</m:mi>
+    </m:msub>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msub>
+    <m:mi>t</m:mi>
+    <m:mi>k</m:mi>
+   </m:msub>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>. Then for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:msub>
+     <m:mi>z</m:mi>
+     <m:mi>k</m:mi>
+    </m:msub>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mi>n</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mo>&#x222B;</m:mo>
+      <m:msub>
+       <m:mi>V</m:mi>
+       <m:mi>n</m:mi>
+      </m:msub>
+     </m:msub>
+     <m:msubsup>
+      <m:mi>t</m:mi>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:msub>
+        <m:mi>z</m:mi>
+        <m:mn>1</m:mn>
+       </m:msub>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msubsup>
+     <m:msubsup>
+      <m:mi>t</m:mi>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:msub>
+        <m:mi>z</m:mi>
+        <m:mn>2</m:mn>
+       </m:msub>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msubsup>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:msubsup>
+      <m:mi>t</m:mi>
+      <m:mi>n</m:mi>
+      <m:mrow>
+       <m:msub>
+        <m:mi>z</m:mi>
+        <m:mi>n</m:mi>
+       </m:msub>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msubsup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:msub>
+       <m:mi>t</m:mi>
+       <m:mn>1</m:mn>
+      </m:msub>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:msub>
+       <m:mi>t</m:mi>
+       <m:mn>2</m:mn>
+      </m:msub>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:msub>
+       <m:mi>t</m:mi>
+       <m:mi>n</m:mi>
+      </m:msub>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mi>n</m:mi>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:mi mathvariant="normal">&#x2026;</m:mi>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mi>n</m:mi>
+        </m:msub>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mo>&#x222B;</m:mo>
+      <m:msub>
+       <m:mi>V</m:mi>
+       <m:mi>n</m:mi>
+      </m:msub>
+     </m:msub>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:munderover>
+          <m:mo movablelimits="false">&#x2211;</m:mo>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mo>=</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mi>n</m:mi>
+         </m:munderover>
+         <m:msub>
+          <m:mi>t</m:mi>
+          <m:mi>k</m:mi>
+         </m:msub>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:msub>
+        <m:mi>z</m:mi>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msub>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:munderover>
+      <m:msubsup>
+       <m:mi>t</m:mi>
+       <m:mi>k</m:mi>
+       <m:mrow>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msubsup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mi>k</m:mi>
+       </m:msub>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mi>n</m:mi>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>1</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msub>
+        <m:mo>+</m:mo>
+        <m:mi mathvariant="normal">&#x2026;</m:mi>
+        <m:mo>+</m:mo>
+        <m:msub>
+         <m:mi>z</m:mi>
+         <m:mrow>
+          <m:mi>n</m:mi>
+          <m:mo>+</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+        </m:msub>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h5>Selberg-type Integrals</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0394;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mn>1</m:mn>
+       </m:msub>
+       <m:mo>,</m:mo>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mn>2</m:mn>
+       </m:msub>
+       <m:mo>,</m:mo>
+       <m:mi mathvariant="normal">&#x2026;</m:mi>
+       <m:mo>,</m:mo>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mi>n</m:mi>
+       </m:msub>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munder>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>&#x2264;</m:mo>
+       <m:mi>j</m:mi>
+       <m:mo>&lt;</m:mo>
+       <m:mi>k</m:mi>
+       <m:mo>&#x2264;</m:mo>
+       <m:mi>n</m:mi>
+      </m:mrow>
+     </m:munder>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:msub>
+       <m:mi>t</m:mi>
+       <m:mi>j</m:mi>
+      </m:msub>
+      <m:mo>-</m:mo>
+      <m:msub>
+       <m:mi>t</m:mi>
+       <m:mi>k</m:mi>
+      </m:msub>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Then
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mo>&#x222B;</m:mo>
+      <m:msup>
+       <m:mrow>
+        <m:mo>[</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>,</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>]</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:msub>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mn>1</m:mn>
+     </m:msub>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mn>2</m:mn>
+     </m:msub>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mi>m</m:mi>
+     </m:msub>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0394;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:msub>
+           <m:mi>t</m:mi>
+           <m:mn>1</m:mn>
+          </m:msub>
+          <m:mo>,</m:mo>
+          <m:mi mathvariant="normal">&#x2026;</m:mi>
+          <m:mo>,</m:mo>
+          <m:msub>
+           <m:mi>t</m:mi>
+           <m:mi>n</m:mi>
+          </m:msub>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>c</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:munderover>
+      <m:msubsup>
+       <m:mi>t</m:mi>
+       <m:mi>k</m:mi>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:msub>
+          <m:mi>t</m:mi>
+          <m:mi>k</m:mi>
+         </m:msub>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>b</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mi>k</m:mi>
+       </m:msub>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>1</m:mn>
+           <m:mo>+</m:mo>
+           <m:mi>c</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:mfrac>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>m</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>n</m:mi>
+           <m:mo>-</m:mo>
+           <m:mi>k</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>c</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi>n</m:mi>
+           </m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>k</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mi>c</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x220F;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:munderover>
+       <m:mfrac>
+        <m:mrow>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x0393;</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mi>a</m:mi>
+            <m:mo>+</m:mo>
+            <m:mrow>
+             <m:mrow>
+              <m:mo>(</m:mo>
+              <m:mrow>
+               <m:mi>n</m:mi>
+               <m:mo>-</m:mo>
+               <m:mi>k</m:mi>
+              </m:mrow>
+              <m:mo>)</m:mo>
+             </m:mrow>
+             <m:mi>c</m:mi>
+            </m:mrow>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x0393;</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mi>b</m:mi>
+            <m:mo>+</m:mo>
+            <m:mrow>
+             <m:mrow>
+              <m:mo>(</m:mo>
+              <m:mrow>
+               <m:mi>n</m:mi>
+               <m:mo>-</m:mo>
+               <m:mi>k</m:mi>
+              </m:mrow>
+              <m:mo>)</m:mo>
+             </m:mrow>
+             <m:mi>c</m:mi>
+            </m:mrow>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x0393;</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mn>1</m:mn>
+            <m:mo>+</m:mo>
+            <m:mrow>
+             <m:mi>k</m:mi>
+             <m:mi>c</m:mi>
+            </m:mrow>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+        </m:mrow>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>a</m:mi>
+           <m:mo>+</m:mo>
+           <m:mi>b</m:mi>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mrow>
+             <m:mo>(</m:mo>
+             <m:mrow>
+              <m:mrow>
+               <m:mn>2</m:mn>
+               <m:mi>n</m:mi>
+              </m:mrow>
+              <m:mo>-</m:mo>
+              <m:mi>k</m:mi>
+              <m:mo>-</m:mo>
+              <m:mn>1</m:mn>
+             </m:mrow>
+             <m:mo>)</m:mo>
+            </m:mrow>
+            <m:mi>c</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mfrac>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>provided that 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x211C;</m:mi> 
+   <m:mi>a</m:mi>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>c</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mrow>
+     <m:mo>min</m:mo>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac bevelled="true">
+        <m:mn>1</m:mn>
+        <m:mi>n</m:mi>
+       </m:mfrac>
+       <m:mo>,</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x211C;</m:mi>
+        <m:mfrac bevelled="true">
+         <m:mi>a</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>n</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>,</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x211C;</m:mi>
+        <m:mfrac bevelled="true">
+         <m:mi>b</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>n</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</p>
+
+<p>Secondly,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mo>&#x222B;</m:mo>
+      <m:msup>
+       <m:mrow>
+        <m:mo>[</m:mo>
+        <m:mrow>
+         <m:mn>0</m:mn>
+         <m:mo>,</m:mo>
+         <m:mi mathvariant="normal">&#x221E;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:msub>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mn>1</m:mn>
+     </m:msub>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mn>2</m:mn>
+     </m:msub>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:msub>
+      <m:mi>t</m:mi>
+      <m:mi>m</m:mi>
+     </m:msub>
+     <m:msup>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0394;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:msub>
+           <m:mi>t</m:mi>
+           <m:mn>1</m:mn>
+          </m:msub>
+          <m:mo>,</m:mo>
+          <m:mi mathvariant="normal">&#x2026;</m:mi>
+          <m:mo>,</m:mo>
+          <m:msub>
+           <m:mi>t</m:mi>
+           <m:mi>n</m:mi>
+          </m:msub>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>|</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>c</m:mi>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:munderover>
+      <m:msubsup>
+       <m:mi>t</m:mi>
+       <m:mi>k</m:mi>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msubsup>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:msub>
+         <m:mi>t</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>t</m:mi>
+        <m:mi>k</m:mi>
+       </m:msub>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi>m</m:mi>
+     </m:munderover>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>n</m:mi>
+          <m:mo>-</m:mo>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>c</m:mi>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mfrac>
+      <m:mrow>
+       <m:msubsup>
+        <m:mo>&#x220F;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:msubsup>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mo></m:mo>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>a</m:mi>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>n</m:mi>
+             <m:mo>-</m:mo>
+             <m:mi>k</m:mi>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+           <m:mi>c</m:mi>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mi>c</m:mi>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>1</m:mn>
+           <m:mo>+</m:mo>
+           <m:mi>c</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>when 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>,
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>c</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mrow>
+     <m:mo>min</m:mo>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac bevelled="true">
+        <m:mn>1</m:mn>
+        <m:mi>n</m:mi>
+       </m:mfrac>
+       <m:mo>,</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x211C;</m:mi>
+        <m:mfrac bevelled="true">
+         <m:mi>a</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>n</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</p>
+
+<p>Thirdly,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mfrac bevelled="true">
+        <m:mi>n</m:mi>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:msup>
+     </m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mo>&#x222B;</m:mo>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi mathvariant="normal">&#x221E;</m:mi>
+          </m:mrow>
+          <m:mo>,</m:mo>
+          <m:mi mathvariant="normal">&#x221E;</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:msup>
+      </m:msub>
+      <m:msup>
+       <m:mrow>
+        <m:mo>|</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0394;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:msub>
+            <m:mi>t</m:mi>
+            <m:mn>1</m:mn>
+           </m:msub>
+           <m:mo>,</m:mo>
+           <m:mi mathvariant="normal">&#x2026;</m:mi>
+           <m:mo>,</m:mo>
+           <m:msub>
+            <m:mi>t</m:mi>
+            <m:mi>n</m:mi>
+           </m:msub>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>|</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>c</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x220F;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:munderover>
+       <m:mrow>
+        <m:mi>exp</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mrow>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>2</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+           <m:msubsup>
+            <m:mi>t</m:mi>
+            <m:mi>k</m:mi>
+            <m:mn>2</m:mn>
+           </m:msubsup>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2146;</m:mi>
+        <m:msub>
+         <m:mi>t</m:mi>
+         <m:mi>k</m:mi>
+        </m:msub>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:msubsup>
+       <m:mo>&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msubsup>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mi>c</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>+</m:mo>
+          <m:mi>c</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>n</m:mi>
+     </m:msup>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h5>Dyson's Integral</h5>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mo>&#x222B;</m:mo>
+       <m:msup>
+        <m:mrow>
+         <m:mo>[</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>&#x03C0;</m:mi>
+          </m:mrow>
+          <m:mo>,</m:mo>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>]</m:mo>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:msup>
+      </m:msub>
+      <m:munder>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi>j</m:mi>
+        <m:mo>&lt;</m:mo>
+        <m:mi>k</m:mi>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+      </m:munder>
+      <m:msup>
+       <m:mrow>
+        <m:mo>|</m:mo>
+        <m:mrow>
+         <m:msup>
+          <m:mi mathvariant="normal">&#x2147;</m:mi>
+          <m:mrow>
+           <m:mi mathvariant="normal">&#x2148;</m:mi>
+           <m:msub>
+            <m:mi>&#x03B8;</m:mi>
+            <m:mi>j</m:mi>
+           </m:msub>
+          </m:mrow>
+         </m:msup>
+         <m:mo>-</m:mo>
+         <m:msup>
+          <m:mi mathvariant="normal">&#x2147;</m:mi>
+          <m:mrow>
+           <m:mi mathvariant="normal">&#x2148;</m:mi>
+           <m:msub>
+            <m:mi>&#x03B8;</m:mi>
+            <m:mi>k</m:mi>
+           </m:msub>
+          </m:mrow>
+         </m:msup>
+        </m:mrow>
+        <m:mo>|</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>b</m:mi>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>&#x03B8;</m:mi>
+        <m:mn>1</m:mn>
+       </m:msub>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>&#x03B8;</m:mi>
+        <m:mi>n</m:mi>
+       </m:msub>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi>b</m:mi>
+         <m:mi>n</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>+</m:mo>
+          <m:mi>b</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>n</m:mi>
+     </m:msup>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mrow>
+    <m:mfrac bevelled="true">
+     <m:mn>1</m:mn>
+     <m:mi>n</m:mi>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfnotation.xhtml b/src/axiom-website/hyperdoc/dlmfnotation.xhtml
new file mode 100644
index 0000000..6bc474e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfnotation.xhtml
@@ -0,0 +1,438 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Digital Library of Mathematical Functions<br/>
+                      The Gamma Function -- Notation
+  </div>
+  <hr/>
+ <div class="content">
+  <div class="section">
+   <h3>Notation</h3>
+   <div class="table" id="T1">
+    <table align="center">
+     <tbody>
+      <tr>
+       <th align="left">
+        <m:math display="inline">
+         <m:mrow>
+          <m:mi>j</m:mi>
+          <m:mo>,</m:mo>
+          <m:mi>m</m:mi>
+          <m:mo>,</m:mo>
+          <m:mi>n</m:mi>
+         </m:mrow>
+        </m:math>
+       </th>
+       <td align="justify">nonnegative integers.</td>
+      </tr>
+      <tr>
+       <th align="left">
+        <m:math display="inline">
+         <m:mi>k</m:mi>
+        </m:math>
+       </th>
+       <td>except in <a href="dlmfphysicalapplications.xhtml">
+                        Physical Applications</a>
+       </td>
+      </tr>
+      <tr>
+       <th align="left">
+        <m:math display="inline">
+         <m:mrow>
+          <m:mi>x</m:mi>
+          <m:mo>,</m:mo>
+          <m:mi>y</m:mi>
+         </m:mrow>
+        </m:math>
+       </th>
+       <td align="justify">real variables.</td>
+      </tr>
+      <tr>
+       <th align="left">
+        <m:math display="inline">
+         <m:mrow>
+          <m:mi>z</m:mi>
+          <m:mo>=</m:mo>
+          <m:mrow>
+           <m:mi>x</m:mi>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mi mathvariant="normal">&#x2148;</m:mi>
+            <m:mi>y</m:mi>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+        </m:math>
+       </th>
+      <td align="justify">complex variable.</td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>b</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>q</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>s</m:mi>
+         <m:mo>,</m:mo>
+         <m:mi>w</m:mi>
+        </m:mrow>
+       </m:math>
+      </th>
+      <td align="justify">real or complex variables with 
+       <m:math display="inline">
+        <m:mrow>
+         <m:mrow>
+          <m:mo>&#x2223;</m:mo>
+          <m:mi>q</m:mi>
+          <m:mo>&#x2223;</m:mo>
+         </m:mrow>
+         <m:mo>&lt;</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:math>.
+      </td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mi>&#x03B4;</m:mi>
+       </m:math>
+      </th>
+      <td align="justify">arbitrary small positive constant.</td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mi mathvariant="normal">&#x2102;</m:mi>
+       </m:math>
+      </th>
+      <td align="justify">complex plane (excluding infinity).</td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mi mathvariant="normal">&#x211D;</m:mi>
+       </m:math>
+      </th>
+      <td align="justify">real line (excluding infinity).</td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mstyle scriptlevel="+1">
+          <m:mtable rowspacing="0.2ex" columnspacing="0.4em">
+           <m:mtr>
+            <m:mtd>
+             <m:mi>n</m:mi>
+            </m:mtd>
+           </m:mtr>
+           <m:mtr>
+            <m:mtd>
+             <m:mi>m</m:mi>
+            </m:mtd>
+           </m:mtr>
+          </m:mtable>
+         </m:mstyle>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:math>
+      </th>
+      <td align="justify">binomial coefficient 
+       <m:math display="inline">
+        <m:mfrac>
+         <m:mrow>
+          <m:mi>n</m:mi>
+          <m:mi mathvariant="normal">!</m:mi>
+         </m:mrow>
+         <m:mrow>
+          <m:mrow>
+           <m:mi>m</m:mi>
+           <m:mi mathvariant="normal">!</m:mi>
+          </m:mrow>
+          <m:mrow>
+           <m:mrow>
+            <m:mo>(</m:mo>
+            <m:mrow>
+             <m:mi>n</m:mi>
+             <m:mo>-</m:mo>
+             <m:mi>m</m:mi>
+            </m:mrow>
+            <m:mo>)</m:mo>
+           </m:mrow>
+           <m:mi mathvariant="normal">!</m:mi>
+          </m:mrow>
+         </m:mrow>
+        </m:mfrac>
+       </m:math>.
+      </td>
+     </tr>
+     <tr>
+      <th align="left">empty sums</th>
+      <td align="justify">zero.</td>
+     </tr>
+     <tr>
+      <th align="left">empty products</th>
+      <td align="justify">unity.</td>
+     </tr>
+    </tbody>
+   </table>
+  </div>
+
+  <div class="para" id="p1">
+   <p>The main functions treated in this chapter are the gamma function 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math>,the psi function 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math>,the beta function 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>,</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math>, and the 
+    <m:math display="inline">
+     <m:mi>q</m:mi>
+    </m:math>-gamma function 
+    <m:math display="inline">
+     <m:mrow>
+      <m:msub>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mi>q</m:mi>
+      </m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math>.
+   </p>
+  </div>
+
+  <div class="para" id="p2">
+   <p>The notation 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math> is due to Legendre. Alternative notations for this function are: 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x03A0;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:math> (Gauss) and 
+    <m:math display="inline">
+     <m:mrow>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>z</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+    </m:math>. Alternative notations for the psi function are:
+   </p>
+  </div>
+
+  <div class="table" id="T2">
+   <table align="center">
+    <thead>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x03A8;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:math>
+      </th>
+      <th align="left">Gauss; 
+        <a href="http://dlmf.nist.gov/Contents/bib/J#jahnke:1945:tof">
+         Jahnke and Emde(1945)
+        </a>
+      </th>
+     </tr>
+    </thead>
+    <tbody>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mi>&#x03A8;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>z</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:math>
+      </th>
+      <td align="left">
+        <a href="http://dlmf.nist.gov/Contents/bib/W#whittaker:1927:cma">
+         Whittaker and Watson(1927)
+        </a>
+      </td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x03A8;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>z</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:math>
+      </th>
+      <td align="left">
+        <a href="http://dlmf.nist.gov/Contents/bib/D#davis:1933:thm">
+          Davis(1933)
+        </a>
+      </td>
+     </tr>
+     <tr>
+      <th align="left">
+       <m:math display="inline">
+        <m:mrow>
+         <m:mi mathvariant="sans-serif">F</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>z</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:math>
+      </th>
+      <td align="left">
+        <a href="http://dlmf.nist.gov/Contents/bib/P#pairman:1919:tdt">
+         Pairman(1919)
+        </a>
+      </td>
+     </tr>
+    </tbody>
+   </table>
+  </div>
+ </div>
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfphysicalapplications.xhtml b/src/axiom-website/hyperdoc/dlmfphysicalapplications.xhtml
new file mode 100644
index 0000000..b6acd4d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfphysicalapplications.xhtml
@@ -0,0 +1,628 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Physical Applications
+  </div>
+  <hr/>
+<h3>Physical Applications</h3>
+
+<p>Suppose the potential energy of a gas of 
+ <m:math display="inline">
+  <m:mi>n</m:mi>
+ </m:math> point charges with positions
+ <m:math display="inline">
+  <m:mrow>
+   <m:msub>
+    <m:mi>x</m:mi>
+    <m:mn>1</m:mn>
+   </m:msub>
+   <m:mo>,</m:mo>
+   <m:msub>
+    <m:mi>x</m:mi>
+    <m:mn>2</m:mn>
+   </m:msub>
+   <m:mo>,</m:mo>
+   <m:mi mathvariant="normal">&#x2026;</m:mi>
+   <m:mo>,</m:mo>
+   <m:msub>
+    <m:mi>x</m:mi>
+    <m:mi>n</m:mi>
+   </m:msub>
+  </m:mrow>
+ </m:math> and free to move on the infinite line
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>-</m:mo>
+    <m:mi mathvariant="normal">&#x221E;</m:mi>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math>, is given by
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>W</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x2211;</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2113;</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:munderover>
+       <m:msubsup>
+        <m:mi>x</m:mi>
+        <m:mi mathvariant="normal">&#x2113;</m:mi>
+        <m:mn>2</m:mn>
+       </m:msubsup>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:munder>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi mathvariant="normal">&#x2113;</m:mi>
+        <m:mo>&lt;</m:mo>
+        <m:mi>j</m:mi>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+      </m:munder>
+      <m:mi>ln</m:mi>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mrow>
+        <m:msub>
+         <m:mi>x</m:mi>
+         <m:mi mathvariant="normal">&#x2113;</m:mi>
+        </m:msub>
+        <m:mo>-</m:mo>
+        <m:msub>
+         <m:mi>x</m:mi>
+         <m:mi>j</m:mi>
+        </m:msub>
+       </m:mrow>
+       <m:mo>|</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>The probability density of the positions when the gas is in thermodynamic
+   equilibrium is:
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>P</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msub>
+        <m:mi>x</m:mi>
+        <m:mn>1</m:mn>
+       </m:msub>
+       <m:mo>,</m:mo>
+       <m:mi mathvariant="normal">&#x2026;</m:mi>
+       <m:mo>,</m:mo>
+       <m:msub>
+        <m:mi>x</m:mi>
+        <m:mi>n</m:mi>
+       </m:msub>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>C</m:mi>
+     <m:mrow>
+      <m:mi>exp</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mfrac bevelled="true">
+         <m:mi>W</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mi>T</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mfrac>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mi>k</m:mi>
+ </m:math> is the Boltzmann constant,  
+ <m:math display="inline">
+  <m:mi>T</m:mi>
+ </m:math> the temperature and  
+ <m:math display="inline">
+  <m:mi>C</m:mi>
+ </m:math> a constant.
+ Then the partition function (with 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03B2;</m:mi>
+   <m:mo>=</m:mo>
+   <m:mfrac bevelled="true">
+    <m:mn>1</m:mn>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mi>k</m:mi>
+      <m:mi>T</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mfrac>
+  </m:mrow>
+ </m:math>) is given by
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mi>n</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>&#x03B2;</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mo>&#x222B;</m:mo>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x211D;</m:mi>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:msub>
+     <m:msup>
+      <m:mi mathvariant="normal">&#x2147;</m:mi>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mi>&#x03B2;</m:mi>
+        <m:mi>W</m:mi>
+       </m:mrow>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x2146;</m:mi>
+      <m:mi>x</m:mi>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mfrac bevelled="true">
+         <m:mi>n</m:mi>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:msup>
+       <m:msup>
+        <m:mi>&#x03B2;</m:mi>
+        <m:mrow>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mfrac bevelled="true">
+            <m:mi>n</m:mi>
+            <m:mn>2</m:mn>
+           </m:mfrac>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>-</m:mo>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mfrac bevelled="true">
+           <m:mrow>
+            <m:mi>&#x03B2;</m:mi>
+            <m:mi>n</m:mi>
+            <m:mrow>
+             <m:mo>(</m:mo>
+             <m:mrow>
+              <m:mi>n</m:mi>
+              <m:mo>-</m:mo>
+              <m:mn>1</m:mn>
+             </m:mrow>
+             <m:mo>)</m:mo>
+            </m:mrow>
+           </m:mrow>
+           <m:mn>4</m:mn>
+          </m:mfrac>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mo>&#x00D7;</m:mo>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x0393;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mn>1</m:mn>
+           <m:mo>+</m:mo>
+           <m:mrow>
+            <m:mstyle displaystyle="false">
+             <m:mfrac>
+              <m:mn>1</m:mn>
+              <m:mn>2</m:mn>
+             </m:mfrac>
+            </m:mstyle>
+            <m:mi>&#x03B2;</m:mi>
+           </m:mrow>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mrow>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x220F;</m:mo>
+       <m:mrow>
+        <m:mi>j</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:munderover>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+         <m:mi>j</m:mi>
+         <m:mi>&#x03B2;</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For 
+ <m:math display="inline">
+  <m:mi>n</m:mi>
+ </m:math> charges free to move on a circular wire of radius 
+ <m:math display="inline">
+  <m:mn>1</m:mn>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mi>W</m:mi>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:munder>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi mathvariant="normal">&#x2113;</m:mi>
+        <m:mo>&lt;</m:mo>
+        <m:mi>j</m:mi>
+        <m:mo>&#x2264;</m:mo>
+        <m:mi>n</m:mi>
+       </m:mrow>
+      </m:munder>
+      <m:mi>ln</m:mi>
+      <m:mrow>
+       <m:mo>|</m:mo>
+       <m:mrow>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:msub>
+           <m:mi>&#x03B8;</m:mi>
+           <m:mi mathvariant="normal">&#x2113;</m:mi>
+          </m:msub>
+         </m:mrow>
+        </m:msup>
+        <m:mo>-</m:mo>
+        <m:msup>
+         <m:mi mathvariant="normal">&#x2147;</m:mi>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:msub>
+           <m:mi>&#x03B8;</m:mi>
+           <m:mi>j</m:mi>
+          </m:msub>
+         </m:mrow>
+        </m:msup>
+       </m:mrow>
+       <m:mo>|</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>and the partition function is given by</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mi>n</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>&#x03B2;</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>&#x03C0;</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:msup>
+     </m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mo>&#x222B;</m:mo>
+       <m:msup>
+        <m:mrow>
+         <m:mo>[</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mo>-</m:mo>
+           <m:mi>&#x03C0;</m:mi>
+          </m:mrow>
+          <m:mo>,</m:mo>
+          <m:mi>&#x03C0;</m:mi>
+         </m:mrow>
+         <m:mo>]</m:mo>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:msup>
+      </m:msub>
+      <m:msup>
+       <m:mi mathvariant="normal">&#x2147;</m:mi>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi>&#x03B2;</m:mi>
+         <m:mi>W</m:mi>
+        </m:mrow>
+       </m:mrow>
+      </m:msup>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>&#x03B8;</m:mi>
+        <m:mn>1</m:mn>
+       </m:msub>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x22EF;</m:mi>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:msub>
+        <m:mi>&#x03B8;</m:mi>
+        <m:mi>n</m:mi>
+       </m:msub>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+         <m:mi>n</m:mi>
+         <m:mi>&#x03B2;</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>1</m:mn>
+          <m:mo>+</m:mo>
+          <m:mrow>
+           <m:mstyle displaystyle="false">
+            <m:mfrac>
+             <m:mn>1</m:mn>
+             <m:mn>2</m:mn>
+            </m:mfrac>
+           </m:mstyle>
+           <m:mi>&#x03B2;</m:mi>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>n</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfpolygammafunctions.xhtml b/src/axiom-website/hyperdoc/dlmfpolygammafunctions.xhtml
new file mode 100644
index 0000000..a28d03f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfpolygammafunctions.xhtml
@@ -0,0 +1,575 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Polygamma Functions
+  </div>
+  <hr/>
+<h3>Polygamma Functions</h3>
+
+<p>The functions 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msup>
+    <m:mi>&#x03C8;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>n</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:msup>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>, are called the <em>polygamma functions</em>. In particular, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msup>
+    <m:mi>&#x03C8;</m:mi>
+    <m:mo>&#x2032;</m:mo>
+   </m:msup>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> is the <em>trigamma function</em>; 
+ <m:math display="inline">
+  <m:msup>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mi>&#x2032;</m:mi>
+    <m:mi>&#x2032;</m:mi>
+   </m:mrow>
+  </m:msup></m:math>, 
+ <m:math display="inline">
+  <m:msup>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:msup>
+ </m:math>, 
+ <m:math display="inline">
+  <m:msup>
+   <m:mi>&#x03C8;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mn>4</m:mn>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:msup>
+ </m:math> are the <em>tetra-,</em> <em>penta-,</em> and 
+ <em>hexagamma functions</em> respectively. Most properties of these 
+ functions follow straightforwardly by differentiation of properties 
+ of the psi function. This includes asymptotic expansions.
+</p>
+
+<p>In the second and third equations,
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>3</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>; for
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03B6;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>n</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+ </m:math> 
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow> 
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mo>&#x2032;</m:mo>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mn>2</m:mn>
+      </m:msup>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>n</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>n</m:mi>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mrow>
+      <m:mi>&#x03B6;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>n</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:msup>
+     <m:mrow>
+      <m:mi>n</m:mi>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:msup>
+        <m:mn>2</m:mn>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mrow>
+      <m:mi>&#x03B6;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>n</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mo>&#x2032;</m:mo>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mstyle displaystyle="false">
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mstyle>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:msup>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:msup>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>4</m:mn>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x2211;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mi>n</m:mi>
+       </m:munderover>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:msup>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi>k</m:mi>
+           </m:mrow>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+         <m:mn>2</m:mn>
+        </m:msup>
+       </m:mfrac>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>As 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> in 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mrow>
+     <m:mi>ph</m:mi>
+     <m:mspace width="0.2em"/>
+     <m:mi>z</m:mi>
+    </m:mrow>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2264;</m:mo>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B4;</m:mi>
+    </m:mrow>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:none/>
+      <m:mo>&lt;</m:mo>
+      <m:mi>&#x03C0;</m:mi>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msup>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mo>&#x2032;</m:mo>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&#x223C;</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mi>z</m:mi>
+     </m:mfrac>
+     <m:mo>+</m:mo>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:msup>
+        <m:mi>z</m:mi>
+        <m:mn>2</m:mn>
+       </m:msup>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msub>
+        <m:mi>B</m:mi>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>k</m:mi>
+        </m:mrow>
+       </m:msub>
+       <m:msup>
+        <m:mi>z</m:mi>
+        <m:mrow>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mi>k</m:mi>
+         </m:mrow>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfqgammaandbetafunctions.xhtml b/src/axiom-website/hyperdoc/dlmfqgammaandbetafunctions.xhtml
new file mode 100644
index 0000000..5423e4c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfqgammaandbetafunctions.xhtml
@@ -0,0 +1,917 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- q-Gamma and Beta Functions
+  </div>
+  <hr/>
+<h3>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Gamma and Beta Functions
+</h3>
+
+<ul>
+ <li>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Factorials</li>
+ <li>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Gamma Function</li>
+ <li>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Beta Function</li>
+</ul>
+
+<h4>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Factorials</h4>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mo>;</m:mo>
+       <m:mi>q</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi>n</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+     </m:munderover>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:msup>
+        <m:mi>q</m:mi>
+        <m:mi>k</m:mi>
+       </m:msup>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>1</m:mn>
+    <m:mo>,</m:mo>
+    <m:mn>2</m:mn>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mi>n</m:mi>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mi>q</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>1</m:mn>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>+</m:mo>
+       <m:mi>q</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x22EF;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>+</m:mo>
+       <m:mi>q</m:mi>
+       <m:mo>+</m:mo>
+       <m:mi mathvariant="normal">&#x2026;</m:mi>
+       <m:mo>+</m:mo>
+       <m:msup>
+        <m:mi>q</m:mi>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>q</m:mi>
+        <m:mspace width="0.2em"/>
+        <m:mo>;</m:mo>
+        <m:mi>q</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>n</m:mi>
+     </m:msub>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>q</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>n</m:mi>
+      </m:mrow>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>When 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mi>q</m:mi>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mspace width="0.2em"/>
+       <m:mo>;</m:mo>
+       <m:mi>q</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mi mathvariant="normal">&#x221E;</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x220F;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>0</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mo>(</m:mo>
+     <m:mrow>
+      <m:mn>1</m:mn>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:msup>
+        <m:mi>q</m:mi>
+        <m:mi>k</m:mi>
+       </m:msup>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h4>
+ <m:math display="inline">
+ <m:mi mathvariant="bold-italic">q</m:mi></m:math>-Gamma Function</h4>
+
+<p>When 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>q</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac bevelled="true">
+     <m:mrow>
+      <m:msub>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>q</m:mi>
+         <m:mspace width="0.2em"/>
+         <m:mo>;</m:mo>
+         <m:mi>q</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msub>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>-</m:mo>
+         <m:mi>q</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mrow>
+     <m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:msup>
+         <m:mi>q</m:mi>
+         <m:mi>z</m:mi>
+        </m:msup>
+        <m:mspace width="0.2em"/>
+        <m:mo>;</m:mo>
+        <m:mi>q</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:msub>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>2</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mrow>
+      <m:mi>n</m:mi>
+      <m:mi mathvariant="normal">!</m:mi>
+     </m:mrow>
+     <m:mi>q</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>z</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:msup>
+        <m:mi>q</m:mi>
+        <m:mi>z</m:mi>
+       </m:msup>
+      </m:mrow>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>-</m:mo>
+       <m:mi>q</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mi>q</m:mi>
+      </m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Also, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mrow>
+    <m:msub>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mi>q</m:mi>
+    </m:msub>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>x</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> is convex for 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, and the analog of the 
+ <a href="dlmffunctionrelations.xhtml#bohrmolleruptheorem">
+  Bohr-Mollerup theorem 
+ </a> holds.
+</p>
+
+<p>If 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>q</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mi>r</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, then
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>x</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&lt;</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>r</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>x</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>when 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math> or when 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>x</m:mi>
+   <m:mo>&gt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>, and
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>x</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>&gt;</m:mo>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mi>r</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>x</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>when 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>1</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>x</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>.
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munder>
+      <m:mo movablelimits="false">lim</m:mo>
+      <m:mrow>
+       <m:mi>q</m:mi>
+       <m:mo>&#x2192;</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:munder>
+     <m:mrow>
+      <m:msub>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mi>q</m:mi>
+      </m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For generalized asymptotic expansions of 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>ln</m:mi>
+   <m:mspace width="0.2em"/>
+   <m:mrow>
+    <m:msub>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mi>q</m:mi>
+    </m:msub>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:mi>z</m:mi>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math> as
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&#x2192;</m:mo>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math> see 
+ <a href="http://dlmf.nist.gov/Contents/bib/O#oldedaalhuis:1994:aef">
+  Olde Daalhuis(1994)
+ </a> and 
+ <a href="http://dlmf.nist.gov/Contents/bib/M#moak:1984:tqa">
+  Moak(1984)
+ </a>.
+</p>
+
+<h4>
+ <m:math display="inline">
+  <m:mi mathvariant="bold-italic">q</m:mi>
+ </m:math>-Beta Function
+</h4>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mrow>
+       <m:msub>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mi>q</m:mi>
+       </m:msub>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>a</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mrow>
+       <m:msub>
+        <m:mi mathvariant="normal">&#x0393;</m:mi>
+        <m:mi>q</m:mi>
+       </m:msub>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>b</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:msub>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mi>q</m:mi>
+      </m:msub>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>a</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>b</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:msub>
+      <m:mi mathvariant="normal">B</m:mi>
+      <m:mi>q</m:mi>
+     </m:msub>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>a</m:mi>
+       <m:mo>,</m:mo>
+       <m:mi>b</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:msubsup>
+      <m:mo>&#x222B;</m:mo>
+      <m:mn>0</m:mn>
+      <m:mn>1</m:mn>
+     </m:msubsup>
+     <m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>t</m:mi>
+        <m:mrow>
+         <m:mi>a</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:msup>
+       <m:msub>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mrow>
+           <m:mi>t</m:mi>
+           <m:mi>q</m:mi>
+          </m:mrow>
+          <m:mspace width="0.2em"/>
+          <m:mo>;</m:mo>
+          <m:mi>q</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi mathvariant="normal">&#x221E;</m:mi>
+       </m:msub>
+      </m:mrow>
+      <m:msub>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>t</m:mi>
+          <m:msup>
+           <m:mi>q</m:mi>
+           <m:mi>b</m:mi>
+          </m:msup>
+         </m:mrow>
+         <m:mo>;</m:mo>
+         <m:mi>q</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:msub>
+     </m:mfrac>
+     <m:mrow>
+      <m:msub>
+       <m:mi mathvariant="normal">&#x2146;</m:mi>
+       <m:mi>q</m:mi>
+      </m:msub>
+      <m:mi>t</m:mi>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>q</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>a</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mi mathvariant="normal">&#x211C;</m:mi>
+    <m:mi>b</m:mi>
+   </m:mrow>
+   <m:mo>&gt;</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfseriesexpansions.xhtml b/src/axiom-website/hyperdoc/dlmfseriesexpansions.xhtml
new file mode 100644
index 0000000..de320b3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfseriesexpansions.xhtml
@@ -0,0 +1,899 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Series Expansions
+  </div>
+  <hr/>
+<h3>Series Expansions</h3>
+<h6>Contents</h6>
+<ul>
+ <li>Maclaurin Series</li>
+ <li>Other Series</li>
+</ul>
+<h4>Maclaurin Series</h4>
+<p>Throughout this subsection 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>&#x03B6;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mi>k</m:mi>
+    <m:mo>)</m:mo>
+  </m:mrow>
+  </m:mrow>
+ </m:math> is 
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mfrac>
+     <m:mn>1</m:mn>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>z</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:msub>
+      <m:mi>c</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+     <m:msup>
+      <m:mi>z</m:mi>
+      <m:mi>k</m:mi>
+     </m:msup>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>where 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msub>
+    <m:mi>c</m:mi>
+    <m:mn>1</m:mn>
+   </m:msub>
+   <m:mo>=</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>,
+ 
+ <m:math display="inline">
+  <m:mrow>
+   <m:msub>
+    <m:mi>c</m:mi>
+    <m:mn>2</m:mn>
+   </m:msub>
+   <m:mo>=</m:mo>
+   <m:mi>&#x03B3;</m:mi>
+  </m:mrow>
+ </m:math>, and
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>-</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:msub>
+      <m:mi>c</m:mi>
+      <m:mi>k</m:mi>
+     </m:msub>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>&#x03B3;</m:mi>
+         <m:msub>
+          <m:mi>c</m:mi>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+         </m:msub>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mrow>
+          <m:mi>&#x03B6;</m:mi>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mn>2</m:mn>
+           <m:mo>)</m:mo>
+          </m:mrow>
+         </m:mrow>
+         <m:msub>
+          <m:mi>c</m:mi>
+          <m:mrow>
+           <m:mi>k</m:mi>
+           <m:mo>-</m:mo>
+           <m:mn>2</m:mn>
+          </m:mrow>
+         </m:msub>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>+</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>&#x03B6;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mn>3</m:mn>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:msub>
+         <m:mi>c</m:mi>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>-</m:mo>
+          <m:mn>3</m:mn>
+         </m:mrow>
+        </m:msub>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi mathvariant="normal">&#x2026;</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>k</m:mi>
+      </m:msup>
+      <m:mrow>
+       <m:mi>&#x03B6;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:msub>
+       <m:mi>c</m:mi>
+       <m:mn>1</m:mn>
+      </m:msub>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>k</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>3</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<p>For 15D numerical values of 
+ <m:math display="inline">
+  <m:msub>
+   <m:mi>c</m:mi>
+   <m:mi>k</m:mi>
+  </m:msub>
+ </m:math> see 
+ <a href="http://dlmf.nist.gov/Contents/bib/#abramowitz:1964:hmf">
+ Abramowitz and Stegun(1964)</a>(p. 256), and
+for 31D values see 
+<a href="http://dlmf.nist.gov/Contents/bib/W#wrench:1968:cts">
+   Wrench(1968)</a>.
+</p>
+
+<a name="equation3"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>ln</m:mi>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mn>1</m:mn>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mi>z</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>-</m:mo>
+        <m:mi>&#x03B3;</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>2</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>k</m:mi>
+      </m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>&#x03B6;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mi>k</m:mi>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mfrac>
+       <m:msup>
+        <m:mi>z</m:mi>
+        <m:mi>k</m:mi>
+       </m:msup>
+       <m:mi>k</m:mi>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>+</m:mo>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>&#x03B3;</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>2</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+       <m:mi>k</m:mi>
+      </m:msup>
+      <m:mrow>
+       <m:mi>&#x03B6;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mi>k</m:mi>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:msup>
+       <m:mi>z</m:mi>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:msup>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>,
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mn>1</m:mn>
+       <m:mo>+</m:mo>
+       <m:mi>z</m:mi>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mn>2</m:mn>
+         <m:mi>z</m:mi>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:mrow>
+        <m:mfrac>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+        <m:mrow>
+         <m:mi>cot</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>z</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>+</m:mo>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mrow>
+        <m:msup>
+         <m:mi>z</m:mi>
+         <m:mn>2</m:mn>
+        </m:msup>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+      </m:mfrac>
+      <m:mo>+</m:mo>
+      <m:mn>1</m:mn> 
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi>&#x03B6;</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi>k</m:mi>
+           </m:mrow>
+           <m:mo>+</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:msup>
+       <m:mi>z</m:mi>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>k</m:mi>
+       </m:mrow>
+      </m:msup>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="right">
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow>
+    <m:mo>|</m:mo>
+    <m:mi>z</m:mi>
+    <m:mo>|</m:mo>
+   </m:mrow>
+   <m:mo>&lt;</m:mo>
+   <m:mn>2</m:mn>
+  </m:mrow>
+ </m:math>, 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>&#x00B1;</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>.
+</div>
+
+<p>For 20D numerical values of the coefficients of the Maclaurin series for
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi mathvariant="normal">&#x0393;</m:mi>
+   <m:mrow>
+    <m:mo>(</m:mo>
+    <m:mrow>
+     <m:mi>z</m:mi>
+     <m:mo>+</m:mo>
+     <m:mn>3</m:mn>
+    </m:mrow>
+    <m:mo>)</m:mo>
+   </m:mrow>
+  </m:mrow>
+</m:math> see 
+<a href="http://dlmf.nist.gov/Contents/bib/L#luke:1969:sfa2">
+   Luke(1969)</a>(p. 299).
+</p>
+
+<p>When 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>z</m:mi>
+   <m:mo>&#x2260;</m:mo>
+   <m:mrow>
+    <m:mn>0</m:mn>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>1</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mn>2</m:mn>
+    </m:mrow>
+    <m:mo>,</m:mo>
+    <m:mi mathvariant="normal">&#x2026;</m:mi>
+   </m:mrow>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<a name="equation6"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mi>z</m:mi>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>&#x03B3;</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mi>z</m:mi>
+      </m:mfrac>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mi>z</m:mi>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>k</m:mi>
+          <m:mo>+</m:mo>
+          <m:mi>z</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>&#x03B3;</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>-</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>+</m:mo>
+         <m:mi>z</m:mi>
+        </m:mrow>
+       </m:mfrac>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>and
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mrow>
+         <m:mi>z</m:mi>
+         <m:mo>+</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mi>z</m:mi>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>2</m:mn>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>0</m:mn>
+       </m:mrow>
+       <m:mi mathvariant="normal">&#x221E;</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:msup>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mo>-</m:mo>
+          <m:mn>1</m:mn>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+        <m:mi>k</m:mi>
+       </m:msup>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>+</m:mo>
+        <m:mi>z</m:mi>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>Also,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x2111;</m:mi>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mfrac>
+      <m:mi>y</m:mi>
+      <m:mrow>
+       <m:msup>
+        <m:mi>k</m:mi>
+        <m:mn>2</m:mn>
+       </m:msup>
+       <m:mo>+</m:mo>
+       <m:msup>
+        <m:mi>y</m:mi>
+        <m:mn>2</m:mn>
+       </m:msup>
+      </m:mrow>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfsoftware.xhtml b/src/axiom-website/hyperdoc/dlmfsoftware.xhtml
new file mode 100644
index 0000000..cfb6417
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfsoftware.xhtml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Software
+  </div>
+  <hr/>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfspecialvaluesandextrema.xhtml b/src/axiom-website/hyperdoc/dlmfspecialvaluesandextrema.xhtml
new file mode 100644
index 0000000..1bebe5a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfspecialvaluesandextrema.xhtml
@@ -0,0 +1,1354 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Special Values and Extrema
+  </div>
+  <hr/>
+<h3>Special Values and Extrema</h3>
+<h6>Contents</h6>
+ <ul>
+  <li>Gamma Function</li>
+  <li>Psi Function</li>
+  <li>Extrema</li>
+ </ul>
+
+<h4>Gamma Function</h4>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mn>1</m:mn>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>n</m:mi>
+     <m:mi mathvariant="normal">!</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mo>&#x2223;</m:mo>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+        <m:mi>y</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>&#x2223;</m:mo>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mfrac>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mrow>
+        <m:mi>y</m:mi>
+        <m:mrow>
+         <m:mi>sinh</m:mi>
+         <m:mrow>
+          <m:mo>(</m:mo>
+          <m:mrow>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>y</m:mi>
+          </m:mrow>
+          <m:mo>)</m:mo>
+         </m:mrow>
+        </m:mrow>
+       </m:mrow>
+      </m:mfrac>
+      <m:mo>)</m:mo>
+     </m:mrow>
+     <m:mfrac bevelled="true">
+      <m:mn>1</m:mn>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+    </m:msup>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>2</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:msup>
+     <m:mrow>
+      <m:mo>&#x2223;</m:mo>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mstyle displaystyle="false">
+          <m:mfrac>
+           <m:mn>1</m:mn>
+           <m:mn>2</m:mn>
+          </m:mfrac>
+         </m:mstyle>
+         <m:mo>+</m:mo>
+         <m:mrow>
+          <m:mi mathvariant="normal">&#x2148;</m:mi>
+          <m:mi>y</m:mi>
+         </m:mrow>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>&#x2223;</m:mo>
+     </m:mrow>
+     <m:mn>2</m:mn>
+    </m:msup>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mrow>
+      <m:mi>cosh</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi>y</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>4</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+     <m:mrow>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>3</m:mn>
+          <m:mn>4</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>-</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mfrac>
+     <m:mrow>
+      <m:mi>&#x03C0;</m:mi>
+      <m:msqrt>
+       <m:mn>2</m:mn>
+      </m:msqrt>
+     </m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mi>cosh</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+      <m:mo>+</m:mo>
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x2148;</m:mi>
+       <m:mrow>
+        <m:mi>sinh</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mi>&#x03C0;</m:mi>
+          <m:mi>y</m:mi>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mfrac>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow> 
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:msup>
+     <m:mi>&#x03C0;</m:mi>
+     <m:mfrac bevelled="true">
+      <m:mn>1</m:mn>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+    </m:msup>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>1.77245 38509 05516 02729</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>3</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>2.67893 85347 07747 63365</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>2</m:mn>
+        <m:mn>3</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>1.35411 79394 26400 41694</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>4</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>3.62560 99082 21908 31193</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>3</m:mn>
+        <m:mn>4</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mn>1.22541 67024 65177 64512</m:mn>
+     <m:mi mathvariant="normal">&#x2026;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow> 
+     <m:msup>
+      <m:mi mathvariant="normal">&#x0393;</m:mi>
+      <m:mo>&#x2032;</m:mo>
+     </m:msup>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h4>Psi Function</h4>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>1</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<a name="equation13"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mstyle displaystyle="false">
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+      </m:mstyle>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>&#x03B3;</m:mi>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mn>2</m:mn>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:munderover>
+       <m:mo movablelimits="false">&#x2211;</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>=</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mi>n</m:mi>
+      </m:munderover>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mi>k</m:mi>
+      </m:mfrac>
+     </m:mrow>
+     <m:mo>-</m:mo>
+     <m:mi>&#x03B3;</m:mi>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mrow>
+       <m:mi>n</m:mi>
+       <m:mo>+</m:mo>
+       <m:mstyle displaystyle="false">
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mstyle>
+      </m:mrow>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>&#x03B3;</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mn>2</m:mn>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mn>2</m:mn>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mn>3</m:mn>
+         </m:mfrac>
+        </m:mstyle>
+        <m:mo>+</m:mo>
+        <m:mi mathvariant="normal">&#x2026;</m:mi>
+        <m:mo>+</m:mo>
+        <m:mstyle displaystyle="false">
+         <m:mfrac>
+          <m:mn>1</m:mn>
+          <m:mrow>
+           <m:mrow>
+            <m:mn>2</m:mn>
+            <m:mi>n</m:mi>
+           </m:mrow>
+           <m:mo>-</m:mo>
+           <m:mn>1</m:mn>
+          </m:mrow>
+         </m:mfrac>
+        </m:mstyle>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mo>&#x2265;</m:mo>
+   <m:mn>1</m:mn>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">ℑ</m:mi>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi mathvariant="normal">&#x2148;</m:mi>
+        <m:mi>y</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mrow>
+       <m:mn>2</m:mn>
+       <m:mi>y</m:mi>
+      </m:mrow>
+     </m:mfrac>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:mi>coth</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">ℑ</m:mi>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mstyle displaystyle="false">
+        <m:mfrac>
+         <m:mn>1</m:mn>
+         <m:mn>2</m:mn>
+        </m:mfrac>
+       </m:mstyle>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mfrac>
+      <m:mi>&#x03C0;</m:mi>
+      <m:mn>2</m:mn>
+     </m:mfrac>
+     <m:mrow>
+      <m:mi>tanh</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mi>y</m:mi>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi mathvariant="normal">ℑ</m:mi>
+     <m:mrow>
+      <m:mi>&#x03C8;</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mn>1</m:mn>
+        <m:mo>+</m:mo>
+        <m:mrow>
+         <m:mi mathvariant="normal">&#x2148;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mrow>
+        <m:mn>2</m:mn>
+        <m:mi>y</m:mi>
+       </m:mrow>
+      </m:mfrac>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:mi>coth</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mrow>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mi>y</m:mi>
+        </m:mrow>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mn>0</m:mn>
+   <m:mo>&lt;</m:mo>
+   <m:mi>p</m:mi>
+   <m:mo>&lt;</m:mo>
+   <m:mi>q</m:mi>
+  </m:mrow>
+ </m:math> are integers, then
+</p>
+
+<a name="equation19"/>
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:mi>&#x03C8;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mfrac>
+       <m:mi>p</m:mi>
+       <m:mi>q</m:mi>
+      </m:mfrac>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow> 
+     <m:mrow>
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mi>&#x03B3;</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mi>ln</m:mi>
+       <m:mi>q</m:mi>
+      </m:mrow>
+      <m:mo>-</m:mo>
+      <m:mrow>
+       <m:mfrac>
+        <m:mi>&#x03C0;</m:mi>
+        <m:mn>2</m:mn>
+       </m:mfrac>
+       <m:mrow>
+        <m:mi>cot</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mfrac>
+          <m:mrow>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>p</m:mi>
+          </m:mrow>
+          <m:mi>q</m:mi>
+         </m:mfrac>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:munderover>
+        <m:mo movablelimits="false">&#x2211;</m:mo>
+        <m:mrow>
+         <m:mi>k</m:mi>
+         <m:mo>=</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+        <m:mrow>
+         <m:mi>q</m:mi>
+         <m:mo>-</m:mo>
+         <m:mn>1</m:mn>
+        </m:mrow>
+       </m:munderover>
+       <m:mrow>
+        <m:mi>cos</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mfrac>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mi>&#x03C0;</m:mi>
+           <m:mi>k</m:mi>
+           <m:mi>p</m:mi>
+          </m:mrow>
+          <m:mi>q</m:mi>
+         </m:mfrac>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+       <m:mrow>
+        <m:mi>ln</m:mi>
+        <m:mrow>
+         <m:mo>(</m:mo>
+         <m:mrow>
+          <m:mn>2</m:mn>
+          <m:mo>-</m:mo>
+          <m:mrow>
+           <m:mn>2</m:mn>
+           <m:mrow>
+            <m:mi>cos</m:mi>
+            <m:mrow>
+             <m:mo>(</m:mo>
+             <m:mfrac>
+              <m:mrow>
+               <m:mn>2</m:mn>
+               <m:mi>&#x03C0;</m:mi>
+               <m:mi>k</m:mi>
+              </m:mrow>
+              <m:mi>q</m:mi>
+             </m:mfrac>
+             <m:mo>)</m:mo>
+            </m:mrow>
+           </m:mrow>
+          </m:mrow>
+         </m:mrow>
+         <m:mo>)</m:mo>
+        </m:mrow>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<h4>Extrema</h4>
+<div>
+ <m:math display="inline">
+  <m:mrow>
+   <m:mrow> 
+    <m:msup>
+     <m:mi mathvariant="normal">&#x0393;</m:mi>
+     <m:mo>&#x2032;</m:mo>
+    </m:msup>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:msub>
+      <m:mi>x</m:mi>
+      <m:mi>n</m:mi>
+     </m:msub>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>=</m:mo>
+   <m:mrow>
+    <m:mi>&#x03C8;</m:mi>
+    <m:mrow>
+     <m:mo>(</m:mo>
+     <m:msub>
+      <m:mi>x</m:mi>
+      <m:mi>n</m:mi>
+     </m:msub>
+     <m:mo>)</m:mo>
+    </m:mrow>
+   </m:mrow>
+   <m:mo>=</m:mo>
+   <m:mn>0</m:mn>
+  </m:mrow>
+ </m:math>.
+</div>
+<br/>
+<div class="center">
+ <table align="center">
+  <thead>
+   <tr>
+    <th align="center" class="b l r t">
+     <m:math display="inline">
+      <m:mi>n</m:mi>
+     </m:math>
+    </th>
+    <th align="center" class="b r t">
+     <m:math display="inline">
+      <m:msub>
+       <m:mi>x</m:mi>
+       <m:mi>n</m:mi>
+      </m:msub>
+     </m:math>
+    </th>
+    <th align="center" class="b r t">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mi mathvariant="normal">&#x0393;</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:msub>
+         <m:mi>x</m:mi>
+         <m:mi>n</m:mi>
+        </m:msub>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:math>
+    </th>
+   </tr>
+  </thead>
+  <tbody>
+   <tr>
+    <th align="right" class="l r">0
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mn>1.46163 21449</m:mn>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mn>0.88560 31944</m:mn>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">1
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>0.50408 30083</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>3.54464 36112</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">2
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>1.57349 84732</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mn>2.30240 72583</m:mn>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="B l r">3
+    </th>
+    <td align="right" class="B r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>2.61072 08875</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="B r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>0.88813 63584</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">4
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>3.63529 33665</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mn>0.24512 75398</m:mn>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">5
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>4.65323 77626</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>0.05277 96396</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="B l r">6
+    </th>
+    <td align="right" class="B r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>5.66716 24513</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="B r">
+     <m:math display="inline">
+      <m:mn>0.00932 45945</m:mn>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">7
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>6.67841 82649</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>0.00139 73966</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">8
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>7.68778 83250</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mn>0.00018 18784</m:mn>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="l r">9
+    </th>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>8.69576 41633</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>0.00002 09253</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+   </tr>
+   <tr>
+    <th align="right" class="b l r">10
+    </th>
+    <td align="right" class="b r">
+     <m:math display="inline">
+      <m:mrow>
+       <m:mo>-</m:mo>
+       <m:mn>9.70267 25406</m:mn>
+      </m:mrow>
+     </m:math>
+    </td>
+    <td align="right" class="b r">
+     <m:math display="inline">
+      <m:mn>0.00000 21574</m:mn>
+     </m:math>
+    </td>
+   </tr>
+  </tbody>
+ </table>
+</div>
+
+<p>As 
+ <m:math display="inline">
+  <m:mrow>
+   <m:mi>n</m:mi>
+   <m:mi mathvariant="normal">&#x221E;</m:mi>
+  </m:mrow>
+ </m:math>,
+</p>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:msub>
+     <m:mi>x</m:mi>
+     <m:mi>n</m:mi>
+    </m:msub>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mrow>
+      <m:mo>-</m:mo>
+      <m:mi>n</m:mi>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mi>&#x03C0;</m:mi>
+      </m:mfrac>
+      <m:mrow>
+       <m:mi>arctan</m:mi>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mfrac>
+         <m:mi>&#x03C0;</m:mi>
+         <m:mrow>
+          <m:mi>ln</m:mi>
+          <m:mi>n</m:mi>
+         </m:mrow>
+        </m:mfrac>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+     <m:mo>+</m:mo>
+     <m:mrow>
+      <m:mi>O</m:mi>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mfrac>
+        <m:mn>1</m:mn>
+        <m:mrow>
+         <m:mi>n</m:mi>
+         <m:msup>
+          <m:mrow>
+           <m:mo>(</m:mo>
+           <m:mrow>
+            <m:mi>ln</m:mi>
+            <m:mi>n</m:mi>
+           </m:mrow>
+           <m:mo>)</m:mo>
+          </m:mrow>
+          <m:mn>2</m:mn>
+         </m:msup>
+        </m:mrow>
+       </m:mfrac>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmfsums.xhtml b/src/axiom-website/hyperdoc/dlmfsums.xhtml
new file mode 100644
index 0000000..1fd1d8d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmfsums.xhtml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Sums
+  </div>
+  <hr/>
+<h3>Sums</h3>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mo>-</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+      <m:mi>k</m:mi>
+     </m:msup>
+     <m:mrow>
+      <m:msup>
+       <m:mi>&#x03C8;</m:mi>
+       <m:mo>&#x2032;</m:mo>
+      </m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mi>k</m:mi>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mfrac>
+      <m:msup>
+       <m:mi>&#x03C0;</m:mi>
+       <m:mn>2</m:mn>
+      </m:msup>
+      <m:mn>8</m:mn>
+     </m:mfrac>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<div align="center">
+ <m:math display="block">
+  <m:mrow>
+   <m:mrow>
+    <m:mrow>
+     <m:munderover>
+      <m:mo movablelimits="false">&#x2211;</m:mo>
+      <m:mrow>
+       <m:mi>k</m:mi>
+       <m:mo>=</m:mo>
+       <m:mn>1</m:mn>
+      </m:mrow>
+      <m:mi mathvariant="normal">&#x221E;</m:mi>
+     </m:munderover>
+     <m:mfrac>
+      <m:mn>1</m:mn>
+      <m:mi>k</m:mi>
+     </m:mfrac>
+     <m:mrow>
+      <m:msup>
+       <m:mi>&#x03C8;</m:mi>
+       <m:mo>&#x2032;</m:mo>
+      </m:msup>
+      <m:mrow>
+       <m:mo>(</m:mo>
+       <m:mrow>
+        <m:mi>k</m:mi>
+        <m:mo>+</m:mo>
+        <m:mn>1</m:mn>
+       </m:mrow>
+       <m:mo>)</m:mo>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mi>&#x03B6;</m:mi>
+     <m:mrow>
+      <m:mo>(</m:mo>
+      <m:mn>3</m:mn>
+      <m:mo>)</m:mo>
+     </m:mrow>
+    </m:mrow>
+    <m:mo>=</m:mo>
+    <m:mrow>
+     <m:mo>-</m:mo>
+     <m:mrow>
+      <m:mfrac>
+       <m:mn>1</m:mn>
+       <m:mn>2</m:mn>
+      </m:mfrac>
+      <m:mrow>
+       <m:msup>
+        <m:mi>&#x03C8;</m:mi>
+        <m:mrow>
+         <m:mi>&#x2032;</m:mi>
+         <m:mi>&#x2032;</m:mi>
+        </m:mrow>
+       </m:msup>
+       <m:mrow>
+        <m:mo>(</m:mo>
+        <m:mn>1</m:mn>
+        <m:mo>)</m:mo>
+       </m:mrow>
+      </m:mrow>
+     </m:mrow>
+    </m:mrow>
+   </m:mrow>
+  </m:mrow>
+ </m:math>
+</div>
+
+<p>For further sums involving the psi function see
+<a href="http://dlmf.nist.gov/Contents/bib/H#hansen:1975:tsp">
+   Hansen(1975)
+</a>(pp. 360–367). For sums of gamma functions see
+<a href="http://dlmf.nist.gov/Contents/bib/#andrews:1999:sfu">
+   Andrews <em>et.al.</em>(1999)
+</a>(Chapters 2 and 3).
+</p>
+
+<p>For related sums involving finite field analogs of the gamma and 
+beta functions (Gauss and Jacobi sums) see 
+<a href="http://dlmf.nist.gov/Contents/bib/#andrews:1999:sfu">
+ Andrews <em>et.al.</em>(1999)
+</a>(Chapter 1) and
+<a href="http://dlmf.nist.gov/Contents/bib/T#terras:1999:fao">
+ Terras(1999)
+</a>.
+</p>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/dlmftables.xhtml b/src/axiom-website/hyperdoc/dlmftables.xhtml
new file mode 100644
index 0000000..a2f3362
--- /dev/null
+++ b/src/axiom-website/hyperdoc/dlmftables.xhtml
@@ -0,0 +1,2535 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   <a href="http://dlmf.nist.gov">
+    Digital Library of Mathematical Functions
+   </a><br/>
+   The Gamma Function -- Tables
+  </div>
+  <hr/>
+<h3>Tables</h3>
+
+These tables show Axiom's compliance with published standard values.
+In all cases shown here Axiom conforms to the accuracy of the published
+tables.
+
+<ul>
+ <li>The Gamma Function</li>
+ <li>The Psi Function</li>
+</ul>
+
+<h4>The Gamma Function</h4>
+
+This table was constructed from the published values in the 
+Handbook of Mathematical Functions, by Milton Abramowitz
+and Irene A. Stegun, by Dover (1965), pp 267-270.
+
+The first column is the point where the Gamma function is evaluated.
+The second column is the value reported in the Handbook.
+The third column is the actual value computed by Axiom at the given point.
+The fourth column is the difference of Axiom's value and the Handbook value.
+
+<table border="1">
+ <tr>
+  <th>point</th>
+  <th>Handbook Value</th>
+  <th>Axiom Computed Value</th>
+  <th>Difference</th>
+ </tr>
+ <tr>
+  <td>1.000</td>
+  <td>1.0000000000</td>
+  <td>1.</td>
+  <td align="right">0.</td>
+ </tr>
+ <tr>
+  <td>1.005</td>
+  <td>0.9971385354</td>
+  <td>0.9971385352483757</td>
+  <td align="right">-1.51E-10</td>
+ </tr>
+ <tr>
+  <td>1.010</td>
+  <td>0.9943258512</td>
+  <td>0.99432585118631189</td>
+  <td align="right">-2.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.015</td> 
+  <td>0.9915612888</td> 
+  <td>0.99156128884131323</td> 
+  <td align="right">4.14E-11</td>
+ </tr>
+ <tr>
+  <td>1.020</td> 
+  <td>0.9888442033</td> 
+  <td>0.9888442032538789</td> 
+  <td align="right">-4.31E-11</td>
+ </tr>
+ <tr>
+  <td>1.025</td> 
+  <td>0.9861739633</td> 
+  <td>0.98617396313592742</td> 
+  <td align="right">-1.54E-10</td>
+ </tr>
+ <tr>
+  <td>1.030</td> 
+  <td>0.9835499506</td> 
+  <td>0.98354995053928918</td> 
+  <td align="right">-7.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.035</td> 
+  <td>0.9809715606</td> 
+  <td>0.98097156056367696</td> 
+  <td align="right">-4.60E-11</td>
+ </tr>
+ <tr>
+  <td>1.040</td> 
+  <td>0.9784382009</td> 
+  <td>0.9784382009247683</td> 
+  <td align="right"> 3.00E-11</td>
+ </tr>
+ <tr>
+  <td>1.045</td> 
+  <td>0.9759492919</td> 
+  <td>0.97594929183099266</td> 
+  <td align="right">-6.55E-11</td>
+ </tr>
+ <tr>
+  <td>1.050</td> 
+  <td>0.9735042656</td> 
+  <td>0.97350426556841785</td> 
+  <td align="right">-2.72E-11</td>
+ </tr>
+ <tr>
+  <td>1.055</td> 
+  <td>0.9711025663</td> 
+  <td>0.97110256624499502</td> 
+  <td align="right">-6.77E-11</td>
+ </tr>
+ <tr>
+  <td>1.060</td> 
+  <td>0.9687436495</td> 
+  <td>0.96874364951272707</td> 
+  <td align="right">-2.36E-12</td>
+ </tr>
+ <tr>
+  <td>1.065</td> 
+  <td>0.9664269823</td> 
+  <td>0.96642698229777113</td> 
+  <td align="right">-1.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.070</td> 
+  <td>0.9641520425</td> 
+  <td>0.96415204253821729</td> 
+  <td align="right"> 4.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.075</td> 
+  <td>0.9619183189</td> 
+  <td>0.96191831892929192</td> 
+  <td align="right"> 2.31E-11</td>
+ </tr>
+ <tr>
+  <td>1.080</td> 
+  <td>0.9597253107</td> 
+  <td>0.95972531067573963</td> 
+  <td align="right">-3.00E-11</td>
+ </tr>
+ <tr>
+  <td>1.085</td> 
+  <td>0.9575725273</td> 
+  <td>0.95757252725116249</td> 
+  <td align="right">-3.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.090</td> 
+  <td>0.9554594882</td> 
+  <td>0.95545948816407866</td> 
+  <td align="right">-4.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.095</td> 
+  <td>0.9533857227</td> 
+  <td>0.95338572273049704</td> 
+  <td align="right"> 2.34E-11</td>
+ </tr>
+ <tr>
+  <td>1.100</td> 
+  <td>0.9513507699</td> 
+  <td>0.95135076987625944</td> 
+  <td align="right">-2.49E-11</td>
+ </tr>
+ <tr>
+  <td>1.105</td> 
+  <td>0.9493541778</td> 
+  <td>0.94935417782771081</td> 
+  <td align="right"> 2.11E-11</td>
+ </tr>
+ <tr>
+  <td>1.110</td> 
+  <td>0.9473955040</td> 
+  <td>0.94739550404472173</td> 
+  <td align="right"> 5.80E-11</td>
+ </tr>
+ <tr>
+  <td>1.115</td> 
+  <td>0.9454743149</td> 
+  <td>0.94547431492209555</td> 
+  <td align="right"> 1.12E-11</td>
+ </tr>
+ <tr>
+  <td>1.120</td> 
+  <td>0.9435901856</td> 
+  <td>0.94359018561564112</td> 
+  <td align="right"> 1.06E-11</td>
+ </tr>
+ <tr>
+  <td>1.125</td> 
+  <td>0.9417426997</td> 
+  <td>0.94174269984970138</td> 
+  <td align="right"> 1.39E-10</td>
+ </tr>
+ <tr>
+  <td>1.130</td> 
+  <td>0.9399314497</td> 
+  <td>0.93993144972988807</td> 
+  <td align="right"> 1.67E-11</td>
+ </tr>
+ <tr>
+  <td>1.135</td> 
+  <td>0.9381560356</td> 
+  <td>0.93815603556085947</td> 
+  <td align="right">-5.14E-11</td>
+ </tr>
+ <tr>
+  <td>1.140</td> 
+  <td>0.9364160657</td> 
+  <td>0.93641606566898694</td> 
+  <td align="right">-2.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.145</td> 
+  <td>0.9347111562</td> 
+  <td>0.93471115622975964</td> 
+  <td align="right"> 2.05E-11</td>
+ </tr>
+ <tr>
+  <td>1.150</td> 
+  <td>0.9330409311</td> 
+  <td>0.93304093109978414</td> 
+  <td align="right"> 6.51E-12</td>
+ </tr>
+ <tr>
+  <td>1.155</td> 
+  <td>0.9314050217</td> 
+  <td>0.93140502165323868</td> 
+  <td align="right">-3.93E-11</td>
+ </tr>
+ <tr>
+  <td>1.160</td> 
+  <td>0.9298030666</td> 
+  <td>0.92980306664109957</td> 
+  <td align="right"> 4.51E-11</td>
+ </tr>
+ <tr>
+  <td>1.165</td> 
+  <td>0.9282347120</td> 
+  <td>0.92823471196190366</td> 
+  <td align="right">-2.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.170</td> 
+  <td>0.9266996106</td> 
+  <td>0.92669961062266581</td> 
+  <td align="right"> 2.10E-11</td>
+ </tr>
+ <tr>
+  <td>1.175</td> 
+  <td>0.9251974225</td> 
+  <td>0.92519742251686099</td> 
+  <td align="right"> 1.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.180</td> 
+  <td>0.9237278143</td> 
+  <td>0.92372781430006712</td> 
+  <td align="right">-1.17E-11</td>
+ </tr>
+ <tr>
+  <td>1.185</td> 
+  <td>0.9222904591</td> 
+  <td>0.92229045925047382</td> 
+  <td align="right"> 1.49E-10</td>
+ </tr>
+ <tr>
+  <td>1.190</td> 
+  <td>0.9208850371</td> 
+  <td>0.92088503713299241</td> 
+  <td align="right"> 2.60E-11</td>
+ </tr>
+ <tr>
+  <td>1.195</td> 
+  <td>0.9195112341</td> 
+  <td>0.91951123406686597</td> 
+  <td align="right">-2.98E-11</td>
+ </tr>
+ <tr>
+  <td>1.200</td> 
+  <td>0.9181687424</td> 
+  <td>0.91816874239667101</td> 
+  <td align="right">-1.67E-11</td>
+ </tr>
+ <tr>
+  <td>1.205</td> 
+  <td>0.9168572606</td> 
+  <td>0.91685726056661909</td> 
+  <td align="right">-3.28E-11</td>
+ </tr>
+ <tr>
+  <td>1.210</td> 
+  <td>0.9155764930</td> 
+  <td>0.91557649299805532</td> 
+  <td align="right"> 8.85E-12</td>
+ </tr>
+ <tr>
+  <td>1.215</td> 
+  <td>0.9143261400</td> 
+  <td>0.91432614997006778</td> 
+  <td align="right"> 9.98E-9</td>
+ </tr>
+ <tr>
+  <td>1.220</td> 
+  <td>0.9131059475</td> 
+  <td>0.91310594750311536</td> 
+  <td align="right"> 1.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.225</td> 
+  <td>0.9119156071</td> 
+  <td>0.91191560725927312</td> 
+  <td align="right"> 1.49E-10</td>
+ </tr>
+ <tr>
+  <td>1.230</td> 
+  <td>0.9107548564</td> 
+  <td>0.91075485637655895</td> 
+  <td align="right">-1.50E-11</td>
+ </tr>
+ <tr>
+  <td>1.235</td> 
+  <td>0.9096234274</td> 
+  <td>0.90962342744425173</td> 
+  <td align="right"> 4.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.240</td> 
+  <td>0.9085210583</td> 
+  <td>0.90852105834198582</td> 
+  <td align="right"> 4.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.245</td> 
+  <td>0.9074474922</td> 
+  <td>0.90744749215126341</td> 
+  <td align="right">-5.77E-11</td>
+ </tr>
+ <tr>
+  <td>1.250</td>
+  <td>0.9064024771</td> 
+  <td>0.90640247705547716</td> 
+  <td align="right">-3.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.255</td> 
+  <td>0.9053857663</td> 
+  <td>0.90538576624240463</td> 
+  <td align="right">-5.23E-11</td>
+ </tr>
+ <tr>
+  <td>1.260</td> 
+  <td>0.9043971178</td> 
+  <td>0.90439711780910215</td> 
+  <td align="right"> 2.01E-11</td>
+ </tr>
+ <tr>
+  <td>1.265</td> 
+  <td>0.9034362946</td> 
+  <td>0.90343629466913566</td> 
+  <td align="right"> 5.78E-11</td>
+ </tr>
+ <tr>
+  <td>1.270</td> 
+  <td>0.9025030645</td> 
+  <td>0.90250306446208062</td> 
+  <td align="right">-5.13E-11</td>
+ </tr>
+ <tr>
+  <td>1.275</td> 
+  <td>0.9015971994</td> 
+  <td>0.90159719946523187</td> 
+  <td align="right"> 5.66E-11</td>
+ </tr>
+ <tr>
+  <td>1.280</td> 
+  <td>0.9007184765</td> 
+  <td>0.90071847650745973</td> 
+  <td align="right"> 5.78E-13</td>
+ </tr>
+ <tr>
+  <td>1.285</td> 
+  <td>0.8998666769</td> 
+  <td>0.89986667689491762</td> 
+  <td align="right"> 5.55E-12</td>
+ </tr>
+ <tr>
+  <td>1.290</td> 
+  <td>0.8990415863</td> 
+  <td>0.89904158628967101</td> 
+  <td align="right">-3.93E-12</td>
+ </tr>
+ <tr>
+  <td>1.295</td> 
+  <td>0.8982429947</td> 
+  <td>0.89824299468914737</td> 
+  <td align="right">-1.72E-11</td>
+ </tr>
+ <tr>
+  <td>1.300</td> 
+  <td>0.8974706963</td> 
+  <td>0.89747069630804477</td> 
+  <td align="right"> 2.65E-12</td>
+ </tr>
+ <tr>
+  <td>1.305</td> 
+  <td>0.8967244895</td> 
+  <td>0.89672448951215833</td> 
+  <td align="right"> 2.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.310</td> 
+  <td>0.8960041767</td> 
+  <td>0.89600417674396082</td> 
+  <td align="right"> 4.53E-11</td>
+ </tr>
+ <tr>
+  <td>1.315</td> 
+  <td>0.8953095644</td> 
+  <td>0.89530956444995535</td> 
+  <td align="right"> 5.43E-11</td>
+ </tr>
+ <tr>
+  <td>1.320</td> 
+  <td>0.8946404630</td> 
+  <td>0.89464046300975775</td> 
+  <td align="right"> 1.28E-11</td>
+ </tr>
+ <tr>
+  <td>1.325</td> 
+  <td>0.8939966866</td> 
+  <td>0.89399668666686083</td> 
+  <td align="right"> 7.95E-11</td>
+ </tr>
+ <tr>
+  <td>1.330</td> 
+  <td>0.8933780535</td> 
+  <td>0.89337805346103716</td> 
+  <td align="right">-3.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.335</td> 
+  <td>0.8927843850</td> 
+  <td>0.89278438516233538</td> 
+  <td align="right"> 1.51E-10</td>
+ </tr>
+ <tr>
+  <td>1.340</td> 
+  <td>0.8922155072</td> 
+  <td>0.89221550720663356</td> 
+  <td align="right"> 1.43E-11</td>
+ </tr>
+ <tr>
+  <td>1.345</td> 
+  <td>0.8916712485</td> 
+  <td>0.89167124863270442</td> 
+  <td align="right"> 1.24E-10</td>
+ </tr>
+ <tr>
+  <td>1.350</td> 
+  <td>0.8911514420</td> 
+  <td>0.89115144202666452</td> 
+  <td align="right"> 3.78E-11</td>
+ </tr>
+ <tr>
+  <td>1.355</td> 
+  <td>0.8906559235</td> 
+  <td>0.89065592343803057</td> 
+  <td align="right">-5.12E-11</td>
+ </tr>
+ <tr>
+  <td>1.360</td> 
+  <td>0.8901845324</td> 
+  <td>0.8901845323574008</td> 
+  <td align="right">-5.70E-11</td>
+ </tr>
+ <tr>
+  <td>1.365</td> 
+  <td>0.8897371116</td> 
+  <td>0.88973711163470881</td> 
+  <td align="right"> 3.11E-11</td>
+ </tr>
+ <tr>
+  <td>1.370</td> 
+  <td>0.8893135074</td> 
+  <td>0.88931350742948501</td> 
+  <td align="right"> 4.09E-11</td>
+ </tr>
+ <tr>
+  <td>1.375</td> 
+  <td>0.8889135692</td> 
+  <td>0.88891356915622532</td> 
+  <td align="right">-5.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.380</td> 
+  <td>0.8885371494</td> 
+  <td>0.88853714943101736</td> 
+  <td align="right"> 2.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.385</td> 
+  <td>0.8881841041</td> 
+  <td>0.88818410401940351</td> 
+  <td align="right">-9.53E-11</td>
+ </tr>
+ <tr>
+  <td>1.390</td> 
+  <td>0.8878542918</td> 
+  <td>0.88785429178544073</td> 
+  <td align="right">-1.00E-11</td>
+ </tr>
+ <tr>
+  <td>1.395</td> 
+  <td>0.8875475748</td> 
+  <td>0.88754757464193323</td> 
+  <td align="right">-1.49E-10</td>
+ </tr>
+ <tr>
+  <td>1.400</td> 
+  <td>0.8872638175</td> 
+  <td>0.88726381750180738</td> 
+  <td align="right">-7.13E-12</td>
+ </tr>
+ <tr>
+  <td>1.405</td> 
+  <td>0.8870028884</td> 
+  <td>0.88700288823059736</td> 
+  <td align="right">-1.66E-10</td>
+ </tr>
+ <tr>
+  <td>1.410</td> 
+  <td>0.8867646576</td> 
+  <td>0.88676465760002188</td> 
+  <td align="right"> 3.66E-12</td>
+ </tr>
+ <tr>
+  <td>1.415</td> 
+  <td>0.8865489993</td> 
+  <td>0.88654899924499497</td> 
+  <td align="right">-4.45E-11</td>
+ </tr>
+ <tr>
+  <td>1.420</td> 
+  <td>0.8863557896</td> 
+  <td>0.88635578960951567</td> 
+  <td align="right">-1.60E-12</td>
+ </tr>
+ <tr>
+  <td>1.425</td> 
+  <td>0.8861849081</td> 
+  <td>0.88618490791840432</td> 
+  <td align="right">-1.81E-10</td>
+ </tr>
+ <tr>
+  <td>1.430</td> 
+  <td>0.8860362361</td> 
+  <td>0.88603623612466142</td> 
+  <td align="right"> 2.35E-11</td>
+ </tr>
+ <tr>
+  <td>1.435</td> 
+  <td>0.8859096587</td> 
+  <td>0.88590965887072826</td> 
+  <td align="right"> 1.59E-10</td>
+ </tr>
+ <tr>
+  <td>1.440</td> 
+  <td>0.8858050635</td> 
+  <td>0.88580506344804788</td> 
+  <td align="right">-5.45E-11</td>
+ </tr>
+ <tr>
+  <td>1.445</td> 
+  <td>0.8857223397</td> 
+  <td>0.88572233975753722</td> 
+  <td align="right"> 5.12E-11</td>
+ </tr>
+ <tr>
+  <td>1.450</td> 
+  <td>0.8856613803</td> 
+  <td>0.88566138027095553</td> 
+  <td align="right">-3.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.455</td> 
+  <td>0.8856220700</td> 
+  <td>0.88562207999314335</td> 
+  <td align="right"> 9.99E-9</td>
+ </tr>
+ <tr>
+  <td>1.460</td> 
+  <td>0.8856043364</td> 
+  <td>0.88560433642511449</td> 
+  <td align="right"> 3.29E-11</td>
+ </tr>
+ <tr>
+  <td>1.465</td> 
+  <td>0.8856080495</td> 
+  <td>0.88560804952797856</td> 
+  <td align="right"> 4.00E-11</td>
+ </tr>
+ <tr>
+  <td>1.470</td> 
+  <td>0.8856331217</td> 
+  <td>0.88563312168767672</td> 
+  <td align="right">-2.25E-11</td>
+ </tr>
+ <tr>
+  <td>1.475</td> 
+  <td>0.8856794575</td> 
+  <td>0.88567945767984679</td> 
+  <td align="right"> 1.68E-10</td>
+ </tr>
+ <tr>
+  <td>1.480</td> 
+  <td>0.8857469646</td> 
+  <td>0.88574696463853297</td> 
+  <td align="right"> 3.58E-11</td>
+ </tr>
+ <tr>
+  <td>1.485</td> 
+  <td>0.8858355520</td> 
+  <td>0.88583555202000774</td> 
+  <td align="right"> 1.39E-11</td>
+ </tr>
+ <tr>
+  <td>1.490</td> 
+  <td>0.8859451316</td> 
+  <td>0.885945131572484</td> 
+  <td align="right">-2.22E-11</td>
+ </tr>
+ <tr>
+  <td>1.495</td> 
+  <td>0.8860756174</td> 
+  <td>0.88607561730422169</td> 
+  <td align="right">-9.20E-11</td>
+ </tr>
+ <tr>
+  <td>1.500</td> 
+  <td>0.8862269255</td> 
+  <td>0.88622692545275816</td> 
+  <td align="right">-5.14E-11</td>
+ </tr>
+ <tr>
+  <td>1.505</td> 
+  <td>0.8863989744</td> 
+  <td>0.88639897445482596</td> 
+  <td align="right"> 5.62E-11</td>
+ </tr>
+ <tr>
+  <td>1.510</td> 
+  <td>0.8865916850</td> 
+  <td>0.88659168491694862</td> 
+  <td align="right">-8.75E-11</td>
+ </tr>
+ <tr>
+  <td>1.515</td> 
+  <td>0.8868049797</td> 
+  <td>0.88680497958669369</td> 
+  <td align="right">-1.15E-10</td>
+ </tr>
+ <tr>
+  <td>1.520</td> 
+  <td>0.8870387833</td> 
+  <td>0.88703878332457031</td> 
+  <td align="right"> 3.78E-11</td>
+ </tr>
+ <tr>
+  <td>1.525</td> 
+  <td>0.8872930231</td> 
+  <td>0.88729302307655866</td> 
+  <td align="right">-3.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.530</td> 
+  <td>0.8875676278</td> 
+  <td>0.88756762784725507</td> 
+  <td align="right"> 5.05E-11</td>
+ </tr>
+ <tr>
+  <td>1.535</td> 
+  <td>0.8878625287</td> 
+  <td>0.88786252867361892</td> 
+  <td align="right">-2.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.540</td> 
+  <td>0.8881776586</td> 
+  <td>0.88817765859552456</td> 
+  <td align="right">-1.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.545</td> 
+  <td>0.8885129527</td> 
+  <td>0.88851295264558472</td> 
+  <td align="right">-4.41E-11</td>
+ </tr>
+ <tr>
+  <td>1.550</td> 
+  <td>0.8888683478</td> 
+  <td>0.88886834780261559</td> 
+  <td align="right"> 2.74E-12</td>
+ </tr>
+ <tr>
+  <td>1.555</td> 
+  <td>0.8892437830</td> 
+  <td>0.88924378298210571</td> 
+  <td align="right">-1.06E-11</td>
+ </tr>
+ <tr>
+  <td>1.560</td> 
+  <td>0.8896391990</td> 
+  <td>0.88963919900923583</td> 
+  <td align="right">-3.65E-12</td>
+ </tr>
+ <tr>
+  <td>1.565</td> 
+  <td>0.8900545387</td> 
+  <td>0.89005453859597561</td> 
+  <td align="right">-1.04E-10</td>
+ </tr>
+ <tr>
+  <td>1.570</td> 
+  <td>0.8904897463</td> 
+  <td>0.89048974631869759</td> 
+  <td align="right"> 2.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.575</td> 
+  <td>0.8909447686</td> 
+  <td>0.89094476859629979</td> 
+  <td align="right"> 8.93E-12</td>
+ </tr>
+ <tr>
+  <td>1.580</td> 
+  <td>0.8914195537</td> 
+  <td>0.89141955366882042</td> 
+  <td align="right">-2.38E-11</td>
+ </tr>
+ <tr>
+  <td>1.585</td> 
+  <td>0.8919140515</td> 
+  <td>0.8919140515765388</td> 
+  <td align="right"> 8.47E-11</td>
+ </tr>
+ <tr>
+  <td>1.590</td> 
+  <td>0.8924282141</td> 
+  <td>0.8924282141395512</td> 
+  <td align="right"> 3.07E-11</td>
+ </tr>
+ <tr>
+  <td>1.595</td> 
+  <td>0.8929619949</td> 
+  <td>0.89296199493781103</td> 
+  <td align="right"> 4.74E-11</td>
+ </tr>
+ <tr>
+  <td>1.600</td> 
+  <td>0.8935153493</td> 
+  <td>0.89351534928506793</td> 
+  <td align="right">-2.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.605</td> 
+  <td>0.8940882342</td> 
+  <td>0.89408823423580575</td> 
+  <td align="right"> 3.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.610</td> 
+  <td>0.8946806085</td> 
+  <td>0.89468060852796683</td> 
+  <td align="right"> 2.74E-11</td>
+ </tr>
+ <tr>
+  <td>1.615</td> 
+  <td>0.8952924327</td> 
+  <td>0.89529243259029823</td> 
+  <td align="right">-9.74E-11</td>
+ </tr>
+ <tr>
+  <td>1.620</td> 
+  <td>0.8959236685</td> 
+  <td>0.89592366851824745</td> 
+  <td align="right"> 2.86E-11</td>
+ </tr>
+ <tr>
+  <td>1.625</td> 
+  <td>0.8965742800</td> 
+  <td>0.89657428005659789</td> 
+  <td align="right"> 6.46E-11</td>
+ </tr>
+ <tr>
+  <td>1.630</td> 
+  <td>0.8972442326</td> 
+  <td>0.89724423258250552</td> 
+  <td align="right">-7.80E-12</td>
+ </tr>
+ <tr>
+  <td>1.635</td> 
+  <td>0.8979334930</td> 
+  <td>0.89793349308892934</td> 
+  <td align="right"> 9.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.640</td> 
+  <td>0.8986420302</td> 
+  <td>0.89864203016845012</td> 
+  <td align="right">-2.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.645</td> 
+  <td>0.8993698138</td> 
+  <td>0.89936981399746452</td> 
+  <td align="right"> 2.04E-10</td>
+ </tr>
+ <tr>
+  <td>1.650</td> 
+  <td>0.9001168163</td> 
+  <td>0.9001168163207548</td> 
+  <td align="right"> 1.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.655</td> 
+  <td>0.9008830104</td> 
+  <td>0.90088301043641827</td> 
+  <td align="right"> 2.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.660</td> 
+  <td>0.9016683712</td> 
+  <td>0.90166837118115595</td> 
+  <td align="right">-1.49E-11</td>
+ </tr>
+ <tr>
+  <td>1.665</td> 
+  <td>0.9024728748</td> 
+  <td>0.90247287490643413</td> 
+  <td align="right"> 1.16E-10</td>
+ </tr>
+ <tr>
+  <td>1.670</td> 
+  <td>0.9032964995</td> 
+  <td>0.9032964995021503</td> 
+  <td align="right">-1.09E-11</td>
+ </tr>
+ <tr>
+  <td>1.675</td> 
+  <td>0.9041392243</td> 
+  <td>0.90413922432675797</td> 
+  <td align="right"> 3.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.680</td> 
+  <td>0.9050010302</td> 
+  <td>0.90500103023115419</td> 
+  <td align="right"> 4.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.685</td> 
+  <td>0.9058818996</td> 
+  <td>0.90588189953639731</td> 
+  <td align="right">-7.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.690</td> 
+  <td>0.9067818160</td> 
+  <td>0.90678181602099839</td> 
+  <td align="right"> 9.93E-12</td>
+ </tr>
+ <tr>
+  <td>1.695</td> 
+  <td>0.9077007650</td> 
+  <td>0.90770076490852225</td> 
+  <td align="right">-9.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.700</td> 
+  <td>0.9086387329</td> 
+  <td>0.90863873285549646</td> 
+  <td align="right">-5.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.705</td> 
+  <td>0.9095957079</td> 
+  <td>0.90959570793962097</td> 
+  <td align="right"> 4.25E-11</td>
+ </tr>
+ <tr>
+  <td>1.710</td> 
+  <td>0.9105716796</td> 
+  <td>0.9105716796482709</td> 
+  <td align="right"> 5.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.715</td> 
+  <td>0.9115666390</td> 
+  <td>0.91156663886729161</td> 
+  <td align="right">-1.31E-10</td>
+ </tr>
+ <tr>
+  <td>1.720</td> 
+  <td>0.9125805779</td> 
+  <td>0.91258057787007674</td> 
+  <td align="right">-1.93E-11</td>
+ </tr>
+ <tr>
+  <td>1.725</td> 
+  <td>0.9136134904</td> 
+  <td>0.91361349029479011</td> 
+  <td align="right">-1.16E-10</td>
+ </tr>
+ <tr>
+  <td>1.730</td> 
+  <td>0.9146653712</td> 
+  <td>0.91466537118231861</td> 
+  <td align="right">-2.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.735</td> 
+  <td>0.9157362171</td> 
+  <td>0.9157362168940244</td> 
+  <td align="right">-2.15E-10</td>
+ </tr>
+ <tr>
+  <td>1.740</td> 
+  <td>0.9168260252</td> 
+  <td>0.91682602514979106</td> 
+  <td align="right">-5.47E-11</td>
+ </tr>
+ <tr>
+  <td>1.745</td> 
+  <td>0.9179347950</td> 
+  <td>0.91793479500653363</td> 
+  <td align="right"> 8.97E-12</td>
+ </tr>
+ <tr>
+  <td>1.750</td> 
+  <td>0.9190625268</td> 
+  <td>0.91906252684888312</td> 
+  <td align="right"> 3.95E-11</td>
+ </tr>
+ <tr>
+  <td>1.755</td> 
+  <td>0.9202092224</td> 
+  <td>0.92020922238011904</td> 
+  <td align="right">-3.48E-11</td>
+ </tr>
+ <tr>
+  <td>1.760</td> 
+  <td>0.9213748846</td> 
+  <td>0.92137488461334993</td> 
+  <td align="right"> 4.68E-12</td>
+ </tr>
+ <tr>
+  <td>1.765</td> 
+  <td>0.9225595178</td> 
+  <td>0.92255951786293755</td> 
+  <td align="right"> 4.88E-11</td>
+ </tr>
+ <tr>
+  <td>1.770</td> 
+  <td>0.9237631277</td> 
+  <td>0.9237631277361581</td> 
+  <td align="right"> 2.96E-11</td>
+ </tr>
+ <tr>
+  <td>1.775</td> 
+  <td>0.9249857211</td> 
+  <td>0.92498572112510025</td> 
+  <td align="right"> 2.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.780</td> 
+  <td>0.9262273062</td> 
+  <td>0.92622730619879157</td> 
+  <td align="right"> 8.37E-12</td>
+ </tr>
+ <tr>
+  <td>1.785</td> 
+  <td>0.9274878926</td> 
+  <td>0.92748789239555507</td> 
+  <td align="right">-1.97E-10</td>
+ </tr>
+ <tr>
+  <td>1.790</td> 
+  <td>0.9287674904</td> 
+  <td>0.92876749040057904</td> 
+  <td align="right">-3.84E-12</td>
+ </tr>
+ <tr>
+  <td>1.795</td> 
+  <td>0.9300661123</td> 
+  <td>0.93006611219852275</td> 
+  <td align="right">-1.13E-10</td>
+ </tr>
+ <tr>
+  <td>1.800</td> 
+  <td>0.9313837710</td> 
+  <td>0.93138377097715253</td> 
+  <td align="right">-2.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.805</td> 
+  <td>0.9327204811</td> 
+  <td>0.93272048117993289</td> 
+  <td align="right"> 8.20E-11</td>
+ </tr>
+ <tr>
+  <td>1.810</td> 
+  <td>0.9340762585</td> 
+  <td>0.93407625848467779</td> 
+  <td align="right">-2.05E-11</td>
+ </tr>
+ <tr>
+  <td>1.815</td> 
+  <td>0.9354511198</td> 
+  <td>0.93545111979719375</td> 
+  <td align="right"> 8.27E-12</td>
+ </tr>
+ <tr>
+  <td>1.820</td> 
+  <td>0.9368450832</td> 
+  <td>0.93684508324512517</td> 
+  <td align="right"> 4.80E-11</td>
+ </tr>
+ <tr>
+  <td>1.825</td> 
+  <td>0.9382581682</td> 
+  <td>0.93825816817200214</td> 
+  <td align="right">-2.82E-11</td>
+ </tr>
+ <tr>
+  <td>1.830</td> 
+  <td>0.9396903951</td> 
+  <td>0.93969039513148056</td> 
+  <td align="right"> 1.86E-11</td>
+ </tr>
+ <tr>
+  <td>1.835</td> 
+  <td>0.9411417859</td> 
+  <td>0.94114178588178177</td> 
+  <td align="right">-2.64E-11</td>
+ </tr>
+ <tr>
+  <td>1.840</td> 
+  <td>0.9426123634</td> 
+  <td>0.94261236338031951</td> 
+  <td align="right">-2.35E-11</td>
+ </tr>
+ <tr>
+  <td>1.845</td> 
+  <td>0.9441021519</td> 
+  <td>0.94410215177851575</td> 
+  <td align="right">-1.22E-10</td>
+ </tr>
+ <tr>
+  <td>1.850</td> 
+  <td>0.9456111764</td> 
+  <td>0.94561117639912362</td> 
+  <td align="right">-2.02E-12</td>
+ </tr>
+ <tr>
+  <td>1.855</td> 
+  <td>0.9471394637</td> 
+  <td>0.94713946380190617</td> 
+  <td align="right"> 9.43E-11</td>
+ </tr>
+ <tr>
+  <td>1.860</td> 
+  <td>0.9486870417</td> 
+  <td>0.94868704167359708</td> 
+  <td align="right">-2.86E-11</td>
+ </tr>
+ <tr>
+  <td>1.865</td> 
+  <td>0.9502539389</td> 
+  <td>0.95025393889348797</td> 
+  <td align="right">-1.33E-11</td>
+ </tr>
+ <tr>
+  <td>1.870</td> 
+  <td>0.9518401855</td> 
+  <td>0.95184018551169203</td> 
+  <td align="right"> 9.61E-12</td>
+ </tr>
+ <tr>
+  <td>1.875</td> 
+  <td>0.9534458127</td> 
+  <td>0.95344581274503493</td> 
+  <td align="right"> 5.77E-11</td>
+ </tr>
+ <tr>
+  <td>1.880</td> 
+  <td>0.9550708530</td> 
+  <td>0.95507085297311556</td> 
+  <td align="right">-2.73E-11</td>
+ </tr>
+ <tr>
+  <td>1.885</td> 
+  <td>0.9567153398</td> 
+  <td>0.95671533973453671</td> 
+  <td align="right">-6.02E-11</td>
+ </tr>
+ <tr>
+  <td>1.890</td> 
+  <td>0.9583793077</td> 
+  <td>0.95837930772329927</td> 
+  <td align="right"> 1.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.895</td> 
+  <td>0.9600627927</td> 
+  <td>0.960062792785362</td> 
+  <td align="right"> 8.60E-11</td>
+ </tr>
+ <tr>
+  <td>1.900</td> 
+  <td>0.9617658319</td> 
+  <td>0.96176583191536336</td> 
+  <td align="right"> 2.60E-11</td>
+ </tr>
+ <tr>
+  <td>1.905</td> 
+  <td>0.9634884632</td> 
+  <td>0.96348846325350124</td> 
+  <td align="right"> 5.75E-11</td>
+ </tr>
+ <tr>
+  <td>1.910</td> 
+  <td>0.9652307261</td> 
+  <td>0.96523072608257054</td> 
+  <td align="right">-3.05E-11</td>
+ </tr>
+ <tr>
+  <td>1.915</td> 
+  <td>0.9669926608</td> 
+  <td>0.96699266080453206</td> 
+  <td align="right"> 5.78E-13</td>
+ </tr>
+ <tr>
+  <td>1.920</td> 
+  <td>0.9687743090</td> 
+  <td>0.96877430902013406</td> 
+  <td align="right"> 1.66E-11</td>
+ </tr>
+ <tr>
+  <td>1.925</td> 
+  <td>0.9705757134</td> 
+  <td>0.97057571340334281</td> 
+  <td align="right">-3.67E-12</td>
+ </tr>
+ <tr>
+  <td>1.930</td> 
+  <td>0.9723969178</td> 
+  <td>0.9723969177808085</td> 
+  <td align="right">-5.87E-12</td>
+ </tr>
+ <tr>
+  <td>1.935</td> 
+  <td>0.9742379672</td> 
+  <td>0.97423796710926569</td> 
+  <td align="right">-8.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.940</td> 
+  <td>0.9760989075</td> 
+  <td>0.97609890747347727</td> 
+  <td align="right">-2.67E-11</td>
+ </tr>
+ <tr>
+  <td>1.945</td> 
+  <td>0.9779797861</td> 
+  <td>0.97797978608432246</td> 
+  <td align="right">-2.76E-11</td>
+ </tr>
+ <tr>
+  <td>1.950</td> 
+  <td>0.9798806513</td> 
+  <td>0.9798806512770295</td> 
+  <td align="right">-3.65E-11</td>
+ </tr>
+ <tr>
+  <td>1.955</td> 
+  <td>0.9818015524</td> 
+  <td>0.98180155250954815</td> 
+  <td align="right"> 1.02E-10</td>
+ </tr>
+ <tr>
+  <td>1.960</td> 
+  <td>0.9837425404</td> 
+  <td>0.98374254036106346</td> 
+  <td align="right">-5.01E-11</td>
+ </tr>
+ <tr>
+  <td>1.965</td> 
+  <td>0.9857036664</td> 
+  <td>0.985703666530647</td> 
+  <td align="right"> 1.27E-10</td>
+ </tr>
+ <tr>
+  <td>1.970</td> 
+  <td>0.9876849838</td> 
+  <td>0.98768498383604675</td> 
+  <td align="right"> 4.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.975</td> 
+  <td>0.9896865462</td> 
+  <td>0.98968654618919183</td> 
+  <td align="right">-1.77E-11</td>
+ </tr>
+ <tr>
+  <td>1.980</td> 
+  <td>0.9917084087</td> 
+  <td>0.99170840868869103</td> 
+  <td align="right">-3.22E-12</td>
+ </tr>
+ <tr>
+  <td>1.985</td> 
+  <td>0.9937506274</td> 
+  <td>0.9937506274792185</td> 
+  <td align="right"> 6.46E-11</td>
+ </tr>
+ <tr>
+  <td>1.990</td> 
+  <td>0.9958132598</td> 
+  <td>0.99581325984380575</td> 
+  <td align="right"> 4.71E-11</td>
+ </tr>
+ <tr>
+  <td>1.995</td> 
+  <td>0.9978963643</td> 
+  <td>0.99789636418011041</td> 
+  <td align="right">-1.27E-10</td>
+ </tr>
+</table>
+
+
+<h4>The Psi Function</h4>
+
+This table was constructed from the published values in the 
+Handbook of Mathematical Functions, by Milton Abramowitz
+and Irene A. Stegun, by Dover (1965), pp 267-270.
+
+Axiom implements the polygamma function which allows for multiple
+derivatives. The Psi function is a special case of the polygamma
+function for zero derivatives. For the purpose of this table it
+is defined as:
+<pre>
+   Psi(x) == polygamma(0,x)
+</pre>
+
+The first column is the point where the Gamma function is evaluated.
+The second column is the value reported in the Handbook.
+The third column is the actual value computed by Axiom at the given point.
+The fourth column is the difference of Axiom's value and the Handbook value.
+
+<table border="1">
+ <tr>
+  <th>point</th>
+  <th>Handbook Value</th>
+  <th>Axiom Computed Value</th>
+  <th>Difference</th>
+ </tr>
+ <tr>
+  <td>1.000</td>
+  <td>-0.5772156649</td>
+  <td>-0.57721566490153275</td>
+  <td align="right">-1.53E-12</td>
+ </tr>
+ <tr>
+  <td>1.005</td>
+  <td>-0.5690209113</td>
+  <td>-0.56902091134438304</td>
+  <td align="right"> -4.43E-11</td>
+ </tr>
+ <tr>
+  <td>1.010</td>
+  <td>-0.5608854579</td>
+  <td>-0.56088545786867472</td>
+  <td align="right"> 3.13E-11</td>
+ </tr>
+ <tr>
+  <td>1.015</td>
+  <td>-0.5528085156</td>
+  <td>-0.55280851559434629</td>
+  <td align="right"> 5.65E-12</td>
+ </tr>
+ <tr>
+  <td>1.020</td>
+  <td>-0.5447893105</td>
+  <td>-0.54478931045617984</td>
+  <td align="right"> 4.38E-11</td>
+ </tr>
+ <tr>
+  <td>1.025</td>
+  <td>-0.5368270828</td>
+  <td>-0.53682708284938863</td>
+  <td align="right"> -4.93E-11</td>
+ </tr>
+ <tr>
+  <td>1.030</td>
+  <td>-0.5289210873</td>
+  <td>-0.5289210872854303</td>
+  <td align="right"> 1.45E-11</td>
+ </tr>
+ <tr>
+  <td>1.035</td>
+  <td>-0.5210705921</td>
+  <td>-0.52107059205771</td>
+  <td align="right"> 4.22E-11</td>
+ </tr>
+ <tr>
+  <td>1.040</td>
+  <td>-0.5132748789</td>
+  <td>-0.51327487891683021</td>
+  <td align="right"> -1.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.045</td>
+  <td>-0.5055332428</td>
+  <td>-0.50553324275508449</td>
+  <td align="right"> 4.49E-11</td>
+ </tr>
+ <tr>
+  <td>1.050</td>
+  <td>-0.4978449913</td>
+  <td>-0.49784499129987031</td>
+  <td align="right"> 1.29E-13</td>
+ </tr>
+ <tr>
+  <td>1.055</td>
+  <td>-0.4902094448</td>
+  <td>-0.49020944481574569</td>
+  <td align="right"> -1.57E-11</td>
+ </tr>
+ <tr>
+  <td>1.060</td>
+  <td>-0.4826259358</td>
+  <td>-0.48262593581482538</td>
+  <td align="right"> -1.48E-11</td>
+ </tr>
+ <tr>
+  <td>1.065</td>
+  <td>-0.4750938088</td>
+  <td>-0.47509380877526647</td>
+  <td align="right"> 2.47E-11</td>
+ </tr>
+ <tr>
+  <td>1.070</td>
+  <td>-0.4676124199</td>
+  <td>-0.46761241986755342</td>
+  <td align="right"> 3.24E-11</td>
+ </tr>
+ <tr>
+  <td>1.075</td>
+  <td>-0.4601811367</td>
+  <td>-0.4601811366883593</td>
+  <td align="right"> 1.16E-11</td>
+ </tr>
+ <tr>
+  <td>1.080</td>
+  <td>-0.4527993380</td>
+  <td>-0.45279933800171246</td>
+  <td align="right"> -1.71E-12</td>
+ </tr>
+ <tr>
+  <td>1.085</td>
+  <td>-0.4454664135</td>
+  <td>-0.44546641348725191</td>
+  <td align="right"> 1.27E-11</td>
+ </tr>
+ <tr>
+  <td>1.090</td>
+  <td>-0.4381817635</td>
+  <td>-0.43818176349533489</td>
+  <td align="right"> 4.66E-12</td>
+ </tr>
+ <tr>
+  <td>1.095</td>
+  <td>-0.4309447988</td>
+  <td>-0.43094479880878706</td>
+  <td align="right"> -8.78E-12</td>
+ </tr>
+ <tr>
+  <td>1.100</td>
+  <td>-0.4237549404</td>
+  <td>-0.42375494041107653</td>
+  <td align="right"> -1.10E-11</td>
+ </tr>
+ <tr>
+  <td>1.105</td>
+  <td>-0.4166116193</td>
+  <td>-0.41661161926071655</td>
+  <td align="right"> 3.92E-11</td>
+ </tr>
+ <tr>
+  <td>1.110</td>
+  <td>-0.4095142761</td>
+  <td>-0.40951427607169383</td>
+  <td align="right"> 2.83E-11</td>
+ </tr>
+ <tr>
+  <td>1.115</td>
+  <td>-0.4024623611</td>
+  <td>-0.40246236109974648</td>
+  <td align="right"> 2.53E-13</td>
+ </tr>
+ <tr>
+  <td>1.120</td>
+  <td>-0.3954553339</td>
+  <td>-0.39545533393429283</td>
+  <td align="right"> -3.42E-11</td>
+ </tr>
+ <tr>
+  <td>1.125</td>
+  <td>-0.3884926633</td>
+  <td>-0.38849266329585463</td>
+  <td align="right"> 4.14E-12</td>
+ </tr>
+ <tr>
+  <td>1.130</td>
+  <td>-0.3815738268</td>
+  <td>-0.38157382683879215</td>
+  <td align="right"> -3.87E-11</td>
+ </tr>
+ <tr>
+  <td>1.135</td>
+  <td>-0.3746983110</td>
+  <td>-0.37469831095919082</td>
+  <td align="right"> 4.08E-11</td>
+ </tr>
+ <tr>
+  <td>1.140</td>
+  <td>-0.3678656106</td>
+  <td>-0.36786561060774969</td>
+  <td align="right"> -7.74E-12</td>
+ </tr>
+ <tr>
+  <td>1.145</td>
+  <td>-0.3610752291</td>
+  <td>-0.361075229107509</td>
+  <td align="right"> -7.50E-12</td>
+ </tr>
+ <tr>
+  <td>1.150</td>
+  <td>-0.3543266780</td>
+  <td>-0.35432667797627904</td>
+  <td align="right"> 2.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.155</td>
+  <td>-0.3476194768</td>
+  <td>-0.34761947675362337</td>
+  <td align="right"> 4.63E-11</td>
+ </tr>
+ <tr>
+  <td>1.160</td>
+  <td>-0.3409531528</td>
+  <td>-0.34095315283226135</td>
+  <td align="right"> -3.22E-11</td>
+ </tr>
+ <tr>
+  <td>1.165</td>
+  <td>-0.3343272413</td>
+  <td>-0.3343272412937619</td>
+  <td align="right"> 6.23E-12</td>
+ </tr>
+ <tr>
+  <td>1.170</td>
+  <td>-0.3277412847</td>
+  <td>-0.3277412847483927</td>
+  <td align="right"> -4.83E-11</td>
+ </tr>
+ <tr>
+  <td>1.175</td>
+  <td>-0.3211948332</td>
+  <td>-0.3211948331790081</td>
+  <td align="right"> 2.09E-11</td>
+ </tr>
+ <tr>
+  <td>1.180</td>
+  <td>-0.3146874438</td>
+  <td>-0.31468744378886082</td>
+  <td align="right"> 1.11E-11</td>
+ </tr>
+ <tr>
+  <td>1.185</td>
+  <td>-0.3082186809</td>
+  <td>-0.30821868085320625</td>
+  <td align="right"> 4.67E-11</td>
+ </tr>
+ <tr>
+  <td>1.190</td>
+  <td>-0.3017881156</td>
+  <td>-0.30178811557461016</td>
+  <td align="right"> 2.53E-11</td>
+ </tr>
+ <tr>
+  <td>1.195</td>
+  <td>-0.2953953259</td>
+  <td>-0.2953953259418296</td>
+  <td align="right"> -4.18E-11</td>
+ </tr>
+ <tr>
+  <td>1.200</td>
+  <td>-0.2890398966</td>
+  <td>-0.28903989659218843</td>
+  <td align="right"> 7.81E-12</td>
+ </tr>
+ <tr>
+  <td>1.205</td>
+  <td>-0.2827214187</td>
+  <td>-0.28272141867731704</td>
+  <td align="right"> 2.26E-11</td>
+ </tr>
+ <tr>
+  <td>1.210</td>
+  <td>-0.2764394897</td>
+  <td>-0.2764394897321919</td>
+  <td align="right"> -3.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.215</td>
+  <td>-0.2701937135</td>
+  <td>-0.27019371354735244</td>
+  <td align="right"> -4.73E-11</td>
+ </tr>
+ <tr>
+  <td>1.220</td>
+  <td>-0.2639837000</td>
+  <td>-0.26398370004422023</td>
+  <td align="right"> -4.42E-11</td>
+ </tr>
+ <tr>
+  <td>1.225</td>
+  <td>-0.2578090652</td>
+  <td>-0.25780906515343338</td>
+  <td align="right"> 4.65E-11</td>
+ </tr>
+ <tr>
+  <td>1.230</td>
+  <td>-0.2516694307</td>
+  <td>-0.25166943069609982</td>
+  <td align="right"> 3.90E-12</td>
+ </tr>
+ <tr>
+  <td>1.235</td>
+  <td>-0.2455644243</td>
+  <td>-0.24556442426789726</td>
+  <td align="right"> 3.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.240</td>
+  <td>-0.2394936791</td>
+  <td>-0.23949367912593666</td>
+  <td align="right"> -2.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.245</td>
+  <td>-0.2334568341</td>
+  <td>-0.23345683407831253</td>
+  <td align="right"> 2.16E-11</td>
+ </tr>
+ <tr>
+  <td>1.250</td>
+  <td>-0.2274535334</td>
+  <td>-0.22745353337626528</td>
+  <td align="right"> 2.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.255</td>
+  <td>-0.2214834266</td>
+  <td>-0.22148342660888165</td>
+  <td align="right"> -8.88E-12</td>
+ </tr>
+ <tr>
+  <td>1.260</td>
+  <td>-0.2155461686</td>
+  <td>-0.21554616860026521</td>
+  <td align="right"> -2.65E-13</td>
+ </tr>
+ <tr>
+  <td>1.265</td>
+  <td>-0.2096414193</td>
+  <td>-0.20964141930911384</td>
+  <td align="right"> -9.11E-12</td>
+ </tr>
+ <tr>
+  <td>1.270</td>
+  <td>-0.2037688437</td>
+  <td>-0.20376884373062343</td>
+  <td align="right"> -3.06E-11</td>
+ </tr>
+ <tr>
+  <td>1.275</td>
+  <td>-0.1979281118</td>
+  <td>-0.19792811180067393</td>
+  <td align="right"> -6.73E-13</td>
+ </tr>
+ <tr>
+  <td>1.280</td>
+  <td>-0.1921188983</td>
+  <td>-0.19211889830222173</td>
+  <td align="right"> -2.22E-12</td>
+ </tr>
+ <tr>
+  <td>1.285</td>
+  <td>-0.1863408828</td>
+  <td>-0.18634088277384209</td>
+  <td align="right"> 2.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.290</td>
+  <td>-0.1805937494</td>
+  <td>-0.1805937494203691</td>
+  <td align="right"> -2.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.295</td>
+  <td>-0.1748771870</td>
+  <td>-0.17487718702556942</td>
+  <td align="right"> -2.55E-11</td>
+ </tr>
+ <tr>
+  <td>1.300</td>
+  <td>-0.1691908889</td>
+  <td>-0.16919088886679934</td>
+  <td align="right"> 3.32E-11</td>
+ </tr>
+ <tr>
+  <td>1.305</td>
+  <td>-0.1635345526</td>
+  <td>-0.163534552631597</td>
+  <td align="right"> -3.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.310</td>
+  <td>-0.1579078803</td>
+  <td>-0.15790788033614178</td>
+  <td align="right"> -3.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.315</td>
+  <td>-0.1523105782</td>
+  <td>-0.15231057824555994</td>
+  <td align="right"> -4.55E-11</td>
+ </tr>
+ <tr>
+  <td>1.320</td>
+  <td>-0.1467423568</td>
+  <td>-0.1467423567959959</td>
+  <td align="right"> 4.00E-12</td>
+ </tr>
+ <tr>
+  <td>1.325</td>
+  <td>-0.1412029305</td>
+  <td>-0.14120293051842803</td>
+  <td align="right"> -1.84E-11</td>
+ </tr>
+ <tr>
+  <td>1.330</td>
+  <td>-0.1356920180</td>
+  <td>-0.13569201796416941</td>
+  <td align="right"> 3.58E-11</td>
+ </tr>
+ <tr>
+  <td>1.335</td>
+  <td>-0.1302093416</td>
+  <td>-0.13020934163201769</td>
+  <td align="right"> -3.20E-11</td>
+ </tr>
+ <tr>
+  <td>1.340</td>
+  <td>-0.1247546279</td>
+  <td>-0.12475462789700376</td>
+  <td align="right"> 2.99E-12</td>
+ </tr>
+ <tr>
+  <td>1.345</td>
+  <td>-0.1193276069</td>
+  <td>-0.11932760694070754</td>
+  <td align="right"> -4.07E-11</td>
+ </tr>
+ <tr>
+  <td>1.350</td>
+  <td>-0.1139280127</td>
+  <td>-0.11392801268308839</td>
+  <td align="right"> 1.69E-11</td>
+ </tr>
+ <tr>
+  <td>1.355</td>
+  <td>-0.1085555827</td>
+  <td>-0.10855558271580501</td>
+  <td align="right"> -1.58E-11</td>
+ </tr>
+ <tr>
+  <td>1.360</td>
+  <td>-0.1032100582</td>
+  <td>-0.10321005823697738</td>
+  <td align="right"> -3.69E-11</td>
+ </tr>
+ <tr>
+  <td>1.365</td>
+  <td>-0.0978911840</td>
+  <td>-0.097891183987354968</td>
+  <td align="right"> 1.26E-11</td>
+ </tr>
+ <tr>
+  <td>1.370</td>
+  <td>-0.0925987082</td>
+  <td>-0.092598708187860979</td>
+  <td align="right"> 1.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.375</td>
+  <td>-0.0873323825</td>
+  <td>-0.087332382478473081</td>
+  <td align="right"> 2.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.380</td>
+  <td>-0.0820919619</td>
+  <td>-0.082091961858406615</td>
+  <td align="right"> 4.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.385</td>
+  <td>-0.0768772046</td>
+  <td>-0.076877204627574525</td>
+  <td align="right"> -2.75E-11</td>
+ </tr>
+ <tr>
+  <td>1.390</td>
+  <td>-0.0716878723</td>
+  <td>-0.071687872329281643</td>
+  <td align="right"> -2.92E-11</td>
+ </tr>
+ <tr>
+  <td>1.395</td>
+  <td>-0.0665237297</td>
+  <td>-0.066523729694132228</td>
+  <td align="right"> 5.86E-12</td>
+ </tr>
+ <tr>
+  <td>1.400</td>
+  <td>-0.0613845446</td>
+  <td>-0.061384544585116108</td>
+  <td align="right"> 1.48E-11</td>
+ </tr>
+ <tr>
+  <td>1.405</td>
+  <td>-0.0562700879</td>
+  <td>-0.056270087943841696</td>
+  <td align="right"> -4.38E-11</td>
+ </tr>
+ <tr>
+  <td>1.410</td>
+  <td>-0.0511801337</td>
+  <td>-0.051180133737897426</td>
+  <td align="right"> -3.78E-11</td>
+ </tr>
+ <tr>
+  <td>1.415</td>
+  <td>-0.0461144589</td>
+  <td>-0.04.6114458909301992</td>
+  <td align="right"> -9.30E-12</td>
+ </tr>
+ <tr>
+  <td>1.420</td>
+  <td>-0.0410728433</td>
+  <td>-0.041072843324024277</td>
+  <td align="right"> -2.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.425</td>
+  <td>-0.0360550697</td>
+  <td>-0.036055069722547906</td>
+  <td align="right"> -2.25E-11</td>
+ </tr>
+ <tr>
+  <td>1.430</td>
+  <td>-0.0310609237</td>
+  <td>-0.031060923671447194</td>
+  <td align="right"> 2.85E-11</td>
+ </tr>
+ <tr>
+  <td>1.435</td>
+  <td>-0.0260901935</td>
+  <td>-0.02609019351596098</td>
+  <td align="right"> -1.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.440</td>
+  <td>-0.0211426703</td>
+  <td>-0.021142670333530678</td>
+  <td align="right"> -3.35E-11</td>
+ </tr>
+ <tr>
+  <td>1.445</td>
+  <td>-0.0162181479</td>
+  <td>-0.016218147888283685</td>
+  <td align="right"> 1.17E-11</td>
+ </tr>
+ <tr>
+  <td>1.450</td>
+  <td>-0.0113164226</td>
+  <td>-0.011316422586445718</td>
+  <td align="right"> 1.35E-11</td>
+ </tr>
+ <tr>
+  <td>1.455</td>
+  <td>-0.0064372934</td>
+  <td>-0.0064372934326406561</td>
+  <td align="right"> -3.26E-11</td>
+ </tr>
+ <tr>
+  <td>1.460</td>
+  <td>-0.0015805620</td>
+  <td>-0.0015805619870833398</td>
+  <td align="right"> 1.29E-11</td>
+ </tr>
+ <tr>
+  <td>1.465</td>
+  <td>0.0032539677</td>
+  <td>0.0032539676763745362</td>
+  <td align="right"> -2.36E-11</td>
+ </tr>
+ <tr>
+  <td>1.470</td>
+  <td>0.0080664890</td>
+  <td>0.0080664890113649745</td>
+  <td align="right"> 1.13E-11</td>
+ </tr>
+ <tr>
+  <td>1.475</td>
+  <td>0.0128571930</td>
+  <td>0.012857193039295334</td>
+  <td align="right"> 3.92E-11</td>
+ </tr>
+ <tr>
+  <td>1.480</td>
+  <td>0.0176262684</td>
+  <td>0.017626268388849287</td>
+  <td align="right"> -1.11E-11</td>
+ </tr>
+ <tr>
+  <td>1.485</td>
+  <td>0.0223739013</td>
+  <td>0.022373901334705404</td>
+  <td align="right"> 3.47E-11</td>
+ </tr>
+ <tr>
+  <td>1.490</td>
+  <td>0.0271002758</td>
+  <td>0.027100275835486465</td>
+  <td align="right"> 3.54E-11</td>
+ </tr>
+ <tr>
+  <td>1.495</td>
+  <td>0.0318055736</td>
+  <td>0.031805573570971468</td>
+  <td align="right"> -2.90E-11</td>
+ </tr>
+ <tr>
+  <td>1.500</td>
+  <td>0.0364899740</td>
+  <td>0.036489973978576673</td>
+  <td align="right"> -2.14E-11</td>
+ </tr>
+ <tr>
+  <td>1.505</td>
+  <td>0.0411536543</td>
+  <td>0.041153654289123542</td>
+  <td align="right"> -1.08E-11</td>
+ </tr>
+ <tr>
+  <td>1.510</td>
+  <td>0.0457967896</td>
+  <td>0.045796789561914686</td>
+  <td align="right"> -3.80E-11</td>
+ </tr>
+ <tr>
+  <td>1.515</td>
+  <td>0.0504195527</td>
+  <td>0.050419552719128236</td>
+  <td align="right"> 1.91E-11</td>
+ </tr>
+ <tr>
+  <td>1.520</td>
+  <td>0.0550221146</td>
+  <td>0.055022114579551307</td>
+  <td align="right"> -2.04E-11</td>
+ </tr>
+ <tr>
+  <td>1.525</td>
+  <td>0.0596046439</td>
+  <td>0.05960464389166209</td>
+  <td align="right"> -8.33E-12</td>
+ </tr>
+ <tr>
+  <td>1.530</td>
+  <td>0.0641673074</td>
+  <td>0.064167307366077231</td>
+  <td align="right"> -3.39E-11</td>
+ </tr>
+ <tr>
+  <td>1.535</td>
+  <td>0.0687102697</td>
+  <td>0.068710269707385141</td>
+  <td align="right"> 7.38E-12</td>
+ </tr>
+ <tr>
+  <td>1.540</td>
+  <td>0.0732336936</td>
+  <td>0.073233693645366138</td>
+  <td align="right"> 4.53E-11</td>
+ </tr>
+ <tr>
+  <td>1.545</td>
+  <td>0.0777377300</td>
+  <td>0.077737739965624497</td>
+  <td align="right"> 9.96E-9</td>
+ </tr>
+ <tr>
+  <td>1.550</td>
+  <td>0.0822225675</td>
+  <td>0.082222567539644631</td>
+  <td align="right"> 3.96E-11</td>
+ </tr>
+ <tr>
+  <td>1.555</td>
+  <td>0.0866883334</td>
+  <td>0.086688333354268288</td>
+  <td align="right"> -4.57E-11</td>
+ </tr>
+ <tr>
+  <td>1.560</td>
+  <td>0.0911351925</td>
+  <td>0.091135192540635401</td>
+  <td align="right"> 4.06E-11</td>
+ </tr>
+ <tr>
+  <td>1.565</td>
+  <td>0.0955632984</td>
+  <td>0.095563298402570163</td>
+  <td align="right"> 2.57E-12</td>
+ </tr>
+ <tr>
+  <td>1.570</td>
+  <td>0.0999728024</td>
+  <td>0.099972802444444731</td>
+  <td align="right"> 4.44E-11</td>
+ </tr>
+ <tr>
+  <td>1.575</td>
+  <td>0.1043638544</td>
+  <td>0.10436385439851947</td>
+  <td align="right"> -1.48E-12</td>
+ </tr>
+ <tr>
+  <td>1.580</td>
+  <td>0.1087366023</td>
+  <td>0.10873660225178161</td>
+  <td align="right"> -4.82E-11</td>
+ </tr>
+ <tr>
+  <td>1.585</td>
+  <td>0.1130911923</td>
+  <td>0.11309119227228603</td>
+  <td align="right"> -2.77E-11</td>
+ </tr>
+ <tr>
+  <td>1.590</td>
+  <td>0.1174277690</td>
+  <td>0.11742776903501095</td>
+  <td align="right"> 3.50E-11</td>
+ </tr>
+ <tr>
+  <td>1.595</td>
+  <td>0.1217464754</td>
+  <td>0.12174647544723916</td>
+  <td align="right"> 4.72E-11</td>
+ </tr>
+ <tr>
+  <td>1.600</td>
+  <td>0.1260474528</td>
+  <td>0.12604745277347584</td>
+  <td align="right"> -2.65E-11</td>
+ </tr>
+ <tr>
+  <td>1.605</td>
+  <td>0.1303308407</td>
+  <td>0.13033084065991318</td>
+  <td align="right"> -4.00E-11</td>
+ </tr>
+ <tr>
+  <td>1.610</td>
+  <td>0.1345967772</td>
+  <td>0.13459677715844587</td>
+  <td align="right"> -4.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.615</td>
+  <td>0.1388453988</td>
+  <td>0.13884539875025736</td>
+  <td align="right"> -4.97E-11</td>
+ </tr>
+ <tr>
+  <td>1.620</td>
+  <td>0.1430768404</td>
+  <td>0.14307684036898005</td>
+  <td align="right"> -3.10E-11</td>
+ </tr>
+ <tr>
+  <td>1.625</td>
+  <td>0.1472912354</td>
+  <td>0.14729123542343325</td>
+  <td align="right"> 2.34E-11</td>
+ </tr>
+ <tr>
+  <td>1.630</td>
+  <td>0.1514887158</td>
+  <td>0.15148871581995815</td>
+  <td align="right"> 1.99E-11</td>
+ </tr>
+ <tr>
+  <td>1.635</td>
+  <td>0.1556694120</td>
+  <td>0.15566941198435302</td>
+  <td align="right"> -1.56E-11</td>
+ </tr>
+ <tr>
+  <td>1.640</td>
+  <td>0.1598334529</td>
+  <td>0.15983345288341522</td>
+  <td align="right"> -1.65E-11</td>
+ </tr>
+ <tr>
+  <td>1.645</td>
+  <td>0.1639809660</td>
+  <td>0.16398096604610457</td>
+  <td align="right"> 4.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.650</td>
+  <td>0.1681120776</td>
+  <td>0.16811207758432767</td>
+  <td align="right"> -1.56E-11</td>
+ </tr>
+ <tr>
+  <td>1.655</td>
+  <td>0.1722269122</td>
+  <td>0.17222691221335784</td>
+  <td align="right"> 1.33E-11</td>
+ </tr>
+ <tr>
+  <td>1.660</td>
+  <td>0.1763255933</td>
+  <td>0.17632559327189457</td>
+  <td align="right"> -2.81E-11</td>
+ </tr>
+ <tr>
+  <td>1.665</td>
+  <td>0.1804082427</td>
+  <td>0.18040824274177392</td>
+  <td align="right"> 4.17E-11</td>
+ </tr>
+ <tr>
+  <td>1.670</td>
+  <td>0.1844749813</td>
+  <td>0.1844749812673292</td>
+  <td align="right"> -3.26E-11</td>
+ </tr>
+ <tr>
+  <td>1.675</td>
+  <td>0.1885259282</td>
+  <td>0.18852592817442249</td>
+  <td align="right"> -2.55E-11</td>
+ </tr>
+ <tr>
+  <td>1.680</td>
+  <td>0.1925612015</td>
+  <td>0.19256120148913258</td>
+  <td align="right"> -1.08E-11</td>
+ </tr>
+ <tr>
+  <td>1.685</td>
+  <td>0.1965809180</td>
+  <td>0.19658091795613342</td>
+  <td align="right"> -4.38E-11</td>
+ </tr>
+ <tr>
+  <td>1.690</td>
+  <td>0.2005851931</td>
+  <td>0.20058519305674649</td>
+  <td align="right"> -4.32E-11</td>
+ </tr>
+ <tr>
+  <td>1.695</td>
+  <td>0.2045741410</td>
+  <td>0.20457414102668603</td>
+  <td align="right"> 2.66E-11</td>
+ </tr>
+ <tr>
+  <td>1.700</td>
+  <td>0.2085478749</td>
+  <td>0.20854787487349435</td>
+  <td align="right"> -2.65E-11</td>
+ </tr>
+ <tr>
+  <td>1.705</td>
+  <td>0.2125065064</td>
+  <td>0.21250650639368796</td>
+  <td align="right"> -6.31E-12</td>
+ </tr>
+ <tr>
+  <td>1.710</td>
+  <td>0.2164501462</td>
+  <td>0.21645014618960501</td>
+  <td align="right"> -1.03E-11</td>
+ </tr>
+ <tr>
+  <td>1.715</td>
+  <td>0.2203789037</td>
+  <td>0.2203789036859658</td>
+  <td align="right"> -1.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.720</td>
+  <td>0.2242928871</td>
+  <td>0.22429288714615725</td>
+  <td align="right"> 4.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.725</td>
+  <td>0.2281922037</td>
+  <td>0.22819220368823745</td>
+  <td align="right"> -1.17E-11</td>
+ </tr>
+ <tr>
+  <td>1.730</td>
+  <td>0.2320769593</td>
+  <td>0.23207695930067274</td>
+  <td align="right"> 6.72E-13</td>
+ </tr>
+ <tr>
+  <td>1.735</td>
+  <td>0.2359472589</td>
+  <td>0.23594725885781176</td>
+  <td align="right"> -4.21E-11</td>
+ </tr>
+ <tr>
+  <td>1.740</td>
+  <td>0.2398032061</td>
+  <td>0.23980320613509676</td>
+  <td align="right"> 3.50E-11</td>
+ </tr>
+ <tr>
+  <td>1.745</td>
+  <td>0.2436449038</td>
+  <td>0.24364490382402559</td>
+  <td align="right"> 2.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.750</td>
+  <td>0.2474724535</td>
+  <td>0.2474724535468612</td>
+  <td align="right"> 4.68E-11</td>
+ </tr>
+ <tr>
+  <td>1.755</td>
+  <td>0.2512859559</td>
+  <td>0.25128595587109781</td>
+  <td align="right"> -2.89E-11</td>
+ </tr>
+ <tr>
+  <td>1.760</td>
+  <td>0.2550855103</td>
+  <td>0.25508551032368809</td>
+  <td align="right"> 2.36E-11</td>
+ </tr>
+ <tr>
+  <td>1.765</td>
+  <td>0.2588712154</td>
+  <td>0.25887121540503744</td>
+  <td align="right"> 5.03E-12</td>
+ </tr>
+ <tr>
+  <td>1.770</td>
+  <td>0.2626431686</td>
+  <td>0.26264316860276249</td>
+  <td align="right"> 2.76E-12</td>
+ </tr>
+ <tr>
+  <td>1.775</td>
+  <td>0.2664014664</td>
+  <td>0.2664014664052331</td>
+  <td align="right"> 5.23E-12</td>
+ </tr>
+ <tr>
+  <td>1.780</td>
+  <td>0.2701462043</td>
+  <td>0.27014620431488368</td>
+  <td align="right"> 1.48E-11</td>
+ </tr>
+ <tr>
+  <td>1.785</td>
+  <td>0.2738774769</td>
+  <td>0.27387747686131236</td>
+  <td align="right"> -3.86E-11</td>
+ </tr>
+ <tr>
+  <td>1.790</td>
+  <td>0.2775953776</td>
+  <td>0.27759537761416786</td>
+  <td align="right"> 1.41E-11</td>
+ </tr>
+ <tr>
+  <td>1.795</td>
+  <td>0.2812999992</td>
+  <td>0.2812999991958266</td>
+  <td align="right"> -4.17E-12</td>
+ </tr>
+ <tr>
+  <td>1.800</td>
+  <td>0.2849914333</td>
+  <td>0.2849914332938619</td>
+  <td align="right"> -6.13E-12</td>
+ </tr>
+ <tr>
+  <td>1.805</td>
+  <td>0.2886697707</td>
+  <td>0.28866977067331689</td>
+  <td align="right"> -2.66E-11</td>
+ </tr>
+ <tr>
+  <td>1.810</td>
+  <td>0.2923351012</td>
+  <td>0.29233510118877948</td>
+  <td align="right"> -1.12E-11</td>
+ </tr>
+ <tr>
+  <td>1.815</td>
+  <td>0.2959875138</td>
+  <td>0.29598751379626109</td>
+  <td align="right"> -3.73E-12</td>
+ </tr>
+ <tr>
+  <td>1.820</td>
+  <td>0.2996270966</td>
+  <td>0.29962709656488773</td>
+  <td align="right"> -3.51E-11</td>
+ </tr>
+ <tr>
+  <td>1.825</td>
+  <td>0.3032539367</td>
+  <td>0.30325393668840539</td>
+  <td align="right"> -1.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.830</td>
+  <td>0.3068681205</td>
+  <td>0.30686812049650136</td>
+  <td align="right"> -3.49E-12</td>
+ </tr>
+ <tr>
+  <td>1.835</td>
+  <td>0.3104697335</td>
+  <td>0.31046973346594764</td>
+  <td align="right"> -3.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.840</td>
+  <td>0.3140588602</td>
+  <td>0.31405886023156859</td>
+  <td align="right"> 3.15E-11</td>
+ </tr>
+ <tr>
+  <td>1.845</td>
+  <td>0.3176355846</td>
+  <td>0.31763558459703256</td>
+  <td align="right"> -2.96E-12</td>
+ </tr>
+ <tr>
+  <td>1.850</td>
+  <td>0.3211999895</td>
+  <td>0.32119998954547946</td>
+  <td align="right"> 4.54E-11</td>
+ </tr>
+ <tr>
+  <td>1.855</td>
+  <td>0.3247521572</td>
+  <td>0.32475215724997797</td>
+  <td align="right"> 4.99E-11</td>
+ </tr>
+ <tr>
+  <td>1.860</td>
+  <td>0.3282921691</td>
+  <td>0.32829216908382075</td>
+  <td align="right"> -1.61E-11</td>
+ </tr>
+ <tr>
+  <td>1.865</td>
+  <td>0.3318201056</td>
+  <td>0.33182010563065989</td>
+  <td align="right"> 3.06E-11</td>
+ </tr>
+ <tr>
+  <td>1.870</td>
+  <td>0.3353360467</td>
+  <td>0.33533604669448569</td>
+  <td align="right"> -5.51E-12</td>
+ </tr>
+ <tr>
+  <td>1.875</td>
+  <td>0.3388400713</td>
+  <td>0.33884007130944738</td>
+  <td align="right"> 9.44E-12</td>
+ </tr>
+ <tr>
+  <td>1.880</td>
+  <td>0.3423322577</td>
+  <td>0.34233225774952925</td>
+  <td align="right"> 4.95E-11</td>
+ </tr>
+ <tr>
+  <td>1.885</td>
+  <td>0.3458126835</td>
+  <td>0.34581268353806771</td>
+  <td align="right"> 3.80E-11</td>
+ </tr>
+ <tr>
+  <td>1.890</td>
+  <td>0.3492814255</td>
+  <td>0.34928142545713492</td>
+  <td align="right"> -4.28E-11</td>
+ </tr>
+ <tr>
+  <td>1.895</td>
+  <td>0.3527385596</td>
+  <td>0.35273855955676792</td>
+  <td align="right"> -4.32E-11</td>
+ </tr>
+ <tr>
+  <td>1.900</td>
+  <td>0.3561841612</td>
+  <td>0.35618416116406026</td>
+  <td align="right"> -3.59E-11</td>
+ </tr>
+ <tr>
+  <td>1.905</td>
+  <td>0.3596183049</td>
+  <td>0.35961830489211799</td>
+  <td align="right"> -7.88E-12</td>
+ </tr>
+ <tr>
+  <td>1.910</td>
+  <td>0.3630410646</td>
+  <td>0.36304106464888108</td>
+  <td align="right"> 4.88E-11</td>
+ </tr>
+ <tr>
+  <td>1.915</td>
+  <td>0.3664525136</td>
+  <td>0.36645251364580167</td>
+  <td align="right"> 4.58E-11</td>
+ </tr>
+ <tr>
+  <td>1.920</td>
+  <td>0.3698527244</td>
+  <td>0.36985272440640171</td>
+  <td align="right"> 6.40E-12</td>
+ </tr>
+ <tr>
+  <td>1.925</td>
+  <td>0.3732417688</td>
+  <td>0.37324176877469795</td>
+  <td align="right"> -2.53E-11</td>
+ </tr>
+ <tr>
+  <td>1.930</td>
+  <td>0.3766197179</td>
+  <td>0.37661971792349891</td>
+  <td align="right"> 2.34E-11</td>
+ </tr>
+ <tr>
+  <td>1.935</td>
+  <td>0.3799866424</td>
+  <td>0.37998664236258128</td>
+  <td align="right"> -3.74E-11</td>
+ </tr>
+ <tr>
+  <td>1.940</td>
+  <td>0.3833426119</td>
+  <td>0.38334261194674013</td>
+  <td align="right"> 4.67E-11</td>
+ </tr>
+ <tr>
+  <td>1.945</td>
+  <td>0.3866876959</td>
+  <td>0.38668769588372298</td>
+  <td align="right"> -1.62E-11</td>
+ </tr>
+ <tr>
+  <td>1.950</td>
+  <td>0.3900219627</td>
+  <td>0.39002196274204304</td>
+  <td align="right"> 4.20E-11</td>
+ </tr>
+ <tr>
+  <td>1.955</td>
+  <td>0.3933454805</td>
+  <td>0.39334548045868012</td>
+  <td align="right"> -4.13E-11</td>
+ </tr>
+ <tr>
+  <td>1.960</td>
+  <td>0.3966583163</td>
+  <td>0.39665831634666171</td>
+  <td align="right"> 4.66E-11</td>
+ </tr>
+ <tr>
+  <td>1.965</td>
+  <td>0.3999605371</td>
+  <td>0.39996053710254509</td>
+  <td align="right"> 2.54E-12</td>
+ </tr>
+ <tr>
+  <td>1.970</td>
+  <td>0.4032522088</td>
+  <td>0.40325220881377177</td>
+  <td align="right"> 1.37E-11</td>
+ </tr>
+ <tr>
+  <td>1.975</td>
+  <td>0.4065333970</td>
+  <td>0.40653339696592627</td>
+  <td align="right"> -3.40E-11</td>
+ </tr>
+ <tr>
+  <td>1.980</td>
+  <td>0.4098041664</td>
+  <td>0.40980416644989071</td>
+  <td align="right"> 4.98E-11</td>
+ </tr>
+ <tr>
+  <td>1.985</td>
+  <td>0.4130645816</td>
+  <td>0.41306458156888626</td>
+  <td align="right"> -3.11E-11</td>
+ </tr>
+ <tr>
+  <td>1.990</td>
+  <td>0.4163147060</td>
+  <td>0.41631470604541487</td>
+  <td align="right"> 4.54E-11</td>
+ </tr>
+ <tr>
+  <td>1.995</td>
+  <td>0.4195546030</td>
+  <td>0.41955460302810832</td>
+  <td align="right"> 2.81E-11</td>
+ </tr>
+ <tr>
+  <td>2.000</td>
+  <td>0.4227843351</td>
+  <td>0.42278433509846725</td>
+  <td align="right"> -1.53E-12</td>
+ </tr>
+</table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/doctitle.png b/src/axiom-website/hyperdoc/doctitle.png
new file mode 100644
index 0000000..cedadc0
Binary files /dev/null and b/src/axiom-website/hyperdoc/doctitle.png differ
diff --git a/src/axiom-website/hyperdoc/draw.xhtml b/src/axiom-website/hyperdoc/draw.xhtml
new file mode 100644
index 0000000..6407785
--- /dev/null
+++ b/src/axiom-website/hyperdoc/draw.xhtml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td>
+      What would you like to draw?
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <center>
+      <b>Two Dimensional Plots</b>
+     </center>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="draw2donevariable.xhtml">
+      A function of one variable
+     </a>
+    </td>
+    <td> 
+     y = f(x)
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="draw2ddefinedcurve.xhtml">
+      A parametrically defined curve
+     </a>
+    </td>
+    <td>
+     (x(t), y(t))
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="draw2dpolynomialequation.xhtml">
+      A solution to a polynomial equation
+     </a>
+    </td>
+    <td>
+     p(x,y) = 0
+    </td>
+   </tr>
+   <tr>
+    <td>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <center>
+      <b>Three Dimensional Plots</b>
+     </center>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="draw3dtwovariable.xhtml">
+      A function of two variable
+     </a>
+    </td>
+    <td>
+     y = f(x,y)
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="draw3ddefinedtube.xhtml">
+      A parametrically defined tube
+     </a>
+    </td>
+    <td>
+     (x(t), y(t), z(t))
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="draw3ddefinedsurface.xhtml">
+      A parametrically defined surface
+     </a>
+    </td>
+    <td>
+     (x(u,v), y(u,v), z(u,v))
+    </td>
+   </tr>
+   <tr>
+    <td>
+    </td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/draw2ddefinedcurve.xhtml b/src/axiom-website/hyperdoc/draw2ddefinedcurve.xhtml
new file mode 100644
index 0000000..4a8ff29
--- /dev/null
+++ b/src/axiom-website/hyperdoc/draw2ddefinedcurve.xhtml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc1 = document.getElementById('function1').value;
+    myfunc2 = document.getElementById('function2').value;
+    myvar = document.getElementById('var').value;
+    myfrom = document.getElementById('range1').value;
+    myto = document.getElementById('range2').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans=
+      'draw(curve('+myfunc1+','+myfunc2+'),'+myvar+'='+myfrom+'..'+myto+')';
+    } else {
+     ans = 
+      'draw(curve('+myfunc1+','+myfunc2+'),'+myvar+'='+myfrom+'..'+myto+
+            ',title=="'+mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ <center>
+  Drawing a parametrically defined curve<br/>
+  (f1(t),f2(t))<br/>
+  in terms of two functions f1 and f2<br/>
+  and an independent variable t
+ </center>
+  <table>
+   <tr>
+    <td>
+     Enter the two functions:<br/>
+     Function 1:<br/>
+     <input type="text" id="function1" size="80" tabindex="10"
+       value="-9*sin(4*t/5)"/><br/>
+     Function 2:<br/>
+     <input type="text" id="function2" size="80" tabindex="20"
+       value="8*sin(t)"/><br/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+    Enter the independent variable and range:<br/>
+    Variable: 
+     <input type="text" id="var" size="10" tabindex="30" value="t"/>
+     ranges from:
+     <input type="text" id="range1" size="10" tabindex="40" value="-5*%pi"/>
+     to:
+     <input type="text" id="range2" size="10" tabindex="45" value="5*%pi"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your curve:
+     <input type="text" id="title1" size="20" tabindex="50"
+       value="Lissajous"/>
+    </td>
+   </tr>
+  </table>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/draw2donevariable.xhtml b/src/axiom-website/hyperdoc/draw2donevariable.xhtml
new file mode 100644
index 0000000..0ddf126
--- /dev/null
+++ b/src/axiom-website/hyperdoc/draw2donevariable.xhtml
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function').value;
+    myvar = document.getElementById('var').value;
+    myfrom = document.getElementById('range1').value;
+    myto = document.getElementById('range2').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans = 'draw('+myfunc+','+myvar+'='+myfrom+'..'+myto+')';
+    } else {
+     ans = 
+      'draw('+myfunc+','+myvar+'='+myfrom+'..'+myto+',title=="'+mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ <center>
+  Drawing y=f(x)<br/>
+  where y is the dependent variable and<br/>
+  where x is the independent variable
+ </center>
+  <table>
+   <tr>
+    <td>
+      What function f would you like to draw?
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <input type="text" id="function" size="80" tabindex="10"
+       value="x*cos(x)"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter independent variable and range:<br/>
+     Variable:
+     <input type="text" id="var" size="10" tabindex="30" value="x"/>
+     ranges from:
+     <input type="text" id="range1" size="10" tabindex="40" value="0"/>
+     to:
+     <input type="text" id="range2" size="10" tabindex="45" value="30"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your curve:
+     <input type="text" id="title1" size="20" tabindex="50"
+       value="y=x*cos(x)"/>
+    </td>
+   </tr>
+  </table>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/draw2dpolynomialequation.xhtml b/src/axiom-website/hyperdoc/draw2dpolynomialequation.xhtml
new file mode 100644
index 0000000..73b5bd3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/draw2dpolynomialequation.xhtml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function1').value;
+    myvar1 = document.getElementById('var1').value;
+    myfrom1 = document.getElementById('range11').value;
+    myto1 = document.getElementById('range21').value;
+    myvar2 = document.getElementById('var2').value;
+    myfrom2 = document.getElementById('range12').value;
+    myto2 = document.getElementById('range22').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans=
+      'draw('+myfunc+'=0,'+myvar1+','+myvar2+',range==['+
+            myfrom1+'..'+myto1+','+myfrom2+'..'+myto2+'])';
+    } else {
+     ans=
+      'draw('+myfunc+'=0,'+myvar1+','+myvar2+',range==['+
+         myfrom1+'..'+myto1+','+myfrom2+'..'+myto2+'],title=="'+mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ <center>
+  Plotting the solution to p(x,y)=0, where<br/>
+  p is a polynomial in two variables x and y
+ </center>
+  <table>
+   <tr>
+    <td>
+     Enter the polynomial p:<br/>
+     <input type="text" id="function1" size="80" tabindex="10"
+       value="y^2+7*x*y-(x^3+16*x)"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+    Enter the variables:<br/>
+    Variable 1: 
+     <input type="text" id="var1" size="10" tabindex="30" value="x"/>
+     ranges from:
+     <input type="text" id="range11" size="10" tabindex="40" value="-15"/>
+     to:
+     <input type="text" id="range21" size="10" tabindex="45" value="10"/><br/>
+    Variable 2: 
+     <input type="text" id="var2" size="10" tabindex="46" value="y"/>
+     ranges from:
+     <input type="text" id="range12" size="10" tabindex="47" value="-10"/>
+     to:
+     <input type="text" id="range22" size="10" tabindex="48" value="50"/><br/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your curve:
+     <input type="text" id="title1" size="20" tabindex="50"/>
+    </td>
+   </tr>
+  </table>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/draw3ddefinedsurface.xhtml b/src/axiom-website/hyperdoc/draw3ddefinedsurface.xhtml
new file mode 100644
index 0000000..3041711
--- /dev/null
+++ b/src/axiom-website/hyperdoc/draw3ddefinedsurface.xhtml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc1 = document.getElementById('function1').value;
+    myfunc2 = document.getElementById('function2').value;
+    myfunc3 = document.getElementById('function3').value;
+    myvar1 = document.getElementById('var1').value;
+    myfrom1 = document.getElementById('range1').value;
+    myto1 = document.getElementById('range2').value;
+    myvar2 = document.getElementById('var11').value;
+    myfrom2 = document.getElementById('range11').value;
+    myto2 = document.getElementById('range21').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans=
+      'draw(surface('+myfunc1+','+myfunc2+','+myfunc3+'),'+
+        myvar1+'='+myfrom1+'..'+myto1+','+
+        myvar2+'='+myfrom2+'..'+myto2+')';
+    } else {
+     ans=
+      'draw(surface('+myfunc1+','+myfunc2+','+myfunc3+'),'+
+        myvar1+'='+myfrom1+'..'+myto1+','+
+        myvar2+'='+myfrom2+'..'+myto2+',title=="'+mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ <center>
+  Drawing a parametrically defined surface<br/>
+  (f1(u,v), f2(u,v), f3(u,v))<br/>
+  in terms of three functions f1, f2, and f3<br/>
+  and two independent variables u and v
+ </center>
+  <table>
+   <tr>
+    <td>
+     Enter the three functions of the independent variable:<br/>
+     Function f1: 
+     <input type="text" id="function1" size="70" tabindex="10"
+       value="u*sin(v)"/><br/>
+     Function f2: 
+     <input type="text" id="function2" size="70" tabindex="20"
+       value="v*cos(u)"/><br/>
+     Function f3: 
+     <input type="text" id="function3" size="70" tabindex="30"
+       value="u*cos(v)"/><br/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+    Enter the independent variables and range:<br/>
+    Variable 1: 
+     <input type="text" id="var1" size="10" tabindex="40" value="u"/>
+     ranges from:
+     <input type="text" id="range1" size="10" tabindex="50" value="-%pi"/>
+     to:
+     <input type="text" id="range2" size="10" tabindex="60" value="%pi"/>
+    <br/>
+    Variable 2: 
+     <input type="text" id="var11" size="10" tabindex="70" value="v"/>
+     ranges from:
+     <input type="text" id="range11" size="10" tabindex="80" value="-%pi/2"/>
+     to:
+     <input type="text" id="range21" size="10" tabindex="90" value="%pi/2"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your surface:
+     <input type="text" id="title1" size="20" tabindex="100"/>
+    </td>
+   </tr>
+  </table>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/draw3ddefinedtube.xhtml b/src/axiom-website/hyperdoc/draw3ddefinedtube.xhtml
new file mode 100644
index 0000000..4731845
--- /dev/null
+++ b/src/axiom-website/hyperdoc/draw3ddefinedtube.xhtml
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc1 = document.getElementById('function1').value;
+    myfunc2 = document.getElementById('function2').value;
+    myfunc3 = document.getElementById('function3').value;
+    myvar1 = document.getElementById('var1').value;
+    myfrom1 = document.getElementById('range1').value;
+    myto1 = document.getElementById('range2').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans=
+      'draw(curve('+myfunc1+','+myfunc2+','+myfunc3+'),'+myvar1+'='+
+        myfrom1+'..'+myto1+',tubeRadius==.25,tubePoints==16)';
+    } else {
+     ans=
+      'draw(curve('+myfunc1+','+myfunc2+','+myfunc3+'),'+myvar1+'='+
+        myfrom1+'..'+myto1+',tubeRadius==.25,tubePoints==16,title=="'+
+        mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ <center>
+  Drawing a parmetrically defined curve: (f1(t), f2(t), f3(t))<br/>
+  in terms of three functions f1, f2, and f3<br/>
+  and an independent variable t
+ </center>
+  <table>
+   <tr>
+    <td>
+     Enter the three functions of the independent variable:<br/>
+     Function f1: 
+     <input type="text" id="function1" size="70" tabindex="10"
+       value="1.3*cos(2*t)*cos(4*t)+sin(4*t)*cos(t)"/><br/>
+     Function f2: 
+     <input type="text" id="function2" size="70" tabindex="20"
+       value="1.3*sin(2*t)*cos(4*t)-sin(4*t)*sin(t)"/><br/>
+     Function f3: 
+     <input type="text" id="function3" size="70" tabindex="30"
+       value="2.5*cos(4*t)"/><br/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+    Enter the independent variable and range:<br/>
+    Variable: 
+     <input type="text" id="var1" size="10" tabindex="40" value="t"/>
+     ranges from:
+     <input type="text" id="range1" size="10" tabindex="50" value="0"/>
+     to:
+     <input type="text" id="range2" size="10" tabindex="60" value="4*%pi"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your surface:
+     <input type="text" id="title1" size="20" tabindex="70" value="knot"/>
+    </td>
+   </tr>
+  </table>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/draw3dtwovariable.xhtml b/src/axiom-website/hyperdoc/draw3dtwovariable.xhtml
new file mode 100644
index 0000000..8b355d6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/draw3dtwovariable.xhtml
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function1').value;
+    myvar1 = document.getElementById('var1').value;
+    myfrom1 = document.getElementById('range11').value;
+    myto1 = document.getElementById('range21').value;
+    myvar2 = document.getElementById('var2').value;
+    myfrom2 = document.getElementById('range12').value;
+    myto2 = document.getElementById('range22').value;
+    mytitle = document.getElementById('title1').value;
+    if (mytitle == "") {
+     ans=
+      'draw('+myfunc+','+myvar1+'='+myfrom1+'..'+myto1+','+
+                         myvar2+'='+myfrom2+'..'+myto2+')';
+    } else {
+     ans=
+      'draw('+myfunc+','+myvar1+'='+myfrom1+'..'+myto1+','+
+                         myvar2+'='+myfrom2+'..'+myto2+
+                         ',title=="'+mytitle+'")';
+    }
+    alert(ans);
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ <center>
+  Drawing z=f(x,y)<br/>
+  where z is the dependent variable and<br/>
+  where x, y are the independent variables
+ </center>
+  <table>
+   <tr>
+    <td>
+     What function f which you like to draw?<br/>
+     <input type="text" id="function1" size="80" tabindex="10"
+       value="exp(cos(x-y)-sin(x*y))-2"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+    Enter the independent variables and ranges:<br/>
+    Variable 1: 
+     <input type="text" id="var1" size="10" tabindex="30" value="x"/>
+     ranges from:
+     <input type="text" id="range11" size="10" tabindex="40" value="-5"/>
+     to:
+     <input type="text" id="range21" size="10" tabindex="45" value="5"/><br/>
+    Variable 2: 
+     <input type="text" id="var2" size="10" tabindex="46" value="y"/>
+     ranges from:
+     <input type="text" id="range12" size="10" tabindex="47" value="-5"/>
+     to:
+     <input type="text" id="range22" size="10" tabindex="48" value="5"/><br/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Optionally enter a title for your curve:
+     <input type="text" id="title1" size="20" tabindex="50"/>
+    </td>
+   </tr>
+  </table>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/equationpage.xhtml b/src/axiom-website/hyperdoc/equationpage.xhtml
new file mode 100644
index 0000000..53a4279
--- /dev/null
+++ b/src/axiom-website/hyperdoc/equationpage.xhtml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+Axiom lets you solve equations of various types:
+  <table>
+   <tr>
+    <td>
+     <a href="equsystemlinear.xhtml">
+      Solution of Systems of Linear Equations
+     </a>
+    </td>
+    <td>
+     Solve systems of linear equations
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="polyroots3.xhtml">
+      Solution of a Single Polynomial Equation
+     </a>
+    </td>
+    <td>
+     Find roots of polynomials
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="polyroots4.xhtml">
+      Solution of a System of Polynomial Equations
+     </a>
+    </td>
+    <td>
+     Solve systems of polynomial equations
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="equdifferential.xhtml">
+      Solution of Differential Equations
+     </a>
+    </td>
+    <td>
+     Closed form and series solutions of differential equations
+    </td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/equdifferential.xhtml b/src/axiom-website/hyperdoc/equdifferential.xhtml
new file mode 100644
index 0000000..5a6419e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/equdifferential.xhtml
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Solution of Differential Equations</div>
+  <hr/>
+In this section we discuss Axiom's facilities for solving differential 
+equations in closed-form and in series.
+
+Axiom provides facilities for closed-form solution of single differential
+equations of the following kinds:
+<ul>
+ <li>linear ordinary differential equations
+ </li>
+ <li>non-linear first order ordinary differential equations when integrating
+     factors can be found just by integration
+ </li>
+</ul>
+
+For a discussion of the solution of systems of linear and polynomial 
+equations, see <a href="axbook/section-8.5.xhtml">Solution of Linear
+and Polynomial Equations</a>.
+<ul>
+ <li>
+  <a href="equdifferentiallinear.xhtml">
+   Closed-Form Solutions of Linear Differential Equations
+  </a>
+ </li>
+ <li>
+  <a href="equdifferentialnonlinear.xhtml">
+   Closed-Form Solutions of Non-Linear Differential Equations
+  </a>
+ </li>
+ <li>
+  <a href="equdifferentialpowerseries.xhtml">
+   Power Series Solutions of Differential Equations
+  </a>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/equdifferentiallinear.xhtml b/src/axiom-website/hyperdoc/equdifferentiallinear.xhtml
new file mode 100644
index 0000000..2327a73
--- /dev/null
+++ b/src/axiom-website/hyperdoc/equdifferentiallinear.xhtml
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   Closed-Form Solutions of Linear Differential Equations
+  </div>
+  <hr/>
+A differential equation is an equation involving an unknown function and
+one or more of its derivatives. The equation is called ordinary if 
+derivatives with respect to only one dependent variable appear in the
+equation (it is called partial otherwise). The package
+<a href="db.xhtml?ElementaryFunctionODESolver">ElementaryFunctionODESolver</a>
+provides the top-level operation
+<a href="dbopsolve.xhtml">solve</a> for finding closed-form solutions of
+ordinary differential equations.
+
+To solve a differential equation, you must first create an operator for the
+unknown function. We let y be the unknown function in terms of x.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="y:=operator 'y" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You then type the equation using <a href="dbopd.xhtml">D</a> to create the
+derivatives of the unknown function y(x) where x is any symbol you choose
+(the so-called dependent variable). This is how you enter the equation
+<pre>
+    y'' + y' + y = 0
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="deq:=D(y x,x,2)+D(y x,x)+y x=0" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The simplest way to invoke the <a href="dbopsolve.xhtml">solve</a> command
+is with three arguments, 
+<ul>
+ <li>the differential equation</li>
+ <li>the operator representing the unknown function</li>
+ <li>the dependent variable</li>
+</ul>
+So, to solve the above equation, we enter this.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="solve(deq,y,x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Since linear ordinary differential equations have infinitely many solutions,
+<a href="dbopsolve.xhtml">solve</a> returns a particular solution f_p and
+a basis f1,..fn for the solutions of the corresponding homogeneous equation.
+Any expression of the form fp+c1 f1+...+cn fn where the ci do not involve the
+dependent variable is also a solution. This is similar to what you get when
+you solve systems of linear algebraic equations.
+
+A way to select a unique solution is to specify initial conditions: choose a
+value a for the dependent variable and specify the values of the unknown
+function and its derivatives at a. If the number of initial conditions is
+equal to the order of the equation, then the solution is unique (if it exists
+in closed form) and <a href="dbopsolve.xhtml">solve</a> tries to find it. To
+specify initial conditions to <a href="dbopsolve.xhtml">solve</a>, use an
+<a href="db.xhtml?Equation">Equation</a> of the form x=a for the third
+parameter instead of the dependent variable, and add a fourth parameter
+consisting of the list of values y(a), y'(a), ...
+
+To find the solution of y''+y=0 satisfying y(0)=y'(0)=1, do this.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="deq:=D(y x,x,2)+y x" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You can omit the "=0" when you enter the equation to be solved.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p4','p5']);"
+    value="solve(deq,y,x=0,[1,1])" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Axiom is not limited to linear differential equations with constant
+coefficients. It can also find solutions when the coefficients are
+rational or algebraic functions of the dependent variable. Furthermore,
+Axiom is not limited by the order of the equation. Axiom can solve the
+following thrid order equations with polynomial coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p6']);"
+    value="deq:=x^3*D(y x,x,3)+x^2*D(y x,x,2)-2*x*D(y x,x)+2*yx=2*x^4" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p6','p7']);"
+    value="solve(deq,y,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+On the other hand, and in contrast with the operation
+<a href="dbopintegrate.xhtml">integrate</a> it can happen that Axiom finds
+no solution and that some closed-form solution still exists. While it is
+mathematically complicated to describe exactly when the solutions are
+guaranteed to be found, the following statements are correct and form
+good guidelines for linear ordinary differential equations.
+<ul>
+ <li>If the coefficients are constants, Axiom finds a complete basis of
+     solutions (i.e. all solutions).
+ </li>
+ <li>If the coefficients are rational functions in the dependent variable,
+     Axiom ast least finds all solutions that do not involve algebraic
+     functions.
+ </li>
+</ul>
+Note that this last statement does not mean that Axiom does not find the
+solutions that are algebraic functions. It means that it is not guaranteed
+that the algebraic function solutions will be found. This is an example
+where all the algebraic solutions are found.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p8']);"
+    value="deq:=(x^2+1)*D(y x,x,2)+3*x*D(y x,x)+y x=0" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p8','p9']);"
+    value="solve(deq,y,x)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/equdifferentialnonlinear.xhtml b/src/axiom-website/hyperdoc/equdifferentialnonlinear.xhtml
new file mode 100644
index 0000000..f965d98
--- /dev/null
+++ b/src/axiom-website/hyperdoc/equdifferentialnonlinear.xhtml
@@ -0,0 +1,397 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   Closed-Form Solutions of Non-Linear Differential Equations
+  </div>
+  <hr/>
+This is an example that shows how to solve a non-linear first order 
+ordinary differential equation manually when an integrating factor can
+be found just by integration. At the end, we show you how to solve it
+directly.
+
+Let's solve the differential equation
+<pre>
+  y' = y/(x + y log y)
+</pre>
+Using the notation
+<pre>
+  m(x,y)+n(x,y)y' = 0
+</pre>
+we have m=-y and n=x+y*log y
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:=-y" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="n:=x+y*log y" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+We first check for exactness, that is, does dm/dy=dn/dx?
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="D(m,y)-D(n,x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+This is not zero, so the equation is not exact. Therefore we must look
+for an integrating factor, that is, a function mu(x,y) such that 
+d(mu m)/dy=d(mu n)/dx. Normally, we first search for mu(x,y) depending only
+on x or only on y. Let's search for such a mu(x) first.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="mu:=operator 'mu" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p5']);"
+    value="a:=D(mu(x)*m,y)-D(mu(x)*n,x)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+If the above is zero for a function mu that does not depend on y, then
+mu(x) is an integrating factor.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p5','p6']);"
+    value="solve(a=0,mu,x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+The solution depends on y, so there is no integrating factor that depends
+on x only. Let's look for on that depends on y only.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7']);"
+    value="b:=D(mu(y)*m,y)-D(mu(y)*n,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8']);"
+    value="sb:=solve(b=0,mu,y)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+We've found one. The above mu(y) is an integrating factor. We must multiply
+our initial equation (that is, m and n) by the integrating factor.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8','p9']);"
+    value="intFactor:=sb.basis.1" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8','p9','p10']);"
+    value="m:=intFactor*m" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8','p9','p11']);"
+    value="n:=intFactor*n" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+Let's check for exactness.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8','p9','p10','p11','p12']);"
+    value="D(m,y)-D(n,x)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+We must solve the exact equation, that is, find a function s(x,y) such that
+ds/dx=m and ds/dy=n. We start by writing 
+<pre>
+  s(x,y) = h(y) + integrate(m,x)
+</pre>
+where h(y) is an unknown function of y. This guarantees that ds/dx=m.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="makeRequest('p13');"
+    value="h:=operator 'h" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p1','p2','p4','p7','p8','p9','p10','p13','p14']);"
+    value="sol:=h y+integrate(m,x)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+All we want is to find h(y) such that ds/dy=n.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick=
+     "handleFree(['p1','p2','p4','p7','p8','p9','p10','p13','p14','p15']);"
+    value="dsol:=D(sol,y)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick=
+   "handleFree(['p1','p2','p4','p7','p8','p9','p10','p13','p14','p15','p16']);"
+    value="nsol:=solve(dsol=n,h,y)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+The above particular solution is the h(y) we want, so we just replace h(y)
+by it in the implicit solution.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick=
+"handleFree(['p1','p2','p4','p7','p8','p9','p10','p13','p14','p15','p16','p17']);"
+    value="eval(sol,h y=nsol.particular)" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+A first integral of the initial equation is obtained by setting this result
+equal to an arbitrary constant.
+
+Now that we've seen how to solve the equation "by hand" we show you how to 
+do it with the <a href="dbopsolve.xhtml">solve</a> operation. First define
+y to be an operator.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="makeRequest('p18');"
+    value="y:=operator 'y" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+Next we create the differential equation.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p18','p19']);"
+    value="deq:=D(y x,x)=y(x)/(x+y(x)*log y x)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+Finally, we solve it.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p18','p19','p20']);"
+    value="solve(deq,y,x)" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/equdifferentialpowerseries.xhtml b/src/axiom-website/hyperdoc/equdifferentialpowerseries.xhtml
new file mode 100644
index 0000000..87dc9fd
--- /dev/null
+++ b/src/axiom-website/hyperdoc/equdifferentialpowerseries.xhtml
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">
+   Power Series Solutions of Differential Equations
+  </div>
+  <hr/>
+The command to solve differential equations in power series around a
+particular initial point with specific initial conditions is called
+<a href="dbopseriessolve.xhtml">seriesSolve</a>. It can take a variety of
+parameters, so we illustrate its use with some examples.
+
+Since the coefficients of some solutions are quite large, we reset the
+default to compute only seven terms.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="noresult" 
+    onclick="makeRequest('p1');"
+    value=")set streams calculate 7" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You can solve a single nonlinear equation of any order. For example, we 
+solve
+<pre>
+  y''' = sin(y'') * exp(y) + cos(x)
+</pre>
+subject to y(0)=1, y'(0)=0, y''(0)=0
+
+We first tell Axiom that the symbol 'y denotes a new operator.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="y:=operator 'y" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Enter the differential equation using y like any system function.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="eq:=D(y(x),x,3)-sin(D(y(x),x,2))*exp(y(x))=cos(x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Solve it around x=0 with the initial conditions y(0)=1, y'(0)=y''(0)=0.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4']);"
+    value="seriesSolve(eq,y,x=0,[1,0,0])" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You can also solve a system of nonlinear first order equations. For 
+example, we solve a system that has tan(t) and sec(t) as solutions.
+
+We tell Axiom that x is also an operator.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="x:=operator 'x" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Enter the two equations forming our system.
+<ul>
+ <li> <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="eq1:=D(x(t),t)=1+x(t)^2" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p2','p5','p7']);"
+    value="eq2:=D(y(t),t)=x(t)*y(t)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Solve the system around t=0 with the initial conditions x(0)=0 and y(0)=1.
+Notice that since we give the unknowns in the order [x,y], the answer is a
+list of two series in the order [series for x(t), series for y(t)].
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p6','p7','p8']);"
+    value="seriesSolve([eq2,eq1],[x,y],t=0,[y(0)=1,x(0)=0])" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+The order in which we give the equations and the initial conditions has no
+effect on the order of the solution.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/equsystemlinear.xhtml b/src/axiom-website/hyperdoc/equsystemlinear.xhtml
new file mode 100644
index 0000000..18d9f41
--- /dev/null
+++ b/src/axiom-website/hyperdoc/equsystemlinear.xhtml
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Solution of Systems of Linear Equations</div>
+  <hr/>
+You can use the operation <a href="dbopsolve.xhtml">solve</a> to solve
+systems of linear equations.
+
+The operation <a href="dbopsolve.xhtml">solve</a> takes two arguments, the
+list of equations and the list of the unknowns to be solved for. A system
+of linear equations need not have a unique solution.
+
+To solve the linear system:
+<pre>
+        x + y + x = 8
+    3*x - 2*y + z = 0
+    x + 2*y + 2*z = 17
+</pre>
+evaluate this expression.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="solve([x+y+x=8,3*x-2*y+z=0,x+2*y+2*z=17],[x,y,z])" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Parameters are given as new variables starting with a percent sign and
+"%" and the variables are expressed in terms of the parameters. If the system
+has no solutions then the empty list is returned.
+
+When you solve the linear system
+<pre>
+      x + 2*y + 3*z = 2
+    2*x + 3*y + 4*z = 2
+    3*x + 4*y + 5*z = 2
+</pre>
+with this expression you get a solution involving a parameter.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="solve([x+2*y+3*z=2,2*x+3*y+4*z=2,3*x+4*y+5*z=2],[x,y,z])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The system can also be presented as a matrix and a vector. The matrix 
+contains the coefficients of the linear equations and the vector contains
+the numbers appearing on the right-hand sides of the equations. You may 
+input the matrix as a list of rows and the vector as a list of its elements.
+
+To solve the system:
+<pre>
+       x + y + z = 8
+   2*x - 2*y + z = 0
+   x + 2*y + 2*z = 17
+</pre>
+in matrix form you would evaluate this expression.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="solve([[1,1,1],[3,-2,1],[1,2,2]],[8,0,17])" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The solutions are presented as a Record with two components: the component
+particular contains a particular solution of the given system or the item
+"failed" if there are no solutions, the component basis contains a list of
+vectors that are a basis for the space of solutions of the corresponding
+homogeneous system. If the system of linear equations does not have a unique
+solution, then the basis component contains non-trivial vectors.
+
+This happens when you solve the linear system
+<pre>
+    x + 2*y + 3*z = 2
+  2*x + 3*y + 4*z = 2
+  3*x + 4*y + 5*z = 2
+</pre>
+with this command.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="solve([[1,2,3],[2,3,4],[3,4,5]],[2,2,2])" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+All solutions of this system are obtained by adding the particular solution
+with a linear combination of the basis vectors.
+
+When no solution exists then "failed" is returned as the particular 
+component, as follows:
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="solve([[1,2,3],[2,3,4],[3,4,5]],[2,3,2])" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+When you want to solve a system of homogeneous equations (that is, a system
+where the numbers on the right-hand sides of the equations are all zero)
+in the matrix form you can omit the second argument and use the 
+<a href="dbopnullspace.xhtml">nullSpace</a> operation.
+
+This computes the solutions of the following system of equations:
+<pre>
+    x + 2*y + 3*z = 0
+  2*x + 3*y + 4*z = 0
+  3*x + 4*y + 5*z = 0
+</pre>
+The result is given as a list of vectors and these vectors form a basis for
+the solution space.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="nullSpace([[1,2,3],[2,3,4],[3,4,5]])" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/examplesexposedpage.xhtml b/src/axiom-website/hyperdoc/examplesexposedpage.xhtml
new file mode 100644
index 0000000..951e18f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/examplesexposedpage.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      examplesexposedpage not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/factored.xhtml b/src/axiom-website/hyperdoc/factored.xhtml
new file mode 100644
index 0000000..74c31ba
--- /dev/null
+++ b/src/axiom-website/hyperdoc/factored.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+factored not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/foundationlibrarydocpage.xhtml b/src/axiom-website/hyperdoc/foundationlibrarydocpage.xhtml
new file mode 100644
index 0000000..5da9d4e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/foundationlibrarydocpage.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      foundationlibrarydocpage not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/funalgebraicfunctions.xhtml b/src/axiom-website/hyperdoc/funalgebraicfunctions.xhtml
new file mode 100644
index 0000000..b5fa3e3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/funalgebraicfunctions.xhtml
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Algebraic Functions</div>
+  <hr/>
+Algebraic functions are functions defined by algebraic equations. There are
+two ways of constructing them, either by using rational powers or implicitly.
+For rational powers, use <a href="dbopstarstar.xhtml">**</a> or the system
+functions <a href="dbopsqrt.xhtml">sqrt</a> and 
+<a href="dbopnthroot.xhtml">nthRoot</a> for square and nth roots.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=sqrt(1+x^(1/3))" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+To define an algebraic function implicitly use 
+<a href="dboprootof.xhtml">rootOf</a>. The following line defines a function
+y of x satisfying the equation 
+<pre>
+  y^3 = x*y-y^2-x^3+1
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="y:=rootOf(y^3+y^2-x*y+x^3-1,y)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can manipulate, differentiate or integrate an implicitly defined
+algebraic function like any other Axiom function.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p2','p3']);"
+    value="differentiate(y,x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Higher powers of algebraic functions are automatically reduced during
+calculations.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p2','p4']);"
+    value="(y+1)^3" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+But denominators are not automatically rationalized.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="g:=inv f" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopratdenom.xhtml">ratDenom</a> to remove the algebraic
+quantities from the denominator.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p5','p6']);"
+    value="ratDenom g" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/functionpage.xhtml b/src/axiom-website/hyperdoc/functionpage.xhtml
new file mode 100644
index 0000000..ac5b0b0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/functionpage.xhtml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Functions in Axiom</div>
+  <hr/>
+In Axiom, a function is an expression in one or more variables.
+(Think of it as a function of those variables.) You can also
+define a function by rules or use a built-in function. Axiom lets
+you convert expressions to compiled functions.
+  <table>
+   <tr>
+    <td>
+     <a href="funrationalfunctions.xhtml">Rational Functions</a>
+    </td>
+    <td>
+     Quotients of polynomials
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="funalgebraicfunctions.xhtml">Algebraic Functions</a>
+    </td>
+    <td>
+     Those defined by polynomial
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="funelementaryfunctions.xhtml">Elementary Functions</a>
+    </td>
+    <td>
+     The elementary functions of calculus
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="funsimplification.xhtml">Simplification</a>
+    </td>
+    <td>
+     How to simplify expressions
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="funpatternmatching.xhtml">Pattern Matching</a>
+    </td>
+    <td>
+     How to use the pattern matcher
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="funoperatoralgebra.xhtml">Operator Algebra</a>
+    </td>
+    <td>
+     The operator algebra facility
+    </td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/funelementaryfunctions.xhtml b/src/axiom-website/hyperdoc/funelementaryfunctions.xhtml
new file mode 100644
index 0000000..d55b419
--- /dev/null
+++ b/src/axiom-website/hyperdoc/funelementaryfunctions.xhtml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Elementary Functions</div>
+  <hr/>
+Axiom has most of the usual functions from calculus built-in.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=x*log y * sin(1/(x+y))" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You can substitute values or another elementary function for variables
+with the function eval.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="eval(f,[x=y,y=x])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+As you can see, the substitutions are made "in parallel" as in the case
+of polynomials. It's also possible to substitute expressions for kernels
+instead of variables.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="eval(f,log y = acosh(x+sqrt y))" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/funoperatoralgebra.xhtml b/src/axiom-website/hyperdoc/funoperatoralgebra.xhtml
new file mode 100644
index 0000000..35dc18c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/funoperatoralgebra.xhtml
@@ -0,0 +1,404 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Operator</div>
+  <hr/>
+Given any ring R, the ring of the <a href="db.xhtml?Integer">Integer</a>
+linear operators over R is called <a href="db.xhtml?Operator">Operator(R)</a>.
+To create an operator over R, first create a basic operator using the
+operation <a href="dbopoperator.xhtml">operator</a>, and then convert it
+to <a href="db.xhtml?Operator">Operator(R)</a> for the R you want. We choose R
+to be the two by two matrices over the integers.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="R:=SQMATRIX(2,INT)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Create the operator tilde on R
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value='t:=operator("tilde")::OP(R)' />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Since  <a href="db.xhtml?Operator">Operator</a> is unexposed we must either
+package-call operations from it, or expose it explicitly. For convenience
+we will do the latter.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value=")set expose add constructor Operator" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+To attach an evaluation function (from R to R) to an operator over R, use
+evaluate(op,f) where op is an operator over R and f is a function R->R.
+This needs to be done only once when the operator is defined. Note that f
+must be <a href="db.xhtml?Integer">Integer</a> linear (that is, 
+<pre>
+  f(ax+y) = a f(x) + f(y)
+</pre>
+for any integer a and any x and y in R). We now attach the transpose map
+to the above operator t.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4']);"
+    value="evaluate(t,m+->transpose m)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Operators can be manipulated formally as in any ring: 
+<a href="dbopplus.xhtml">+</a> is the pointwise addition and 
+<a href="dbopstar.xhtml">*</a> is composition. Any element x of R can
+be converted to an operator op_x over R, and the evaluation function of
+op_x is left-multiplication by x. Multiplying on the left by this matrix
+swaps the two rows.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5']);"
+    value="s:R:=matrix [[0,1],[1,0]]" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Can you guess what is the action of the following operator?
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6']);"
+    value="rho:=t*s" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Hint: applying rho four times gives the identity, so rho^4-1
+should return 0 when applied to any two by two matrix.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p7']);"
+    value="z:=rho^4-1" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Now check with this matrix
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p8']);"
+    value="m:R:=matrix [[1,2],[3,4]]" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p7','p8','p9']);"
+    value="z m" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+As you have probably guessed by now, rho acts on matrices by rotating
+the elements clockwise.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p8','p10']);"
+    value="rho m" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p8','p11']);"
+    value="rho rho m" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p8','p12']);"
+    value="(rho**3) m" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+Do the swapping of rows and transposition commute? We can check by computing
+their bracket.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p8','p13']);"
+    value="b:=t*s-s*t" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+Now apply it to m.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p8','p13','p14']);"
+    value="b m" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+
+Next we demonstrate how to define a differential operator on a polynomial
+ring. This is the recursive definition of the nth Legendre polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="noresult" 
+    onclick="makeRequest('p15');"
+    value="L n==( n=0 => 1 ; n=1 => x ; (2*n-1)/n*x*L(n-1)-(n-1)/n*L(n-2) )" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+Create the differential operator d/dx on polynomials in x over the rational
+numbers.
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p16']);"
+    value='dx:=operator("D")::OP(POLY FRAC INT)' />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Now attach a map to it.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p16','p17']);"
+    value="evaluate(dx,p+->D(p,'x))" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+This is the differential equation satisfied by the nth Legendre polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="noresult" 
+    onclick="handleFree(['p1','p2','p3','p16','p17','p18']);"
+    value="E n == (1-x^2)*dx^2-2*x*dx+n*(n+1)" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+Now we verify this for n=15. Here is the polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p15','p19']);"
+    value="L 15" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+Here is the operator.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p16','p17','p18','p20']);"
+    value="E 15" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+Here is the evaluation.
+<ul>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick=
+ "handleFree(['p1','p2','p3','p15','p16','p17','p18','p19','p20','p21']);"
+    value="(E 15)(L 15)" />
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/funpatternmatching.xhtml b/src/axiom-website/hyperdoc/funpatternmatching.xhtml
new file mode 100644
index 0000000..a8b3c76
--- /dev/null
+++ b/src/axiom-website/hyperdoc/funpatternmatching.xhtml
@@ -0,0 +1,566 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Rules and Pattern Matching</div>
+  <hr/>
+A common mathematical formula is 
+<pre>
+log(x)+log(y)==log(x*y)
+</pre>
+for any x and y. The presence of the word "any" indicates that x and y
+can stand for arbitrary mathematical expressions in the above formula. You
+can use such mathematical formulas in Axiom to specify "rewrite rules". 
+Rewrite rules are objects in Axiom that can be assigned to variables for
+later use, often for the purpose of simplification. Rewrite rules look like
+ordinary function definitions except that they are preceded by the reserved
+word rule. For example, a rewrite rule for the above formula is:
+<pre>
+  rule log(x) + log(y) == log(x * y)
+</pre>
+Like function definitions, no action is taken when a rewrite rule is issued.
+Think of rewrite rules as functions that take one argument. When a rewrite
+rule A=B is applied to an argument f, its meaning is "rewrite every
+subexpressions of f that matches A by B". The left-and side of a rewrite rule
+is called a <a href="glossarypage.xhtml#p38600">pattern</a>; 
+its right-hand side is
+called its <a href="glossarypage.xhtml#p49000">substitution</a>. 
+
+Create a rewrite rule named logrule. The generated symbol begins with a
+"%" and is a place holder for any other terms that might occur in the sum.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="logrule:=rule log(x)+log(y)==log(x*y)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Create an expression with logarithms.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="f:=log sin x + log x" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Apply logrule to f.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="logrule f" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The meaning of our example rewrite rule is "for all expressions x and y,
+rewrite log(x) and log(y) by log(x*y)". Patterns generally have both operation
+names 
+(here, <a href="dboplog.xhtml">log</a> and <a href="dbopplus.xhtml">+</a>)
+and variables (here, x and y). By default, every operation name stands for
+itself. The <a href="dboplog.xhtml">log</a> matches only "log" and not
+any other operation such as <a href="dbopsin.xhtml">sin</a>. On the other
+hand, variables do not stand for themselves. Rather, a variable denotes a
+<a href="glossarypage.xhtml#p39400">pattern variable</a> 
+that is free to match any expression whatsoever.
+
+When a rewrite rule is applied, a process called 
+<a href="glossarypage.xhtml#p38661">pattern matching</a> 
+goes to work by systematically 
+scanning the subexpressions of the argument. When a subexpression is found
+that "matches" the pattern, the subexpression is replaced by the right hand
+side of the rule. The details of what happens will be covered later.
+
+The customary Axiom notation for patterns is actually a shorthand for a
+longer, more general notation. Pattern variables can be made explicit
+by using a percent ("%") as the first character of the variable name. To
+say that a name stands for itself, you can prefix that name with a quote
+operator ("'"). Although the current Axiom parser does not let you quote
+an operation name, this more general notation gives you an alternative way
+of giving the same rewrite rule:
+<pre>
+  rule log(%x) + log(%y) == log(x*y)
+</pre>
+This longer notation gives you patterns that the standard notation won't
+handle. For example, the rule
+<pre>
+  rule %f(c * 'x) == c*%f(x)
+</pre>
+means "for all f and c, replace f(y) by c*f(x) when y is the product
+of c and the explicit variable x".
+
+Thus the pattern can have several adornments on the names that appear there.
+Normally, all of these adornments are dropped in the substitution on the
+right hand side. To summarize:
+<hr/>
+To enter a single rule in Axiom, use the following syntax:
+<pre>
+  rule lefthandside == righthandside
+</pre>
+The lefthandside is a pattern to be matched and the righthandside is its
+substitution. The rule is an object of type
+<a href="db.xhtml?RewriteRule">RewriteRule</a> that can be assigned to a
+variable and applied to expressions to transform them.
+<hr/>
+Rewrite rules can be collected into rulesets so that a set of rules can be
+applied at once. Here is another simplification rule for logarithms.
+<pre>
+  rule y*log(x) == log(x**y)
+</pre>
+for any x and y. If instead of giving a single rule following the reserved
+word rule you give a "pile" of rules, you create what is called a
+ruleset. Like rules, rulesets are objects in Axiom and can be assigned to
+variables. You will find it useful to group commonly used rules into
+input files, and read them in as needed. Create a ruleset named logrules.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="logrules:=rule (log(x)+log(y)==log(x*y) ; y*log(x)==log(x^y))" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Again, create an expression f containing logarithms.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="f:=a*log(sin x)-2*log x" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Apply the ruleset logrules to f.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p4','p5','p6']);"
+    value="logrules f" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+We have allowed pattern variables to match arbitrary expressions in the
+above examples. Often you want a variable to match onlyh expressions 
+satisfying some predicate. For example, you may want to apply the
+transformation 
+<pre>
+  y*log(x) == log(x^y)
+</pre>
+only when y is an integer. The way to restrict a pattern variable y by a
+predicate f(y) is by using a vertical bar "|", which means "such that",
+in much the same way it is used in function definitions. You do this only
+once but at the earliest (meaning deepest and leftmost) part of the pattern.
+This restricts the logarithmic rule to create integer exponents only.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="logrules2:=rule (log(x)+log(y)==log(x*y) ; (y | integer? y)*log(x)==log(x^y))" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Compare this with the result of applying the previous set of rules.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p5','p8']);"
+    value="f" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p5','p7','p9']);"
+    value="logrules2 f" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+You should be aware that you might need to apply a function like
+<a href="dbopinteger.xhtml">integer</a> within your predicate expression
+to actually apply the test function. Here we use 
+<a href="dbopinteger.xhtml">integer</a> because n has type 
+<a href="dbexpressioninteger.xhtml">Expression Integer</a> but
+<a href="dbopevenq.xhtml">even?</a> is an operation defined on the integers.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="evenRule:=rule cos(x)^(n | integer? n and even? integer n)==(1-sin(x)^2)^(n/2)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+Here is the application of the rule.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p10','p11']);"
+    value="evenRule(cos(x)^2)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+This is an example of some of the usual identities involving products of sines and cosines.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="makeRequest('p12');"
+    value="sinCosProducts:=rule (sin(x)*sin(y)==(cos(x-y)-cos(x+y))/2 ; cos(x)*cos(y)==(cos(x-y)+cos(x+y))/2 ; sin(x)*cos(y)==(sin(x-y)+sin(x+y))/2 )" />
+  <div id="ansp12"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="makeRequest('p13');"
+    value="g:=sin(a)*sin(b)+cos(b)*cos(a)+sin(2*z)*cos(2*a)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p12','p13','p14']);"
+    value="sinCosProducts g" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+Another qualification you will often want to use is to allow a pattern to
+match an identity element. Using the pattern x+y, for example, neither x 
+nor y matches the expression 0. Similarly, if a pattern contains a product
+x*y or an exponentiation x^y, then neither x nor y matches 1. If identical
+elements were matched, pattern matching would generally loop. Here is an
+expansion rule for exponentials.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="makeRequest('p15');"
+    value="exprule:=rule exp(a+b)==exp(a)*exp(b)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+This rule would cause infinite rewriting on this if either a or b were
+allowed to match 0.
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p15','p16']);"
+    value="exprule exp x" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+There are occasions when you do want a pattern variable in a sum or product
+to match 0 or 1. If so, prefix its name with a "?" whenever it appears in
+a left-hand side of a rule. For example, consider the following rule for the
+exponential integral
+<pre>
+  integral((y+exp x)/x,x) == integral(y/x,x)+Ei x
+</pre>
+for any x and y. This rule is valid if y=0. One solution is to create a
+<a href="db.xhtml?Ruleset">Ruleset</a> with two rules, one with and one
+without y. A better solution is to use an "optional" pattern variable. 
+Define rule eirule with a pattern variable ?y to indicate that an
+expression may or may not occur.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="makeRequest('p17');"
+    value="eirule:=rule integral((?y+exp x)/x,x)==integral(y/x,x)+Ei x" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+Apply rule eirule to an integral without this term.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="handleFree(['p17','p18']);"
+    value="eirule integral (exp m/m,m)" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+Apply rule eirule to an integral with this term.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p17','p19']);"
+    value="eirule integral(sin m+exp m/m,m)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+Here is one final adornment you will find useful. When matching a pattern
+of the form x+y to an expression containing a long sum of the form
+a+...+b, there is no way to predict in advance which subset of the sum
+matches x and which matches y. Aside from efficiency, this is generally
+unimportant since the rule holds for any possible combination of matches
+for x and y. In some situations, however, you many want to say which
+pattern variable is a sum (or product) of several terms, and which should
+match only a single term. To do this, put a prefix colon (":") before the
+pattern variable that you want to match mutliple terms. The remaining rules
+involve operators u and v.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="makeRequest('p20');"
+    value="u:=operator 'u" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+These definitions tell Axiom that u and v are formal operators to be
+used in expressions.
+<ul>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="makeRequest('p21');"
+    value="v:=operator 'v" />
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+First define myRule with no restrictions on the pattern variables x and y.
+<ul>
+ <li>
+  <input type="submit" id="p22" class="subbut" 
+    onclick="makeRequest('p22');"
+    value="myRule:=rule u(x+y)==u x + v y" />
+  <div id="ansp22"><div></div></div>
+ </li>
+</ul>
+Apply myRule to an expression.
+<ul>
+ <li>
+  <input type="submit" id="p23" class="subbut" 
+    onclick="handleFree(['p20','p21','p22','p23']);"
+    value="myRule u(a+b+c+d)" />
+  <div id="ansp23"><div></div></div>
+ </li>
+</ul>
+Define myOtherRule to match several terms so that the rule gets applied
+recursively.
+<ul>
+ <li>
+  <input type="submit" id="p24" class="subbut" 
+    onclick="makeRequest('p24');"
+    value="myOtherRule:=rule u(:x+y)==u x + v y" />
+  <div id="ansp24"><div></div></div>
+ </li>
+</ul>
+Apply myOtherRule to the same expression
+<ul>
+ <li>
+  <input type="submit" id="p25" class="subbut" 
+    onclick="handleFree(['p20','p21','p24','p25']);"
+    value="myOtherRule u(a+b+c+d)" />
+  <div id="ansp25"><div></div></div>
+ </li>
+</ul>
+Here are some final remarks on pattern matching. Pattern matching provides
+a very useful paradigm for solving certain classes of problems, namely, 
+those that involve transformations of one form to another and back. However,
+it is important to recognize its limitations.
+
+First, pattern matching slows down as the number of rules you have to
+apply increases. Thus it is good practice to organize the sets of rules
+you use optimally so that irrelevant rules are never included.
+
+Second, careless use of pattern matching can lead to wrong answers. You
+should avoid pattern matching to handle hidden algebraic relationships
+that can go undetected by other programs. As a simple example, a symbol
+such as "J" can easily be used to represent the square root of -1 or some
+other important algebraic quantity. Many algorithms branch on whether an
+expression is zero or not, then divide by that expression if it is not. If 
+you fail to simplify an expresison involving powers of J to -1, algorithms
+may incorrectly assume an expression is no-zero, take a wrong branch, and
+produce a meaningless result.
+
+Pattern matching should also not be used as a substitute for a domain. In
+Axiom, objects of one domain are transformed to objects of other domains
+using well-defined <a href="dbopcoerce.xhtml">coerce</a> operations. 
+Pattern matching should be used on objects that are all of the same type.
+Thus if your application can be handled by type 
+<a href="db.xhtml?Expression">Expression</a> in Axiom and you think you 
+need pattern matching consider this choice carefully. You may well be
+better served by extending an existing domain or by building a new domain
+of objects for your application.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/funrationalfunctions.xhtml b/src/axiom-website/hyperdoc/funrationalfunctions.xhtml
new file mode 100644
index 0000000..528d10d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/funrationalfunctions.xhtml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Rational Functions</div>
+  <hr/>
+To create a rational function, just compute the quotient of two
+polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=(x-y)/(x+y)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Use the functions 
+<a href="dbopnumer.xhtml">numer</a> and
+<a href="dbopdenom.xhtml">denom</a> to recover the numerator and
+denominator of a fraction:
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="numer f" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="denom f" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Since these are polynomials, you can apply all of the 
+<a href="polynomialpage.xhtml">polynomial operations</a> to them. 
+You can substitute values or other rational functions for the variables
+using the function <a href="dbopeval.xhtml">eval</a>. The syntax for
+<a href="dbopeval.xhtml">eval</a> is similar to the one for polynomials:
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="eval(f,x=1/x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="eval(f,[x=y,y=x])" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/funsimplification.xhtml b/src/axiom-website/hyperdoc/funsimplification.xhtml
new file mode 100644
index 0000000..8847c98
--- /dev/null
+++ b/src/axiom-website/hyperdoc/funsimplification.xhtml
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Simplification</div>
+  <hr/>
+Simplifying an expression often means different things at different times.
+Axiom offers a large number of "simplification" functions. The most common
+one, which performs the usual trigonometric simplifications is
+<a href="dbopsimplify.xhtml">simplify</a>.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="f:=cos(x)/sin(x)*log(sin(x)^2/(cos(x)^2+sin(x)^2))" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="g:=simplify f" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+If the result of <a href="dbopsimplify.xhtml">simplify</a> is not 
+satisfactory, specific transformations are available. For example, to
+rewrite g in terms of secants and cosecants instead of sines and cosines,
+issues:
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="h:=sin2csc cos2sec g" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+To apply the logarithm simplification rules to h, issue:
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4']);"
+    value="h:=expandLog h" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Since the square root of x^2 is the absolute value of x and not x itself,
+algebraic radicals are not automatically simplified, but you can 
+specifically request it by calling 
+<a href="dboprootsimp.xhtml">rootSimp</a>:
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="f1:=sqrt((x+1)^3)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="rootSimp f1" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+There are other transformations which are sometimes useful. Use the 
+functions 
+<a href="dbopcomplexelementary.xhtml">complexElementary</a> and
+<a href="dboptrigs.xhtml">trigs</a> to go back and forth between
+the complex exponential and trigonometric forms of an elementary function.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="g1:=sin(x+cos x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p7','p8']);"
+    value="g2:=complexElementary g1" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p7','p8','p9']);"
+    value="trigs g2" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+Similarly, the functions
+<a href="dboprealelementary.xhtml">realElementary</a> and
+<a href="dbophtrigs.xhtml">htrigs</a> convert hyperbolic functions in
+and out of their exponential form.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="h1:=sinh(x+cosh x)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p10','p11']);"
+    value="h2:=realElementary h1" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p10','p11','p12']);"
+    value="htrigs h2" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+Axiom has other transformations, most of which are in the packages
+<a href="db.xhtml?ElementaryFunctionStructurePackage">
+ElementaryFunctionStructurePackage</a>,
+<a href="db.xhtml?TrigonometricManipulations">
+TrigonometricManipulations</a>,
+<a href="db.xhtml?AlgebraicManipulations">AlgebraicManipulations</a>, and
+<a href="db.xhtml?TranscendentalManipulations">
+TranscendentalManipulations</a>. If you need to apply a simplification
+rule not built into the system you can use Axiom's 
+<a href="funpatternmatching.xhtml">pattern matcher</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/glossarypage.xhtml b/src/axiom-website/hyperdoc/glossarypage.xhtml
new file mode 100644
index 0000000..8925030
--- /dev/null
+++ b/src/axiom-website/hyperdoc/glossarypage.xhtml
@@ -0,0 +1,1734 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ <style>
+  div.glabel    { color:blue; }
+  div.gsyntax   { color:blue; }
+  div.gspad     { color:blue; }
+  div.gfunction { color:blue; }
+  div.gtype     { color:blue; }
+  div.gcmd      { color:blue; }
+ </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<ul>
+ <li><a name="p0" class="glabel"/><b>!</b>
+  <div class="gsyntax">(syntax)</div> Suffix character for 
+  <a href="#p14365">destructive operations</a>.
+ </li>
+ <li><a name="p74" class="glabel"/><b>,</b>
+  <div class="gsyntax">(syntax)</div> a separator for items in a 
+  <a href="#p50262">tuple</a>,  e.g. to separate arguments of a function 
+  <div class="gspad">f(x, y)</div>.
+ </li>
+ <li><a name="p210" class="glabel"/><b>=></b>
+  <div class="gsyntax">(syntax)</div> the expression 
+  <div class="gspad">a => b</div> is equivalent to 
+  <div class="gspad">if a then</div> <a href="#p19348">exit</a> 
+  <div class="gspad">b</div>.
+ </li>
+ <li><a name="p317" class="glabel"/><b>?</b>
+  <ol>
+   <li> 
+    <div class="gsyntax">(syntax)</div> a suffix character for 
+    Boolean-valued <div class="gfunction">function</div> names,  
+    e.g. <div class="gfunction">odd?</div>. 
+   </li>
+   <li> 
+    Suffix character for pattern variables. 
+   </li>
+   <li> The special type <div class="gspad">?</div> means 
+    <div class="gsyntax">don't care</div>. For example,  the declaration 
+    <div align="center" class="gspad">x : Polynomial ?</div>  means that 
+    values assigned to <div class="gspad">x</div> must be polynomials over 
+    an arbitrary <a href="#p51532">underlying domain</a>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p725" class="glabel"/><b>abstract datatype</b>
+  a programming language principle used in Axiom  where a datatype is 
+  defined in two parts: (1) a <div class="gsyntax">public</div> part 
+  describing a set of <a href="#p20171">exports</a>, principally operations
+  that apply to objects of that type,  and (2) a
+  <div class="gsyntax">private</div> part describing the implementation of
+  the datatype usually in terms of a <a href="#p44277">representation</a> for
+  objects of the type. Programs which create and otherwise manipulate objects
+  of the type may only do so through its exports. The representation and
+  other implementation information is specifically hidden.
+ </li>
+ <li><a name="p1287" class="glabel"/><b>abstraction</b>
+  described functionally or conceptually without regard to implementation
+ </li>
+ <li><a name="p1362" class="glabel"/><b>accuracy</b>
+  the degree of exactness of an approximation or measurement. In computer
+  algebra systems,  computations are typically carried out with complete 
+  accuracy using integers or rational numbers of indefinite size. Domain
+  <div class="gtype">Float</div> provides a function
+  <div class="gfunction">precision</div> from
+  <div class="gtype">Float</div> to change the precision for floating point
+  computations. Computations using <div class="gtype">DoubleFloat</div>
+  have a fixed precision but uncertain accuracy.
+ </li>
+ <li><a name="p1794" class="glabel"/><b>add-chain</b>
+  a hierarchy formed by <a href="#p16819">domain extensions</a>. If domain
+  <div class="gspad">A</div> extends domain <div class="gspad">B</div> and
+  domain <div class="gspad">B</div> extends domain <div class="gspad">C</div>,
+  then <div class="gspad">A</div> has <div class="gsyntax">add-chain</div>
+  <div class="gspad">B</div>-<div class="gspad">C</div>.
+ </li>
+ <li><a name="p1993" class="glabel"/><b>aggregate</b>
+  a data structure designed to hold multiple values. Examples of aggregates
+  are <div class="gtype">List</div>,  <div class="gtype">Set</div>, 
+  <div class="gtype">Matrix</div> and <div class="gtype">Bits</div>.
+ </li>
+ <li><a name="p2150" class="glabel"/><b>AKCL</b>
+  Austin Kyoto Common LISP,  a version of
+  <a href="#p30645"><div class="gspad">KCL</div></a> produced by
+  William Schelter, Austin, Texas.
+ </li>
+ <li><a name="p2267" class="glabel"/><b>algorithm</b>
+  a step-by-step procedure for a solution of a problem; a program
+ </li>
+ <li><a name="p2335" class="glabel"/><b>ancestor</b>
+  (of a domain) a category which is a <a href="#p38095">parent</a> of the
+  domain,  or a <a href="#p38095">parent</a> of a
+  <a href="#p38095">parent</a> and so on.
+ </li>
+ <li><a name="p2473" class="glabel"/><b>application</b>
+  <div class="gsyntax">(syntax)</div> an expression denoting "application"
+  of a function to a set of <a href="#p2885">argument</a> parameters.
+  Applications are written as a <a href="#p38004">parameterized form</a>.
+  For example,  the form <div class="gspad">f(x, y)</div> indicates the
+  "application of the function <div class="gspad">f</div> to the tuple of
+  arguments <div class="gspad">x</div> and <div class="gspad">y</div>". 
+  See also <a href="#p19167">evaluation</a> and
+  <a href="#p29675">invocation</a>.
+ </li>
+ <li><a name="p2852" class="glabel"/><b>apply</b>
+  See <a href="#p2473">application</a>.
+ </li>
+ <li><a name="p2885" class="glabel"/><b>argument</b>
+  <ol>
+   <li>
+    (actual argument) a value passed to a function at the time of a
+    <a href="#p22911">function</a> call application; also called an
+    <div class="gsyntax">actual parameter</div>. 
+   </li>
+   <li>
+    (formal argument) a variable used in the definition of a function
+    to denote the actual argument passed when the function is called.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p3173" class="glabel"/><b>arity</b>
+  <ol>
+   <li>
+    (function) the number of arguments. 
+   </li>
+   <li>
+    (operator or operation) corresponds to the arity of a function
+    implementing the operator or operation.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p3322" class="glabel"/><b>assignment</b>
+  <div class="gsyntax">(syntax)</div> an expression of the form
+  <div class="gspad">x := e</div>,  meaning "assign the value of
+  <div class="gspad">e</div> to <div class="gspad">x"</div>. After
+  <a href="#p19167">evaluation</a>,  the <a href="#p52894">variable</a>
+  <div class="gspad">x</div> <a href="#p39600">pointer</a> to an object
+  obtained by evaluating the expression <div class="gspad">e</div>. If
+  <div class="gspad">x</div> has a <a href="#p50664">type</a> as a result
+  of a previous <a href="#p12903">declaration</a>, the object assigned to
+  <div class="gspad">x</div> must have that type. An interpreter must often
+  <a href="#p9572">coercion</a> the value of <div class="gspad">e</div>
+  to make that happen. For example,  in the interpreter,  
+  <div align="center" class="gspad">x : Float := 11</div> first
+  <a href="#p12903">declaration</a> <div class="gspad">x</div> to be a float.
+  This declaration causes the interpreter to coerce 11 to 11.0 in order to
+  assign a floating point value to <div class="gspad">x</div>.
+ </li>
+ <li><a name="p4093" class="glabel"/><b>attribute</b>
+  a name or functional form denoting <div class="gsyntax">any</div> useful
+  computational property. For example,  
+  <div class="gfunction">commutative(<div class="gspad">"*"</div>)</div>
+  asserts that "<div class="gfunction">*</div> is commutative". Also,
+  <div class="gfunction">finiteAggregate</div> is used to assert that an
+  aggregate has a finite number of immediate components.
+ </li>
+ <li><a name="p4380" class="glabel"/><b>basis</b>
+  <div class="gsyntax">(algebra)</div> <div class="gspad">S</div> is a
+  basis of a module <div class="gspad">M</div> over a
+  <a href="#p45405">ring</a> if <div class="gspad">S</div> generates 
+  <div class="gspad">M</div>,  and <div class="gspad">S</div> is linearly
+  independent
+ </li>
+ <li><a name="p4536" class="glabel"/><b>benefactor</b>
+  (of a given domain) a domain or package that the given domain explicitly
+   references (for example,  calls functions from) in its implementation
+ </li>
+ <li><a name="p4684" class="glabel"/><b>binary</b>
+  operation or function with <a href="#p3173">arity</a> 2
+ </li>
+ <li><a name="p4735" class="glabel"/><b>binding</b>
+  the association of a variable with properties such as
+  <a href="#p52710">value</a> and <a href="#p50664">type</a>. The
+  top-level <a href="#p19131">environment</a> in the interpreter consists 
+  of bindings for all user variables and functions. Every
+  <a href="#p22911">function</a> has an associated set of bindings,  one
+  for each formal <a href="#p2885">argument</a> and
+  <a href="#p32278">local variable</a>.
+ </li>
+ <li><a name="p5086" class="glabel"/><b>block</b>
+  <div class="gsyntax">(syntax)</div> a control structure where
+  expressions are sequentially <a href="#p19167">evaluation</a>.
+ </li>
+ <li><a name="p5198" class="glabel"/><b>body</b>
+  a <a href="#p23911">function body</a> or <a href="#p33300">loop body</a>.
+ </li>
+ <li><a name="p5256" class="glabel"/><b>boolean</b>
+  objects denoted by the <a href="#p31774">literals</a>
+  <div class="gspad">true</div> and <div class="gspad">false</div>; 
+  elements of domain <div class="gtype">Boolean</div>. 
+  See also <div class="gtype">Bits</div>.
+ </li>
+ <li><a name="p5399" class="glabel"/><b>built-in function</b>
+  a <a href="#p22911">function</a> in the standard Axiom  library. 
+  Contrast <a href="#p52526">user function</a>.
+ </li>
+ <li><a name="p5499" class="glabel"/><b>cache</b>
+  <ol>
+   <li> 
+    (noun) a mechanism for immediate retrieval of previously computed data.
+    For example,  a function which does a lengthy computation might store
+    its values in a <a href="#p25428">hash table</a> using argument as a
+    key. The hash table then serves as a cache for the function (see also
+    <div class="gcmd">)set function cache</div>). Also,  when
+    <a href="#p43448">recurrence relations</a> which depend upon
+    <div class="gspad">n</div> previous values are compiled,  the previous
+    <div class="gspad">n</div> values are normally cached
+    (use <div class="gcmd">)set functions recurrence</div> to change this). 
+   </li>
+   <li>
+    (verb) to save values in a cache.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p6070" class="glabel"/><b>capsule</b>
+  the part of the <a href="#p23911">function body</a> of a
+  <a href="#p16173">domain constructor</a> that defines the functions 
+  implemented by the constructor.
+ </li>
+ <li><a name="p6220" class="glabel"/><b>case</b>
+  <div class="gsyntax">(syntax)</div> an operator used to
+  conditionally evaluate code based on the branch of a
+  <a href="#p51780">Union</a>. For example,  if value
+  <div class="gspad">u</div> is 
+  <div class="gspad">Union(Integer, "failed")</div>,  the conditional
+  expression <div class="gspad">if u case Integer then A else B</div> 
+  evaluate <div class="gspad">A</div> if <div class="gspad">u</div> is
+  an integer and <div class="gspad">B</div> otherwise.
+ </li>
+ <li><a name="p6537" class="glabel"/><b>Category</b>
+  the distinguished object denoting the type of a category; the class of
+  all categories.
+ </li>
+ <li><a name="p6628" class="glabel"/><b>category</b>
+  <div class="gsyntax">(basic concept)</div> second-order types which
+  serve to define useful "classification worlds" for domains, such as
+  algebraic constructs (e.g. groups, rings, fields), and data structures
+  (e.g. homogeneous aggregates, collections, dictionaries). Examples of
+  categories are <div class="gtype">Ring</div> ("the class of all
+  rings") and <div class="gtype">Aggregate</div> ("the class of all
+  aggregates"). The categories of a given world are arranged in a
+  hierarchy (formally, a directed acyclic graph). Each category inherits
+  the properties of all its ancestors. Thus, for example, the category
+  of ordered rings (<div class="gtype">OrderedRing</div>) inherits the
+  properties of the category of rings (<div class="gtype">Ring</div>)
+  and those of the ordered sets 
+  (<div class="gtype">OrderedSet</div>). Categories provide a database of
+  algebraic knowledge and ensure mathematical correctness, e.g. that
+  "matrices of polynomials" is correct but "polynomials of hash tables"
+  is not, that the multiply operation for "polynomials of continued
+  fractions" is commutative, but that for "matrices of power series" is
+  not. optionally provide "default definitions" for operations they
+  export. Categories are defined in Axiom by functions called 
+  <a href="#p8355">category constructors</a>. Technically, a category
+  designates a class of domains with common 
+  <a href="#p36041">operations</a> and <a href="#p4093">attributes</a> but
+  usually with different <a href="#p22911">functions</a> and 
+  <a href="#p44277">representations</a> for its constituent 
+  <a href="#p35301">objects</a>. Categories are always defined using the
+  Axiom library language (see also 
+  <a href="#p8634">category extension</a>). 
+  See also file <div class="gsyntax">catdef.spad</div>
+  for definitions of basic algebraic categories in Axiom .
+ </li>
+ <li><a name="p8355" class="glabel"/><b>category constructor</b>
+  a function that creates categories, described by an abstract
+  datatype in the Axiom programming language. For example, the category
+  constructor <div class="gtype">Module</div> is a function which takes
+  a domain parameter <div class="gspad">R</div> and creates the category
+  "modules over <div class="gspad">R</div>".
+ </li>
+ <li><a name="p8634" class="glabel"/><b>category extension</b>
+  created by a category definition, an expression usually of the form
+  <div class="gspad">A == B with ...</div>. In English, this means
+  "category A is a <div class="gspad">B</div> with the new operations
+  and attributes as given by ... . See, for example, file 
+  <div class="gsyntax">catdef.spad</div> for a definitions of the algebra
+  categories in Axiom , <div class="gsyntax">aggcat.spad</div> for data
+  structure categories.
+ </li>
+ <li><a name="p8996" class="glabel"/><b>category hierarchy</b>
+  hierarchy formed by category extensions. The root category is 
+  <div class="gtype">Object</div>. A category can be defined as a 
+  <a href="#p30459">Join</a> of two or more categories so as to have
+  multiple <a href="#p38095">parents</a>. Categories may also have
+  parameterized so as to allow conditional inheritance.
+ </li>
+ <li><a name="p9278" class="glabel"/><b>character</b>
+  <ol>
+   <li> 
+    an element of a character set,  as represented by a keyboard key. 
+   </li>
+   <li>
+    a component of a string. For example, the 0th element of the string
+    <div class="gspad">"hello there"</div> is the character 
+    <div class="gsyntax">h</div>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p9472" class="glabel"/><b>client</b>
+  (of a given domain) any domain or package that explicitly calls
+  functions from the given domain
+ </li>
+ <li><a name="p9572" class="glabel"/><b>coercion</b>
+  an automatic transformation of an object of one 
+  <a href="#p50664">type</a> to an object of a similar or desired target
+  type. In the interpreter, coercions and 
+  <a href="#p45044">retractions</a> are done automatically by the
+  interpreter when a type mismatch occurs. Compare 
+  <a href="#p12242">conversion</a>.
+ </li>
+ <li><a name="p9854" class="glabel"/><b>comment</b>
+  textual remarks imbedded in code. Comments are preceded by a double
+  dash (<div class="gsyntax">--</div>). For Axiom library code,
+  stylized comments for on-line documentation are preceded by a two plus
+  signs (<div class="gsyntax">++</div>).
+ </li>
+ <li><a name="p10064" class="glabel"/><b>Common LISP</b>
+  A version of <a href="#p31518">LISP</a> adopted as an informal
+  standard by major users and suppliers of LISP
+ </li>
+ <li><a name="p10167" class="glabel"/><b>compile-time</b>
+  the time when category or domain constructors are compiled. Contrast
+  <a href="#p45818">run-time</a>.
+ </li>
+ <li><a name="p10262" class="glabel"/><b>compiler</b>
+  a program that generates low-level code from a higher-level source
+  language. Axiom has three compilers. 
+  <ol>
+   <li>
+    A <div class="gsyntax">graphics
+    compiler</div> converts graphical formulas to a compiled subroutine so
+    that points can be rapidly produced for graphics commands. 
+   </li>
+   <li>
+    An <div class="gsyntax">interpreter compiler</div> optionally compiles 
+    <a href="#p52526">user functions</a> when first 
+    <a href="#p29675">invocation</a> 
+    (use <div class="gcmd">)set functions compile</div> 
+    to turn this feature on). 
+   </li>
+   <li> 
+    A <div class="gsyntax">library compiler</div> compiles all 
+    constructors.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p10792" class="glabel"/><b>computational object</b>
+   In Axiom , domains are objects. This term is used to distinquish the
+  objects which are members of domains rather than domains themselves.
+ </li>
+ <li><a name="p10941" class="glabel"/><b>conditional</b>
+  a <a href="#p12001">control structure</a> of the form 
+  <div class="gspad">if A then B else C</div>; The 
+  <a href="#p19167">evaluation</a> of <div class="gspad">A</div> produces
+  <div class="gspad">true</div> or <div class="gspad">false</div>. If
+  <div class="gspad">true</div>, <div class="gspad">B</div> evaluates to
+  produce a value; otherwise <div class="gspad">C</div> evaluates to
+  produce a value. When the value is not used, 
+  <div class="gspad">else C</div> part can be omitted.
+ </li>
+ <li><a name="p11264" class="glabel"/><b>constant</b>
+  <div class="gsyntax">(syntax)</div> a reserved word used in 
+  <a href="#p46813">signatures</a> in Axiom programming language to signify
+  that mark an operation always returns the same value. For example, the
+  signature <div class="gspad">0: constant -> $</div> in the source code
+  of <div class="gtype">AbelianMonoid</div> tells the Axiom compiler
+  that <div class="gspad">0</div> is a constant so that suitable
+  optimizations might be performed.
+ </li>
+ <li><a name="p11642" class="glabel"/><b>constructor</b>
+  a <a href="#p22911">function</a> which creates a 
+  <a href="#p6628">category</a>, <a href="#p15041">domain</a>, or 
+  <a href="#p36778">package</a>.
+ </li>
+ <li><a name="p11755" class="glabel"/><b>continuation</b>
+  when a line of a program is so long that it must be broken into
+  several lines, then all but the first line are called 
+  <div class="gsyntax">continuation lines</div>. If such a line is given
+  interactively, then each incomplete line must end with an underscore.
+ </li>
+ <li><a name="p12001" class="glabel"/><b>control structure</b>
+  program structures which can specify a departure from normal
+  sequential execution. Axiom has four kinds of control structures: 
+  <a href="#p5086">blocks</a>, <a href="#p6220">case</a> statements, 
+  <a href="#p10941">conditionals</a>, and <a href="#p33121">loops</a>.
+ </li>
+ <li><a name="p12242" class="glabel"/><b>conversion</b>
+  the transformation of an object on one <a href="#p50664">type</a> to
+  one of another type. Conversions performed automatically are called 
+  <a href="#p9572">coercions</a>. These happen when the interpreter has a
+  type mismatch and a similar or declared target type is needed. In
+  general, the user must use the infix operation 
+  <div class="gspad">::</div> to cause this transformation.
+ </li>
+ <li><a name="p12604" class="glabel"/><b>copying semantics</b>
+  the programming language semantics used in Pascal but 
+  <div class="gsyntax">not</div> in Axiom . See also 
+  <a href="#p39949">pointer semantics</a> for details.
+ </li>
+ <li><a name="p12740" class="glabel"/><b>data structure</b>
+  a structure for storing data in the computer. Examples are 
+  <a href="#p31730">lists</a> and <a href="#p25428">hash tables</a>.
+ </li>
+ <li><a name="p12850" class="glabel"/><b>datatype</b>
+  equivalent to <a href="#p15041">domain</a> in Axiom .
+ </li>
+ <li><a name="p12903" class="glabel"/><b>declaration</b>
+  <div class="gsyntax">(syntax)</div> an expression of the form 
+  <div class="gspad">x : T</div> where <div class="gspad">T</div> is some
+  <div class="gspad">type</div>. A declaration forces all values 
+  <a href="#p3322">assigned</a> to <div class="gspad">T</div> to be of that
+  type. If a value is of a different type, the interpreter will try to
+  <a href="#p9572">coerce</a> the value to type 
+  <div class="gspad">T</div>. Declarations are necessary in case of 
+  ambiguity or when a user wants to introduce an an 
+  <a href="#p20259">unexposed</a> domain.
+ </li>
+ <li><a name="p13351" class="glabel"/><b>default definition</b>
+  a function defined by a <a href="#p6628">category</a>. Such
+  definitions appear category definitions of the form 
+  <div class="gspad">C: Category == T add I</div> in an optional
+  implmentation part <div class="gspad">I</div> to the right of the
+  keyword <div class="gspad">add</div>.
+ </li>
+ <li><a name="p13571" class="glabel"/><b>default package</b>
+  a optional <a href="#p36778">package</a> of 
+  <a href="#p22911">functions</a> associated with a category. Such
+  functions are necessarily defined in terms over other functions
+  exported by the category.
+ </li>
+ <li><a name="p13754" class="glabel"/><b>definition</b>
+  <div class="gsyntax">(syntax)</div> 
+  <ol>
+   <li> 
+    An expression of the form
+    <div class="gspad">f(a) == b</div> defining function 
+    <div class="gspad">f</div> with <a href="#p21594">formal arguments</a> 
+    <div class="gspad">a</div> and <a href="#p5198">body</a> 
+    <div class="gspad">b</div>; equivalent to the statement 
+    <div class="gspad">f == (a) +-> b</div>. 
+   </li>
+   <li> 
+    An expression of the form 
+    <div class="gspad">a == b</div> where <div class="gspad">a</div> is a 
+    <a href="#p49347">symbol</a>, equivalent to 
+    <div class="gspad">a() == b</div>.
+    See also <a href="#p33585">macro</a> where a similar
+    substitution is done at <a href="#p38242">parse</a> time.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p14178" class="glabel"/><b>delimiter</b>
+  a <a href="#p9278">character</a> which marks the beginning or end of
+  some syntactically correct unit in the language, e.g. " for strings,
+  blanks for identifiers.
+ </li>
+ <li><a name="p14365" class="glabel"/><b>destructive operation</b>
+  An operation which changes a component or structure of a value. In
+  Axiom , all destructive operations have names which end with an
+  exclamation mark (<div class="gsyntax">!</div>). For example, domain
+  <div class="gtype">List</div> has two operations to reverse the
+  elements of a list, one named <div class="gfunction">reverse</div>
+  from <div class="gtype">List</div> which returns a copy of the
+  original list with the elements reversed, another named 
+  <div class="gfunction">reverse!</div> from <div class="gtype">List</div>
+  which reverses the elements <div class="gsyntax">in place</div> thus
+  destructively changing the original list.
+ </li>
+ <li><a name="p14877" class="glabel"/><b>documentation</b>
+  <ol>
+   <li> 
+    on-line or hard copy descriptions of Axiom; 
+   </li>
+   <li> 
+    text in library code preceded by 
+    <div class="gsyntax">++</div> comments as opposed to general comments
+    preceded by <div class="gsyntax">--</div>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p15041" class="glabel"/><b>domain</b>
+  <div class="gsyntax">(basic concept)</div> a domain corresponds to
+  the usual notion of abstract datatypes: that of a set of values and a
+  set of "exported operations" for the creation and manipulation of
+  these values. Datatypes are parameterized, dynamically constructed,
+  and can combine with others in any meaningful way, e.g. "lists of
+  floats" (<div class="gtype">List Float</div>), "fractions of
+  polynomials with integer coefficients" 
+  (<div class="gtype">Fraction Polynomial Integer</div>), 
+  "matrices of infinite <a href="#p47825">streams</a> of cardinal numbers" 
+  (<div class="gtype">Matrix Stream CardinalNumber</div>). The term 
+  <div class="gsyntax">domain</div> is actually abbreviates 
+  <div class="gsyntax">domain of computation</div>. Technically, a domain
+  denotes a class of objects, a class of 
+  <a href="#p36041">operations</a> for creating and other manipulating
+  these objects, and a class of <a href="#p4093">attributes</a>
+  describing computationally useful properties. Domains also provide 
+  <a href="#p22911">functions</a> for each operation often in terms of some
+  <a href="#p44277">representation</a> for the objects. A domain itself
+  is an <a href="#p35301">object</a> created by a 
+  <a href="#p22911">function</a> called a <a href="#p16173">domain
+  constructor</a>.
+ </li>
+ <li><a name="p16173" class="glabel"/><b>domain constructor</b>
+   a function that creates domains, described by an abstract datatype in
+  the Axiom programming language. Simple domains like 
+  <div class="gtype">Integer</div> and <div class="gtype">Boolean</div> are
+  created by domain constructors with no arguments. Most domain
+  constructors take one or more parameters, one usually denoting an 
+  <a href="#p51532">underlying domain</a>. For example, the domain 
+  <div class="gtype">Matrix(R)</div> denotes "matrices over 
+  <div class="gspad">R"</div>. Domains <div class="gsyntax">Mapping</div>,
+  <div class="gsyntax">Record</div>, and 
+  <div class="gsyntax">Union</div> are primitive domains. All other domains
+  are written in the Axiom programming language and can be modified by
+  users with access to the library source code.
+ </li>
+ <li><a name="p16819" class="glabel"/><b>domain extension</b>
+  a domain constructor <div class="gspad">A</div> is said to 
+  <div class="gsyntax">extend</div> a domain constructor 
+  <div class="gspad">B</div> if <div class="gspad">A</div>
+  <div class="gspad">'s</div> definition has the form 
+  <div class="gspad">A == B add ...</div>. 
+  This intuitively means "functions not defined by <div
+  class="gspad">A</div> are assumed to come from 
+  <div class="gspad">B</div>". Successive domain extensions form 
+  <a href="#p1794">add-chains</a> affecting the the 
+  <a href="#p46200">search order</a> for functions not implemented directly
+  by the domain during <a href="#p17853">dynamic lookup</a>.
+ </li>
+ <li><a name="p17269" class="glabel"/><b>dot notation</b>
+  using an infix dot (<div class="gsyntax">.</div>) for function
+  application. If <div class="gspad">u</div> is the list 
+  <div class="gspad">[7, 4, -11]</div> then both 
+  <div class="gspad">u(2)</div> and <div class="gspad">u.2</div> return
+  4. Dot notation nests to left. Thus <div class="gspad">f . g . h</div>
+  is equivalent to <div class="gspad">(f . g) . h</div>.
+ </li>
+ <li><a name="p17507" class="glabel"/><b>dynamic</b>
+  that which is done at <a href="#p45818">run-time</a> as opposed to 
+  <a href="#p10167">compile-time</a>. For example, the interpreter will
+  build the domain "matrices over integers" dynamically in response to
+  user input. However, the compilation of all functions for matrices and
+  integers is done during <a href="#p10167">compile-time</a>. Constrast
+  <a href="#p47594">static</a>.
+ </li>
+ <li><a name="p17853" class="glabel"/><b>dynamic lookup</b>
+  In Axiom , a <a href="#p17507">domain</a> may or may not explicitly
+  provide <a href="#p22911">function</a> definitions for all of its
+  exported <a href="#p36041">operations</a>. These definitions may
+  instead come from domains in the <a href="#p1794">add-chain</a> or
+  from <a href="#p13571">default packages</a>. When a 
+  <a href="#p2400">function call</a> is made for an operation in the
+  domain, up to five steps are carried out.
+  <ol>
+   <li> 
+    If the domain itself implements a function for the operation,  
+    that function is returned. 
+   </li>
+   <li> 
+    Each of the domains in the <a href="#p1794">add-chain</a> are searched
+    for one which implements the function; if found, the function is returned.
+   </li>
+   <li> 
+    Each of the <a href="#p13571">default packages</a> for the domain are
+    searched in order of the <a href="#p30933">lineage</a>. If any of the
+    default packages implements the function, the first one found is
+    returned.
+   </li>
+   <li> 
+    Each of the <a href="#p13571">default packages</a> for each of the
+    domains in the <a href="#p1794">add-chain</a> are searched in the
+    order of their <a href="#p30933">lineage</a>. If any of the default
+    packages implements the function, the first one found is returned.
+   </li>
+   <li> If all of the above steps fail,  an error message is reported. 
+   </li>
+  </ol>
+ </li>
+ <li><a name="p19071" class="glabel"/><b>empty</b>
+  the unique value of objects with type <div class="gtype">Void</div>.
+ </li>
+ <li><a name="p19131" class="glabel"/><b>environment</b>
+  a set of <a href="#p4735">bindings</a>.
+ </li>
+ <li><a name="p19167" class="glabel"/><b>evaluation</b>
+  a systematic process which transforms an 
+  <a href="#p20659">expression</a> into an object called the 
+  <a href="#p52710">value</a> of the expression. Evaluation may produce 
+  <a href="#p46699">side effects</a>.
+ </li>
+ <li><a name="p19348" class="glabel"/><b>exit</b>
+  <div class="gsyntax">(reserved word)</div> an 
+  <a href="#p36278">operator</a> which forces an exit from the current
+  block. For example, the <a href="#p5086">block</a> 
+  <div class="gspad">(a := 1; if i > 0 then exit a; a := 2)</div> will
+  prematurely exit at the second statement with value 1 if the value of
+  <div class="gspad">i</div> is greater than 0. See 
+  <a href="#p210"><div class="gspad">=></div></a> for an alternate syntax.
+ </li>
+ <li><a name="p19681" class="glabel"/><b>explicit export</b>
+  <ol>
+   <li> 
+    (of a domain <div class="gspad">D</div>) any 
+    <a href="#p4093">attribute</a>, <a href="#p36041">operation</a>, or 
+    <a href="#p6628">category</a> explicitly mentioned in the 
+    <a href="#p50664">type</a> specification part <div class="gspad">T</div>
+    for the domain constructor definition  <div class="gspad">D: T == I</div>
+   </li>
+   <li> 
+    (of a category <div class="gspad">C</div>) any 
+    <a href="#p4093">attribute</a>, <a href="#p36041">operation</a>, or 
+    <a href="#p6628">category</a> explicitly mentioned in the 
+    <a href="#p50664">type</a> specification part <div class="gspad">T</div>
+    for the domain constructor definition 
+    <div class="gspad">C: <a href="#p6537">Category</a> == T</div>
+   </li>
+  </ol>
+ </li>
+ <li><a name="p20171" class="glabel"/><b>export</b>
+   <a href="#p19681">explicit export</a> or <a href="#p27325">implicit
+  export</a> of a domain or category
+ </li>
+ <li><a name="p20259" class="glabel"/><b>expose</b>
+  some constructors are <div class="gsyntax">exposed</div>, others
+  <div class="gsyntax">unexposed</div>. Exposed domains and packages
+  are recognized by the interpreter. Use 
+  <div class="gcmd">)set expose</div> 
+  to control change what is exposed. To see both exposed
+  and unexposed constructors, use the browser with give the system
+  command <div class="gcmd">)set hyperdoc browse exposure
+  on</div>. Unexposed constructors will now appear prefixed by star
+  (<div class="gspad">*</div>).
+ </li>
+ <li><a name="p20659" class="glabel"/><b>expression</b>
+  <ol>
+   <li> any syntactically correct program fragment. 
+   </li>
+   <li> an element of domain <div class="gtype">Expression</div>
+   </li>
+  </ol>
+ </li>
+ <li><a name="p20757" class="glabel"/><b>extend</b>
+  see <a href="#p8634">category extension</a> or <a href="#p16819">domain 
+  extension</a>
+ </li>
+ <li><a name="p20829" class="glabel"/><b>field</b>
+  <div class="gsyntax">(algebra)</div> a <a href="#p17507">domain</a>
+  which is <a href="#p45405">ring</a> where every non-zero element is
+  invertible and where <div class="gspad">xy=yx</div>; a member of
+  category <div class="gtype">Field</div>. For a complete list of
+  fields, click on <div class="gsyntax">Domains</div> under 
+  <div class="gsyntax">Cross Reference</div> for 
+  <div class="gtype">Field</div>.
+ </li>
+ <li><a name="p21109" class="glabel"/><b>file</b>
+  a program or collection of data stored on disk,  tape or other medium.
+ </li>
+ <li><a name="p21186" class="glabel"/><b>float</b>
+  a floating-point number with user-specified precision; an element of
+  domain <div class="gtype">Float</div>. Floats are 
+  <a href="#p31774">literals</a> which are written two ways: without an
+  exponent (e.g. <div class="gspad">3.1416</div>), or with an exponent
+  (e.g. <div class="gspad">3.12E-12</div>). Use function 
+  <a href="#p42318">precision</a> to change the precision of the mantissage
+  (20 digits by default). See also <a href="#p47066">small float</a>.
+ </li>
+ <li><a name="p21594" class="glabel"/><b>formal parameter</b>
+  (of a function) an identifier <a href="#p4735">bound</a> to the value
+  of an actual <a href="#p2885">argument</a> on 
+  <a href="#p29675">invocation</a>. In the function definition 
+  <div class="gspad">f(x, y) == u</div>, for example, 
+  <div class="gspad">x</div> and <div class="gspad">y</div> are the formal
+  parameter.
+ </li>
+ <li><a name="p21847" class="glabel"/><b>frame</b>
+  the basic unit of an interactive session; each frame has its own
+  <a href="#p47691">step number</a>, <a href="#p19131">environment</a>, and
+  <a href="#p26034">history</a>. In one interactive session, users can
+  can create and drop frames, and have several active frames simultaneously.
+ </li>
+ <li><a name="p22113" class="glabel"/><b>free</b>
+   <div class="gsyntax">(syntax)</div> A keyword used in user-defined
+  functions to declare that a variable is a 
+  <a href="#p22739">free variable</a> of that function. 
+  For example, the statement 
+  <div class="gspad">free x</div> declares the variable 
+  <div class="gspad">x</div> within the body of a function 
+  <div class="gspad">f</div> to be a free variable in 
+  <div class="gspad">f</div>. Without such a declaration, any variable 
+  <div class="gspad">x</div> which appears on the left hand side of an
+  assignment is regarded as a <a href="#p32278">local variable</a> of
+  that function. If the intention of the assignment is to give an value
+  to a <a href="#p24833">global variable</a> <div class="gspad">x</div>,
+  the body of that function must contain the statement 
+  <div class="gspad">free x</div>.
+ </li>
+ <li><a name="p22739" class="glabel"/><b>free variable</b>
+   (of a function) a variable which appears in a body of a function but
+  is not <a href="#p4735">bound</a> by that function. See 
+  <a href="#p32278">local variable</a> by default.
+ </li>
+ <li><a name="p22911" class="glabel"/><b>function</b>
+   implementation of <a href="#p36041">operation</a>; it takes zero or
+  more <a href="#p2885">argument</a> parameters and produces zero or
+  more values. Functions are objects which can be passed as parameters
+  to functions and can be returned as values of functions. Functions can
+  also create other functions (see also 
+  <div class="gtype">InputForm</div>). See also 
+  <a href="#p2473">application</a> and 
+  <a href="#p29675">invocation</a>. The terms 
+  <div class="gsyntax">operation</div> and 
+  <div class="gsyntax">function</div> are distinct notions in Axiom . An
+  operation is an abstraction of a function, described by declaring a 
+  <a href="#p46813">signature</a>. A function is created by providing an
+  implementation of that operation by some piece of Axiom code. Consider
+  the example of defining a user-function <div class="gspad">fact</div>
+  to compute the <div class="gfunction">factorial</div> of a nonnegative
+  integer. The Axiom statement 
+  <div class="gspad">fact: Integer -> Integer</div> 
+  describes the operation, whereas the statement 
+  <div class="gspad">fact(n) = reduce(*, [1..n])</div> defines the
+  functions. See also <a href="#p24495">generic function</a>.
+ </li>
+ <li><a name="p23911" class="glabel"/><b>function body</b>
+   the part of a <a href="#p22911">function</a>
+  <div class="gspad">'s</div> definition which is evaluated when the function
+  is called at <a href="#p45818">run-time</a>; the part of the function
+  definition to the right of the <div class="gspad">==</div>.
+ </li>
+ <li><a name="p2400" class="glabel"/><b>function call</b>
+   <div class="gsyntax">(syntax)</div> an expression denoting
+  "application" of a function to a set of <a href="#p2885">argument</a>
+  parameters. Applications are written as a 
+  <a href="#p38004">parameterized form</a>. For example, the form 
+  <div class="gspad">f(x, y)</div> indicates the "application of the function
+  <div class="gspad">f</div> to the tuple of arguments 
+  <div class="gspad">x</div> and <div class="gspad">y</div>". See also 
+  <a href="#p19167">evaluation</a> and <a href="#p29675">invocation</a>.
+ </li>
+ <li><a name="p24123" class="glabel"/><b>garbage collection</b>
+   a system function that automatically recycles memory cells from the
+  <a href="#p25771">heap</a>. Axiom is built upon 
+  <a href="#p10064">Common LISP</a> which provides this facility.
+ </li>
+ <li><a name="p24294" class="glabel"/><b>garbage collector</b>
+  a mechanism for reclaiming storage in the <a href="#p25771">heap</a>.
+ </li>
+ <li><a name="p24359" class="glabel"/><b>Gaussian</b>
+   a complex-valued expression, e.g. one with both a real and imaginary
+  part; a member of a <div class="gtype">Complex</div> domain.
+ </li>
+ <li><a name="p24495" class="glabel"/><b>generic function</b>
+   the use of one function to operate on objects of different types; One
+  might regard Axiom as supporting generic 
+  <a href="#p36041">operations</a> but not generic functions. One operation
+  <div class="gspad">+: (D, D) -> D</div> exists for adding elements in
+  a ring; each ring however provides its own type-specific function for
+  implementing this operation.
+ </li>
+ <li><a name="p24833" class="glabel"/><b>global variable</b>
+   A variable which can be referenced freely by functions. In Axiom ,
+  all top-level user-defined variables defined during an interactive
+  user session are global variables. Axiom does not allow <div
+  class="gsyntax">fluid variables</div>, that is, variables 
+  <a href="#p4735">bound</a> by functions which can be referenced by
+  functions those functions call.
+ </li>
+ <li><a name="p25189" class="glabel"/><b>Groebner basis</b>
+   <div class="gsyntax">(algebra)</div> a special basis for a
+  polynomial ideal that allows a simple test for membership. It is
+  useful in solving systems of polynomial equations.
+ </li>
+ <li><a name="p25348" class="glabel"/><b>group</b>
+   <div class="gsyntax">(algebra)</div> a <a href="#p34266">monoid</a>
+  where every element has a multiplicative inverse.
+ </li>
+ <li><a name="p25428" class="glabel"/><b>hash table</b>
+   A data structure that efficiency maps a given object to another. A
+  hash table consists of a set of <div class="gsyntax">entries</div>,
+  each of which associates a <div class="gsyntax">key</div> with a 
+  <div class="gsyntax">value</div>. Finding the object stored under a key
+  can be very fast even if there are a large number of entries since
+  keys are <div class="gsyntax">hashed</div> into numerical codes for
+  fast lookup.
+ </li>
+ <li><a name="p25771" class="glabel"/><b>heap</b>
+   an area of storage used by data in programs. For example, AXIOM will
+  use the heap to hold the partial results of symbolic
+  computations. When cancellations occur, these results remain in the
+  heap until <a href="#p24294">garbage collected</a>.
+ </li>
+ <li><a name="p26034" class="glabel"/><b>history</b>
+   a mechanism which records the results for an interactive
+  computation. Using the history facility, users can save computations,
+  review previous steps of a computation, and restore a previous
+  interactive session at some later time. For details, issue the system
+  command <div class="gsyntax">)history ?</div> to the interpreter. See
+  also <a href="#p21847">frame</a>.
+ </li>
+ <li><a name="p26380" class="glabel"/><b>ideal</b>
+   <div class="gsyntax">(algebra)</div> a subset of a ring that is
+  closed under addition and multiplication by arbitrary ring elements,
+  i.e. it<div class="gspad">'s</div> a module over the ring.
+ </li>
+ <li><a name="p26553" class="glabel"/><b>identifier</b>
+   <div class="gsyntax">(syntax)</div> an Axiom name; a 
+  <a href="#p31774">literal</a> of type <div class="gtype">Symbol</div>. An
+  identifier begins with an alphabetical character or % and may be
+  followed by alphabetic characters, digits, ? or !. Certain
+  distinquished <a href="#p44698">reserved words</a> are not allowed as
+  identifiers but have special meaning in the Axiom .
+ </li>
+ <li><a name="p26892" class="glabel"/><b>immutable</b>
+   an object is immutable if it cannot be changed by an 
+  <a href="#p36041">operation</a>; not a <a href="#p34398">mutable
+  object</a>. Algebraic objects generally immutable: changing an
+  algebraic expression involves copying parts of the original
+  object. One exception is a matrix object of type 
+  <div class="gtype">Matrix</div>. Examples of mutable objects are data
+  structures such as those of type <div class="gtype">List</div>. See
+  also <a href="#p39949">pointer semantics</a>.
+ </li>
+ <li><a name="p27325" class="glabel"/><b>implicit export</b>
+   (of a domain or category) any <a href="#p4093">attribute</a> or 
+  <a href="#p36041">operation</a> which is either an explicit export or
+  else an explicit export of some category which an explicit category
+  export <a href="#p20757">extends</a>.
+ </li>
+ <li><a name="p27564" class="glabel"/><b>index</b>
+  <ol>
+   <li> 
+    a variable that counts the number of times a 
+    <a href="#p33121">loop</a> is repeated. 
+   </li>
+   <li> 
+    the "address" of an element in a data structure (see also category 
+    <div class="gtype">LinearAggregate</div>).
+   </li>
+  </ol>
+ </li>
+ <li><a name="p27746" class="glabel"/><b>infix</b>
+   <div class="gsyntax">(syntax)</div> an 
+  <a href="#p36278">operator</a> placed between two 
+  <a href="#p35946">operands</a>; also called a 
+  <div class="gsyntax">binary operator</div>, e.g. 
+  <div class="gspad">a + b</div>. An infix operator may also be used as a 
+  <a href="#p42559">prefix</a>, e.g. <div class="gspad">+(a, b)</div> is
+  also permissable in the Axiom language. Infix operators have a
+  relative <a href="#p42098">precedence</a>.
+ </li>
+ <li><a name="p28103" class="glabel"/><b>input area</b>
+  a rectangular area on a screen into which users can enter text.
+ </li>
+ <li><a name="p28185" class="glabel"/><b>instantiate</b>
+  to build a <a href="#p6628">category</a>,  <a href="#p17507">domain</a>,  
+  or <a href="#p36778">package</a> at run-time
+ </li>
+ <li><a name="p28282" class="glabel"/><b>integer</b>
+   a <a href="#p31774">literal</a> object of domain 
+  <div class="gtype">Integer</div>, the class of integers with an unbounded
+  number of digits. Integer literals consist of one or more consecutive
+  digits (0-9) with no embedded blanks. Underscores can be used to
+  separate digits in long integers if desirable.
+ </li>
+ <li><a name="p28570" class="glabel"/><b>interactive</b>
+  a system where the user interacts with the computer step-by-step
+ </li>
+ <li><a name="p28640" class="glabel"/><b>interpreter</b>
+   the subsysystem of Axiom responsible for handling user input during
+  an interactive session. The following somewhat simplified description
+  of the typical action of the interpreter. The interpreter parsers the
+  user<div class="gspad">'s</div> input expression to create an
+  expression tree then does a bottom-up traversal of the tree. Each
+  subtree encountered which is not a value consists of a root node
+  denoting an operation name and one or more leaf nodes denoting 
+  <a href="#p35946">operands</a>. The interpreter resolves type mismatches
+  and uses type-inferencing and a library database to determine
+  appropriate types of the operands and the result, and an operation to
+  be performed. The interpreter then builds a domain to perform the
+  indicated operation, then invokes a function from the domain to
+  compute a value. The subtree is then replaced by that value and the
+  process continues. Once the entire tree has been processed, the value
+  replacing the top node of the tree is displayed back to the user as
+  the value of the expression.
+ </li>
+ <li><a name="p29675" class="glabel"/><b>invocation</b>
+   (of a function) the run-time process involved in 
+  <a href="#p19167">evaluating</a> a <a href="#p22911">function</a> 
+  <a href="#p2473">application</a>. This process has two steps. First, a
+  local <a href="#p19131">environment</a> is created where 
+  <a href="#p21594">formal arguments</a> are locally 
+  <a href="#p4735">bound</a> by <a href="#p3322">assignment</a> to their
+  respective actual <a href="#p2885">argument</a>. Second, the 
+  <a href="#p23911">function body</a> is evaluated in that local
+  environment. The evaluation of a function is terminated either by
+  completely evaluating the function body or by the evaluation of a 
+  <div class="gfunction">return</div> expression.
+ </li>
+ <li><a name="p30286" class="glabel"/><b>iteration</b>
+  repeated evaluation of an expression or a sequence of
+  expressions. Iterations use the reserved words 
+  <div class="gfunction">for</div>, <div class="gfunction">while</div>, and
+  <div class="gfunction">repeat</div>.
+ </li>
+ <li><a name="p30459" class="glabel"/><b>Join</b>
+   a primitive Axiom function taking two or more categories as arguments
+  and producing a category containing all of the operations and
+  attributes from the respective categories.
+ </li>
+ <li><a name="p30645" class="glabel"/><b>KCL</b>
+   Kyoto Common LISP, a version of <a href="#p10064">Common LISP</a>
+  which features compilation of the compilation of LISP into the 
+  <div class="gspad">C</div> Programming Language
+ </li>
+ <li><a name="p30801" class="glabel"/><b>library</b>
+   In Axiom , a coolection of compiled modules respresenting the a 
+  <a href="#p6628">category</a> or <a href="#p17507">domain</a>
+  constructor.
+ </li>
+ <li><a name="p30933" class="glabel"/><b>lineage</b>
+   the sequence of <a href="#p13571">default packages</a> for a given
+  domain to be searched during 
+  <a href="#p17853">dynamic lookup</a>. 
+  This sequence is computed first by ordering the category
+  <a href="#p2335">ancestors</a> of the domain according to their <div
+  class="gsyntax">level number</div>, an integer equal to to the
+  minimum distance of the domain from the category. Parents have level
+  1, parents of parents have level 2, and so on. Among categories with
+  equal level numbers, ones which appear in the left-most branches of
+  <div class="gsyntax">Join</div><div class="gspad">s</div> in the
+  source code come first. See also <a href="#p17853">dynamic lookup</a>.
+ </li>
+ <li><a name="p31518" class="glabel"/><b>LISP</b>
+   acronymn for List Processing Language, a language designed for the
+  manipulation of nonnumerical data. The Axiom library is translated
+  into LISP then compiled into machine code by an underlying LISP.
+ </li>
+ <li><a name="p31730" class="glabel"/><b>list</b>
+  an object of a <div class="gtype">List</div> domain.
+ </li>
+ <li><a name="p31774" class="glabel"/><b>literal</b>
+   an object with a special syntax in the language. In Axiom , there are
+  five types of literals: <a href="#p5256">booleans</a>, 
+  <a href="#p28282">integers</a>, <a href="#p21186">floats</a>, 
+  <a href="#p48077">strings</a>, and <a href="#p49347">symbols</a>.
+ </li>
+ <li><a name="p31998" class="glabel"/><b>local</b>
+   <div class="gsyntax">(syntax)</div> A keyword used in user-defined
+  functions to declare that a variable is a 
+  <a href="#p32278">local variable</a> of that function. 
+  Because of default assumptions on
+  variables, such a declaration is not necessary but is available to the
+  user for clarity when appropriate.
+ </li>
+ <li><a name="p32278" class="glabel"/><b>local variable</b>
+   (of a function) a variable <a href="#p4735">bound</a> by that
+  function and such that its binding is invisible to any function that
+  function calls. Also called a <div class="gsyntax">lexical</div>
+  variable. By default in the interpreter:
+  <ol>
+   <li> 
+    any variable <div class="gspad">x</div> which appears on the left hand
+    side of an assignment is regarded a local variable of that
+    function. If the intention of an assignment is to change the value of
+    a <a href="#p24833">global variable</a> <div class="gspad">x</div>,
+    the body of the function must then contain the statement 
+    <div class="gspad">free x</div>.
+   </li>
+   <li> 
+    any other variable is regarded as a <a href="#p22739">free variable</a>. 
+   </li>
+   <li>
+     An optional declaration <div class="gspad">local x</div> is available
+    to explicitly declare a variable to be a local variable. All 
+    <a href="#p21594">formal parameters</a> to the function can be regarded
+    as local variables to the function.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p33121" class="glabel"/><b>loop</b>
+  <ol>
+   <li> an expression containing a <div class="gfunction">repeat</div>
+   </li>
+   <li> 
+    a collection expression having a <div class="gfunction">for</div> or a
+    <div class="gfunction">while</div>, e.g. 
+    <div class="gspad">[f(i) for i in S]</div>.
+  </li>
+  </ol>
+ </li>
+ <li><a name="p33300" class="glabel"/><b>loop body</b>
+   the part of a loop following the <div class="gfunction">repeat</div>
+  that tells what to do each iteration. For example, the body of the
+  loop <div class="gspad">for x in S repeat B</div> is 
+  <div class="gspad">B</div>. For a collection expression, the body of the
+  loop precedes the initial <div class="gfunction">for</div> or 
+  <div class="gfunction">while</div>.
+ </li>
+ <li><a name="p33585" class="glabel"/><b>macro</b>
+  <ol>
+   <li> 
+    <div class="gsyntax">(syntax)</div> An expression of the form 
+    <div class="gspad">macro a == b</div> where <div class="gspad">a</div> is a
+    <a href="#p49347">symbol</a> causes <div class="gspad">a</div> to be
+    textually replaced by the expression <div class="gspad">b</div> at 
+    <a href="#p38242">parse</a> time.
+   </li>
+   <li> 
+    An expression of the form <div class="gspad">macro f(a) == b</div>
+    defines a parameterized macro expansion for a parameterized form 
+    <div class="gspad">f</div> This macro causes a form 
+    <div class="gspad">f</div>(<div class="gspad">x</div>) to be textually
+    replaced by the expression <div class="gspad">c</div> at parse time,
+    where <div class="gspad">c</div> is the expression obtained by
+    replacing <div class="gspad">a</div> by <div class="gspad">x</div>
+    everywhere in <div class="gspad">b</div>. See also 
+    <a href="#p13754">definition</a> where a similar substitution is done
+    during <a href="#p19167">evaluation</a>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p34233" class="glabel"/><b>mode</b>
+   a type expression containing a question-mark 
+  (<div class="gsyntax">?</div>). For example, the mode 
+  <div class="gsyntax">P ?</div> designates <div class="gsyntax">the class
+  of all polynomials over an arbitrary ring</div>.
+ </li>
+ <li><a name="p34266" class="glabel"/><b>monoid</b>
+  is a set with a single, associative operation and an identity element
+ </li>
+ <li><a name="p34398" class="glabel"/><b>mutable</b>
+   objects which contain <a href="#p39600">pointers</a> to other objects
+  and which have operations defined on them which alter these
+  pointers. Contrast <a href="#p26892">immutable</a>. Axiom uses 
+  <a href="#p39949">pointer semantics</a> as does 
+  <a href="#p31518">LISP</a> in contrast with many other languages such as
+  Pascal which use <a href="#p12604">copying semantics</a>. See 
+  <a href="#p39949">pointer semantics</a> for details.
+ </li>
+ <li><a name="p34778" class="glabel"/><b>name</b>
+  <ol>
+   <li>
+    a <a href="#p49347">symbol</a> denoting a <a href="#p52894">variable</a>,
+    i.e. the variable <div class="gspad">x</div>. 
+   </li>
+   <li> 
+    a <a href="#p49347">symbol</a> denoting an 
+    <a href="#p36041">operation</a>,  i.e. the operation
+    <div class="gspad">divide: (Integer, Integer) -> Integer</div>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p35023" class="glabel"/><b>nullary</b>
+  a function with no arguments,  
+  e.g. <div class="gfunction">characteristic</div>.
+ </li>
+ <li><a name="p35104" class="glabel"/><b>nullary</b>
+  operation or function with <a href="#p3173">arity</a> 0
+ </li>
+ <li><a name="p35156" class="glabel"/><b>Object</b>
+   a category with no operations or attributes,  from which most categories
+   in Axiom  are <a href="#p8634">category extensions</a>.
+ </li>
+ <li><a name="p35301" class="glabel"/><b>object</b>
+   a data entity created or manipulated by programs. Elements of
+  domains, functions, and domains themselves are objects. Whereas
+  categories are created by functions, they cannot be dynamically
+  manipulated in the current system and are thus not considered as
+  objects. The most basic objects are <a href="#p31774">literals</a>;
+  all other objects must be created 
+  <a href="#p22911">functions</a>. Objects can refer to other objects using
+  <a href="#p39600">pointers</a>. Axiom language uses 
+  <a href="#p39949">pointer semantics</a> when dealing with 
+  <a href="#p34398">mutable</a> objects.
+ </li>
+ <li><a name="p35854" class="glabel"/><b>object code</b>
+   code which can be directly executed by hardware; also known as 
+  <div class="gsyntax">machine language</div>.
+ </li>
+ <li><a name="p35946" class="glabel"/><b>operand</b>
+   an argument of an <a href="#p36278">operator</a> (regarding an
+  operator as a <a href="#p22911">function</a>).
+ </li>
+ <li><a name="p36041" class="glabel"/><b>operation</b>
+   an abstraction of a <a href="#p22911">function</a>, described by a 
+  <a href="#p46813">signature</a>. For example, 
+  <div align="center" class="gspad">
+   fact: NonNegativeInteger -> NonNegativeInteger
+  </div>
+  describes an operation for "the factorial of a (non-negative) integer".
+ </li>
+ <li><a name="p36278" class="glabel"/><b>operator</b>
+   special reserved words in the language such as 
+  <div class="gfunction">+</div> and <div class="gfunction">*</div>;
+  operators can be either <a href="#p42559">prefix</a> or 
+  <a href="#p27746">infix</a> and have a relative 
+  <a href="#p42098">precedence</a>.
+ </li>
+ <li><a name="p36465" glabel="class"/><b>overloading</b>
+   the use of the same name to denote distinct functions; a function is
+  identified by a <a href="#p46813">signature</a> identifying its name,
+  the number and types of its arguments, and its return types. If two
+  functions can have identical signatures, a
+  <a href="#p37520">package call</a> must be made to distinquish the two.
+ </li>
+ <li><a name="p36778" class="glabel"/><b>package</b>
+   a domain whose exported operations depend solely on the parameters
+  and other explicit domains, e.g. a package for solving systems of
+  equations of polynomials over any field, e.g. floats, rational
+  numbers, complex rational functions, or power series. Facilities for
+  integration, differential equations, solution of linear or polynomial
+  equations, and group theory are provided by "packages". Technically, a
+  package is a domain which has no <a href="#p46813">signature</a>
+  containing the symbol $. While domains intuitively provide
+  computational objects you can compute with, packages intuitively
+  provide functions (<a href="#p41450">polymorphic</a> functions) which
+  will work over a variety of datatypes.
+ </li>
+ <li><a name="p37520" class="glabel"/><b>package call</b>
+   <div class="gsyntax">(syntax)</div> an expression of the form 
+  <div class="gspad">e $ D</div> where <div class="gspad">e</div> is an 
+  <a href="#p2473">application</a> and <div class="gspad">D</div> denotes
+  some <a href="#p36778">package</a> (or <a href="#p17507">domain</a>).
+ </li>
+ <li><a name="p37696" class="glabel"/><b>package call</b>
+   <div class="gsyntax">(syntax)</div> an expression of the form 
+  <div class="gspad">f(x, y)$D</div> used to identify that the function 
+  <div class="gspad">f</div> is to be one from <div class="gspad">D</div>.
+ </li>
+ <li><a name="p37833" class="glabel"/><b>package constructor</b>
+  same as <a href="#p16173">domain constructor</a>.
+ </li>
+ <li><a name="p37878" class="glabel"/><b>parameter</b>
+  see <a href="#p2885">argument</a>
+ </li>
+ <li><a name="p37908" class="glabel"/><b>parameterized datatype</b>
+   a domain that is built on another, for example, polynomials with
+  integer coefficients.
+ </li>
+ <li><a name="p38004" class="glabel"/><b>parameterized form</b>
+   a expression of the form <div class="gspad">f(x, y)</div>, an 
+  <a href="#p2473">application</a> of a function.
+ </li>
+ <li><a name="p38095" class="glabel"/><b>parent</b>
+   (of a domain) a category which is explicitly declared in the source
+  code definition for the domain to be an <a href="#p20171">export</a>
+  of the domain.
+ </li>
+ <li><a name="p38242" class="glabel"/><b>parse</b>
+  <ol>
+   <li>
+     (verb) to produce an internal representation of a user input string;
+    the resultant internal representation is then "interpreted" by Axiom
+    to perform some indicated action.
+   </li>
+   <li>
+    the transformation of a user input string representing a valid Axiom
+    expression into an internal representation as a tree-structure.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p38572" class="glabel"/><b>partially ordered set</b>
+   a set with a reflexive, transitive and antisymetric 
+  <a href="#p4684">binary</a> operation.
+ </li>
+ <li><a name="p38600" class="glabel"/><b>pattern</b>
+  The left hand side of a rewrite rule is called a pattern. Rewrite rules
+  can be used to perform pattern matching, usually for simplification.
+  The right hand side of a rule is called the 
+  <a href="p49000">substitution</a>.
+ </li>
+ <li><a name="p38661" class="glabel"/><b>pattern match</b>
+  <ol>
+   <li>
+     (on expressions) Given a expression called a "subject" 
+    <div class="gspad">u</div>, the attempt to rewrite 
+    <div class="gspad">u</div> using a set of "rewrite rules". Each rule has
+    the form <div class="gspad">A == B</div> where 
+    <div class="gspad">A</div> indicates a expression called a "pattern" and
+    <div class="gspad">B</div> denotes a "replacement". The meaning of
+    this rule is "replace <div class="gspad">A</div> by 
+    <div class="gspad">B"</div>. If a given pattern <div class="gspad">A</div>
+    matches a subexpression of <div class="gspad">u</div>, that
+    subexpression is replaced by <div class="gspad">B</div>. Once
+    rewritten, pattern matching continues until no further changes occur.
+   </li>
+   <li>
+     (on strings) the attempt to match a string indicating a "pattern" to
+    another string called a "subject", for example, for the purpose of
+    identifying a list of names. In a browser, users may enter 
+    <a href="#p46294">search strings</a> for the purpose of identifying
+    constructors, operations, and attributes.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p39400" class="glabel"/><b>pattern variable</b>
+  In a rule a symbol which is not a recognized function acts as a
+  pattern variable and is free to match any subexpression.
+ </li>
+ <li><a name="p39494" class="glabel"/><b>pile</b>
+   alternate syntax for a block, using indentation and column alignment
+  (see also <a href="#p5086">block</a>).
+ </li>
+ <li><a name="p39600" class="glabel"/><b>pointer</b>
+   a reference implemented by a link directed from one object to another
+  in the computer memory. An object is said to 
+  <div class="gsyntax">refer</div> to another if it has a pointer to that
+  other object. Objects can also refer to themselves (cyclic references
+  are legal). Also more than one object can refer to the same
+  object. See also <a href="#p39949">pointer semantics</a>.
+ </li>
+ <li><a name="p39949" class="glabel"/><b>pointer semantics</b>
+   the programming language semantics used in languages such as LISP
+  which allow objects to be <a href="#p34398">mutable</a>. Consider the
+  following sequence of Axiom statements:
+  <ol>
+   <li> <div class="gspad">x : Vector Integer := [1, 4, 7]</div> 
+   </li>
+   <li> <div class="gspad">y := x</div> 
+   </li>
+   <li> <div class="gspad">swap!(x, 2, 3)</div> 
+   </li>
+  </ol>
+  The function <div class="gfunction">swap!</div> from 
+  <div class="gtype">Vector</div> is used to interchange the 2nd and 3rd
+  value in the list <div class="gspad">x</div> producing the value 
+  <div class="gspad">[1, 7, 4]</div>. What value does 
+  <div class="gspad">y</div> have after evaluation of the third statement?
+  The answer is different in Axiom than it is in a language with 
+  <a href="#p12604">copying semantics</a>. In Axiom , first the vector 
+  [1, 2, 3] is created and the variable <div class="gspad">x</div> set to 
+  <a href="#p39600">point</a> to this object. Let
+  <div class="gspad">'s</div> call this object 
+  <div class="gspad">V</div>. Now <div class="gspad">V</div> refers to its 
+  <a href="#p26892">immutable</a> components 1, 2, and 3. Next, the
+  variable <div class="gspad">y</div> is made to point to 
+  <div class="gspad">V</div> just as <div class="gspad">x</div> does. Now the
+  third statement interchanges the last 2 elements of 
+  <div class="gspad">V</div> (the <div class="gsyntax">!</div> at the end of
+  the name <div class="gfunction">swap!</div> from 
+  <div class="gtype">Vector</div> tells you that this operation is
+  destructive, that is, it changes the elements <div class="gsyntax">in
+  place</div>). Both <div class="gspad">x</div> and 
+  <div class="gspad">y</div> perceive this change to 
+  <div class="gspad">V</div>. Thus both <div class="gspad">x</div> and 
+  <div class="gspad">y</div> then have the value 
+  <div class="gspad">[1, 7, 4]</div>. 
+  In Pascal, the second statement causes a copy of 
+  <div class="gspad">V</div> to be stored under 
+  <div class="gspad">y</div>. Thus the change to <div class="gspad">V</div>
+  made by the third statement does not affect 
+  <div class="gspad">y</div>.
+ </li>
+ <li><a name="p41450" class="glabel"/><b>polymorphic</b>
+   a <a href="#p22911">function</a> parameterized by one or more 
+  <a href="#p17507">domains</a>; a <a href="#p2267">algorithm</a> defined
+  <a href="#p6628">categorically</a>. Every function defined in a domain
+  or package constructor with a domain-valued parameter is
+  polymorphic. For example, the same matrix 
+  <div class="gfunction">*</div> function is used to multiply "matrices over
+  integers" as "matrices over matrices over integers"
+ </li>
+ <li><a name="p41972" class="glabel"/><b>postfix</b>
+   an <a href="#p36278">operator</a> that follows its single 
+  <a href="#p35946">operand</a>. Postfix operators are not available in
+  Axiom.
+ </li>
+ <li><a name="p42098" class="glabel"/><b>precedence</b>
+   <div class="gsyntax">(syntax)</div> refers to the so-called 
+  <div class="gsyntax">binding power</div> of an operator. For example, 
+  <div class="gspad">*</div> has higher binding power than 
+  <div class="gspad">+</div> so that the expression
+  <div class="gspad">a + b * c</div> is equivalent to
+  <div class="gspad">a + (b * c)</div>.
+ </li>
+ <li><a name="p42318" class="glabel"/><b>precision</b>
+   the number of digits in the specification of a number, e.g. as set by
+  <div class="gfunction">precision</div> from <div class="gtype">Float</div>.
+ </li>
+ <li><a name="p42440" class="glabel"/><b>predicate</b>
+  <ol>
+   <li> a Boolean valued function,  e.g. 
+        <div class="gspad">odd: Integer -> Boolean</div>. 
+   </li>
+   <li> an Boolean valued expression
+   </li>
+  </ol>
+ </li>
+ <li><a name="p42559" class="glabel"/><b>prefix</b>
+   <div class="gsyntax">(syntax)</div> an 
+  <a href="#p36278">operator</a> such as <div class="gspad">-</div> and
+  <div class="gspad">not</div> that is written 
+  <div class="gsyntax">before</div> its single 
+  <a href="#p35946">operand</a>. Every function of one argument can be used
+  as a prefix operator. For example, all of the following have
+  equivalent meaning in Axiom : <div class="gspad">f(x)</div>, 
+  <div class="gspad">f x</div>, and <div class="gspad">f.x</div>. See also 
+  <a href="#p17269">dot notation</a>.
+ </li>
+ <li><a name="p42917" class="glabel"/><b>quote</b>
+   the prefix <a href="#p36278">operator</a> 
+  <div class="gfunction">'</div> meaning <div class="gsyntax">do not
+  evaluate</div>.
+ </li>
+ <li><a name="p43000" class="glabel"/><b>Record</b>
+   (basic domain constructor) a domain constructor used to create a
+  inhomogeneous aggregate composed of pairs of "selectors" and 
+  <a href="#p52710">values</a>. A Record domain is written in the form 
+  <div class="gspad">Record(a1:D1, ..., an:Dn)</div> 
+  (<div class="gspad">n</div> > 0) where <div class="gspad">a1</div>, ...,
+  <div class="gspad">an</div> are identifiers called the 
+  <div class="gsyntax">selectors</div> of the record, and 
+  <div class="gspad">D1</div>, ..., <div class="gspad">Dn</div> are domains
+  indicating the type of the component stored under selector 
+  <div class="gspad">an</div>.
+ </li>
+ <li><a name="p43448" class="glabel"/><b>recurrence relation</b>
+   A relation which can be expressed as a function 
+  <div class="gspad">f</div> with some argument <div class="gspad">n</div>
+  which depends on the value of <div class="gspad">f</div> at 
+  <div class="gspad">k</div> previous values. In many cases, Axiom will
+  rewrite a recurrence relation on compilation so as to 
+  <a href="#p5499">cache</a> its previous <div class="gspad">k</div> values
+  and therefore make the computation significantly more efficient.
+ </li>
+ <li><a name="p43806" class="glabel"/><b>recursion</b>
+   use of a self-reference within the body of a function. Indirect
+  recursion is when a function uses a function below it in the call
+  chain.
+ </li>
+ <li><a name="p43948" class="glabel"/><b>recursive</b>
+  <ol>
+   <li> A function that calls itself,  either directly or indirectly through
+        another function. 
+   </li>
+   <li> self-referential. See also <a href="#p43948">recursive</a>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p44097" class="glabel"/><b>reference</b>
+  see <a href="#p39600">pointer</a>
+ </li>
+ <li><a name="p44126" class="glabel"/><b>Rep</b>
+   a special identifier used as <a href="#p32278">local variable</a> of
+  a domain constructor body to denote the representation domain for
+  objects of a domain.
+ </li>
+ <li><a name="p44277" class="glabel"/><b>representation</b>
+   a <a href="#p17507">domain</a> providing a data structure for
+  elements of a domain; generally denoted by the special identifier 
+  <a href="#p44126">Rep</a> in the Axiom programming language. As domains
+  are <a href="#p725">abstract datatypes</a>, this representation is not
+  available to users of the domain, only to functions defined in the 
+  <a href="#p23911">function body</a> for a domain constructor. Any domain
+  can be used as a representation.
+ </li>
+ <li><a name="p44698" class="glabel"/><b>reserved word</b>
+   a special sequence of non-blank characters with special meaning in
+  the Axiom language. Examples of reserved words are names such as 
+  <div class="gfunction">for</div>, <div class="gfunction">if</div>, and 
+  <div class="gfunction">free</div>, operator names such as 
+  <div class="gfunction">+</div> and <div class="gspad">mod</div>, special
+  character strings such as <div class="gspad">==</div> and 
+  <div class="gspad">:=</div>.
+ </li>
+ <li><a name="p45044" class="glabel"/><b>retraction</b>
+   to move an object in a parameterized domain back to the underlying
+  domain, for example to move the object <div class="gspad">7</div> from
+  a "fraction of integers" 
+  (domain <div class="gtype">Fraction Integer</div>) to
+  "the integers" (domain <div class="gtype">Integer</div>).
+ </li>
+ <li><a name="p45280" class="glabel"/><b>return</b>
+   when leaving a function, the value of the expression following 
+  <div class="gfunction">return</div> becomes the value of the function.
+ </li>
+ <li><a name="p45405" class="glabel"/><b>ring</b>
+   a set with a commutative addition, associative multiplication, a unit
+  element, and multiplication distributes over addition and subtraction.
+ </li>
+ <li><a name="p45557" class="glabel"/><b>rule</b>
+   <div class="gsyntax">(syntax)</div> 1. An expression of the form
+  <div class="gspad">rule A == B</div> indicating a "rewrite
+  rule". 2. An expression of the form 
+  <div class="gspad">rule(R1;...;Rn)</div> 
+  indicating a set of "rewrite rules" 
+  <div class="gspad">R1</div>, ..., <div class="gspad">Rn</div>. See 
+  <a href="#p38661">pattern matching</a> for details.
+ </li>
+ <li><a name="p45818" class="glabel"/><b>run-time</b>
+   the time of doing a computation. Contrast 
+  <a href="#p10167">compile-time</a>. rather than prior to it; 
+  <a href="#p17507">dynamic</a> as opposed to 
+  <a href="#p47594">static</a>. For example, the decision of the intepreter
+  to build a structure such as "matrices with power series entries" in
+  response to user input is made at run-time.
+ </li>
+ <li><a name="p46129" class="glabel"/><b>run-time check</b>
+   an error-checking which can be done only when the program receives
+  user input; for example, confirming that a value is in the proper
+  range for a computation.
+ </li>
+ <li><a name="p46200" class="glabel"/><b>search order</b>
+   the sequence of <a href="#p13571">default packages</a> for a given
+  domain to be searched during <a href="#p17853">dynamic
+  lookup</a>. This sequence is computed first by ordering the category
+  <a href="#p2335">ancestors</a> of the domain according to their 
+  <div class="gsyntax">level number</div>, an integer equal to to the
+  minimum distance of the domain from the category. Parents have level
+  1, parents of parents have level 2, and so on. Among categories with
+  equal level numbers, ones which appear in the left-most branches of
+  <div class="gsyntax">Join</div><div class="gspad">s</div> in the
+  source code come first. See also <a href="#p17853">dynamic lookup</a>.
+ </li>
+ <li><a name="p46294" class="glabel"/><b>search string</b>
+  a string entered into an <a href="#p28103">input area</a> on a screen
+ </li>
+ <li><a name="p46372" class="glabel"/><b>selector</b>
+  an identifier used to address a component value of a
+  <a href="p43000">Record</a> datatype.
+ </li>
+ <li><a name="p46454" class="glabel"/><b>semantics</b>
+   the relationships between symbols and their meanings. The rules for
+  obtaining the <div class="gsyntax">meaning</div> of any syntactically
+  valid expression.
+ </li>
+ <li><a name="p46594" class="glabel"/><b>semigroup</b>
+   <div class="gsyntax">(algebra)</div> a <a href="#p34266">monoid</a>
+  which need not have an identity; it is closed and associative.
+ </li>
+ <li><a name="p46699" class="glabel"/><b>side effect</b>
+   action which changes a component or structure of a value. See 
+  <a href="#p14365">destructive operation</a> for details.
+ </li>
+ <li><a name="p46813" class="glabel"/><b>signature</b>
+   <div class="gsyntax">(syntax)</div> an expression describing an 
+  <a href="#p36041">operation</a>. A signature has the form as 
+  <div class="gspad">name : source -> target</div>, where 
+  <div class="gspad">source</div> gives the type of the arguments of the
+  operation, and <div class="gspad">target</div> gives the type of the
+  result.
+ </li>
+ <li><a name="p47066" class="glabel"/><b>small float</b>
+  the domain for hardware floating point arithmetic as provided by the
+  computer hardware.
+ </li>
+ <li><a name="p47159" class="glabel"/><b>small integer</b>
+  the domain for hardware integer arithmetic. as provided by the computer 
+  hardware.
+ </li>
+ <li><a name="p47246" class="glabel"/><b>source</b>
+   the <a href="#p50664">type</a> of the argument of a 
+  <a href="#p22911">function</a>; the type expression before the 
+  <div class="gspad">-></div> in a <a href="#p46813">signature</a>. For
+  example, the source of 
+  <div class="gspad">f : (Integer, Integer) -> Integer</div> 
+  is <div class="gspad">(Integer, Integer)</div>.
+ </li>
+ <li><a name="p47486" class="glabel"/><b>sparse</b>
+   data structure whose elements are mostly identical (a sparse matrix
+  is one filled with mostly zeroes).
+ </li>
+ <li><a name="p47594" class="glabel"/><b>static</b>
+  that computation done before run-time, such as compilation. Contrast
+  <a href="#p17507">dynamic</a>.
+ </li>
+ <li><a name="p47691" class="glabel"/><b>step number</b>
+   the number which precedes user input lines in an interactive session;
+  the output of user results is also labeled by this number.
+ </li>
+ <li><a name="p47825" class="glabel"/><b>stream</b>
+   an object of <div class="gtype">Stream(R)</div>, a generalization of
+  a <a href="#p31730">list</a> to allow an infinite number of
+  elements. Elements of a stream are computed "on demand". Strings are
+  used to implement various forms of power series.
+ </li>
+ <li><a name="p48077" class="glabel"/><b>string</b>
+   an object of domain <div class="gtype">String</div>. Strings are 
+  <a href="#p31774">literals</a> consisting of an arbitrary sequence of 
+  <a href="#p9278">characters</a> surrounded by double-quotes 
+  (<div class="gfunction">"</div>), e.g. 
+  <div class="gspad">"Look here!"</div>.
+ </li>
+ <li><a name="p48303" class="glabel"/><b>subdomain</b>
+   <div class="gsyntax">(basic concept)</div> a 
+  <a href="#p17507">domain</a> together with a 
+  <a href="#p42440">predicate</a> characterizing which members of the
+  domain belong to the subdomain. The exports of a subdomain are usually
+  distinct from the domain itself. A fundamental assumption however is
+  that values in the subdomain are automatically 
+  <a href="#p9572">coerceable</a> to values in the domain. For example, if
+  <div class="gspad">n</div> and <div class="gspad">m</div> are declared
+  to be members of a subdomain of the integers, then 
+  <div class="gsyntax">any</div> <a href="#p4684">binary</a> operation from
+  <div class="gtype">Integer</div> is available on 
+  <div class="gspad">n</div> and <div class="gspad">m</div>. On the other
+  hand, if the result of that operation is to be assigned to, say, 
+  <div class="gspad">k</div>, also declared to be of that subdomain, a 
+  <a href="#p45818">run-time</a> check is generally necessary to ensure
+  that the result belongs to the subdomain.
+ </li>
+ <li><a name="p49000" class="glabel"/><b>substitution</b>
+  The right hand side of a rule is called the substitution.
+  The left hand side of a rewrite rule is called a 
+  <a href="p38600">pattern</a>. Rewrite rules
+  can be used to perform pattern matching, usually for simplification.
+ </li>
+ <li><a name="p49128" class="glabel"/><b>such that clause</b>
+   the use of <div class="gfunction">|</div> followed by an expression
+  to filter an iteration.
+ </li>
+ <li><a name="p49209" class="glabel"/><b>suffix</b>
+   <div class="gsyntax">(syntax)</div> an 
+  <a href="#p36278">operator</a> which placed after its operand. Suffix
+  operators are not allowed in the Axiom language.
+ </li>
+ <li><a name="p49347" class="glabel"/><b>symbol</b>
+   objects denoted by <a href="#p26553">identifier</a> 
+  <a href="#p31774">literals</a>; an element of domain 
+  <div class="gtype">Symbol</div>. The interpreter defaultly converts a
+  symbol <div class="gspad">x</div> into 
+  <div class="gtype">Variable(x)</div>.
+ </li>
+ <li><a name="p49538" class="glabel"/><b>syntax</b>
+  rules of grammar,  punctuation etc. for forming correct expressions.
+ </li>
+ <li><a name="p49613" class="glabel"/><b>system commands</b>
+   top-level Axiom statements that begin with 
+  <div class="gsyntax">)</div>. System commands allow users to query the
+  database, read files, trace functions, and so on.
+ </li>
+ <li><a name="p49773" class="glabel"/><b>tag</b>
+  an identifier used to discriminate a branch of a
+  <a href="#p51780">Union</a> type.
+ </li>
+ <li><a name="p49851" class="glabel"/><b>target</b>
+   the <a href="#p50664">type</a> of the result of a 
+  <a href="#p22911">function</a>; the type expression following the 
+  <div class="gspad">-></div> in a <a href="#p46813">signature</a>.
+ </li>
+ <li><a name="p49990" class="glabel"/><b>top-level</b>
+  refers to direct user interactions with the Axiom  interpreter.
+ </li>
+ <li><a name="p50064" class="glabel"/><b>totally ordered set</b>
+   <div class="gsyntax">(algebra)</div> a partially ordered set where
+  any two elements are comparable.
+ </li>
+ <li><a name="p50148" class="glabel"/><b>trace</b>
+   use of system function <div class="gcmd">)trace</div> to track the
+  arguments passed to a function and the values returned.
+ </li>
+ <li><a name="p50262" class="glabel"/><b>tuple</b>
+   an expression of two or more other expressions separated by commas,
+  e.g. <div class="gspad">4, 7, 11</div>. Tuples are also used for
+  multiple arguments both for <a href="#p2473">applications</a>
+  (e.g. <div class="gspad">f(x, y)</div>) and in 
+  <a href="#p46813">signatures</a> (e.g. 
+  <div class="gspad">(Integer, Integer) -> Integer</div>). 
+  A tuple is not a data structure, rather a
+  syntax mechanism for grouping expressions.
+ </li>
+ <li><a name="p50664" class="glabel"/><b>type</b>
+   The type of any <a href="#p48303">subdomain</a> is the unique symbol
+  <div class="gsyntax">Category</div>. The type of a
+  <a href="#p17507">domain</a> is any <a href="#p6628">category</a> that
+  domain belongs to. The type of any other object is either the (unique)
+  domain that object belongs to or any <a href="#p48303">subdomain</a>
+  of that domain. The type of objects is in general not unique.
+ </li>
+ <li><a name="p51002" class="glabel"/><b>type checking</b>
+  a system function which determines whether the datatype of an object is
+  appropriate for a given operation.
+ </li>
+ <li><a name="p51114" class="glabel"/><b>type constructor</b>
+  a <a href="#p16173">domain constructor</a> or
+  <a href="#p8355">category constructor</a>.
+ </li>
+ <li><a name="p51189" class="glabel"/><b>type inference</b>
+   when the interpreter chooses the type for an object based on
+  context. For example, if the user interactively issues the definition
+  <div align="center" class="gspad">f(x) == (x + %i)**2</div> then
+  issues <div class="gspad">f(2)</div>, the interpreter will infer the
+  type of <div class="gspad">f</div> to be 
+  <div class="gspad">Integer -> Complex Integer</div>.
+ </li>
+ <li><a name="p51480" class="glabel"/><b>unary</b>
+  operation or function with <a href="#p3173">arity</a> 1
+ </li>
+ <li><a name="p51532" class="glabel"/><b>underlying domain</b>
+   for a <a href="#p17507">domain</a> that has a single domain-valued
+  parameter, the <div class="gsyntax">underlying domain</div> refers to
+  that parameter. For example, the domain "matrices of integers" 
+  (<div class="gtype">Matrix Integer</div>) has underlying domain 
+  <div class="gtype">Integer</div>.
+ </li>
+ <li><a name="p51780" class="glabel"/><b>Union</b>
+   <div class="gsyntax">(basic domain constructor)</div> a domain
+  constructor used to combine any set of domains into a single domain. A
+  Union domain is written in the form 
+  <div class="gspad">Union(a1:D1,..., an:Dn)</div> 
+  (<div class="gspad">n</div> > 0) where 
+  <div class="gspad">a1</div>, ..., <div class="gspad">an</div> are
+  identifiers called the <div class="gsyntax">tags</div> of the union,
+  and <div class="gspad">D1</div>, ..., <div class="gspad">Dn</div> are
+  domains called the <div class="gsyntax">branches</div> of the
+  union. The tags <div class="gspad">ai</div> are optional, but required
+  when two of the <div class="gspad">Di</div> are equal, e.g. 
+  <div class="gspad">Union(inches:Integer, centimeters:Integer)</div>. In the
+  interpreter, values of union domains are automatically coerced to
+  values in the branches and vice-versa as appropriate. See also 
+  <a href="#p6220">case</a>.
+ </li>
+ <li><a name="p52482" class="glabel"/><b>unit</b>
+  <div class="gsyntax">(algebra)</div> an invertible element.
+ </li>
+ <li><a name="p52526" class="glabel"/><b>user function</b>
+  a function defined by a user during an interactive session. Contrast
+  <a href="#p5399">built-in function</a>.
+ </li>
+ <li><a name="p52631" class="glabel"/><b>user variable</b>
+  a variable created by the user at top-level during an interactive session
+ </li>
+ <li><a name="p52710" class="glabel"/><b>value</b>
+  <ol>
+   <li>
+    the result of <a href="#p19167">evaluating</a> an expression. 
+   </li>
+   <li> 
+    a property associated with a <a href="#p52894">variable</a> in a
+    <a href="#p4735">binding</a> in an <a href="#p19131">environment</a>.
+   </li>
+  </ol>
+ </li>
+ <li><a name="p52894" class="glabel"/><b>variable</b>
+  a means of referring to an object but itself is not an object. A
+  variable has a name and an associated <a href="#p4735">binding</a>
+  created by <a href="#p19167">evaluation</a> of Axiom expressions such
+  as <a href="#p12903">declarations</a>, 
+  <a href="#p3322">assignments</a>, and 
+  <a href="#p13754">definitions</a>. In the top-level 
+  <a href="#p19131">environment</a> of the interpreter, variables are 
+  <a href="#p24833">global variables</a>. Such variables can be freely
+  referenced in user-defined functions although a 
+  <a href="#p22113">free</a> declaration is needed to assign values to
+  them. See <a href="#p32278">local variable</a> for details.
+ </li>
+ <li><a name="p53484" class="glabel"/><b>Void</b>
+   the type given when the <a href="#p52710">value</a> and <a
+  href="#p50664">type</a> of an expression are not needed. Also used
+  when there is no guarantee at run-time that a value and predictable
+  mode will result.
+ </li>
+ <li><a name="p53681" class="glabel"/><b>wild card</b>
+   a symbol which matches any substring including the empty string; for
+  example, the search string <div class="gsyntax">*an*</div> matches an
+  word containing the consecutive letters <div class="gsyntax">a</div>
+  and <div class="gsyntax">n</div>
+ </li>
+ <li><a name="p53866" class="glabel"/><b>workspace</b>
+   an interactive record of the user input and output held in an
+  interactive history file. Each user input and corresponding output
+  expression in the workspace has a corresponding <a href="#p47691">step
+  number</a>. The current output expression in the workspace is referred
+  to as <div class="gspad">%</div>. The output expression associated
+  with step number <div class="gspad">n</div> is referred to by <div
+  class="gspad">%%(n)</div>. The <div class="gspad">k</div>-th previous
+  output expression relative to the current step number <div
+  class="gspad">n</div> is referred to by <div class="gspad">%%(-
+  k)</div>. Each interactive <a href="#p21847">frame</a> has its own
+  workspace.
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/graph2d.xhtml b/src/axiom-website/hyperdoc/graph2d.xhtml
new file mode 100644
index 0000000..021d86a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/graph2d.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      graph2d not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/graph3d.xhtml b/src/axiom-website/hyperdoc/graph3d.xhtml
new file mode 100644
index 0000000..a7dfab1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/graph3d.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      graph3d not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/graphexamples.xhtml b/src/axiom-website/hyperdoc/graphexamples.xhtml
new file mode 100644
index 0000000..b149238
--- /dev/null
+++ b/src/axiom-website/hyperdoc/graphexamples.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      graphexamples not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/graphicspage.xhtml b/src/axiom-website/hyperdoc/graphicspage.xhtml
new file mode 100644
index 0000000..187b65d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/graphicspage.xhtml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+Axiom can plot curves and surfaces of various types, as well as
+lists of points in the plane.
+  <table>
+   <tr>
+    <td>
+     <a href="graphexamples.xhtml">Examples</a>
+    </td>
+    <td>
+     See examples of Axiom graphics
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="graph2d.xhtml">2D Graphics</a>
+    </td>
+    <td>
+     Graphics in the real and complex plane
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="graph3d.xhtml">3D Graphics</a>
+    </td>
+    <td>
+     Plot surfaces, curves, or tubes around curves
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="graphviewports.xhtml">Viewports</a>
+    </td>
+    <td>
+     Customize graphics using Viewports
+    </td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/graphviewports.xhtml b/src/axiom-website/hyperdoc/graphviewports.xhtml
new file mode 100644
index 0000000..9cd8ed0
--- /dev/null
+++ b/src/axiom-website/hyperdoc/graphviewports.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      graphviewports not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/htxtoppage.xhtml b/src/axiom-website/hyperdoc/htxtoppage.xhtml
new file mode 100644
index 0000000..abf9ec3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/htxtoppage.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      htxtoppage not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/indefiniteintegral.xhtml b/src/axiom-website/hyperdoc/indefiniteintegral.xhtml
new file mode 100644
index 0000000..1b2ce88
--- /dev/null
+++ b/src/axiom-website/hyperdoc/indefiniteintegral.xhtml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    return('integrate('+myform.expr.value+','+myform.vars.value+')');
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <form id="form2">
+   Enter the function you want to integrate:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" 
+     value="1/(x^2+6)"/><br/>
+   Enter the variable of integration:
+   <input type="text" id="vars" size="5" tabindex="20" value="x"/><br/>
+  </form>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/jenks.xhtml b/src/axiom-website/hyperdoc/jenks.xhtml
new file mode 100644
index 0000000..9c3631e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/jenks.xhtml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ <center>
+  <a href="axbook/book-contents.xhtml">
+   <img src="axbook/ps/bluebayou.png"/>
+  </a>
+ </center>
+ <center>
+  <h1>
+   <a href="axbook/book-contents.xhtml">
+    AXIOM -- Richard D. Jenks and Robert S. Sutor
+   </a>
+  </h1>
+ </center>
+ <center>
+  <h2>
+   <a href="axbook/book-contents.xhtml">
+    The Scientific Computation System
+   </a>
+  </h2>
+ </center>
+ <center>
+  <h2>
+   <a href="axbook/book-contents.xhtml">
+    Volume 0 -- The Textbook
+   </a>
+  </h2>
+ </center>
+ <a href="axbook/book-contents.xhtml#chapter0">
+  Chapter 0: Introduction to Axiom
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter1">
+  Chapter 1: An Overview of Axiom
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter2">
+ Chapter 2: Using Types and Modes
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter3">
+ Chapter 3: Using HyperDoc
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter4">
+ Chapter 4: Input Files and Output Styles
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter5">
+ Chapter 5: Overview of Interactive Language
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter6">
+ Chapter 6: User-Defined Functions, Macros and Rules
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter7">
+ Chapter 7: Graphics
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter8">
+ Chapter 8: Advanced Problem Solving
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter9">
+ Chapter 9: Some Examples of Domains and Packages
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter10">
+ Chapter 10: Interactive Programming
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter11">
+ Chapter 11: Packages
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter12">
+ Chapter 12: Categories
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter13">
+ Chapter 13: Domains
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter14">
+ Chapter 14: Browse
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter15">
+ Chapter 15: What's New in Axiom Version 2.0
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter17">
+ Chapter 17: Categories
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter18">
+ Chapter 18: Domains
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter19">
+ Chapter 19: Packages
+ </a><br/>
+ <a href="axbook/book-contents.xhtml#chapter21">
+ Chapter 21: Programs for AXIOM Images
+ </a><br/>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/laurentseries.xhtml b/src/axiom-website/hyperdoc/laurentseries.xhtml
new file mode 100644
index 0000000..e7aa8f2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/laurentseries.xhtml
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function').value;
+    myivar = document.getElementById('ivar').value;
+    mypvar = document.getElementById('pvar').value;
+    myevar = document.getElementById('evar').value;
+    myival = document.getElementById('ival').value;
+    mysval = document.getElementById('sval').value;
+    ans = 'series('+myivar+'+->'+myfunc+','+mypvar+'='+myevar+','+
+         myival+'..,'+mysval+')';
+    alert(ans);
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td>
+      Enter the formula for the general coefficient of the series:
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <input type="text" id="function" size="80" tabindex="10"
+       value="(-1)^(n-1)/(n+2)"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the index variable for your formula:
+     <input type="text" id="ivar" size="10" tabindex="20" value="n"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the power series variable:
+     <input type="text" id="pvar" size="10" tabindex="30" value="x"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the point about which to expand:
+     <input type="text" id="evar" size="10" tabindex="40" value="0"/>
+    </td>
+   </tr>
+  </table>
+For Laurent Series, the exponent of the power series variable ranges
+from an initial value, an arbitrary integer value, to plus
+infinity; the step size is any positive integer.
+  <table>
+   <tr>
+    <td>
+     Enter the initial value of the index (an integer):
+     <input type="text" id="ival" size="10" tabindex="50" value="-1"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the step size (a positive integer):
+     <input type="text" id="sval" size="10" tabindex="60" value="1"/>
+    </td>
+   </tr>
+  </table>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
+
diff --git a/src/axiom-website/hyperdoc/lin1darrays.xhtml b/src/axiom-website/hyperdoc/lin1darrays.xhtml
new file mode 100644
index 0000000..dd5ee65
--- /dev/null
+++ b/src/axiom-website/hyperdoc/lin1darrays.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      lin1darrays not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/lin2darrays.xhtml b/src/axiom-website/hyperdoc/lin2darrays.xhtml
new file mode 100644
index 0000000..291a422
--- /dev/null
+++ b/src/axiom-website/hyperdoc/lin2darrays.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      lin2darrays not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/linalgpage.xhtml b/src/axiom-website/hyperdoc/linalgpage.xhtml
new file mode 100644
index 0000000..818c896
--- /dev/null
+++ b/src/axiom-website/hyperdoc/linalgpage.xhtml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td>
+     <a href="linintro.xhtml">Introduction</a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Create and manipulate matrices. Work with the entries of a
+     matrix. Perform matrix arithmetic.
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="lincreate.xhtml">Creating Matrices</a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Create matrices from scratch and from other matrices
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="linoperations.xhtml">Operations on Matrices</a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Algebraic manipulations with matrices. Compute the inverse,
+     determinant, and trace of a matrix. Find the rank, nullspace,
+     and row echelon form of a matrix.
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="lineigen.xhtml">Eigenvalues and Eigenvectors</a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     How to compute eigenvalues and eigenvectors
+    </td>
+   </tr>
+  </table>
+<hr/>
+ <ul>
+  <li>
+   <a href="linhilbert.xhtml">
+    Example: Determinant of a Hilbert Matrix
+   </a>
+  </li>
+  <li>
+   <a href="linpermaent.xhtml">
+    Computing the Permanent
+   </a>
+  </li>
+  <li>
+   <a href="linvectors.xhtml">
+    Working with Vectors
+   </a>
+  </li>
+  <li>
+   <a href="linsquarematrices.xhtml">
+    Working with Square Matrices
+   </a>
+  </li>
+  <li>
+   <a href="lin1darrays.xhtml">
+    Working with One-Dimensional Arrays
+   </a>
+  </li>
+  <li>
+   <a href="lin2darrays.xhtml">
+    Working with Two-Dimensional Arrays
+   </a>
+  </li>
+  <li>
+   <a href="linconversion.xhtml">
+    Conversion (Polynomials of Matrices)
+   </a>
+  </li>
+ </ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/linconversion.xhtml b/src/axiom-website/hyperdoc/linconversion.xhtml
new file mode 100644
index 0000000..05fed12
--- /dev/null
+++ b/src/axiom-website/hyperdoc/linconversion.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      linconversion not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/lincreate.xhtml b/src/axiom-website/hyperdoc/lincreate.xhtml
new file mode 100644
index 0000000..51f4169
--- /dev/null
+++ b/src/axiom-website/hyperdoc/lincreate.xhtml
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Creating Matrices</div>
+  <hr/>
+There are many ways to create a matrix from a collection of values or
+from existing matrices.
+
+If the matrix has almost all items equal to the same value, use
+<a href="dbopnew.xhtml">new</a> to create a matrix filled with that value
+and then reset the entries that are different.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:Matrix(Integer):=new(3,3,0)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+To change the entry in the second row, third column to 5, use
+<a href="dbopsetelt.xhtml">setelt</a>.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="setelt(m,2,3,5)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+An alternative syntax is to use assignment.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="m(1,2):=10" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The matrix was destructively modified.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="m" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+If you already have the matrix entries as a list of lists, use
+<a href="dbopmatrix.xhtml">matrix</a>.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="matrix [[1,2,3,4],[0,9,8,7]]" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+If the matrix is diagonal, use
+<a href="dbopdiagonalmatrix.xhtml">diagonalMatrix</a>
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="dm:=diagonalMatrix [1,x^2,x^3,x^4,x^5]" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopsetrowbang.xhtml">setRow!</a> and
+<a href="dbopsetcolumnbang.xhtml">setColumn!</a>
+to change a row or column of a matrix.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value="setRow!(dm,5,vector [1,1,1,1,1])" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p6','p7','p8']);"
+    value="setColumn!(dm,2,vector [y,y,y,y,y])" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopcopy.xhtml">copy</a> to make a copy of a matrix.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p6','p7','p8','p9']);"
+    value="cdm:=copy(dm)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+This is useful if you intend to modify a matrix destructively but want a
+copy of the original.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p6','p7','p8','p9','p10']);"
+    value="setelt(dm,4,1,1-x^7)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p6','p7','p8','p9','p10','p11']);"
+    value="[dm,cdm]" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopsubmatrix.xhtml">subMatrix</a>(dm,2,3,2,4) to extract
+part of an existing matrix. The syntax is
+<pre>
+  subMatrix(m,firstrow,lastrow,firstcol,lastcol)
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p6','p7','p8','p9','p10','p11','p12']);"
+    value="subMatrix(dm,2,3,2,4)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+To change a submatrix, use 
+<a href="dbopsetsubmatrixbang.xhtml">setsubMatrix!</a>.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="makeRequest('p13');"
+    value="d:=diagonalMatrix [1.2,-1.3,1.4,-1.5]" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+If e is too big to fit where you specify, an error message is displayed. Use
+<a href="dbopsubmatrix.xhtml">subMatrix</a>.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="makeRequest('p14');"
+    value="e:=matrix [[6.7,9.11],[-31.33,67.19]]" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+This changes the submatrix of d whose upper left corner is at the first row
+and second column and whose size is that of e.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p13','p14','p15']);"
+    value="setsubMatrix!(d,1,2,e)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p13','p14','p15','p16']);"
+    value="d" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Matrices can be joined either horizontally or vertically to make new
+matrices.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="makeRequest('p17');"
+    value="a:=matrix [[1/2,1/3,1/4],[1/5,1/6,1/7]]" />
+  <div id="ansp17"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="makeRequest('p18');"
+    value="b:=matrix [[3/5,3/7,3/11],[3/13,3/17,3/19]]" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbophorizconcat.xhtml">horizConcat</a> to append them side to
+side. The two matrices must have the same number of rows.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p17','p18','p19']);"
+    value="horizConcat(a,b)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopvertconcat.xhtml">vertConcat</a> to stack one upon the
+other. The two matrices must have the same number of columns.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p17','p18','p20']);"
+    value="vab:=vertConcat(a,b)" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboptranspose.xhtml">transpose</a> is used to create
+a new matrix by reflection across the main diagonal.
+<ul>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="handleFree(['p17','p18','p20','p21']);"
+    value="transpose vab" />
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/lineigen.xhtml b/src/axiom-website/hyperdoc/lineigen.xhtml
new file mode 100644
index 0000000..a5e2baa
--- /dev/null
+++ b/src/axiom-website/hyperdoc/lineigen.xhtml
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Computation of Eigenvalues and Eigenvectors</div>
+  <hr/>
+In this section we show you some of Axiom's facilities for computing and
+manipulating eigenvalues and eigenvectors, also called characteristic
+values and characteristic vectors, respectively.
+
+Let's first create a matrix with integer entries.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m1:=matrix [[1,2,1],[2,1,-2],[1,-2,4]]" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+To get a list of the rational eigenvalues, use the operation
+<a href="dbopeigenvalues.xhtml">eigenvalues</a>.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="leig:=eigenvalues(m1)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Given an explicit eigenvalue, 
+<a href="dbopeigenvector.xhtml">eigenvector</a> computes the eigenvectors
+corresponding to it.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="eigenvector(first(leig),m1)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopeigenvectors.xhtml">eigenvectors</a> returns a
+list of pairs of values and vectors. When an eigenvalue is rational, Axiom
+gives you the value explicitly; otherwise, its minimal polynomial is given,
+(the polynomial of lowest degree with the eigenvalues as roots), together
+with a parametric representation of the eigenvector using the eigenvalue.
+This means that if you ask Axiom to <a href="dbopsolve.xhtml">solve</a>
+the minimal polynomial, then you can substitute these roots into the
+parametric form of the corresponding eigenvectors.
+
+You must be aware that unless an exact eigenvalue has been computed, 
+the eigenvector may be badly in error.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="eigenvectors(m1)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Another possibility is to use the operation
+<a href="dbopradicaleigenvectors.xhtml">radicalEigenvectors</a> tries to
+compute explicitly the eignevectors in terms of radicals.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="radicalEigenvectors(m1)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Alternatively, Axiom can compute real or complex approximations to the
+eigenvectors and eigenvalues using the operations
+<a href="dboprealeigenvectors.xhtml">realEigenvectors</a> or
+<a href="dbopcomplexeigenvectors.xhtml">complexEigenvectors</a>. They
+each take an additional argument epsilon to specify the "precision"
+required. In the real case, this means that each approximation will be
+within plus or minus epsilon of the actual result. In the complex case, this
+means that each approximation will be within plus or minus epsilon of the
+actual result in each of the real and imaginary parts.
+
+The precision can be specified as a <a href="db.xhtml?Float">Float</a> if
+the results are desired in floating-point notation, or as
+<a href="dbfractioninteger.xhtml">Fraction Integer</a> if the results are
+to be expressed using rational (or complex rational) numbers.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p6']);"
+    value="realEigenvectors(m1,1/1000)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+If an n by n matrix has n distinct eigenvalues (and therefore n eigenvectors)
+the operation <a href="dbopeigenmatrix.xhtml">eigenMatrix</a> gives you a
+matrix of the eigenvectors.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p7']);"
+    value="eigenMatrix(m1)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="m2:=matrix [[-5,-2],[18,7]]" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p8','p9']);"
+    value="eigenMatrix(m2)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+If a symmetric matrix has a basis of orthonormal eigenvectors, then
+<a href="dboporthonormalbasis.xhtml">orthonormalBasis</a> computes a list
+of these vectors.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="m3:=matrix [[1,2],[2,1]]" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p10','p11']);"
+    value="orthonormalBasis(m3)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/linhilbert.xhtml b/src/axiom-website/hyperdoc/linhilbert.xhtml
new file mode 100644
index 0000000..667d708
--- /dev/null
+++ b/src/axiom-website/hyperdoc/linhilbert.xhtml
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">An Example: Determinant of a Hilbert Matrix</div>
+  <hr/>
+Consider the problem of computing the determinant of a 10 by 10 Hilbert
+matrix. The (i,j)-th entry of a Hilbert matrix is given by 1/(i+j+1).
+
+First do the computation using rational numbers to obtain the exact result.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+value="a:MATRIX FRAC INT:=matrix [[1/(i+j+1) for j in 0..9] for i in 0..9]" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="d:=determinant a" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="d::Float" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value=
+  "b:Matrix DFLOAT:=matrix [[1/(i+j+1$DFLOAT) for j in 0..9] for i in 0..9]"/>
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+The result given by hardware floats is correct only to four significant digits
+of precision. In the jargon of numerical analysis, the Hilbert matrix is said
+to be "ill-conditioned".
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="determinant b" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Now repeat the computation at a higher precision using Float.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="digits 40" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value=
+  "c:Matrix Float:=matrix [[1/(i+j+1$Float) for j in 0..9] for i in 0..9]" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p6','p7','p8']);"
+    value="determinant c" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Reset <a href="dbopdigits.xhtml">digits</a> to its default value.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="digits 20" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/linintro.xhtml b/src/axiom-website/hyperdoc/linintro.xhtml
new file mode 100644
index 0000000..69686f4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/linintro.xhtml
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Expanding to Higher Dimensions</div>
+  <hr/>
+To get higher dimensional aggregates, you can create one-dimensional 
+aggregates with elements that are themselves aggregates, for example,
+lists of list, one-dimensional arrays of list of multisets, and so on. For
+applications requiring two-dimensional homogeneous aggregates, you will
+likely find two-dimensional arrays and matrices useful.
+
+The entries in <a href="db.xhtml?TwoDimensionalArray">TwoDimensionalArray</a>
+and <a href="?Matrix">Matrix</a> objects are all the same type, 
+except that those for <a href="db.xhtml?Matrix">Matrix</a> must belong to a
+<a href="db.xhtml?Ring">Ring</a>. You create and access elements in roughly
+the same way. Since matrices have an understood algebraic structure, certain
+algebraic operations are available for matrices but not for arrays. Because
+of this, we limit our discussion here to <a href="db.xhtml?Matrix">Matrix</a>,
+that can be regarded as an extension of
+<a href="db.xhtml?TwoDimensionalArray">TwoDimensionalArray</a>. See
+<a href="pagetwodimensionalarray.xhtml">TwoDimensionalArray</a>
+For more
+information about Axiom's linear algebra facilities see
+<a href="pagematrix.xhtml">Matrix</a>,
+<a href="pagepermanent.xhtml">Permanent</a>,
+<a href="pagesquarematrix.xhtml">SquareMatrix</a>,
+<a href="pagevector.xhtml">Vector</a>,
+<a href="axbook/section-8.4.xhtml">
+Computation of Eigenvalues and Eigenvectors</a>, and
+<a href="axbook/section-8.5.xhtml">
+Solution of Linear and Polynomial Equations</a>.
+
+You can create a matrix from a list of lists, where each of the inner
+lists represents a row of the matrix.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:=matrix([[1,2],[3,4]])" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The "collections" construct (see
+<a href="axbook/section-5.5.xhtml">
+Creating Lists and Streams with Iterators</a>)
+is useful for creating matrices whose entries are given by formulas.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="matrix([[1/(i+j-x) for i in 1..4] for j in 1..4])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Let vm denote the three by three Vandermonde matrix.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="vm:=matrix [[1,1,1],[x,y,z],[x*x,y*y,z*z]]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Use this syntax to extract an entry in the matrix.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p3','p4']);"
+    value="vm(3,3)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You can also pull out a <a href="dboprow.xhtml">row</a> or a column.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p5']);"
+    value="column(vm,2)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can do arithmetic.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p3','p6']);"
+    value="vm*vm" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+You can perform operations such as 
+<a href="dboptranspose.xhtml">transpose</a>,
+<a href="dboptrace.xhtml">trace</a>, and
+<a href="dbopdeterminant.xhtml">determinant</a>
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p3','p7']);"
+    value="factor determinant vm" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/linoperations.xhtml b/src/axiom-website/hyperdoc/linoperations.xhtml
new file mode 100644
index 0000000..61cfd81
--- /dev/null
+++ b/src/axiom-website/hyperdoc/linoperations.xhtml
@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Operations on Matrices</div>
+  <hr/>
+Axiom provides both left and right scalar multiplication.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:=matrix [[1,2],[3,4]]" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="4*m*(-5)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can add, subtract, and multiply matrices provided, of course, that the
+matrices have compatible dimensions. If not, an error message is displayed.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="n:=matrix([[1,0,-2],[-3,5,1]])" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+This following product is defined but n*m is not.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p3','p4']);"
+    value="m*n" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+The operations <a href="dbopnrows.xhtml">nrows</a> and
+<a href="dbopncols.xhtml">ncols</a> return the number of rows and
+columns of a matrix. You can extract a row or a column of a matrix using
+the operations <a href="dboprow.xhtml">row</a> and
+<a href="dbopcolumn.xhtml">column</a>. The object returned ia a
+<a href="db.xhtml?Vector">Vector</a>. Here is the third column of the matrix n.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p5']);"
+    value="vec:=column(n,3)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can multiply a matrix on the left by a "row vector" and on the right by
+a "column vector".
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p5','p6']);"
+    value="vec*m" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopinverse.xhtml">inverse</a> computes the inverse
+of a matrix if the matrix is invertible, and returns "failed" if not. This
+Hilbert matrix invertible.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="hilb:=matrix([[1/(i+j) for i in 1..3] for j in 1..3])" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p7','p8']);"
+    value="inverse(hilb)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+This matrix is not invertible.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="mm:=matrix([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p9','p10']);"
+    value="inverse(mm)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopdeterminant.xhtml">determinant</a> computes the
+determinant of a matrix provided that the entries of the matrix belong to a
+<a href="db.xhtml?CommutativeRing">CommutativeRing</a>. The above matrix mm
+is not invertible and, hence, must have determinant 0.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p9','p11']);"
+    value="determinant(mm)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboptrace.xhtml">trace</a> computes the trace of a
+square matrix.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p9','p12']);"
+    value="trace(mm)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboprank.xhtml">rank</a> computes the rank of a matrix:
+the maximal number of linearly independent rows or columns.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p9','p13']);"
+    value="rank(mm)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopnullity.xhtml">nullity</a> computes the nullity
+of a matrix: the dimension of its null space.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p9','p14']);"
+    value="nullity(mm)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopnullspace.xhtml">nullSpace</a> returns a list 
+containing a basis for the null space of a matrix. Note that the nullity is
+the number of elements in a basis for the null space.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p9','p15']);"
+    value="nullSpace(mm)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboprowechelon.xhtml">rowEchelon</a> returns the row
+echelon form of a matrix. It is easy to see that the rank of this matrix is
+two and that its nullity is also two.
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p9','p16']);"
+    value="rowEchelon(mm)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+For more information see
+<a href="axbook/section-1.6.xhtml">Expanding to Higher Dimensions</a>,
+<a href="axbook/section-8.4.xhtml">
+Computation of Eigenvalues and Eigenvectors</a>, and 
+<a href="axbook/section-9.27.xhtml#subsec-9.27.4">
+An Example: Determinant of a Hilbert Matrix</a>. Also see
+<a href="db.xhtml?Permanent">Permanent</a>,
+<a href="db.xhtml?Vector">Vector</a>,
+<a href="db.xhtml?OneDimensionalArray">OneDimensionalArray</a>, and
+<a href="db.xhtml?TwoDimensionalArray">TwoDimensionalArray</a>. Issue the
+system command
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="showcall('p17');"
+   value=")show Matrix"/>
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+to display the full ist of operations defined by 
+<a href="db.xhtml?Matrix">Matrix</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/linpermaent.xhtml b/src/axiom-website/hyperdoc/linpermaent.xhtml
new file mode 100644
index 0000000..0b2ed06
--- /dev/null
+++ b/src/axiom-website/hyperdoc/linpermaent.xhtml
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Permanent</div>
+  <hr/>
+The package <a href="db.xhtml?Permanent">Permanent</a> provides the function
+<a href="dboppermanent.xhtml">permanent</a> for square matrices. The
+<a href="dboppermanent.xhtml">permanent</a> of a square matrix can be
+computed in the same way as the determinant by expansion of minors except
+that for the permanent the sign for each element is 1, rather than being 1
+if the row plus column indices is positive and -1 otherwise. This function
+is much more difficult to compute efficiently than the 
+<a href="dbopdeterminant.xhtml">determinant</a>. An example of the use of 
+<a href="dboppermanent.xhtml">permanent</a> is the calculation of the nth
+derangement number, defined to be the number of different possibilities
+for n couples to dance but never with their own spouse. Consider an n by x
+matrix with entries 0 on the diagonal and 1 elsewhere. Think of the rows as
+one-half of each couple (for example, the males) and the columns the other
+half. The permanent of such a matrix gives the desired derangement number.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="noresult" 
+    onclick="makeRequest('p1');"
+    value=
+     "kn n == (r:MATRIX INT:=new(n,n,1); for i in 1..n repeat r.i.i:=0; r)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Here are some derangement numbers, which you see grow quite fast.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="permanent(kn(5)::SQMATRIX(5,INT))" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="[permanent(kn(n)::SQMATRIX(n,INT)) for n in 1..13]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/linsquarematrices.xhtml b/src/axiom-website/hyperdoc/linsquarematrices.xhtml
new file mode 100644
index 0000000..33ce4ec
--- /dev/null
+++ b/src/axiom-website/hyperdoc/linsquarematrices.xhtml
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">SquareMatrix</div>
+  <hr/>
+The top level matrix type in Axiom is 
+<a href="db.xhtml?Matrix">Matrix</a>, see
+(<a href="pagematrix.xhtml">Matrix</a>), which provides basic arithmetic
+and linear algebra functions. However, since the matrices can be of any
+size it is not true that any pair can be added or multiplied. Thus
+<a href="db.xhtml?Matrix">Matrix</a> has little algebraic structure.
+
+Sometimes you want to use matrices as coefficients for polynomials or in
+other algebraic contexts. In this case,
+<a href="db.xhtml?SquareMatrix">SquareMatrix</a> should be used. The
+domain <a href="db.xhtml?SquareMatrix">SquareMatrix(n,R)</a> gives the
+ring of n by n square matrices over R.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:=squareMatrix [[1,-%i],[%i,4]]" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The usual arithmetic operations are available.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="m*m-m" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Square matrices can be used where ring elements are required. For example,
+here is a matrix with matrix entries.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="mm:=squareMatrix [[m,1],[1-m,m^2]]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Or you can construct a polynomial with square matrix coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="p:=(x+m)^2" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+This value can be converted to a square matrix with polynomial coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p4','p5']);"
+    value="p::SquareMatrix(2,?)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+For more information on related topics see 
+<a href="axbook/section-2.2.xhtml#subsec-2.2.4">Modes</a> and
+<a href="pagematrix.xhtml">Matrix</a>. Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="showcall('p6');"
+   value=")show SquareMatrix"/>
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?SquareMatrix">SquareMatrix</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/linvectors.xhtml b/src/axiom-website/hyperdoc/linvectors.xhtml
new file mode 100644
index 0000000..87d468a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/linvectors.xhtml
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Vector</div>
+  <hr/>
+The <a href="db.xhtml?Vector">Vector</a> domain is used for storing
+data in a one-dimensonal indexed data structure. A vector is a
+homogeneous data structure in that all the components of the vector
+must belong to the same Axiom domain. Each vector has a fixed length
+specified by the user; vectors are not extensible. This domain is
+similar to the 
+<a href="db.xhtml?OneDimensionalArray">OneDimensionalArray</a> domain,
+except that when the components of a
+<a href="db.xhtml?Vector">Vector</a> belong to a 
+<a href="db.xhtml?Ring">Ring</a>, arithmetic operations are provided. 
+For more examples of operations that are defined for both 
+<a href="db.xhtml?Vector">Vector</a> and
+<a href="db.xhtml?OneDimensionalArray">OneDimensionalArray</a>, see
+<a href="pageonedimensionalarray.xhtml">OneDimensionalArray</a>.
+
+As with the <a href="db.xhtml?OneDimensionalArray">OneDimensionalArray</a>
+domain, a 
+<a href="db.xhtml?Vector">Vector</a> can be created by calling the operation
+<a href="dbopnew.xhtml">new</a>, its components can be accessed by calling
+the operations <a href="dbopelt.xhtml">elt</a> and
+<a href="dbopqelt.xhtml">qelt</a>, and its components can be reset by
+calling the operations
+<a href="dbopsetelt.xhtml">setelt</a> and
+<a href="dbopseteltbang.xhtml">setelt!</a>. This creates a vector of 
+integers of length 5 all of whose components are 12.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="u:VECTOR INT:=new(5,12)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+This is how you create a vector from a list of its components.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="v:VECTOR INT:=vector([1,2,3,4,5])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Indexing for vectors begins at 1. The last element has index equal to
+the length of the vector, which is computed by 
+<a href="dboplength.xhtml">#</a>.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p2','p3']);"
+    value="#(v)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+This is the standard way to use <a href="dbopelt.xhtml">elt</a> to extract
+an element.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p2','p4']);"
+    value="v.2" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+This is the standard way to use setelt to change an element. It is the
+same as if you had typed setelt(v,3,99).
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p2','p5']);"
+    value="v.3:=99" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Now look at v to see the change. You can use 
+<a href="dbopqelt.xhtml">qelt</a> and
+<a href="dbopqseteltbang.xhtml">qsetelt!</a> (instead of
+<a href="dbopelt.xhtml">elt</a> and
+<a href="dbopsetelt.xhtml">setelt</a>, respectively) but only when you
+know that the indexis within the valid range.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p2','p6']);"
+    value="v" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+When the components belong to a 
+<a href="db.xhtml?Ring">Ring</a>, 
+Axiom provides arithmetic operations for
+<a href="db.xhtml?Vector">Vector</a>. These include left and right
+scalar multiplication.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p2','p7']);"
+    value="5*v" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p2','p8']);"
+    value="v*7" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="w:VECTOR INT:=vector([2,3,4,5,6])" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+Addition and subtraction are also available
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p2','p9','p10']);"
+    value="v+w" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+Of course, when adding or subtracting, the two vectors must have the 
+same length or an error message is displayed.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p9','p11']);"
+    value="v-w" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+For more information about other aggregate domains, see
+<a href="pagelist.xhtml">List</a>,
+<a href="pagematrix.xhtml">Matrix</a>,
+<a href="pageonedimensionalarray.xhtml">OneDimensionalArray</a>.
+<a href="pageset.xhtml">Set</a>,
+<a href="pagetable.xhtml">Table</a>, and
+<a href="pagetwodimensionalarray.xhtml">TwoDimensionalArray</a>.
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="showcall('p12');"
+   value=")show Vector"/>
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?Vector">Vector</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/man0page.xhtml b/src/axiom-website/hyperdoc/man0page.xhtml
new file mode 100644
index 0000000..09a3da9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/man0page.xhtml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+Enter search string (use <b>*</b> for wild card unless counter-indicated):
+  <form>
+   <input type="text" name="searchbox" size="50"/>
+  </form>
+
+  <table>
+   <tr>
+    <td>
+     <a href="(|kSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Constructors</b>
+     </a>
+    </td>
+    <td>
+     Search for 
+     <a href="(|cSearch| '|\stringvalue{pattern}|)">
+      <b>categories</b>
+     </a>,
+     <a href="(|dSearch| '|\stringvalue{pattern}|)">
+      <b>domains</b>
+     </a>,
+     or 
+     <a href="(|pSearch| '|\stringvalue{pattern}|)">
+      <b>packages</b>
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|oSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Operations</b>
+     </a>
+    </td>
+    <td>Search for operations.</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|aSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Attributes</b>
+     </a>
+    </td>
+    <td>Search for attributes.</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|aokSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>General</b>
+     </a>
+    </td>
+    <td>Search for all three of the above.</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|docSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Documentation</b>
+     </a>
+    </td>
+    <td>Search library documentation.
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|genSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Complete</b>
+     </a>
+    </td>
+    <td>All of the above.
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="(|detailedSearch| '|\stringvalue{pattern}|).xhtml">
+      <b>Selectable</b>
+     </a>
+    </td>
+    <td>Detailed search with selectable options.
+    </td>
+   </tr>
+   <hr/>
+   <tr>
+    <td>
+     <a href="htsearch \stringvalue{pattern}.xhtml">
+      <b>Reference</b>
+     </a>
+    </td>
+    <td>Search Reference documentation (<b>*</b> wild card is not accepted).
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="ugSysCmdPage.xhtml">
+      <b>Commands</b>
+     </a>
+    </td>
+    <td>View system command documentation.
+    </td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numberspage.xhtml b/src/axiom-website/hyperdoc/numberspage.xhtml
new file mode 100644
index 0000000..36ed88b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numberspage.xhtml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+The following types of numbers are among those available in Axiom
+  <table>
+   <tr>
+    <td>
+     <a href="numintegers.xhtml">Integers</a>
+    </td>
+    <td>
+     Arithmetic with arbitrarily large integers
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="numfractions.xhtml">Fractions</a>
+    </td>
+    <td>
+     Rational numbers and general fractions
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="nummachinefloats.xhtml">Machine Floats</a>
+    </td>
+    <td>
+     Fixed precision machine floating point
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="numfloat.xhtml">Real Numbers</a>
+    </td>
+    <td>
+     Arbitrary precision decimal arithmetic
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="numcomplexnumbers.xhtml">Complex Numbers</a>
+    </td>
+    <td>
+     Complex numbers in general
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="numfinitefields.xhtml">Finite Fields</a>
+    </td>
+    <td>
+     Arithmetic in characteristic p
+    </td>
+   </tr>
+  </table>
+  <hr/>
+Addtional topics
+ <ul>
+  <li> <a href="numnumericfunctions.xhtml">Numeric Functions</a></li>
+  <li> <a href="numcardinalnumbers.xhtml">Cardinal Numbers</a></li>
+  <li> <a href="nummachinesizedintegers.xhtml">Machine-sized Integers</a></li>
+  <li> <a href="numromannumerals.xhtml">Roman Numerals</a></li>
+  <li> <a href="numcontinuedfractions.xhtml">Continued Fractions</a></li>
+  <li> <a href="numpartialfractions.xhtml">Partial Fractions</a></li>
+  <li> <a href="numquaternions.xhtml">Quaternions</a></li>
+  <li> <a href="numoctonions.xhtml">Octonions</a></li>
+  <li> <a href="numrepeatingdecimals.xhtml">Repeating Decimals</a></li>
+  <li> <a href="numrepeatingbinaryexpansions.xhtml">
+        Repeating Binary Expansions
+       </a>
+  </li>
+  <li> <a href="numrepeatinghexexpansions.xhtml">
+        Repeating Hexadecimal Expansions
+       </a>
+  </li>
+  <li> <a href="numotherbases.xhtml">Expansions in other Bases</a></li>
+ </ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numcardinalnumbers.xhtml b/src/axiom-website/hyperdoc/numcardinalnumbers.xhtml
new file mode 100644
index 0000000..961d654
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numcardinalnumbers.xhtml
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Cardinal Numbers</div>
+  <hr/>
+The <a href="dbopcardinalnumber.xhtml">CardinalNumber</a> can be used for
+values indicating the cardinality of sets, both finite and infinite. For
+example, the <a href="dbopdimension.xhtml">dimension</a> operation in the
+category <a href="dbopvectorspace.xhtml">VectorSpace</a> returns a cardinal
+number.
+
+The non-negative integers have a natural construction as cardinals
+<pre>
+0=#{ }, 1={0}, 2={0,1}, ..., n={i | 0 &#60;= i &#60; n}
+</pre>
+The fact that 0 acts as a zero for the multiplication of cardinals is
+equivalent to the axiom of choice.
+
+Cardinal numbers can be created by conversion from non-negative integers.
+ <ul>
+  <li>
+   <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+     value="c0:=0::CardinalNumber" />
+   <div id="ansp1"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+     value="c1:=1::CardinalNumber" />
+   <div id="ansp2"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+     value="c2:=2::CardinalNumber" />
+   <div id="ansp3"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+     value="c3:=3::CardinalNumber" />
+   <div id="ansp4"><div></div></div>
+  </li>
+ </ul>
+The can also be obtained as the named cardinal Aleph(n)
+ <ul>
+  <li>
+   <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+     value="A0:=Aleph 0" />
+   <div id="ansp5"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+     value="A1:=Aleph 1" />
+   <div id="ansp6"><div></div></div>
+  </li>
+ </ul>
+The <a href="dbopfiniteq.xhtml">finite?</a> operation tests whether a value
+is a finite cardinal, that is, a non-negative integer.
+ <ul>
+  <li>
+   <input type="submit" id="p7" class="subbut" 
+     onclick="handleFree(['p3','p7']);"
+     value="finite? c2" />
+   <div id="ansp7"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p8" class="subbut" 
+     onclick="handleFree(['p5','p8']);"
+     value="finite? A0" />
+   <div id="ansp8"><div></div></div>
+  </li>
+ </ul>
+Similarly, the <a href="dbopcountableq.xhtml">countable?</a> operation
+determines whether a value is a countable cardinal, that is, finite or
+Aleph(0).
+ <ul>
+  <li>
+   <input type="submit" id="p9" class="subbut" 
+     onclick="handleFree(['p3','p9']);"
+     value="countable? c2" />
+   <div id="ansp9"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p10" class="subbut" 
+     onclick="handleFree(['p5','p10']);"
+     value="countable? A0" />
+   <div id="ansp10"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p11" class="subbut" 
+     onclick="handleFree(['p6','p11']);"
+     value="countable? A1" />
+   <div id="ansp11"><div></div></div>
+  </li>
+ </ul>
+Arithmetic operations are defined on cardinal numbers as follows:
+<table>
+ <tr>
+  <td>
+   x+y = #(X+Y)
+  </td>
+  <td>
+   cardinality of the disjoint union
+  </td>
+ </tr>
+ <tr>
+  <td>
+   x-y = #(X-Y)
+  </td>
+  <td>
+   cardinality of the relative complement
+  </td>
+ </tr>
+ <tr>
+  <td>
+   x*y = #(X*Y)
+  </td>
+  <td>
+   cardinality of the Cartesian product
+  </td>
+ </tr>
+ <tr>
+  <td>
+   x+*y = #(X**Y)
+  </td>
+  <td>
+   cardinality of the set of maps from Y to X
+  </td>
+ </tr>
+</table>
+Here are some arithmetic examples:
+ <ul>
+  <li>
+   <input type="submit" id="p12" class="subbut" 
+     onclick="handleFree(['p3','p6','p12']);"
+     value="[c2+c2,c1+A1]" />
+   <div id="ansp12"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p13" class="subbut" 
+     onclick="handleFree(['p1','p2','p3','p5','p6','p13']);"
+     value="[c0*c2,c1*c2,c2*c2,c0*A1,c1*A1,c2*A1,A0*A1]" />
+   <div id="ansp13"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p14" class="subbut" 
+     onclick="handleFree(['p1','p2','p3','p6','p14']);"
+     value="[c2**c0,c2**c1,c2**c2,A1**c0,A1**c1,A1**c2]" />
+   <div id="ansp14"><div></div></div>
+  </li>
+ </ul>
+Subtraction is a partial operation; it is not defined when subtracting
+a larger cardinal from a smaller one, nor when subtracting two equal
+infinite cardinals.
+ <ul>
+  <li>
+   <input type="submit" id="p15" class="subbut" 
+     onclick="handleFree(['p2','p3','p4','p5','p6','p15']);"
+     value="[c2-c1,c2-c2,c2-c3,A1-c2,A1-A0,A1-A1]" />
+   <div id="ansp15"><div></div></div>
+  </li>
+ </ul>
+The generalized continuum hypothesis asserts that
+<pre>
+ 2**Aleph i = Aleph(i+1)
+</pre>
+and is independent of the axioms of set theory. (Goedel, The consistency
+of the continuum hypothesis, Ann. Math. Studies, Princeton Univ. Press,
+1940) The <a href="dbopcardinalnumber.xhtml">CardinalNumber</a> domain 
+provides an operation to assert whether the hypothesis is to be assumed.
+ <ul>
+  <li>
+   <input type="submit" id="p16" class="subbut" 
+     onclick="makeRequest('p16');"
+     value="generalizedContinuumHypothesisAssumed true" />
+   <div id="ansp16"><div></div></div>
+  </li>
+ </ul>
+When the generalized continuum hypothesis is assumed, exponentiation to
+a transfinite power is allowed.
+ <ul>
+  <li>
+   <input type="submit" id="p17" class="subbut" 
+     onclick="handleFree(['p1','p2','p3','p5','p6','p17']);"
+     value="[c0**A0,c1**A0,c2**A0,A0**A0,A0**A1,A1**A0,A1**A1]" />
+   <div id="ansp17"><div></div></div>
+  </li>
+ </ul>
+Three commonly encountered cardinal numbers are
+<pre>
+  a = #Z                 countable infinity
+  c = #R                 the continuum
+  f = #{g|g: [0,1]->R}
+</pre>
+In this domain, these values are obtained under the generalized continuum
+hypothesis in this way:
+ <ul>
+  <li>
+   <input type="submit" id="p18" class="subbut" 
+     onclick="makeRequest('p18');"
+     value="a:=Aleph 0" />
+   <div id="ansp18"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p19" class="subbut" 
+     onclick="handleFree(['p18','p19']);"
+     value="c:=2**a" />
+   <div id="ansp19"><div></div></div>
+  </li>
+  <li>
+   <input type="submit" id="p20" class="subbut" 
+     onclick="handleFree(['p18','p19','p20']);"
+     value="f:=2**c" />
+   <div id="ansp20"><div></div></div>
+  </li>
+ </ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numcomplexnumbers.xhtml b/src/axiom-website/hyperdoc/numcomplexnumbers.xhtml
new file mode 100644
index 0000000..ebbfcbb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numcomplexnumbers.xhtml
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<div align="center">Complex Numbers</div>
+<hr/>
+The <a href="db.xhtml?Complex">Complex</a> constructor implements 
+complex objects over a commutative ring R. Typically, the ring R is
+<a href="db.xhtml?Integer">Integer</a>,
+<a href="dbfractioninteger.xhtml">Fraction Integer</a>,
+<a href="db.xhtml?Float">Float</a>,
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>,
+R can also be a symbolic type, like
+<a href="dbpolynomialinteger.xhtml">Polynomial Integer</a>.
+For more information about the numerical and graphical aspects of
+complex numbers, see 
+<a href="axbook/book-contents.xhtml#chapter8">Numeric Functions</a>
+in section 8.1.
+
+Complex objects are created by the
+<a href="dbcomplexcomplex.xhtml">complex</a> operation
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="a:=complex(4/3,5/2)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="b:=complex(4/3,-5/2)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The standard arithmetic operations are available.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="a+b" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p4']);"
+    value="a-b" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p5']);"
+    value="a*b" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+If R is a field, you can also divide the complex objects.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p6']);"
+    value="a/b" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Use a conversion 
+(see <a href="axbook/section-2.7.xhtml">Conversion</a> in 
+section 2.7) to view the last object as a fraction of complex
+integers.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p6','p7']);"
+    value="%::Fraction Complex Integer" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+The predefined macro <tt>%i</tt> is defined to be complex(0,1).
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="3.4+6.7*%i" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+You can also compute the 
+<a href="dbcomplexconjugate.xhtml">conjugate</a> and
+<a href="dbcomplexnorm.xhtml">norm</a> of a complex number.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p9']);"
+    value="conjugate a" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p10']);"
+    value="norm a" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+The <a href="dbcomplexreal.xhtml">real</a> and
+<a href="dbcompleximag.xhtml">imag</a> operations are provided to
+extract the real and imaginary parts, respectively.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p11']);"
+    value="real a" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p12']);"
+    value="imag a" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+The domain 
+<a href="dbcomplexinteger.xhtml">Complex Integer</a>
+is also called the Gaussian integers. If R is the integers (or, more
+generally, a  
+<a href="db.xhtml?EuclideanDomain">Euclidean Domain</a>),
+you can compute greatest common divisors.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="makeRequest('p13');"
+    value="gcd(12-12*%i,31+27*%i)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+You can also compute least common multiples
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="makeRequest('p14');"
+    value="lcm(13-13*%i,31+27*%i)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+You can <a href="dbcomplexfactor.xhtml">factor</a> Gaussian integers.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="makeRequest('p15');"
+    value="factor(13-13*%i)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="makeRequest('p16');"
+    value="factor complex(2,0)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numcontinuedfractions.xhtml b/src/axiom-website/hyperdoc/numcontinuedfractions.xhtml
new file mode 100644
index 0000000..a96eadc
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numcontinuedfractions.xhtml
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Continued Fractions</div>
+  <hr/>
+Continued fractions have been a fascinating and useful tool in mathematics
+for well over three hundred years. Axiom implements continued fractions
+for fractions of any Euclidean domain. In practice, this usually means
+rational numbers. In this section we demonstrate some of the operations
+available for manipulating both finite and infinite continued fractions.
+It may be helpful if you review
+<a href="db.xhtml?Stream">Stream</a> to remind yourself of some of the 
+operations with streams.
+
+The <a href="db.xhtml?ContinuedFraction">ContinuedFraction</a> domain is a
+field and therefore you can add, subtract, multiply, and divide the
+fractions. The 
+<a href="dbopcontinuedfraction.xhtml">continuedFraction</a> operation 
+converts its fractional argument to a continued fraction.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="c:=continuedFraction(314159/100000)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+This display is the compact form of the bulkier
+<pre>
+  3 +             1
+     ---------------------------
+     7 +            1
+         -----------------------
+         15 +         1
+              ------------------
+              1 +        1
+                  --------------
+                  25 +     1
+                       ---------
+                       1 +   1
+                           -----
+                           7 + 1
+                               -
+                               4
+</pre>
+You can write any rational number in a similar form. The fraction will
+be finite and you can always take the "numerators" to be 1. That is, any
+rational number can be written as a simple, finite continued fraction of
+the form
+<pre>
+a(1) +            1
+     ---------------------------
+  a(2) +            1
+         -----------------------
+       a(3) +         1
+                        .
+                         .
+                          .
+                           1
+
+              -----------------
+              a(n-1) +     1
+                       ---------
+                          a(n)
+</pre>
+The a(i) are called partial quotients and the operation
+<a href="dboppartialquotients.xhtml">partialQuotients</a> creates a
+stream of them.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="partialQuotients c" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+By considering more and more of the fraction, you get the
+<a href="dbopconvergents.xhtml">convergents</a>. For example, the
+first convergent is a(1), the second is a(1)+1/a(2) and so on.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="convergents c" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Since this ia a finite continued fraction, the last convergent is the
+original rational number, in reduced form. The result of
+<a href="dbopapproximants.xhtml">approximants</a> is always an infinite
+stream, though it may just repeat the "last" value.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="approximants c" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Inverting c only changes the partial quotients of its fraction by 
+inserting a 0 at the beginning of the list.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="pq:=partialQuotients(1/c)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Do this to recover the original continued fraction from this list of
+partial quotients. The three argument form of the 
+<a href="dbopcontinuedfraction.xhtml">continuedFraction</a> operation takes
+an element which is the whole part of the fraction, a stream of elements
+which are the denominators of the fraction.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut"
+    onclick="handleFree(['p1','p5','p6']);"
+    value="continuedFraction(first pq,repeating [1],rest pq)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+The streams need not be finite for 
+<a href="dbopcontinuedfraction.xhtml">continuedFraction</a>. Can you guess
+which irrational number has the following continued fraction? See the end
+of this section for the answer.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" onclick="makeRequest('p7');"
+    value="z:=continuedFraction(3,repeating [1],repeating [3,6])" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+In 1737 Euler discovered the infinite continued fraction expansion
+<pre>
+ e - 1                 1
+ ----- =  ---------------------------
+p          2 +            1
+              -----------------------
+              6  +         1
+                   ------------------
+                  10 +        1
+                       --------------
+                       14 +  ... 
+</pre>
+We use this expansion to compute rational and floating point 
+approximations of e. (For this and other interesting expansions,
+see C. D. Olds, Continued Fractions, New Mathematical Library,
+Random House, New York, 1963 pp.134-139).
+
+By looking at the above expansion, we see that the whole part is 0
+and the numerators are all equal to 1. This constructs the stream of
+denominators.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" onclick="makeRequest('p8');"
+    value="dens:Stream Integer:=cons(1,generate((x+->x+4),6))" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Therefore this is the continued fraction expansion for (e-1)/2.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p8','p9']);"
+    value="cf:=continuedFraction(0,repeating [1],dens)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+These are the rational number convergents.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut"
+    onclick="handleFree(['p8','p9','p10']);"
+    value="ccf:=convergents cf" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+You can get rational convergents for e by multiplying by 2 and adding 1.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p8','p9','p10','p11']);"
+    value="eConvergents:=[2*e+1 for e in ccf]" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+You can also compute the floating point approximations to these convergents.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut"
+    onclick="handleFree(['p8','p9','p10','p11','p12']);"
+    value="eConvergents::Stream Float" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+Compare this to the value of e computed by the 
+<a href="dbopexp.xhtml">exp</a> operation in 
+<a href="db.xhtml?Float">Float</a>.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" onclick="makeRequest('p13');"
+    value="exp 1.0" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+In about 1658, Lord Brouncker established the following expansion for 4/pi.
+<pre>
+  1 +             1
+     ---------------------------
+     2 +            9
+         -----------------------
+         2  +         25
+              ------------------
+              2 +        49
+                  --------------
+                  2  +     81
+                       ---------
+                       2 +   ...
+</pre>
+Let's use this expansion to compute rational and floating point 
+approximations for pi.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" onclick="makeRequest('p14');"
+    value="cf:=continuedFraction(1,[(2*i+1)^2 for i in 0..],repeating [2])" />
+  <div id="ansp14"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p14','p15']);"
+    value="ccf:=convergents cf" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p14','p15','p16']);"
+    value="piConvergents:=[4/p for p in ccf]" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+As you can see, the values are converging to 
+<pre>
+  pi = 3.14159265358979323846..., but not very quickly.
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p14','p15','p16','p17']);"
+    value="piConvergents::Stream Float" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+You need not restrict yourself to continued fractions of integers. Here is
+an expansion for a quotient of Gaussian integers.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" onclick="makeRequest('p18');"
+    value="continuedFraction((-122+597*%i)/(4-4*%i))" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+This is an expansion for a quotient of polynomials in one variable with
+rational number coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" onclick="makeRequest('p19');"
+    value="r:Fraction UnivariatePolynomial(x,Fraction Integer)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p19','p20']);"
+    value="r:=((x-1)*(x-2))/((x-3)*(x-4))" />
+  <div id="ansp20"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="handleFree(['p19','p20','p21']);"
+    value="continuedFraction r" />
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+To conclude this section, we give you evidence that
+<pre>
+  z =  3 +             1
+          ---------------------------
+          3 +            1
+              -----------------------
+              6 +          1
+                  -------------------
+                   3 +        1
+                       --------------
+                       6  +     1
+                            ---------
+                            3 + ...
+</pre>
+is the expansion of the square root of 11.
+<ul>
+ <li>
+  <input type="submit" id="p22" class="subbut" 
+    onclick="handleFree(['p7','p22']);"
+    value="[i*i for i in convergents(z)]::Stream Float" />
+  <div id="ansp22"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numexamples.xhtml b/src/axiom-website/hyperdoc/numexamples.xhtml
new file mode 100644
index 0000000..5e65c0c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numexamples.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      numexamples not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numfactorization.xhtml b/src/axiom-website/hyperdoc/numfactorization.xhtml
new file mode 100644
index 0000000..422aa40
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numfactorization.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      numfactorization not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numfinitefields.xhtml b/src/axiom-website/hyperdoc/numfinitefields.xhtml
new file mode 100644
index 0000000..cf40ac8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numfinitefields.xhtml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<div align="center">Finite Fields</div>
+<hr/>
+A <sl>finite field</sl> (also called a <sl>Galois field</sl>) is a finite
+algebraic structure where on can add, multiply, and divide under the same
+laws (for example, commutativity, associativity, or distributivity) as 
+apply to the rational, real, or complex numbers. Unlike those three fields,
+for any finite field there exists a positive prime integer p, called the
+<a href="dbcharacteristic.xhtml">characteristic</a>, such that p*x=0 for 
+any element x in the finite field. In fact, the number of elements in a
+finite filed is a power of the characteristic and for each prime p and
+positive integer n there exists exactly one finite field with p**n elements,
+up to an isomorphism. (For more information about the algebraic structure and
+properties of finite fields, see for example, S. Lang <sl>Algebr</sl>, 
+Second Edition, New York, Addison-Wesley Publishing Company, Inc. 1984,
+ISBN 0 201 05476 6; or R. Lidl, H. Niederreiter, <sl>Finite Fields</sl>,
+Encyclopedia of Mathematics and Its Applications, Vol. 20, Cambridge.
+Cambridge Univ. Press, 1983, ISBN 0 521 30240 4)
+
+When n=1, the field has p elements and is called a <sl>prime field</sl>,
+discussed in 
+<a href="axbook/section-8.11.xhtml#subsec-8.11.1">
+Modular Arithmetic and Prime Fields</a>
+in section 8.11.1. There are several ways of implementing extensions of
+finite fields, and Axiom provides quite a bit of freedom to allow you to
+choose the one that is best for your application. Moreover, we provide
+operations for converting among the different representations of extensions
+and different extensions of a single field. Finally, note that you usually
+need to package call operations from finite fields if the operations do not
+take as an argument an object of the field. See
+<a href="">Package Calling and Target Types</a>
+in section 2.9 for more information on package calling.
+<ul>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.1">
+   Modular Arithmetic and Prime Fields
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.2">
+   Extensions of Finite Fields
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.3">
+   Irreducible Modulus Polynomial Representations
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.4">
+   Cyclic Group Representations
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.5">
+   Normal Basis Representations
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.6">
+   Conversion Operations for Finite Fields
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-8.11.xhtml#subsec-8.11.7">
+   Utility Operations for Finite Fields
+  </a>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numfloat.xhtml b/src/axiom-website/hyperdoc/numfloat.xhtml
new file mode 100644
index 0000000..5132fde
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numfloat.xhtml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Real Numbers</div>
+  <hr/>
+Axiom provides two kinds of floating point numbers. The domain 
+<a href="db.xhtml?Float">Float</a> 
+(abbreviation <a href="db.xhtml?Float">FLOAT</a>) 
+implements a model of arbitrary precisions floating point numbers. The
+domain
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a> 
+(abbreviation <a href="db.xhtml?DoubleFloat">DFLOAT</a>) 
+is intended to make available hardware floating point arithmetic in Axiom.
+The actual model of floating point 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a> that Axiom
+provides is system dependent. For example, on the IBM System 370, Axiom
+uses IBM double precision which has fourteen hexadecimal digits of 
+precision or roughly sixteen decimal digits. Arbitrary precision floats
+allow the user to specify the precision at which arithmetic operations 
+are computed. Although this is an attractive facility, it comes at a cost.
+Arbitrary precision floating point arithmetic typically takes twenty to
+two hundred times more time than hardware floating point.
+ 
+For more information about Axiom's numeric and graphic facilities
+see <a href="axbook/book-contents.xhtml#chapter7">Graphics</a> in section 7, 
+<a href="axbook/book-contents.xhtml#chapter8">Numeric Functions</a>
+in section 8.1, and <a href="nummachinefloats.xhtml">DoubleFloat</a>
+<ul>
+ <li>
+  <a href="axbook/section-9.27.xhtml#subsec-9.27.1">
+   Introduction to Float
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-9.27.xhtml#subsec-9.27.2">
+   Conversion Functions
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-9.27.xhtml#subsec-9.27.3">
+   Output Functions
+  </a>
+ </li>
+ <li>
+  <a href="axbook/section-9.27.xhtml#subsec-9.27.4">
+   An Example: Determinant of a Hilbert Matrx
+  </a>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numfractions.xhtml b/src/axiom-website/hyperdoc/numfractions.xhtml
new file mode 100644
index 0000000..271b0db
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numfractions.xhtml
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Fractions</div>
+  <hr/>
+Axiom handles fractions in many different contexts and will
+automatically simplify fractions whenever possible. Here are
+some examples:
+ <ul>
+  <li> <input type="submit" id="p1" value="1/4-1/5" class="subbut"
+         onclick="makeRequest('p1');"/>
+       <div id="ansp1"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p2" value="f:=(x^2+1)/(x-1)" class="subbut"
+         onclick="makeRequest('p2');"/>
+       <div id="ansp2"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p3" value="g:=(x^2-3*x+2)/(x+2)" class="subbut"
+         onclick="makeRequest('p3');"/>
+       <div id="ansp3"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p4" value="f*g" class="subbut"
+         onclick="handleFree(['p2','p3','p4']);"/>
+       <div id="ansp4"><div></div></div>
+  </li>
+ </ul>
+ <hr/>
+Additional Topics:
+ <table>
+  <tr>
+   <td>
+    <a href="numrationalnumbers.xhtml">Rational Numbers</a>
+   </td>
+   <td>
+    Quotients of integers
+   </td>
+  </tr>
+  <tr>
+   <td>
+    <a href="numquotientfields.xhtml">Quotient Fields</a>
+   </td>
+   <td>
+    Quotients over an arbitrary integral domain
+   </td>
+  </tr>
+ </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numfunctions.xhtml b/src/axiom-website/hyperdoc/numfunctions.xhtml
new file mode 100644
index 0000000..3097e98
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numfunctions.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      numfunctions not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numgeneralinfo.xhtml b/src/axiom-website/hyperdoc/numgeneralinfo.xhtml
new file mode 100644
index 0000000..193e3c3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numgeneralinfo.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      numgeneralinfo not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numintegers.xhtml b/src/axiom-website/hyperdoc/numintegers.xhtml
new file mode 100644
index 0000000..b5c8cb4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numintegers.xhtml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Integers</div>
+  <hr/>
+In Axiom, integers can be as large as you like. Try the following
+examples.
+ <ul>
+  <li> <input type="submit" id="p1" value="x:=factorial(200)" class="subbut"
+         onclick="makeRequest('p1');"/>
+       <div id="ansp1"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p2" value="y:=2^90-1" class="subbut"
+         onclick="makeRequest('p2');"/>
+       <div id="ansp2"><div></div></div>
+  </li>
+ </ul>
+Of course, you can now do arithmetic as usual on these (very) large
+integers:
+ <ul>
+  <li> <input type="submit" id="p3" value="x+y" class="subbut"
+         onclick="handleFree(['p1','p2','p3']);"/>
+       <div id="ansp3"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p4" value="x-y" class="subbut"
+         onclick="handleFree(['p1','p2','p4']);"/>
+       <div id="ansp4"><div></div></div>
+  </li>
+  <li> <input type="submit" id="p5" value="x*y" class="subbut"
+         onclick="handleFree(['p1','p2','p5']);"/>
+       <div id="ansp5"><div></div></div>
+  </li>
+ </ul>
+Axiom can factor integers, but numbers with small prime factors
+ <ul>
+  <li> <input type="submit" id="p6" value="factor(x)" class="subbut"
+         onclick="handleFree(['p1','p6']);"/>
+       <div id="ansp6"><div></div></div>
+  </li>
+ </ul>
+will factor more rapidly than numbers with large prime factors.
+ <ul>
+  <li> <input type="submit" id="p7" value="factor(y)" class="subbut"
+         onclick="handleFree(['p2','p7']);"/>
+       <div id="ansp7"><div></div></div>
+  </li>
+ </ul>
+ <hr/>
+Additional topics
+ <table>
+  <tr>
+   <td>
+    <a href="numgeneralinfo.xhtml">General Info</a>
+   </td>
+   <td>
+    General information and examples of integers
+   </td>
+  </tr>
+  <tr>
+   <td>
+    <a href="numfactorization.xhtml">Factorization</a>
+   </td>
+   <td>
+    Primes and factorization
+   </td>
+  </tr>
+  <tr>
+   <td>
+    <a href="numfunctions.xhtml">Functions</a>
+   </td>
+   <td>
+    Number theoretic functions
+   </td>
+  </tr>
+  <tr>
+   <td>
+    <a href="numexamples.xhtml">Functions</a>
+   </td>
+   <td>
+    Examples from number theory
+   </td>
+  </tr>
+  <tr>
+   <td>
+    <a href="numproblems.xhtml">Problems</a>
+   </td>
+   <td>
+    Problems from number theory
+   </td>
+  </tr>
+ </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/nummachinefloats.xhtml b/src/axiom-website/hyperdoc/nummachinefloats.xhtml
new file mode 100644
index 0000000..3d3e170
--- /dev/null
+++ b/src/axiom-website/hyperdoc/nummachinefloats.xhtml
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Machine Floats</div>
+  <hr/>
+Axiom provides two kinds of floating point numbers. The domain 
+<a href="db.xhtml?Float">Float</a> 
+(abbreviation <a href="db.xhtml?Float">FLOAT</a>) 
+implements a model of arbitrary precisions floating point numbers. The
+domain
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a> 
+(abbreviation <a href="db.xhtml?DoubleFloat">DFLOAT</a>) 
+is intended to make available hardware floating point arithmetic in Axiom.
+The actual model of floating point 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a> that Axiom
+provides is system dependent. For example, on the IBM System 370, Axiom
+uses IBM double precision which has fourteen hexadecimal digits of 
+precision or roughly sixteen decimal digits. Arbitrary precision floats
+allow the user to specify the precision at which arithmetic operations 
+are computed. Although this is an attractive facility, it comes at a cost.
+Arbitrary precision floating point arithmetic typically takes twenty to
+two hundred times more time than hardware floating point.
+
+By default, floating point numbers that you enter into Axiom are of type
+<a href="db.xhtml?Float">Float</a>.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="2.71828" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You must therefore tell Axiom that you want to use 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a> values and operations. The
+following are some conservative guidelines for getting Axiom to use 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>.
+
+To get a value of type <a href="db.xhtml?DoubleFloat">DoubleFloat</a>., 
+use a target with
+    "@", ...
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="2.71828@DoubleFloat" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+a conversion,...
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="2.71828::DoubleFloat" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or an assignment to a declared variable. It is more efficient if you
+use a target rather than an explicit or implicit conversion.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="eApprox:DoubleFloat:=2.71828" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You also need to declare functions that work with 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="noresult" 
+    onclick="makeRequest('p5');"
+    value="avg:List DoubleFloat -> DoubleFloat" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="noresult" 
+    onclick="makeRequest('p6');"
+    value="avg l==(empty? l => 0::DoubleFloat; reduce(_+,l)/#l)"/>
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p5','p6','p7']);"
+    value="avg []" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p5','p6','p8']);"
+    value="avg [3.4,9.7,-6.8]" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Use package calling for operations from 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>
+unless the arguments themselves are already of type
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="cos(3.1415926)$DoubleFloat" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="makeRequest('p10');"
+    value="cos(3.1415926)::DoubleFloat" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+By far, the most common usage of 
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>
+is for functions to be graphied. For more information about Axiom's
+numerical and graphical facilities, see
+<a href="axbook/book-contents.xhtml#chapter7">Graphics</a>
+in section 7, 
+<a href="axbook/book-contents.xhtml#chapter8">Numeric Functions</a>
+in section 8.1, and
+<a href="numfloat.xhtml">Float</a>
+
+The usual arithmetic and elementary functions are available for
+<a href="db.xhtml?DoubleFloat">DoubleFloat</a>. Use 
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="showcall('p11');"
+   value=")show DoubleFloat"/>
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+to get a list of operations.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/nummachinesizedintegers.xhtml b/src/axiom-website/hyperdoc/nummachinesizedintegers.xhtml
new file mode 100644
index 0000000..0fef942
--- /dev/null
+++ b/src/axiom-website/hyperdoc/nummachinesizedintegers.xhtml
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<div align="center">Machine-sized Integers</div>
+<hr/>
+The <a href="db.xhtml?SingleInteger">SingleInteger</a> is intended to
+provide support in Axiom for machine integer arithmetic. It is generally
+much faster than (bignum) <a href="db.xhtml?Integer">Integer</a> arithmetic
+but suffers from a limited range of values. Since Axiom can be implemented
+on top of various dialects of Lisp, the actual representation of small
+integers may not correspond exactly to the host machines integer
+representation.
+
+You can discover the minimum and maximum values in your implementation by
+using <a href="dbopmin.xhtml">min</a> and <a href="dbopmax.xhtml">max</a>
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="min()$SingleInteger" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="max()$SingleInteger" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+To avoid confusion with <a href="db.xhtml?Integer">Integer</a>, which is
+the default type for integers, you usually need to work with declared
+variables (see <a href="axbook/section-2.3.xhtml">Declarations</a>).
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="a:=1234::SingleInteger" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or use package calling (see 
+<a href="axbook/section-2.9.xhtml">Package Calling and Target Types</a>).
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="b:=1234$SingleInteger" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+You can add, multiply, and subtract
+<a href="db.xhtml?SingleInteger">SingleInteger</a> objects, and ask for the
+greatest common divisor 
+(<a href="dbopgcd.xhtml">gcd</a>).
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p4','p5']);"
+    value="gcd(a,b)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+The least common multiple 
+(<a href="dboplcm.xhtml">lcm</a>) is also available.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p3','p4','p6']);"
+    value="lcm(a,b)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Operations
+<a href="dbopmulmod.xhtml">mulmod</a>,
+<a href="dbopaddmod.xhtml">addmod</a>,
+<a href="dbopsubmod.xhtml">submod</a>, and
+<a href="dbopinvmod.xhtml">invmod</a>
+are similar -- they provide arithmetic modulo a given small integer.
+Here is 5*6 mod 13.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" onclick="makeRequest('p7');"
+    value="mulmod(5,6,13)$SingleInteger" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+To reduce a small integer modulo a prime, use
+<a href="dboppositiveremainder.xhtml">positiveRemainder</a>
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" onclick="makeRequest('p8');"
+    value="positiveRemainder(37,13)$SingleInteger" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Operations <a href="dbopsingleintegerand.xhtml">And</a>,
+<a href="dbopsingleintegeror.xhtml">Or</a>,
+<a href="dbopsingleintegerxor.xhtml">xor</a>,
+and <a href="dbopsingleintegernot.xhtml">Not</a>
+provide bit level operations on small integers.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" onclick="makeRequest('p9');"
+    value="And(3,4)$SingleInteger" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+Use shift(int,numToShift) to shift bits, where int is shifted left if
+numToShift is positive, right if negative.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" onclick="makeRequest('p10');"
+    value="shift(1,4)$SingleInteger" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" onclick="makeRequest('p11');"
+    value="shift(31,-1)$SingleInteger" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+Many other operations are available for small integers, including many of
+those provided for <a href="db.xhtml?Integer">Integer</a>. 
+To see other operations use the system command
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="showcall('p12');"
+   value=")show SingleInteger"/>
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numnumericfunctions.xhtml b/src/axiom-website/hyperdoc/numnumericfunctions.xhtml
new file mode 100644
index 0000000..2e00eb3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numnumericfunctions.xhtml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Numeric Functions</div>
+  <hr/>
+Axiom provides two basic floating point types: 
+<a href="numfloat.xhtml">Float</a> and
+<a href="nummachinefloats.xhtml">DoubleFloat</a>. This section
+describes how to use numerical operations defined on these types and
+the related complex types. As we mentioned in
+<a href="axbook/book-contents.xhtml#chapter1">An Overview of Axiom</a>
+in chapter 1., the 
+<a href="numfloat.xhtml">Float</a> type is a software implementation of
+floating point numbers in which the exponent and the significand may have
+any number of digits. See
+<a href="numfloat.xhtml">Float</a> for detailed information about this 
+domain. The 
+<a href="nummachinefloats.xhtml">DoubleFloat</a> is usually a hardware
+implementation of floating point numbers, corresponding to machine double
+precision. The types 
+<a href="dbcomplexfloat.xhtml">Complex Float</a> and 
+<a href="dbcomplexdoublefloat.xhtml">Complex DoubleFloat</a> are the
+corresponding software implementations of complex floating point numbers.
+In this section the term floating point type means any of these four
+types. The floating point types immplement the basic elementary functions.
+These include (where $ means
+<a href="nummachinefloats.xhtml">DoubleFloat</a>,
+<a href="numfloat.xhtml">Float</a>,
+<a href="dbcomplexfloat.xhtml">Complex Float</a>,
+<a href="dbcomplexdoublefloat.xhtml">Complex DoubleFloat</a>):<br/>
+<a href="dbopexp.xhtml">exp</a>,
+<a href="dboplog.xhtml">log</a>: $ -> $<br/>
+<a href="dbopsin.xhtml">sin</a>,
+<a href="dbopcos.xhtml">cos</a>,
+<a href="dboptan.xhtml">tan</a>,
+<a href="dbopcot.xhtml">cot</a>,
+<a href="dbopsec.xhtml">sec</a>,
+<a href="dbopcsc.xhtml">csc</a>: $ -> $<br/>
+<a href="dbopasin.xhtml">asin</a>,
+<a href="dbopacos.xhtml">acos</a>,
+<a href="dbopatan.xhtml">atan</a>,
+<a href="dbopacot.xhtml">acot</a>,
+<a href="dbopasec.xhtml">asec</a>,
+<a href="dbopacsc.xhtml">acsc</a>: $ -> $<br/>
+<a href="dbopsinh.xhtml">sinh</a>,
+<a href="dbopcosh.xhtml">cosh</a>,
+<a href="dboptanh.xhtml">tanh</a>,
+<a href="dbopcoth.xhtml">coth</a>,
+<a href="dbopsech.xhtml">sech</a>,
+<a href="dbopcsch.xhtml">csch</a>: $ -> $<br/>
+<a href="dbopasinh.xhtml">asinh</a>,
+<a href="dbopacosh.xhtml">acosh</a>,
+<a href="dbopatanh.xhtml">atanh</a>,
+<a href="dbopacoth.xhtml">acoth</a>,
+<a href="dbopasech.xhtml">asech</a>,
+<a href="dbopacsch.xhtml">acsch</a>: $ -> $<br/>
+<a href="dboppi.xhtml">pi</a>: () -> $<br/>
+<a href="dbopsqrt.xhtml">sqrt</a>: $ -> $<br/>
+<a href="dbopnthroot.xhtml">nthRoot</a>: ($,Integer) -> $<br/>
+<a href="dbopstarstar.xhtml">**</a>: ($,Fraction Integer) -> $<br/>
+<a href="dbopstarstar.xhtml">**</a>: ($,$) -> $<br/>
+The handling of roots depends on whether the floating point type is
+real or complex: for the real floating point types, 
+<a href="nummachinefloats.xhtml">DoubleFloat</a> and
+<a href="numfloat.xhtml">Float</a>, if a real root exists the one with 
+the same sign as the radicand is returned; for the complex floating
+point types, the principal value is returned. Also, for real floating
+point types the inverse functions produce errors if the results are not
+real. This includes cases such as asin(1.2), log(-3.2), sqrt(-1,1).
+The default floating point type is <a href="numfloat.xhtml">Float</a>
+or <a href="dbcomplexfloat.xhtml">Complex Float</a>, just use normal
+decimal notation.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="exp(3.1)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="exp(3.1+4.5*%i)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+To evaluate functions using 
+<a href="nummachinefloats.xhtml">DoubleFloat</a> or 
+<a href="dbcomplexdoublefloat.xhtml">Complex DoubleFloat</a>, a 
+declaration or conversion is required.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="(r:DFLOAT:=3.1; t:DFLOAT:=4.5; exp(r+t*%i))" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="exp(3.1::DFLOAT+4.5::DFLOAT*%i)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+A number of special functions are provided by the package
+<a href="db.xhtml?DoubleFloatSpecialFunctions">DoubleFloatSpecialFunctions</a>
+for the machine precision floating point types. The special functions
+provided are listed below, where F stands for the types
+<a href="numfloat.xhtml">Float</a>
+or <a href="dbcomplexfloat.xhtml">Complex Float</a>. The real versions
+of the functions yield an error if the result is not real.
+<ul>
+ <li> 
+  <a href="dbopgamma.xhtml">Gamma</a>: F -> F<br/>
+  Gamma(z) is the Euler gamma
+  function, Gamma(Z), defined by<br/>
+  Gamma(z) = integrate(t^(z-1)*exp(-t),t=0..%infinity)
+ </li>
+ <li>
+  <a href="dbopbeta.xhtml">Beta</a>: F -> F<br/>
+  Beta(u,v) is the Euler Beta
+  function B(u,v), defined by <br/>
+  Beta(u,v)=integrate(t^(u-1)*(1-t)^(b-1),t=0..1)<br/>
+  This is related to Gamma(z) by<br/>
+  Beta(u,v)=Gamma(u)*Gamma(v)/Gamma(u+v)
+ </li>
+ <li>
+  <a href="dboploggamma.xhtml">logGamma</a>: F -> F<br/>
+  logGamma(z) is the natural logarithm of Gamma(z). This can often be
+  computed even if Gamma(z) cannot.
+ </li>
+ <li>
+  <a href="dbopdigamma.xhtml">digamma</a>: F -> F<br/>
+  digamma(z), also called psi(z), is the function psi(z), defined by<br/>
+  psi(z)=Gamma'(z)/Gamma(z)
+ </li>
+ <li>
+ <a href="dboppolygamma.xhtml">polygamma</a>: (NonNegativeInteger, F) -> F<br/>
+  polygamma(n,z) is the n-th derivative of digamma(z)
+ </li>
+ <li>
+  <a href="dbopbesselj.xhtml">besselJ</a>: (F, F) -> F<br/>
+  besselJ(v,z) is the Bessel function of the first kind, J(v,z). This 
+  function satisfies the differential equation<br/>
+  z^(2w)''(z)+zw'(z)+(z^2-v^2)w(z)=0
+ </li>
+ <li>
+  <a href="dbopbessely.xhtml">besselY</a>: (F, F) -> F<br/>
+  besselY(v,z) is the Bessel function of the second kind, Y(v,z). This
+  function satisfies the same differential equation as 
+  <a href="dbopbesselj.xhtml">besselJ</a>. The implementation simply
+  uses the relation<br/>
+  Y(v,z)=(J(v,z)cos(v*%pi)-J(-v,z))/sin(v*%pi)
+ </li>
+ <li>
+  <a href="dbopbesseli.xhtml">besselI</a>: (F, F) -> F<br/>
+  besselI(v,z) if the modifed Bessel function of the first kind, I(v,z).
+  This function satisfies the differential equation<br/>
+  z^2w''(z)+zw'(z)-(z^2+v^2)w(z)=0
+ </li>
+ <li>
+  <a href="dbopbesselk.xhtml">besselK</a>: (F, F) -> F<br/>
+  besselK(v,z) is the modifed Bessel function of the second kind, K(v,z).
+  This function satisfies the same differential equation as
+  <a href="dbopbesseli.xhtml">besselI</a>. The implementation simply uses
+  the relation<br/>
+  K(v,z)=%pi*(I(v,z)-I(-v,z))/(2sin(v*%pi))
+ </li>
+ <li>
+  <a href="dbopairyai.xhtml">airyAi</a>: F -> F<br/>
+  airyAi(z) is the Airy function Ai(z). This function satisfies the
+  differential equation<br/>
+  w''(z)-zw(z)=0<br/>
+  The implementation simply uses the relation<br/>
+  Ai(-z)=1/3*sqrt(z)*(J(-1/3,2/3*z^(3/2))+J(1/3,2/3*z^(3/2)))
+ </li>
+ <li>
+  <a href="dbopairybi.xhtml">airyBi</a>: F -> F<br/>
+  airyBi(z) is the Airy function Bi(z). This function satisfies the
+  same differential equation as airyAi.
+  The implementation simply uses the relation<br/>
+  Bi(-z)=1/3*sqrt(3*z)*(J(-1/3,2/3*z^(3/2))-J(1/3,2/3*z^(3/2)))
+ </li>
+ <li>
+  <a href="dbophypergeometric0f1.xhtml">hypergeometric0F1</a>: (F, F) -> F<br/>
+  hypergeometric0F1(c,z) is the hypergeometric function 0F1(;c;z). The above
+  special functions are defined only for small floating point types. If you
+  give <a href="numfloat.xhtml">Float</a> arguments, they are converted to
+  <a href="nummachinefloats.xhtml">DoubleFloat</a> by Axiom.
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+    value="Gamma(0.5)^2" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+    value="(a:=2.1; b:=1.1; besselI(a+%i*b,b*a+1))" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numoctonions.xhtml b/src/axiom-website/hyperdoc/numoctonions.xhtml
new file mode 100644
index 0000000..3805bf1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numoctonions.xhtml
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Octonions</div>
+  <hr/>
+The Octonions, also called the Cayley-Dixon algebra, defined over a
+commutative ring are an eight-dimensional non-associative algebra. Their
+construction from quaternions is similar to the construction of quaternions
+from complex numbers (see <a href="numquaternions.xhtml">Quaternion</a>).
+As <a href="db.xhtml?Octonion">Octonion</a> creates an eight-dimensional
+algebra, you have to give eight components to construct an octonion.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="oci1:=octon(1,2,3,4,5,6,7,8)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="oci2:=octon(7,2,3,-4,5,6,-7,0)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Or you can use two quaternions to create an octonion.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="oci3:=octon(quatern(-7,-12,3,-10),quatern(5,6,9,0))" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+You can easily demonstrate the non-associativity of multiplication.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4']);"
+    value="(oci1*oci2)*oci3-oci1*(oci2*oci3)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+As with the quaternions, we have a real part, the imaginary parts i, j,
+k, and four additional imaginary parts E, I, J, and K. These parts 
+correspond to the canonical basis (1,i,j,k,E,I,J,K). For each basis
+element there is a component operation to extract the coefficient of 
+the basis element for a given octonion.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+value="[real oci1, imagi oci1, imagj oci1, imagk oci1, 
+imagE oci1, imagI oci1, imagJ oci1, imagK oci1]"/>
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+A basis with respect to the quaternions is given by (1,E). However, you 
+might ask, what then are the commuting rules? To answer this, we create
+some generic elements. We do this in Axim by simply changing the ground
+ring from
+<a href="db.xhtml?Integer">Integer</a> to
+<a href="dbpolynomialinteger.xhtml">Polynomial Integer</a>.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+    value="q:Quaternion Polynomial Integer:=quatern(q1,qi,qj,qk)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" onclick="makeRequest('p7');"
+    value="E:Octonion Polynomial Integer:=octon(0,0,0,0,1,0,0,0)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Note that quaternions are automatically converted to octonions in the
+obvious way.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p6','p7','p8']);"
+    value="q*E" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p6','p7','p9']);"
+    value="E*q" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p6','p10']);"
+    value="q*1$(Octonion Polynomial Integer)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p6','p11']);"
+    value="1$(Octonion Polynomial Integer)*q" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+Finally, we check that the <a href="dbopnorm.xhtml">norm</a>, defined as 
+the sum of the squares of the coefficients, is a multiplicative map.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" onclick="makeRequest('p12');"
+    value="o:Octonion Polynomial Integer:=octon(o1,oi,oj,ok,oE,oI,oJ,oK)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p12','p13']);"
+    value="norm o" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" onclick="makeRequest('p14');"
+    value="p:Octonion Polynomial Integer:=octon(p1,pi,pj,pk,pE,pI,pJ,pK)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+Since the result is 0, the norm is multiplicative
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p12','p14','p15']);"
+    value="norm(o*p)-norm(o)*norm(p)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="showcall('p16');"
+   value=")show Octonion"/>
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+to display the list of operations defined by 
+<a href="db.xhtml?Octonion">Octonion</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numotherbases.xhtml b/src/axiom-website/hyperdoc/numotherbases.xhtml
new file mode 100644
index 0000000..7f4a31e
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numotherbases.xhtml
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Expansions in other Bases</div>
+  <hr/>
+It is possible to expand numbers in general bases. Here we expand
+111 in base 5. This means 
+<pre>
+    2   1   0      2    1  -
+  10 +10 +10  = 4*5 +2*5 +5
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="111::RadixExpansion(5)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You can expand fractions to form repeating expansions.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="(5/24)::RadixExpansion(2)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="(5/24)::RadixExpansion(3)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="(5/24)::RadixExpansion(8)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+    value="(5/24)::RadixExpansion(10)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+For bases from 11 to 36 the letters A through Z are used.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+    value="(5/24)::RadixExpansion(12)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" onclick="makeRequest('p7');"
+    value="(5/24)::RadixExpansion(16)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" onclick="makeRequest('p8');"
+    value="(5/24)::RadixExpansion(36)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+For bases greater than 36, the ragits are separated by blanks.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" onclick="makeRequest('p9');"
+    value="(5/24)::RadixExpansion(38)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+The <a href="db.xhtml?RadixExpansion">RadixExpansion</a> type provides 
+operations to obtain the individual ragits. Here is a rational number
+in base 8.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" onclick="makeRequest('p10');"
+    value="a:=(76543/210)::RadixExpansion(8)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopwholeragits.xhtml">wholeRagits</a> returns
+a list of the ragits for the integral part of the number.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p10','p11']);"
+    value="w:=wholeRagits a" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+The operations <a href="dbopprefixragits.xhtml">prefixRagits</a> and 
+<a href="dbopcycleragits.xhtml">cycleRagits</a> returns lists of the
+initial and repeating ragist in the fractional part of the number.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut"
+    onclick="handleFree(['p10','p12']);"
+    value="f0:=prefixRagits a" />
+  <div id="ansp12"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p13" class="subbut"
+    onclick="handleFree(['p10','p13']);"
+    value="f1:=cycleRagits a" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+You can construct any radix expansion by giving the whole, prefix, and 
+cycle parts. The declaration is necessary to let Axiom know the base 
+of the ragits.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut"
+    onclick="handleFree(['p11','p12','p13','p14']);"
+    value="u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+If there is no repeating part, then the list [0] should be used.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" onclick="makeRequest('p15');"
+    value="v:RadixExpansion(12):=fractRadix([1,2,3,11],[0])" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+If you are not interested in the repeating nature of the expansion,
+an infinite stream of ragits can be obtained using
+<a href="dbopfractragits.xhtml">fractRagits</a>
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut"
+     onclick="handleFree(['p14','p16']);"
+    value="fractRagits(u)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Of course, it's possible to recover the fraction representation:n
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p10','p17']);"
+    value="a::Fraction(Integer)" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="showcall('p18');"
+   value=")show RadixExpansion"/>
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by
+<a href="db.xhtml"?RadixExpansion>RadixExpansion</a>. More examples of
+expansions are available in
+<a href="numrepeatingdecimals.xhtml">DecimalExpansion</a>,
+<a href="numrepeatingbinaryexpansions.xhtml">BinaryExpansion</a>, and
+<a href="numrepeatinghexexpansions.xhtml">HexadecimalExpansion</a>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numpartialfractions.xhtml b/src/axiom-website/hyperdoc/numpartialfractions.xhtml
new file mode 100644
index 0000000..f27bdc1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numpartialfractions.xhtml
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Partial Fractions</div>
+  <hr/>
+A partial fraction is a decomposition of a quotient into a sum of quotients
+where the denominators of the summand are powers of primes. (Most people 
+first encounter partial fractions when they are learning integral calculus.
+For a technical discussion of partial fractions see, for example, Lang's
+Algebra.) For example, the rational number 1/6 is decomposed into 1/2-1/3.
+You can compute partial fractions of quotients of objects from domains
+belonging to the category 
+<a href="db.xhtml?EuclideanDomain">EuclideanDomain</a>. For example,
+<a href="db.xhtml?Integer">Integer</a>,
+<a href="dbcomplexinteger.xhtml">Complex Integer</a>, and
+<a href="db.xhtml?UnivariatePolynomial">
+UnivariatePolynomial(x,Fraction Integer)</a>
+all belong to 
+<a href="db.xhtml?EuclideanDomain">EuclideanDomain</a>. 
+In the examples following, we demonstrate how to decompose quotients of
+each of these kinds of objects into partial fractions. 
+
+It is necessary that we know how to factor the denominator when we want to 
+compute a partial fraction. Although the interpreter can often do this
+automatically, it may be necessary for you to include a call to 
+<a href="dbopfactor.xhtml">factor</a>. In these examples, it is not
+necessary to factor the denominators explicitly. The main operation for
+computing partial fractions is called 
+<a href="dboppartialfraction.xhtml">partialFraction</a> and we use this
+to compute a decomposition of 1/10!. The first argument top
+<a href="dboppartialfraction.xhtml">partialFraction</a> is the numerator
+of the quotient and the second argument is the factored denominator.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="partialFraction(1,factorial 10)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Since the denominators are powers of primes, it may be possible to expand
+the numerators further with respect to those primes. Use the operation
+<a href="dboppadicfraction.xhtml">padicFraction</a> to do this.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="f:=padicFraction(%)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopcompactfraction.xhtml">compactFraction</a>
+returns an expanded fraction into the usual form. The compacted version
+is used internally for computational efficiency.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p2','p3']);"
+    value="compactFraction(f)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+You can add, subtract, multiply, and divide partial fractions. In addition,
+you can extract the parts of the decomposition.
+<a href="dbopnumberoffractionalterms.xhtml">numberOfFractionalTerms</a>
+computes the number of terms in the fractional part. This does not include
+the whole part of the fraction, which you get by calling
+<a href="dbopwholepart.xhtml">wholePart</a>. In this example, the whole part
+is 0.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p2','p4']);"
+    value="numberOfFractionalTerms(f)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+The operation 
+<a href="dbopnthfractionalterm.xhtml">nthFractionalTerm</a>
+returns the individual terms in the decomposition. Notice that the object
+returned is a partial fraction itself. 
+<a href="dbopfirstnumer.xhtml">firstNumer</a> and
+<a href="dbopfirstdenom.xhtml">firstDenom</a> extract the numerator and
+denominator of the first term of the fraction.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p2','p5']);"
+    value="nthFractionalTerm(f,3)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Given two gaussian integers (see <a href="db.xhtml?Complex">Complex</a>),
+you can decompose their quotient into a partial fraction.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+    value="g:=partialFraction(1,-13+14*%i)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+To convert back to a quotient, simply use the conversion
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value="g::Fraction Complex Integer" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+To conclude this section, we compute the decomposition of
+<pre>
+                   1
+     -------------------------------
+                   2       3       4
+     (x + 1)(x + 2) (a + 3) (x + 4)
+</pre>
+The polynomials in this object have type
+<a href="db.xhtml?UnivariatePolynomial">
+UnivariatePolynomial(x,Fraction Integer)</a>.
+We use the <a href="dbopprimefactor.xhtml">primeFactor</a> operation
+(see <a href="db.xhtml?Factored">Factored</a>) to create the denominator
+in factored form directly.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" onclick="makeRequest('p8');"
+   value="u:FR UP(x,FRAC INT):=reduce(*,[primeFactor(x+i,i) for i in 1..4])"/>
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+These are the compact and expanded partial fractions for the quotient.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p8','p9']);"
+    value="pu:=partialFraction(1,u)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p8','p9','p10']);"
+    value="padicFraction pu" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+Also see
+<a href="db.xhtml?FullPartialFractionExpansion">
+FullPartialFractionExpansion</a> for examples of factor-free conversion of
+quotients to full partial fractions.
+
+Issue the system
+command
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="showcall('p11');"
+   value=")show PartialFraction"/>
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?PartialFraction">PartialFraction</a>.
+
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numproblems.xhtml b/src/axiom-website/hyperdoc/numproblems.xhtml
new file mode 100644
index 0000000..126892f
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numproblems.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      numproblems not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numquaternions.xhtml b/src/axiom-website/hyperdoc/numquaternions.xhtml
new file mode 100644
index 0000000..bbecb92
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numquaternions.xhtml
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Quaternions</div>
+  <hr/>
+The domain contructor <a href="db.xhtml?Quaternion">Quaternion</a>
+implements quaternions over commutative rings. 
+
+The basic operation for creating quaternions is 
+<a href="dbopquatern.xhtml">quatern</a>. This is a quaternion
+over the rational numbers.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="q:=quatern(2/11,-8,3/4,1)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The four arguments are the real part, the i imaginary part, 
+the j imaginary part, and the k imaginary part, respectively.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="[real q, imagI q, imagJ q, imagK q]" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Because q is over the rationals (and nonzero), you can invert it.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="inv q" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The usual arithmetic (ring) operations are available.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="q^6" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut"  onclick="makeRequest('p5');"
+    value="r:=quatern(-2,3,23/9,-89)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p5','p6']);"
+    value="q+r" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+In general, multiplication is not commutative.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut"
+    onclick="handleFree(['p1','p5','p7']);"
+    value="q*r-r*q" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+There are no predefined constants for the imaginary i, j, and k parts, 
+but you can easily define them
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" onclick="makeRequest('p8');"
+    value="i:=quatern(0,1,0,0)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" onclick="makeRequest('p9');"
+    value="j:=quatern(0,0,1,0)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" onclick="makeRequest('p10');"
+    value="k:=quatern(0,0,0,1)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+These satisfy the normal identities.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p8','p9','p10','p11']);"
+    value="[i*i,j*j,k*k,i*j,j*k,k*i,q*i]" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+The norm is the quaternion times its conjugate.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p12']);"
+    value="norm q" />
+  <div id="ansp12"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p1','p13']);"
+    value="c:=conjugate q" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p1','p13','p14']);"
+    value="q*c" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+For information on
+related topics, see <a href="db.xhtml?Complex">Complex</a> and
+<a href="db.xhtml?Octonion">Octonion</a>. You can also issue the
+system command
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="showcall('p15');"
+   value=")show Quaternion"/>
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?Quaternion">Quaternion</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numquotientfields.xhtml b/src/axiom-website/hyperdoc/numquotientfields.xhtml
new file mode 100644
index 0000000..8930348
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numquotientfields.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      numquotientfields not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numrationalnumbers.xhtml b/src/axiom-website/hyperdoc/numrationalnumbers.xhtml
new file mode 100644
index 0000000..db91d96
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numrationalnumbers.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      numrationalnumbers not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numrepeatingbinaryexpansions.xhtml b/src/axiom-website/hyperdoc/numrepeatingbinaryexpansions.xhtml
new file mode 100644
index 0000000..7b82375
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numrepeatingbinaryexpansions.xhtml
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Repeating Binary Expansions</div>
+  <hr/>
+All rational numbers have repeating binary expansions. Operations to 
+access the individual bits of a binary expansion can be obtained by
+converting the value to 
+<a href="db.xhtml?RadixExpansion">RadixExpansion(2)</a>. More examples
+of expansions are available in
+<a href="numrepeatingdecimals.xhtml">DecimalExpansion</a>,
+<a href="numrepeatinghexexpansions.xhtml">HexadecimalExpansion</a>, and
+<a href="db.xhtml?RadixExpansion">RadixExpansion</a>. 
+
+The expansion (of type 
+<a href="db.xhtml?BinaryExpansion">BinaryExpansion</a>)
+of a rational number is returned by the 
+<a href="dbopbinary.xhtml">binary</a> operation.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="r:=binary(22/7)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Arithmetic is exact.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="r+binary(6/7)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The period of the expansion can be short or long...
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="[binary(1/i) for i in 102..106]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or very long
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="binary(1/1007)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+These numbers are bona fide algebraic objects.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+    value="p:=binary(1/4)*x^2+binary(2/3)*x+binary(4/9)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="q:=D(p,x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut"
+    onclick="handleFree(['p5','p6','p7']);"
+    value="g:=gcd(p,q)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numrepeatingdecimals.xhtml b/src/axiom-website/hyperdoc/numrepeatingdecimals.xhtml
new file mode 100644
index 0000000..9f158ed
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numrepeatingdecimals.xhtml
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Repeating Decimals</div>
+  <hr/>
+All rationals have repeating decimal expansions. Operations to access
+the individual digits of a decimal expansion can be obtained by converting
+the value to <a href="db.xhtml?RadixExpansion">RadixExpansion(10)</a>.
+
+The operation <a href="dbopdecimal.xhtml">decimal</a> is used to create
+this expansion of type
+<a href="db.xhtml?DecimalExpansion">DecimalExpansion</a>.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="r:=decimal(22/7)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Arithmetic is exact.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="r+decimal(6/7)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The period of the expansion can be short or long...
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="[decimal(1/i) for i in 350..354]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or very long
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="decimal(1/2049)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+These numbers are bona fide algebraic objects.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+    value="p:=decimal(1/4)*x^2+decimal(2/3)*x+decimal(4/9)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="q:=differentiate(p,x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut"
+    onclick="handleFree(['p5','p6','p7']);"
+    value="g:=gcd(p,q)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+More examples of expansions are available in
+<a href="numrepeatingbinaryexpansions.xhtml">BinaryExpansion</a>,
+<a href="numrepeatinghexexpansions.xhtml">HexadecimalExpansion</a>, and
+<a href="db.xhtml?RadixExpansion">RadixExpansion</a>. Issue the system
+command
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="showcall('p8');"
+   value=")show RadixExpansion"/>
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by
+<a href="db.xhtml?RadixExpansion">RadixExpansion</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numrepeatinghexexpansions.xhtml b/src/axiom-website/hyperdoc/numrepeatinghexexpansions.xhtml
new file mode 100644
index 0000000..a9d0c35
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numrepeatinghexexpansions.xhtml
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Repeating Hexadecimal Expansions</div>
+  <hr/>
+All rationals have repeating hexadecimals expansions. The operation
+<a href="dbophex.xhtml">hex</a> returns these expansions of type
+<a href="db.xhtml?HexadecimalExpansion">HexadecimalExpansion</a>.
+Operations to access the individual numerals of a hexadecimal expansion
+can be obtained by converting the value to 
+<a href="db.xhtml?RadixExpansion">RadixExpansion(16)</a>. More examples of
+expansions are available in 
+<a href="numrepeatingdecimals.xhtml">DecimalExpansion</a>,
+<a href="numrepeatingbinaryexpansions.xhtml">BinaryExpansion</a>, and 
+<a href="db.xhtml?RadixExpansion">RadixExpansion</a>.
+
+This is a hexadecimal expansion of a rational number.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="r:=hex(22/7)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Arithmetic is exact.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="r+hex(6/7)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The period of the expansion can be short or long...
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="[hex(1/i) for i in 350..354]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+or very long.
+.<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="hex(1/1007)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+These numbers are bona fide algebraic objects.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" onclick="makeRequest('p5');"
+    value="p:=hex(1/4)*x^2+hex(2/3)*x+hex(4/9)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value="q:=D(p,x)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut"
+    onclick="handleFree(['p5','p6','p7']);"
+    value="g:=gcd(p,q)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="showcall('p8');"
+   value=")show HexadecimalExpansion"/>
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by
+<a href="db.xhtml?HexadecimalExpansion">HexadecimalExpansion</a>.
+
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/numromannumerals.xhtml b/src/axiom-website/hyperdoc/numromannumerals.xhtml
new file mode 100644
index 0000000..4402e54
--- /dev/null
+++ b/src/axiom-website/hyperdoc/numromannumerals.xhtml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Roman Numerals</div>
+  <hr/>
+The Roman numeral package was added to Axiom in MCMLXXXVI for use in
+denoting higher order derivatives.
+
+For example, let f be a symbolic operator.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" onclick="makeRequest('p1');"
+    value="f:=operator 'f" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+This is the seventh derivative of f with respect to x
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" onclick="makeRequest('p2');"
+    value="D(f x,x,7)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can have integers printed as Roman numerals by declaring variables
+to be of type 
+<a href="db.xhtml?RomanNumeral">RomanNumeral</a> 
+(abbreviation <a href="db.xhtml?RomanNumeral">ROMAN</a>).
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" onclick="makeRequest('p3');"
+    value="a:=roman(1978-1965)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+This package now has a small but devoted group of followers that claim
+this domain has shown its efficacy in many other contexts. They claim
+that Roman numerals are every bit as useful as ordinary integers.
+In a sense, they are correct, because Roman numerals form a ring and
+you can therefore construct polynomials with Roman numeral 
+coefficients, matrices over Roman numerals,etc..
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" onclick="makeRequest('p4');"
+    value="x:UTS(ROMAN,'x,0):=x" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Was Fibonacci Italian or ROMAN?
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="recip(1-x-x^2)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+You can also construct fractions with Roman numeral numerators and 
+denominators, as this matrix Hilberticus illustrates.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" onclick="makeRequest('p6');"
+    value="m:MATRIX FRAC ROMAN" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value="m:=matrix [ [1/(i+j) for i in 1..3] for j in 1..3]" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Note that the inverse of the matrix has integral 
+<a href="db.xhtml?RomanNumeral">ROMAN</a> entries.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p6','p7','p8']);"
+    value="inverse m" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Unfortunately, the spoil-sports say that the fun stops when the
+numbers get big -- mostly because the Romans didn't establish
+conventions about representing very large numbers.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" onclick="makeRequest('p9');"
+    value="y:=factorial 10" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+You work it out!
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p9','p10']);"
+    value="roman y" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="showcall('p11');"
+   value=")show RomanNumeral"/>
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?RomanNumeral">RomanNumeral</a>).
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/ocwmit18085.xhtml b/src/axiom-website/hyperdoc/ocwmit18085.xhtml
new file mode 100644
index 0000000..68899d3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/ocwmit18085.xhtml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+18.085 Mathematical Methods for Engineers I Course Notes
+<hr/>
+These are course notes based on the 
+<a href="http://ocw.mit.edu/OcwWeb/Mathematics/18-085Fall-2005/VideoLectures/index.htm">
+ M.I.T. Open Courseware lectures by Gilbert Strang. 
+</a> 
+<ul>
+ <li>
+  <a href="ocwmit18085lecture1.xhtml">
+   Positive Definite Matrices K=A'CA
+  </a>
+ </li>
+ <li>
+  <a href="ocwmit18085lecture2.xhtml">
+   One-dimensional Applications: A = Difference Matrix
+  </a>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/ocwmit18085lecture1.xhtml b/src/axiom-website/hyperdoc/ocwmit18085lecture1.xhtml
new file mode 100644
index 0000000..4c55379
--- /dev/null
+++ b/src/axiom-website/hyperdoc/ocwmit18085lecture1.xhtml
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ Positive Definite Matrices K=A'CA
+<hr/>
+In applied mathematics we have 2 basic tasks:
+<ul>
+<li>Find the equations</li>
+<li>Solve the equations</li>
+</ul>
+<h4>Positive Definite Matrices</h4>
+Certain matrices occur frequently in applied math. These three
+matrices (K,T,and M) are canonical examples.
+We have 3 3x3 matrices, 
+<pre>
+K:Matrix(Integer):=[[2,-1,0],[-1,2,-1],[0,-1,2]]
+
+        + 2   - 1   0 +
+        |             |
+        |- 1   2   - 1|
+        |             |
+        + 0   - 1   2 +
+               Type: Matrix Integer
+T:Matrix(Integer):=[[1,-1,0],[-1,2,-1],[0,-1,2]]
+
+        + 1   - 1   0 +
+        |             |
+        |- 1   2   - 1|
+        |             |
+        + 0   - 1   2 +
+               Type: Matrix Integer
+B:Matrix(Integer):=[[1,-1,0],[-1,2,-1],[0,-1,1]]
+
+        + 1   - 1   0 +
+        |             |
+        |- 1   2   - 1|
+        |             |
+        + 0   - 1   1 +
+               Type: Matrix Integer
+</pre>
+These matrices are similar and can be generalized to square matrices
+of order N, with n x n elements. All of these matrices have the same
+element along the diagonal. T (aka Top) differs from K in the first row.
+B (aka Both) differs from K in the first and last row. These represent
+different boundary conditions in the problem.
+
+We can create K(n), T(n) and B(n) with the following commands:
+<pre>
+k(n) == 
+ M := diagonalMatrix([2 for i in 1..n]) 
+ for i in 1..n-1 repeat M(i,i+1):=-1 
+ for i in 1..n-1 repeat M(i+1,i):=-1 
+ M::SquareMatrix(n,Fraction(Integer))
+</pre>
+<pre>
+t(n) == 
+ M:=k(n)
+ N:=M::Matrix(Fraction(Integer)) 
+ qsetelt!(N,1,1,1) 
+ N::SquareMatrix(n,Fraction(Integer))
+</pre>
+<pre>
+b(n) == 
+ M:=k(n)
+ N:=M::Matrix(Fraction(Integer)) 
+ qsetelt!(N,1,1,1) 
+ qsetelt!(N,n,n,1)
+ N::SquareMatrix(n,Fraction(Integer))
+</pre>
+
+K:=k(n) has a few key properties:
+<ul>
+<li> K is symmetric, that is K=K^T</li>
+<li> K might be nonsingular, that is, it is invertible</li>
+<li> K has a non-zero determinant</li>
+<li> K is banded (main diagonal and neighbors)</li>
+<li> K is tri-diagonal (main diagonal and nearest neighbors</li>
+<li> K is extremely sparse</li>
+<li> K has constant diagonals, (shift invariant, time invariant)</li>
+<li> K is Toeplitz (constant diagonal, shows up in filters)</li>
+<li> K is good for Fourier analysis</li>
+</ul>
+
+<h5>The inverse of T</h5>
+If we look at the inverse of the T matrix we see:
+<pre>
+T^-1
+
+        +3  2  1+
+        |       |
+        |2  2  1|
+        |       |
+        +1  1  1+
+               Type: Matrix Fraction Integer
+</pre>
+Notice that these are all integers because the determinant of
+this matrix is 1
+<pre>
+determinant T
+
+     1
+               Type: Fraction Integer
+
+</pre>
+We can check that this matrix is the inverse of T. 
+
+When computing the inverse the row pattern [-1 2 -1] is a 
+``second difference''. The first column of the inverse matrix
+is [3 2 1] which is linear. When we take the second difference
+of a linear object we should get 0. Thus,
+<pre>
+[[-1,2,-1]]::MATRIX(INT)*[[3],[2],[1]]
+
+     [0]
+               Type: Matrix Integer
+
+</pre>
+The third column of the T matrix is linear and constant. If we
+take the second difference of that we also find it is zero:
+<pre>
+ [[-1,2,-1]]::MATRIX(INT)*[[1],[1],[1]]
+
+    [0]
+               Type: Matrix Integer
+</pre>
+and the diagonal element of the unit matrix must be one. So
+the second difference of the second column is:
+<pre>
+ [[-1,2,-1]]::MATRIX(INT)*[[2],[2],[1]]
+
+    [1]
+               Type: Matrix Integer
+</pre>
+So these simple checks show that we're getting the correct 
+row and column values for the identity matrix by multiplying
+T times its inverse.
+
+<br/>
+<h5>The inverse of B</h5>
+If we look for the inverse of the B matrix we can observe
+that the rows sum to zero which implies that it is not
+invertible. Thus it is singular.
+
+K and T are positive definite. B is only positive semi-definite.
+
+If we can find a vector that it takes to zero, that is if we can
+solve for x,y,z in:
+<pre>
+        + 1   - 1   0 + + x +    + 0 +
+        |             | |   |    |   |
+        |- 1   2   - 1| | y | =  | 0 |
+        |             | |   |    |   |
+        + 0   - 1   1 + + z +    + 0 +
+
+</pre>
+The constant vector [1 1 1] solves this equation. When
+the rows sum to zero we are adding each row by a constant
+and thus we add each row times the constant one and we
+get zeros. If the matrix takes some vector to zero it
+cannot have an inverse since if
+<pre>
+   B x = 0
+</pre>
+and x is not zero. If B had an inverse only x=0 would
+solve the equation. Since x=1 solves the equation B has
+no inverse. The vector x is in the nullspace of B. In
+fact any constant vector, e.g. [3 3 3] is in the nullspace.
+Thus the nullspace of B is cx for any constant c.
+
+When doing matrix multiplication one way to think about the
+work is to consider the problem by columns. Thus in the
+multiplication
+<pre>
+        + 1   - 1   0 + + x +    + 0 +
+        |             | |   |    |   |
+        |- 1   2   - 1| | y | =  | 0 |
+        |             | |   |    |   |
+        + 0   - 1   1 + + z +    + 0 +
+
+</pre>
+we can think about this as 
+<pre>
+x*(first column) + y*(second column) + z*(third column).
+</pre>
+and for the constant vector [1 1 1] this means that we
+just need to sum the columns.
+
+Alternatively this can be computed by thinking of the 
+multiplication as 
+<pre>
+ (first row)*(vector)
+ (second row)*(vector)
+ (third row)*(vector)
+</pre>
+
+<br/>
+<h5>The inverse of K</h5>
+Now we consider the K matrix we see the inverse
+<pre>
+K
+
+         + 2   - 1   0 +
+         |             |
+         |- 1   2   - 1|
+         |             |
+         + 0   - 1   2 +
+               Type: SquareMatrix(3,Fraction Integer)
+kinv:=K^-1
+
+         +3  1  1+
+         |-  -  -|
+         |4  2  4|
+         |       |
+         |1     1|
+         |-  1  -|
+         |2     2|
+         |       |
+         |1  1  3|
+         |-  -  -|
+         +4  2  4+
+               Type: SquareMatrix(3,Fraction Integer)
+</pre>
+We can take the determinant of k 
+<pre>
+determinant K
+
+    4
+               Type: Fraction Integer
+</pre>
+Thus there is a constant 1/4 which can be factored out
+<pre>
+4*kinv
+
+         +3  2  1+
+         |       |
+         |2  4  2|
+         |       |
+         +1  2  3+
+               Type: SquareMatrix(3,Fraction Integer)
+</pre>
+Notice that the inverse is a symmetric matrix but not tri-diagonal.
+The inverse is not a sparse matrix so much more computation would
+be involved when using the inverse.
+
+In order to solve the system
+<pre>
+ K u = f
+</pre>
+by elimination which implies multiplying and subtracting rows.
+<pre>
+       K    u  =  f    ==>   U     u  =    f
+</pre>                                        
+For the 2x2 case we see:
+<pre>
+                             +2  -1+        +  f1  +
+    +2  -1+  +x+   +f1+      |     |  +x+   |      |
+    |     |  | | = |  |  ==> |    3|  | | = |   1  |
+    +-1  2+  +y+   +f2+      |0   -|  +y+   |f2+-f1|
+                             +    2+        +   2  +
+
+
+</pre>
+By multiplying row1 by 1/2 and adding it to row2 we create an
+upper triangular matrix U. Since we chose K(1,1), the number 2
+is called the first pivot. K(2,2), the number 3/2, is called 
+the second pivot.
+
+For K 2x2 above is symmetric and invertible (since the pivots
+are all non-zero).
+
+For the K 3x3 case the pivots are 2, 3/2, and 4/3. (The next pivots
+would be 5/4, 6/5, etc. for larger matrices).
+
+For the T 3x3 case the pivots are 1, 1, and 1.
+
+For the B 3x3 case the third pivot would be zero.
+
+<hr/>
+<h5>Generalizing the matrix pivot operations</h5>
+For the 2x2 case we see contruct an elimination matrix E which we can use
+to pre-multipy by K to give us the upper triangular matrix U
+<pre>
+      E     K    =   U
+</pre>
+In detail we see
+<pre>
+
+    +1  0+            +2  -1+
+    |    |  +2  -1+   |     |
+    |1   |  |     | = |    3|
+    |-  1|  +-1  2+   |0   -|
+    +2   +            +    2+
+
+</pre>
+We wish to rewrite this as
+<pre>
+       K = L U 
+</pre>
+
+<hr/>
+<h5>The big 4 solve operations in Linear Algebra</h5>
+<ol>
+<li>Elimination</li>
+<li>Gram-Schmidt Orthoginalization</li>
+<li>Eigenvalues</li>
+<li>Singular Value Decomposition</li>
+</ol>
+Each of these operations is described by a factorization of K.
+Elimination is written 
+<pre>
+  K = L U
+</pre>
+where L is lower triangular and U is upper triangular.
+Thus we need a matrix L which when multiplied by U gives K.
+The required matrix is the inverse of the E matrix above since
+<pre>
+
+1)      E K =     U
+
+     -1        -1
+2)  E   E K = E   U
+
+               -1
+3)      I K = E   U
+
+               -1
+4)  but   L = E
+
+5)  so    K = L U
+</pre>
+Given the matrix operations above we had
+<pre>
+      E       K   =   U
+
+    +1  0+            +2  -1+
+    |    |  +2  -1+   |     |
+    |1   |  |     | = |    3|
+    |-  1|  +-1  2+   |0   -|
+    +2   +            +    2+
+
+</pre>
+and the inverse of E is the same matrix with a minus sign in
+the second row, thus:
+<pre>
+        +  1  0+ 
+   -1   |      | 
+  E   = |  1   | = L 
+        |- -  1| 
+        +  2   + 
+
+</pre>
+
+<hr/>
+<h5>Making the matrices symmetric</h5>
+We would like to preserve the symmetry property which we can
+do with a further decomposition of LU as follows:
+<pre>
+      L        U     =     L        D       U'
+
+  +  1  0+  +2  -1+    +  1  0+  +2  0+  +1   1+
+  |      |  |     |    |      |  |    |  |  - -|
+  |  1   |  |    3|  = |  1   |  |   3|  |    2|
+  |- -  1|  |0   -|    |- -  1|  |0  -|  |     |
+  +  2   +  +    2+    +  2   +  +   2+  +0   1+
+
+</pre>
+So now we have 3 matrices; L is the lower triangular,
+D is symmetric and contains the pivots, and U' is upper triangular and
+is the transpose of the lower. So the real form we have is
+<pre>
+           T
+    L  D  L
+</pre>
+This result will always be symmetric. We can check this by taking
+its transpose. If we get the same matrix we must have a symmetric
+matrix. So the transpose of
+<pre>
+            T  T     TT  T   T        T T        T
+  (  L  D  L  )   = L   D   L   =  L D L  = L D L
+</pre>
+<hr/>
+<h5>Positive Definite Matrices</h5>
+There are several ways to recognize a positive definite matrix.
+First, it must be symmetric. The "positive" aspect comes from
+the pivots, all of which must be positive. Note that T is also
+positive definite. B is positive semi-definite because one of
+the pivots is zero. So
+<pre>
+   positive definite      == all pivots >  0
+   positive semi-definite == all pivots >= 0
+</pre>
+When all the pivots are positive then all the eigenvalues are positive.
+
+So a positive definite matrix K and any non-zero vector X
+<pre>
+    T
+   X  K X  > 0
+</pre>
+X transpose is just a row and X is just a column.
+
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/ocwmit18085lecture2.xhtml b/src/axiom-website/hyperdoc/ocwmit18085lecture2.xhtml
new file mode 100644
index 0000000..8701fb7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/ocwmit18085lecture2.xhtml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ One-dimensional Applications: A = Difference Matrix
+<hr/>
+<h5>Difference Matrices</h5>
+<hr/>
+<h5>Second Differences</h5>
+<hr/>
+<h5>Stiffness Matrix</h5>
+<hr/>
+<h5>Boundary Conditions</h5>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/operations.xhtml b/src/axiom-website/hyperdoc/operations.xhtml
new file mode 100644
index 0000000..39faae5
--- /dev/null
+++ b/src/axiom-website/hyperdoc/operations.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      operations not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/pagelist.xhtml b/src/axiom-website/hyperdoc/pagelist.xhtml
new file mode 100644
index 0000000..24a4d3c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/pagelist.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      pagelist not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/pagematrix.xhtml b/src/axiom-website/hyperdoc/pagematrix.xhtml
new file mode 100644
index 0000000..0b497d8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/pagematrix.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      pagematrix not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/pageonedimensionalarray.xhtml b/src/axiom-website/hyperdoc/pageonedimensionalarray.xhtml
new file mode 100644
index 0000000..bd292fe
--- /dev/null
+++ b/src/axiom-website/hyperdoc/pageonedimensionalarray.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      pageonedimensionalarray not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/pagepermanent.xhtml b/src/axiom-website/hyperdoc/pagepermanent.xhtml
new file mode 100644
index 0000000..a8bfbec
--- /dev/null
+++ b/src/axiom-website/hyperdoc/pagepermanent.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      pagepermanent not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/pageset.xhtml b/src/axiom-website/hyperdoc/pageset.xhtml
new file mode 100644
index 0000000..ef82aa1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/pageset.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      pageset not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/pagesquarematrix.xhtml b/src/axiom-website/hyperdoc/pagesquarematrix.xhtml
new file mode 100644
index 0000000..6566ff2
--- /dev/null
+++ b/src/axiom-website/hyperdoc/pagesquarematrix.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      pagesquarematrix not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/pagetable.xhtml b/src/axiom-website/hyperdoc/pagetable.xhtml
new file mode 100644
index 0000000..2f8c89a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/pagetable.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      pagetable not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/pagetwodimensionalarray.xhtml b/src/axiom-website/hyperdoc/pagetwodimensionalarray.xhtml
new file mode 100644
index 0000000..0734725
--- /dev/null
+++ b/src/axiom-website/hyperdoc/pagetwodimensionalarray.xhtml
@@ -0,0 +1,416 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">TwoDimensionalArray</div>
+  <hr/>
+The <a href="db.xhtml?TwoDimensionalArray">TwoDimensionalArray</a> is used for
+storing data in a two-dimensional data structure indexed by row and column.
+Such an array is a homogeneous data structure in that all the entries of the
+array must belong to the same Axiom domain (although see 
+<a href="axbook/section-2.6.xhtml">The Any Domain</a>). Each array has a fixed 
+number of rows and columns specified by the user and arrays are not 
+extensible. In Axiom, the indexing of two-dimensional arrays is one-based.
+This means that both the "first" row of an array and the "first" column of
+an array are given the index 1. Thus, the entry in the upper left corner
+of an array is in position (1,1).
+
+The operation <a href="dbopnew.xhtml">new</a> creates an array with a 
+specified number of rows and columns and fills the components of that array 
+with a specified entry. The arguments of this operation specify the number
+of rows, the number of columns, and the entry. This creates a five-by-four
+array of integers, all of whose entries are zero.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="arr:ARRAY2 INT:=new(5,4,0)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The entries of this array can be set to other integers using the operation
+<a href="dbopsetelt.xhtml">setelt</a>. 
+
+Issue this to set the element in the upper left corner of this array to 17.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="setelt(arr,1,1,17)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Now the first element of the array is 17.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="arr" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Likewise, elements of an array are extracted using the operation
+<a href="dbopelt.xhtml">elt</a>.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p4']);"
+    value="elt(arr,1,1)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Another way to use these two operations is as follows. This sets the
+element in position (3,2) of the array to 15.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p5']);"
+    value="arr(3,2):=15" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+This extracts the element in position (3,2) of the array.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p6']);"
+    value="arr(3,2)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopelt.xhtml">elt</a> and 
+<a href="dbopsetelt.xhtml">setelt</a> come equipped with an error check
+which verifies that the indices are in the proper ranges. For example,
+the above array has five rows and four columns, so if you ask for the
+entry in position (6,2) with arr(6,2) Axiom displays an error message.
+If there is no need for an error check, you can call the operations
+<a href="dbopqelt.xhtml">qelt</a> and
+<a href="dbopqseteltbang.xhtml">qsetelt!</a> 
+which provide the same functionality
+but without the error check. Typically, these operations are called in
+well-tested programs.
+
+The operations <a href="dboprow.xhtml">row</a> and
+<a href="dbopcolumn.xhtml">column</a> extract rows and columns, respectively,
+and return objects of 
+<a href="db.xhtml?OneDimensionalArray">OneDimensionalArray</a> with the
+same underlying element type.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p7']);"
+    value="row(arr,1)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p8']);"
+    value="column(arr,1)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+You can determine the dimensions of an array by calling the operations
+<a href="dbopnrows.xhtml">nrows</a> and
+<a href="dbopncols.xhtml">ncols</a>, which return the number of rows
+and columns, respectively.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p9']);"
+    value="nrows(arr)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p10']);"
+    value="ncols(arr)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+To apply an operation to every element of an array, use
+<a href="dbopmap.xhtml">map</a>. This creates a new array. This 
+expression negates every element.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11']);"
+    value="map(-,arr)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+This creates an array where all the elements are doubled.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12']);"
+    value="map((x+->x+x),arr)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+To change the array destructively, use 
+<a href="dbopmapbang.xhtml">map!</a> instead of 
+<a href="dbopmap.xhtml">map</a>.
+If you need to make a copy of an array,
+use <a href="dbopcopy.xhtml">copy</a>.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p13']);"
+    value="arrc:=copy(arr)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p13','p14']);"
+    value="map!(-,arrc)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p13','p14','p15']);"
+    value="arrc" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p16']);"
+    value="arr" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopmemberq.xhtml">member?</a> to see if a given element is in
+an array.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p17']);"
+    value="member?(17,arr)" />
+  <div id="ansp17"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p18']);"
+    value="member?(10317,arr)" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+To see how many times an element appears in an array, use 
+<a href="dbopcount.xhtml">count</a>.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p19']);"
+    value="count(17,arr)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p1','p2','p5','p11','p12','p20']);"
+    value="count(0,arr)" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+For more information about the operations available for 
+<a href="db.xhtml?TwoDimensionalArray">TwoDimensionalArray</a>, issue
+<ul>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="showcall('p21');"
+   value=")show TwoDimensionalArray"/>
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+For more information on related topics, see
+<a href="pagematrix.xhtml">Matrix</a> and
+<a href="pageonedimensionalarray.xhtml">OneDimensionalArray</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/pagevector.xhtml b/src/axiom-website/hyperdoc/pagevector.xhtml
new file mode 100644
index 0000000..a9bef56
--- /dev/null
+++ b/src/axiom-website/hyperdoc/pagevector.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      pagevector not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polybasicfunctions.xhtml b/src/axiom-website/hyperdoc/polybasicfunctions.xhtml
new file mode 100644
index 0000000..ae163ce
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polybasicfunctions.xhtml
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Basic Operations on Polynomials</div>
+  <hr/>
+You create polynomials using the usual operations of
+<a href="dbopplus.xhtml">+</a>, 
+<a href="dbopminus.xhtml">-</a>, 
+<a href="dboptimes.xhtml">*</a>
+(for multiplication), and 
+<a href="dbopstarstar.xhtml">**</a> (or 
+<a href="dbopstarstar.xhtml">^</a>. Here are two examples:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="p:=a*x**2+b*x*y+c*y**2" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="q:=12*x^2+3*z" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+These operations can also be used to combine polynomials. Try the following:
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="p+q" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p4']);"
+    value="p-3*q" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p5']);"
+    value="p**2+p*q" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p6']);"
+    value="r:=(p+q)**2" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+As you can see from the above examples, the variables are ordered by defaults
+<pre>
+  z > y > x > c > b > a
+</pre>
+That is, z is the main variable, then y and so on in reverse alphabetical
+order. You can redefine this ordering (for display purposes) with the
+<a href="dbopsetvariableorder.xhtml">setVariableOrder</a>. For example, the
+following makes a the main variable, then b, and so on:
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="setVariableOrder [a,b,c,x,y,z]" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Now compare the way polynomials are displayed:
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p7','p8']);"
+    value="p" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p2','p7','p9']);"
+    value="q" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p6','p7','p10']);"
+    value="r" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+To return to the system's default ordering, use
+<a href="dbopresetvariableorder.xhtml">resetVariableOrder</a>.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="makeRequest('p11');"
+    value="resetVariableOrder()" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p11','p12']);"
+    value="p" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+Polynomial coefficients can be pulled out using the function
+<a href="dbopcoefficient.xhtml">coefficient</a>. For example:
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p2','p13']);"
+    value="coefficient(q,x,2)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+will give you the coefficient of x**2 in the polynomial q. Try these
+commands:
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p6','p14']);"
+    value="coefficient(r,x,3)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p6','p15']);"
+    value="c:=coefficient(r,z,1)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p6','p15','p16']);"
+    value="coefficient(c,x,2)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Coefficients of monomials can be obtained as follows:
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p2','p17']);"
+    value="coefficient(q**2,[x,z],[2,1])" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+This will return the coefficient of x**2*z in the polynomial q**2. Also,
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="handleFree(['p1','p2','p6','p18']);"
+    value="coefficient(r,[x,y],[2,2])" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+will return the coefficient of x**2*y**2 in the polynomial r(x,y).
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyfactorization.xhtml b/src/axiom-website/hyperdoc/polyfactorization.xhtml
new file mode 100644
index 0000000..1b70c12
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyfactorization.xhtml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Polynomial Factorization</div>
+  <hr/>
+The Axiom polynomial factorization facilities are available for all
+polynomial types and a wide variety of coefficient domains. Here are
+some examples.
+<ul>
+ <li>
+  <a href="polyfactorization1.xhtml">
+   Integer and Rational Number Coefficients
+  </a>
+ </li>
+ <li>
+  <a href="polyfactorization2.xhtml">
+   Finite Field Coefficients
+  </a>
+ </li>
+ <li>
+  <a href="polyfactorization3.xhtml">
+   Simple Algebraic Extension Field Coefficients
+  </a>
+ </li>
+ <li>
+  <a href="polyfactorization4.xhtml">
+   Factoring Rational Functions
+  </a>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyfactorization1.xhtml b/src/axiom-website/hyperdoc/polyfactorization1.xhtml
new file mode 100644
index 0000000..d676143
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyfactorization1.xhtml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Integer and Rational Number Coefficients</div>
+  <hr/>
+Polynomials with integer coefficients can be factored.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="v:=(4*x^3+2*y^2+1)*(12*x^5-(1/2)*x^3+12)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="factor v" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Also, Axiom can factor polynomials with rational number coefficients
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="w:=(4*x^3+(2/3)*x^2+1)*(12*x^5-(1/2)*x^3+12)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p3','p4']);"
+    value="factor w" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyfactorization2.xhtml b/src/axiom-website/hyperdoc/polyfactorization2.xhtml
new file mode 100644
index 0000000..da5546a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyfactorization2.xhtml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Finite Field Coefficients</div>
+  <hr/>
+Polynomials with coefficients in a finite filed can also be factored.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="u:POLY(PF(19)):=3*x^4+2*x^2+15*x+18" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+These include the integers mod p, where p is prime, and extensions of these
+fields.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="factor u" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Convert this to have coefficients in the finite field with 
+19**3 elements. See
+<a href="axbook/section-8.11.xhtml">FiniteFields</a> for more information
+about finite fields.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="factor(u::POLY FFX(PF 19,3))" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyfactorization3.xhtml b/src/axiom-website/hyperdoc/polyfactorization3.xhtml
new file mode 100644
index 0000000..66035f1
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyfactorization3.xhtml
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Simple Algebraic Extension Field Coefficients</div>
+  <hr/>
+Polynomials with coefficients in simple algebraic extensions of the 
+rational numbers can be factored. 
+
+Here, aa and bb are symbolic roots of polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="aa:=rootOf(aa^2+aa+1)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="p:=(x^2+aa^2*x+y)*(aa*x^2+aa*x+aa*y^2)^2" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Note that the second argument to factor can be a list of algebraic
+extensions to factor over.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="factor(p,[aa])" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+This factors x^2+3 over the integers.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="factor(x^2+3)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Factor the same polynomial over the field obtained by adjoining aa to the
+rational numbers.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="factor(x^2+3,[aa])" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Factor x^6+108 over the same field.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p6']);"
+    value="factor(x^6+108,[aa])" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="bb:=rootOf(bb^3-2)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p7','p8']);"
+    value="factor(x^6+8,[bb])" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Factor again over the field obtained by adjoining both aa and bb to the 
+rational numbers.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p7','p9']);"
+    value="factor(x^6+108,[aa,bb])" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyfactorization4.xhtml b/src/axiom-website/hyperdoc/polyfactorization4.xhtml
new file mode 100644
index 0000000..4b0cc9a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyfactorization4.xhtml
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Factoring Rational Functions</div>
+  <hr/>
+Since fractions of polynomials form a field, every element (other than zero)
+divides any other, so there is no useful notion of irreducible factors. 
+Thus the <a href="dbopfactor.xhtml">factor</a> operation is not very useful
+for fractions of polynomials.
+
+Instead, there is a specific operation 
+<a href="dbopfactorfraction.xhtml">factorFraction</a> that separately
+factors the numerator and denominator and returns a fraction of the
+factored results.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="factorFraction((x^2-4)/(y^2-4))" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+You can also use <a href="dbopmap.xhtml">map</a>. This expression applies
+the <a href="dbopfactor.xhtml">factor</a> operation to the numerator and
+denominator.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="map(factor,(x^2-4)/(y^2-4))" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polygcdandfriends.xhtml b/src/axiom-website/hyperdoc/polygcdandfriends.xhtml
new file mode 100644
index 0000000..e87cfcb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polygcdandfriends.xhtml
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+<div align="center">
+ Greatest Common Divisors, Resultants, and Discriminants
+</div>
+<hr/>
+You can compute the greatest common divisor of two polynomials using the
+function <a href="dbopgcd.xhtml">gcd</a>. Here's an example:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="p:=3*x^8+2*x^7+6*x^2+7*x+2" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="q:=2*x^13+9*x^7+2*x^6+10*x+5" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p2','p3']);"
+    value="gcd(p,q)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+You could also see that p and q have a factor in common by using the
+function <a href="dbopresultant.xhtml">resultant</a>:
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p4']);"
+    value="resultant(p,q,x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+The resultant of two polynomials vanishes precisely when they have a
+factor in common. (In the example above we specified the variable with which
+we wanted to compute the resultant because the polynomials could have
+involved variables other than x.)
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polynomialpage.xhtml b/src/axiom-website/hyperdoc/polynomialpage.xhtml
new file mode 100644
index 0000000..e0c88a9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polynomialpage.xhtml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Polynomials</div>
+  <hr/>
+<table>
+ <tr>
+  <td>
+   <a href="polybasicfunctions.xhtml">Basic Functions</a>
+  </td>
+  <td>
+   Create and manipulate polynomials
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polysubstitutions.xhtml">Substitutions</a>
+  </td>
+  <td>
+   Evaluate Polynomials
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyfactorization.xhtml">Factorization</a>
+  </td>
+  <td>
+   Factor in different contexts
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polygcdandfriends.xhtml">GCD and Friends</a>
+  </td>
+  <td>
+   Greatest Common Divisors, Resultants, and Discriminants
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyroots.xhtml">Roots</a>
+  </td>
+  <td>
+   Work with and solve for roots
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyspecifictypes.xhtml">Specific Types</a>
+  </td>
+  <td>
+   More specific information
+  </td>
+ </tr>
+</table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyroots.xhtml b/src/axiom-website/hyperdoc/polyroots.xhtml
new file mode 100644
index 0000000..72b2ff7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyroots.xhtml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Roots of Polynomials</div>
+  <hr/>
+<table>
+ <tr>
+  <td>
+   <a href="polyroots1.xhtml">
+    Using a Single Root of a Polynomial
+   </a>
+  </td>
+  <td>
+   Working with a single root of a polynomial
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyroots2.xhtml">
+    Using All Roots of a Polynomial
+   </a>
+  </td>
+  <td>
+   Working with all the roots of a polynomial
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyroots3.xhtml">
+    Solution of a Single Polynomial Equation
+   </a>
+  </td>
+  <td>
+   Finding the roots of one polynomial
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyroots4.xhtml">
+    Solution of Systems of Polynomial Equations
+   </a>
+  </td>
+  <td>
+   Finding the roots of a system of polynomials
+  </td>
+ </tr>
+</table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyroots1.xhtml b/src/axiom-website/hyperdoc/polyroots1.xhtml
new file mode 100644
index 0000000..d0a83f6
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyroots1.xhtml
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Using a Single Root of a Polynomial</div>
+  <hr/>
+Use <a href="dboprootof.xhtml">rootOf</a> to get a symbolic root of a 
+polynomial. The call rootOf(p,x) returns a root of p(x). 
+
+This creates an algebraic number a, which is a root of the polynomial
+returned in symbolic form.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="aa:=rootOf(a^4+1,a)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+To find the algebraic relation that defines a, use
+<a href="dbopdefiningpolynomial.xhtml">definingPolynomial</a>
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="definingPolynomial aa" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can use a in any further expression, including a nested 
+<a href="dboprootof.xhtml">rootOf</a>.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="bb:=rootOf(b^2-aa-1,b)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Higher powers of the roots are automatically reduced during calculations.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p3','p4']);"
+    value="g:=aa+bb" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p3','p4','p5']);"
+    value="g^5" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopzeroof.xhtml">zeroOf</a> is similar to 
+<a href="dboprootof.xhtml">rootOf</a>, except that it may express the
+root using radicals in some cases.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="rootOf(c^2+c+1,c)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="zeroOf(d^2+d+1,d)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="rootOf(e^5-2,e)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="zeroOf(f^5-2,f)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyroots2.xhtml b/src/axiom-website/hyperdoc/polyroots2.xhtml
new file mode 100644
index 0000000..27ecde7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyroots2.xhtml
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Using All Roots of a Polynomial</div>
+  <hr/>
+Use <a href="dboprootsof.xhtml">rootsOf</a> to get all symbolic roots 
+of a polynomial. The call rootsOf(p,x) returns a list of all the roots
+of p(x). If p(x) has a multiple root of order n, then that root appears
+n times in the list.
+
+Compute all the roots of x^4+1.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="l:=rootsOf(x^4+1,x)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+As a side effect, the variables %x0, %x1, and %x2 are bound to the first
+three roots of x^4+1.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="%x0^5" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Although they all satisfy x^4+1=0, %x0, %x1, and %x2 are different
+algebraic numbers. To find the algebraic relation that defines each of
+them, use <a href="dbopdefiningpolynomial.xhtml">definingPolynomial</a>.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="definingPolynomial %x0" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="definingPolynomial %x1" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p5']);"
+    value="definingPolynomial %x2" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+We can check that the sum and product of the roots of x^4+1 are its
+trace and norm.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p6']);"
+    value="x3:=last l" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p6','p7']);"
+    value="%x0+%x1+%x2+x3" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p6','p8']);"
+    value="%x0*%x1*%x2*x3" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Corresponding to the pair of operations
+<a href="dboprootof.xhtml">rootOf</a> and 
+<a href="dbopzeroof.xhtml">zeroOf</a> in 
+<a href="axbook/section-8.5.xhtml#subsec-8.5.2">
+Solution of a Single Polynomial Equation</a>
+there is an operations <a href="dbopzerosof.xhtml">zerosOf</a> that, like
+<a href="dboprootsof.xhtml">rootsOf</a>, computes all the roots of a given
+polynomial, but which expresses some of them in terms of radicals.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="makeRequest('p9');"
+    value="zerosOf(y^4+1,y)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+As you see, only one implicit algebraic number was created (%y1), and its
+defining equation is this. The other three roots are expressed in radicals.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p9','p10']);"
+    value="definingPolynomial %y1" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyroots3.xhtml b/src/axiom-website/hyperdoc/polyroots3.xhtml
new file mode 100644
index 0000000..582ccdb
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyroots3.xhtml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Solution of a Single Polynomial Equation</div>
+  <hr/>
+Axiom can solve polynomial equations producing either approximate or exact
+solutions. Exact solutions are either members of the ground field or can
+be presented symbolically as roots of irreducible polynomials.
+
+This returns one rational root along with an irreducible polynomial 
+describing the other solutions
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="solve(x^3=8,x)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+If you want solutions expressed in terms of radicals you would use this
+instead.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="radicalSolve(x^3=8,x)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+The <a href="dbopsolve.xhtml">solve</a> command always returns a value but
+<a href="dbopradicalsolve.xhtml">radicalSolve</a> returns only the solutions
+that it is able to express in terms of radicals.
+
+If the polynomial equation has rational coefficients you can ask for
+approximations to its real roots by calling solve with a second argument
+that specifies the "precision" epsilon. This means that each approximation
+will be within plus or minus epsilon of the actual result.
+
+Notice that the type of second argument controls the type of the result.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="solve(x^4-10*x^3+35*x^2-50*x+25,.0001)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+If you give a floating point precision you get a floating point result.
+If you give the precision as a ration number you get a rational result.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="solve(x^2-2,1/1000)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+If you want approximate complex results you should use the command
+<a href="dbopcomplexsolve.xhtml">complexSolve</a> that takes the same
+precision argument epsilon.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="complexSolve(x^3-2,.0001)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Each approximation will be within plus or minus epsilon of the actual result
+in each of the real and imaginary parts.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="complexSolve(x^2-2*%i+1,1/100)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Note that if you omit the = from the first argument Axiom generates
+an equation by equating the first argument to zero. Also, when only one
+variable is present in the equation, you do not need to specify the
+variable to be solved for, that is, you can omit the second argument.
+
+Axiom can also solve equations involving rational functions. Solutions
+where the denominator vanishes are discarded.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="radicalSolve(1/x^3+1/x^2+1/x=0,x)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyroots4.xhtml b/src/axiom-website/hyperdoc/polyroots4.xhtml
new file mode 100644
index 0000000..edc9b2a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyroots4.xhtml
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Solution of Systems of Polynomial Equations</div>
+  <hr/>
+Given a system of equations of rational functions with exact coefficients
+<pre>
+     p1(x1,...,xn)
+         .
+         .
+     pm(x1,...,xn)
+</pre>
+Axiom can find numeric or symbolic solutions. The system is first split 
+into irreducible components, then for each component, a triangular system
+of equations is found that reduces the problem to sequential solutions of
+univariate polynomials resulting from substitution of partial solutions
+from the previous stage.
+<pre>
+     q1(x1,...,xn)
+         .
+         .
+     qm(xn)
+</pre>
+Symbolic solutions can be presented using "implicit" algebraic numbers
+defined as roots of irreducible polynomials or in terms of radicals. Axiom
+can also find approximations to the real or complex roots of a system of
+polynomial equations to any user specified accuracy.
+
+The operation <a href="dbopsolve.xhtml">solve</a> for systems is used in
+a way similar to <a href="dbopsolve.xhtml">solve</a> for single equations.
+Instead of a polynomial equation, one has to give a list of equations and
+instead of a single variable to solve for, a list of variables. For 
+solutions of single equations see
+<a href="axbook/section-8.5.xhtml#subsec-8.5.2">
+Solution of a Single Polynomial Equation</a>
+
+Use the operation <a href="dbopsolve.xhtml">solve</a> if you want
+implicitly presented solutions.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="solve([3*x^2+y+1,y^2-4],[x,y])" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="solve([x=y^2-19,y=z^2+x+3,z=3*x],[x,y,z])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopradialsolve.xhtml">radicalSolve</a> if you want your
+solutions expressed in terms of radicals.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="radicalSolve([3*x^3+y+1,y^2-4],[x,y])" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+To get numeric solutions you only need to give the list of equations and
+the precision desired. The list of variables would be redundant information
+since there can be no parameters for the numerical solver.
+
+If the precision is expressed as a floating point number you get results
+expressed as floats.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="solve([x^2*y-1,x*y^2-2],.01)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+To get complex numeric solutions, use the operation
+<a href="dbopcomplexsolve.xhtml">complexSolve</a>, which takes the same
+arguments as in the real case.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="complexSolve([x^2*y-1,x*y^2-2],1/1000)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+It is also possible to solve systems of equations in rational functions
+over the rational numbers. Note that [x=0.0,a=0.0] is not returned as
+a solution since the denominator vanishes there.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="solve([x^2/a=a,a=a*x],.001)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+When solving equations with denominators, all solutions where the 
+denominator vanishes are discarded.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="radicalSolve([x^2/a+a+y^3-1,a*y+a+1],[x,y])" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyspecifictypes.xhtml b/src/axiom-website/hyperdoc/polyspecifictypes.xhtml
new file mode 100644
index 0000000..6fe3ae4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyspecifictypes.xhtml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">The Specific Polynomial Types</div>
+  <hr/>
+<table>
+ <tr>
+  <td>
+   <a href="polyspecifictypes1.xhtml">
+    Polynomial
+   </a>
+  </td>
+  <td>
+   The general type
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyspecifictypes2.xhtml">
+    UnivariatePolynomial
+   </a>
+  </td>
+  <td>
+   One variable polynomials
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyspecifictypes3.xhtml">
+    MultivariatePolynomial
+   </a>
+  </td>
+  <td>
+   Multiple variable polynomials, recursive structure
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="polyspecifictypes4.xhtml">
+    DistributedMultivariatePolynomial
+   </a>
+  </td>
+   Multiple variable polynomials, non-recursive structure
+  <td>
+  </td>
+ </tr>
+</table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyspecifictypes1.xhtml b/src/axiom-website/hyperdoc/polyspecifictypes1.xhtml
new file mode 100644
index 0000000..30df2d3
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyspecifictypes1.xhtml
@@ -0,0 +1,696 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Polynomial</div>
+  <hr/>
+The domain constructor <a href="db.xhtml?Polynomial">Polynomial</a>
+(abbreviation: <a href="db.xhtml?Polynomial">POLY</a>) provides polynomials
+with an arbitrary number of unspecified variables.
+
+It is used to create the default polynomial domains in Axiom. Here the
+coefficients are integers.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="x+1" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Here the coefficients have type <a href="db.xhtml?Float">Float</a>.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="z-2.3" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+And here we have a polynomial in two variables with coefficients which 
+have type <a href="dbfractioninteger.xhtml">Fraction Integer</a>
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="y^2-z+3/4" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The representation of objects of domains created by 
+<a href="db.xhtml?Polynomial">Polynomial</a> is that of recursive univariate
+polynomials. (The term univariate means "one variable". The term 
+multivariate means "possibly more than one variable".) This recursive
+structure is sometimes obvious from the display of a polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="r:=y^2+x*y+y" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+In this example, you see that the polynomial is stored as a polynomial in y
+with coefficients that are polynomials in x with integer coefficients. In 
+fact, you really don't need to worry about the representation unless you are
+working on an advanced application where it is critical. The polynomial
+types created from
+<a href="db.xhtml?DistributedMultivariatePolynomial">
+DistributedMultivariatePolynomial</a> and
+<a href="db.xhtml?XDistributedPolynomial">XDistributedPolynomial</a> 
+(discussed in
+<a href="axbook/section-9.16.xhtml">"DistributedMultivariatePolynomial"</a>
+are stored and displayed in a
+non-recursive manner. You see a "flat" display of the above polynomial by
+converting to one of those types.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="r::DMP([y,x],INT)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+We will demonstrate many of the polynomial facilities by using two 
+polynomials with integer coefficients. By default, the interpreter 
+expands polynomial expressions, even if they are written in a factored
+format.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="p:=(y-1)^2*x*z" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+See <a href="axbook/section-9.22.xhtml">Factored</a> 
+to see how to create objects in factored form directly.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="q:=(y-1)*x*(z+5)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+The fully factored form can be recovered by using 
+<a href="dbopfactor.xhtml">factor</a>
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p7','p8']);"
+    value="factor(q)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+This is the same name used for the operation to factor integer.
+Such reuse of names is called 
+<a href="glossarypage.xhtml#p36465">overloading</a> and makes it much
+easier to think of solving problems in general ways. Axiom facilities
+for factoring polynomials created with 
+<a href="db.xhtml?Polynomial">Polynomial</a>
+are currently restricted to the integer and rational number coefficients
+cases. There are more complete facilities for factoring univariate
+polynomials (see 
+<a href="axbook/section-8.2.xhtml">Polynomial Factorization</a>)
+
+The standard arithmetic operations are available for polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p6','p7','p9']);"
+    value="p-q^2" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopgcd.xhtml">gcd</a> is used to compute the 
+greated common divisor of two polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p6','p7','p10']);"
+    value="m:=gcd(p,q)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+In the case of p and q, the gcd is obvious from their definitions.
+We factor the gcd to show this relationship better.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p6','p7','p10','p11']);"
+    value="factor m" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+The least common multiple is computed by using 
+<a href="dboplcm.xhtml">lcm</a>.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p6','p7','p12']);"
+    value="lcm(p,q)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+Use <a href="dbopcontent.xhtml">content</a> to compute the greatest common
+divisor of the coefficients of the polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p6','p13']);"
+    value="content p" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+Many of the operations on polynomials require you to specify a variable.
+For example, <a href="dbopresultant.xhtml">resultant</a> requires you to
+give the variable in which the polynomials should be expressed. This 
+computes the resultant of the values of p and q, considering them as
+polynomials in the variable z. They do not share a root when thought
+of as polynomials in z.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p6','p7','p14']);"
+    value="resultant(p,q,z)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+This value is 0 because as polynomials in x the polynomials have a
+common root.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p6','p7','p15']);"
+    value="resultant(p,q,x)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+The data type used for the variables created by 
+<a href="db.xhtml?Polynomial">Polynomial</a> is 
+<a href="db.xhtml?Symbol">Symbol</a>. As mentioned above, the representation
+used by <a href="db.xhtml?Polynomial">Polynomial</a> is recursive and so
+there is a main variable for nonconstant polynomials. The operation
+<a href="dbopmainvariable.xhtml">makeVariable</a> returns this variable.
+The return type is actually a union of <a href="db.xhtml?Symbol">Symbol</a>
+and "failed".
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p6','p16']);"
+    value="mainVariable p" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+The latter branch of the union is used if the polynomial has no
+variables, that is, is a constant.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p6','p17']);"
+    value="ground? p" />
+  <div id="ansp17"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="makeRequest('p18');"
+    value="ground?(1::POLY INT)" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+The complete list of variables actually used in a particular polynomial
+is returned by <a href="dbopvariables.xhtml">variables</a>. For constant
+polynomials, this list is empty.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p6','p19']);"
+    value="variables p" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+The <a href="dbopdegree.xhtml">degree</a> operation returns the degree
+of a polynomial in a specific variable.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="handleFree(['p6','p20']);"
+    value="degree(p,x)" />
+  <div id="ansp20"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="handleFree(['p6','p21']);"
+    value="degree(p,y)" />
+  <div id="ansp21"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p22" class="subbut" 
+    onclick="handleFree(['p6','p22']);"
+    value="degree(p,z)" />
+  <div id="ansp22"><div></div></div>
+ </li>
+</ul>
+If you give a list of variables for the second argument, a list of the
+degrees in those variables is returned.
+<ul>
+ <li>
+  <input type="submit" id="p23" class="subbut" 
+    onclick="handleFree(['p6','p23']);"
+    value="degree(p,[x,y,z])" />
+  <div id="ansp23"><div></div></div>
+ </li>
+</ul>
+The minimum degree of a variable in a polynomial is computed using
+<a href="dbopminimumdegree.xhtml">minimumDegree</a>.
+<ul>
+ <li>
+  <input type="submit" id="p24" class="subbut" 
+    onclick="handleFree(['p6','p24']);"
+    value="minimumDegree(p,z)" />
+  <div id="ansp24"><div></div></div>
+ </li>
+</ul>
+The total degree of a polynomial is returned by
+<a href="dboptotaldegree.xhtml">totalDegree</a>.
+<ul>
+ <li>
+  <input type="submit" id="p25" class="subbut" 
+    onclick="handleFree(['p6','p25']);"
+    value="totalDegree p" />
+  <div id="ansp25"><div></div></div>
+ </li>
+</ul>
+It is often convenient to think of a polynomial as a leading monomial
+plus the remaining terms, using the operation
+<a href="dbopleadingmonomial.xhtml">leadingMonomial</a>
+<ul>
+ <li>
+  <input type="submit" id="p26" class="subbut" 
+    onclick="handleFree(['p6','p26']);"
+    value="leadingMonomial p" />
+  <div id="ansp26"><div></div></div>
+ </li>
+</ul>
+The <a href="dbopreductum.xhtml">reductum</a> operation returns a polynomial
+consisting of the sum of the monomials after the first.
+<ul>
+ <li>
+  <input type="submit" id="p27" class="subbut" 
+    onclick="handleFree(['p6','p27']);"
+    value="reductum p" />
+  <div id="ansp27"><div></div></div>
+ </li>
+</ul>
+These have the obvious relationship that the original polynomial is equal
+to the leading monomial plus the reductum.
+<ul>
+ <li>
+  <input type="submit" id="p28" class="subbut" 
+    onclick="handleFree(['p6','p28']);"
+    value="p-leadingMonomial p - reductum p" />
+  <div id="ansp28"><div></div></div>
+ </li>
+</ul>
+The value returned by <a href="dbopleadingmonomial.xhtml">leadingMonomial</a>
+includes the coefficient of that term. This is extracted by using 
+<a href="dbopleadingcoefficient.xhtml">leadingCoefficient</a> on the 
+original polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p29" class="subbut" 
+    onclick="handleFree(['p6','p29']);"
+    value="leadingCoefficient p" />
+  <div id="ansp29"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopeval.xhtml">eval</a> is used to substitute a 
+value for a varialbe in a polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p30" class="subbut" 
+    onclick="handleFree(['p6','p30']);"
+    value="p" />
+  <div id="ansp30"><div></div></div>
+ </li>
+</ul>
+This value may be another variable, a constant or a polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p31" class="subbut" 
+    onclick="handleFree(['p6','p31']);"
+    value="eval(p,x,w)" />
+  <div id="ansp31"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p32" class="subbut" 
+    onclick="handleFree(['p6','p32']);"
+    value="eval(p,x,1)" />
+  <div id="ansp32"><div></div></div>
+ </li>
+</ul>
+Actually, all the things being substituted are just polynomials, some 
+more trivial than others.
+<ul>
+ <li>
+  <input type="submit" id="p33" class="subbut" 
+    onclick="handleFree(['p6','p33']);"
+    value="eval(p,x,y^2-1)" />
+  <div id="ansp33"><div></div></div>
+ </li>
+</ul>
+Derivatives are computed using the <a href="dbopd.xhtml">D</a> operation.
+<ul>
+ <li>
+  <input type="submit" id="p34" class="subbut" 
+    onclick="handleFree(['p6','p34']);"
+    value="D(p,x)" />
+  <div id="ansp34"><div></div></div>
+ </li>
+</ul>
+The first argument is the polynomial and the second is the variable.
+<ul>
+ <li>
+  <input type="submit" id="p35" class="subbut" 
+    onclick="handleFree(['p6','p35']);"
+    value="D(p,y)" />
+  <div id="ansp35"><div></div></div>
+ </li>
+</ul>
+Even if the polynomial has only one variable, you must specify it.
+<ul>
+ <li>
+  <input type="submit" id="p36" class="subbut" 
+    onclick="handleFree(['p6','p36']);"
+    value="D(p,z)" />
+  <div id="ansp36"><div></div></div>
+ </li>
+</ul>
+Integration of polynomials is similar and the 
+<a href="dbopintegrate.xhtml">integrate</a> operation is used.
+
+Integration requires that the coefficients support division. 
+Consequently, Axiom converts polynomials over the integers to polynomials
+over the rational numbers before integrating them.
+<ul>
+ <li>
+  <input type="submit" id="p37" class="subbut" 
+    onclick="handleFree(['p6','p37']);"
+    value="integrate(p,y)" />
+  <div id="ansp37"><div></div></div>
+ </li>
+</ul>
+It is not possible, in general, to divide two polynomials. In our example
+using polynomials over the integers, the operation
+<a href="dbopmonicdivide.xhtml">monicDivide</a> divides a polynomial by a
+monic polynomial (that is, a polynomial with leading coefficient equal to
+1). The result is a record of the quotient and remainder of the division.
+You must specify the variable in which to express the polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p38" class="subbut" 
+    onclick="handleFree(['p6','p38']);"
+    value="qr:=monicDivide(p,x+1,x)" />
+  <div id="ansp38"><div></div></div>
+ </li>
+</ul>
+The selectors of the components of the record are quotient and
+remainder. Issue this to extract the remainder:
+<ul>
+ <li>
+  <input type="submit" id="p39" class="subbut" 
+    onclick="handleFree(['p6','p38','p39']);"
+    value="qr.remainder" />
+  <div id="ansp39"><div></div></div>
+ </li>
+</ul>
+Now that we can extract the components, we can demonstrate the 
+relationship among them and the arguments to our original expression
+<pre>
+  qr:=monicDivide(p,x+1,x)
+</pre>
+<ul>
+ <li>
+  <input type="submit" id="p40" class="subbut" 
+    onclick="handleFree(['p6','p38','p40']);"
+    value="p-((x+1)*qr.quotient+qr.remainder)" />
+  <div id="ansp40"><div></div></div>
+ </li>
+</ul>
+If the <a href="dbopdivide.xhtml">/</a> operator is used with polynomials,
+a fraction object is created. In this example, the result is an object of
+type 
+<a href="dbfractionpolynomialinteger.xhtml">Fraction Polynomial Integer</a>.
+<ul>
+ <li>
+  <input type="submit" id="p41" class="subbut" 
+    onclick="handleFree(['p6','p7','p41']);"
+    value="p/q" />
+  <div id="ansp41"><div></div></div>
+ </li>
+</ul>
+If you use rational numbers as polynomial coefficients, the resulting
+object is of type 
+<a href="dbpolynomialfractioninteger.xhtml">Polynomial Fraction Integer</a>
+<ul>
+ <li>
+  <input type="submit" id="p42" class="subbut" 
+    onclick="makeRequest('p42');"
+    value="pfi:=(2/3)*x^2-y+4/5" />
+  <div id="ansp42"><div></div></div>
+ </li>
+</ul>
+This can be converted to a fraction of polynomials and back again, if
+required.
+<ul>
+ <li>
+  <input type="submit" id="p43" class="subbut" 
+    onclick="handleFree(['p42','p43']);"
+    value="fpi:=pfi::FRAC POLY INT" />
+  <div id="ansp43"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p44" class="subbut" 
+    onclick="handleFree(['p42','p43','p44']);"
+    value="fpi::POLY FRAC INT" />
+  <div id="ansp44"><div></div></div>
+ </li>
+</ul>
+To convert the coefficients to floating point, map the 
+<a href="dbopnumeric.xhtml">numeric</a> operation on the coefficients
+of the polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p45" class="subbut" 
+    onclick="handleFree(['p42','p45']);"
+    value="map(numeric,pfi)" />
+  <div id="ansp45"><div></div></div>
+ </li>
+</ul>
+For more information on related topcis, see
+<a href="axbook/section-9.83.xhtml">UnivariatePolynomial</a>,
+<a href="axbook/section-9.54.xhtml">MultivariatePolynomial</a>, and
+<a href="axbook/section-9.16.xhtml">DistributedMultivariatePolynomial</a>.
+You can also issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p46" class="subbut" 
+    onclick="showcall('p46');"
+   value=")show Polynomial"/>
+  <div id="ansp46"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?Polynomial">Polynomial</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyspecifictypes2.xhtml b/src/axiom-website/hyperdoc/polyspecifictypes2.xhtml
new file mode 100644
index 0000000..d64240c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyspecifictypes2.xhtml
@@ -0,0 +1,572 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">UnivariatePolynomial</div>
+  <hr/>
+The domain constructor 
+<a href="db.xhtml?UnivariatePolynomial">UnivariatePolynomial</a> 
+(abbreviated <a href="db.xhtml?UnivariatePolynomial">UP</a>)
+creates domains of univariate polynomials in a specified variable.
+For example, the domain UP(a1,POLY FRAC INT) provides polynomials in
+the single variable a1 whose coefficients are general polynomials with
+rational number coefficients.
+<hr/>
+<b>Restriction:</b><br/>
+Axiom does not allow you to create types where
+<a href="db.xhtml?UnivariatePolynomial">UnivariatePolynomial</a> 
+is contained in the coefficient type of 
+<a href="db.xhtml?Polynomial">Polynomial</a>.
+Therefore, UP(x,POLY INT) is legal but POLY UP(x,INT) is not.
+<hr/>
+UP(x,INT) is the domain of polynomials in the single variable x with
+integer coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="(p,q):UP(x,INT)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="p:=(3*x-1)^2*2*(2*x+8)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="q:=(1-6*x+9*x^2)^2" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+The usual arithmetic operations are available for univariate polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4']);"
+    value="p^2+p*q" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+The operation 
+<a href="dbopleadingcoefficient.xhtml">leadingCoefficient</a>
+extracts the coefficient of the term of highest degree.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p5']);"
+    value="leadingCoefficient p" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopdegree.xhtml">degree</a> returns the degree of
+the polynomial. Since the polynomial has only one variable, the variable
+is not supplied to operations like <a href="dbopdegree.xhtml">degree</a>.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p2','p6']);"
+    value="degree p" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+The reductum of the polynomial, the polynomial obtained by subtracting
+the term of highest order, is returned by 
+<a href="dbopreductum.xhtml">reductum</a>.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p7']);"
+    value="reductum p" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopgcd.xhtml">gcd</a> computes the greatest common
+divisor of two polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p8']);"
+    value="gcd(p,q)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboplcm.xhtml">lcm</a> computes the least common 
+multiple.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p9']);"
+    value="lcm(p,q)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopresultant.xhtml">resultant</a> computes the
+resultant of two univariate polynomials. In the case of p and q, the
+resultant is 0 because they share a common root.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p10']);"
+    value="resultant(p,q)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+To compute the derivative of a univariate polynomial with respect to 
+its variable, use <a href="dbopd.xhtml">D</a>.
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p1','p2','p11']);"
+    value="D p" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+Univariate polynomials can also be used as if they were functions.
+To evaluate a univariate polynomial at some point, apply the polynomial
+to the point.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p1','p2','p12']);"
+    value="p(2)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
+The same syntax is used for composing two univariate polynomials, i.e.
+substituting one polynomial for the variable in another. This substitutes q
+for the variable in p.
+<ul>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p13']);"
+    value="p(q)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+</ul>
+This substitutes p for the variable in q.
+<ul>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p14']);"
+    value="q(p)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+</ul>
+To obtain a list of coefficients of the polynomial, use
+<a href="dbopcoefficients.xhtml">coefficients</a>.
+<ul>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p1','p2','p15']);"
+    value="l:=coefficients p" />
+  <div id="ansp15"><div></div></div>
+ </li>
+</ul>
+From this you can use <a href="dbopgcd.xhtml">gcd</a> and
+<a href="dbopreduce.xhtml">reduce</a> to compute the contents of the
+polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p1','p2','p15','p16']);"
+    value="reduce(gcd,l)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Alternatively (and more easily), you can just call
+<a href="dbopcontent.xhtml">content</a>
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    onclick="handleFree(['p1','p2','p17']);"
+    value="content p" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+Note that the operation <a href="dbopcoefficients.xhtml">coefficients</a>
+omits the zero coefficients from the list. Sometimes it is useful to 
+convert a univariate polynomial to a vector whose i-th position contains
+the degree i-1 coefficient of the polynomial.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    onclick="makeRequest('p18');"
+    value="ux:=(x^4+2*x+3)::UP(x,INT)" />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+To get a complete vector of coefficients, use the operation 
+<a href="dbopvectorise.xhtml">vectorise</a>, which takes a univariate
+polynomial and an integer denoting the length of the desired vector.
+<ul>
+ <li>
+  <input type="submit" id="p19" class="subbut" 
+    onclick="handleFree(['p18','p19']);"
+    value="vectorise(ux,5)" />
+  <div id="ansp19"><div></div></div>
+ </li>
+</ul>
+It is common to want to do something to every term of a polynomial, 
+creating a new polynomial in the process. This is a function for
+iterating across the terms of a polynomial, squaring each term.
+<ul>
+ <li>
+  <input type="submit" id="p20" class="subbut" 
+    onclick="makeRequest('p20');"
+    value="squareTerms(m)==reduce(+,[t^2 for t in monomials m])" />
+  <div id="ansp20"><div></div></div>
+ </li>
+</ul>
+Recall what p looked like.
+<ul>
+ <li>
+  <input type="submit" id="p21" class="subbut" 
+    onclick="handleFree(['p1','p2','p21']);"
+    value="p" />
+  <div id="ansp21"><div></div></div>
+ </li>
+</ul>
+We can demonstrate squareTerms on p.
+<ul>
+ <li>
+  <input type="submit" id="p22" class="subbut" 
+    onclick="handleFree(['p1','p2','p20','p22']);"
+    value="squareTerms p" />
+  <div id="ansp22"><div></div></div>
+ </li>
+</ul>
+When the coefficients of the univariate polynomial belong to a field,
+(for example, when the coefficients are rational numbers, as opposed to
+integers. The important property of a field is that non-zero elements can
+be divided and produce another element. The quotient of the integers 2 and 3
+is not another integer.) It is possible to compute quotients and remainders.
+<ul>
+ <li>
+  <input type="submit" id="p23" class="subbut" 
+    onclick="makeRequest('p23');"
+    value="(r,s):UP(a1,FRAC INT)" />
+  <div id="ansp23"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p24" class="subbut" 
+    onclick="handleFree(['p23','p24']);"
+    value="r:=a1^2-2/3" />
+  <div id="ansp24"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p25" class="subbut" 
+    onclick="handleFree(['p23','p25']);"
+    value="s:=a1+4" />
+  <div id="ansp25"><div></div></div>
+ </li>
+</ul>
+When the coefficients are rational numbers or rational expressions, the
+operation <a href="dbopquo.xhtml">quo</a> computes the quotient of two
+polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p26" class="subbut" 
+    onclick="handleFree(['p23','p24','p25','p26']);"
+    value="r quo s" />
+  <div id="ansp26"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dboprem.xhtml">rem</a> computes the remainder.
+<ul>
+ <li>
+  <input type="submit" id="p27" class="subbut" 
+    onclick="handleFree(['p23','p24','p25','p27']);"
+    value="r rem s" />
+  <div id="ansp27"><div></div></div>
+ </li>
+</ul>
+The operation <a href="dbopdivide.xhtml">divide</a> can be used to return
+a record of both components.
+<ul>
+ <li>
+  <input type="submit" id="p28" class="subbut" 
+    onclick="handleFree(['p23','p24','p25','p28']);"
+    value="d:=divide(r,s)" />
+  <div id="ansp28"><div></div></div>
+ </li>
+</ul>
+Now we check the arithmetic.
+<ul>
+ <li>
+  <input type="submit" id="p29" class="subbut" 
+    onclick="handleFree(['p23','p24','p25','p28','p29']);"
+    value="r-(d.quotient*s+d.remainder)" />
+  <div id="ansp29"><div></div></div>
+ </li>
+</ul>
+It is also possible to integrate univariate polynomials when the 
+coefficients belong to a field.
+<ul>
+ <li>
+  <input type="submit" id="p30" class="subbut" 
+    onclick="handleFree(['p23','p24','p30']);"
+    value="integrate r" />
+  <div id="ansp30"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p31" class="subbut" 
+    onclick="handleFree(['p23','p25','p31']);"
+    value="integrate s" />
+  <div id="ansp31"><div></div></div>
+ </li>
+</ul>
+One application of univariate polynomials is to see expressions in terms of
+a specific variable. We start with a polynomial in a1 whose coefficients are
+quotients of polynomials in b1 and b2.
+<ul>
+ <li>
+  <input type="submit" id="p32" class="subbut" 
+    onclick="makeRequest('p32');"
+    value="t:UP(a1,FRAC POLY INT)" />
+  <div id="ansp32"><div></div></div>
+ </li>
+</ul>
+Since in this case we are not talking about using multivariate polynomials
+in only two variables, we use <a href="db.xhtml?Polynomial">Polynomial</a>.
+We also use <a href="db.xhtml?Fraction">Fraction</a> because we want fractions.
+<ul>
+ <li>
+  <input type="submit" id="p33" class="subbut" 
+    onclick="handleFree(['p32','p33']);"
+    value="t:=a1^2-a1/b2+(b1^2-b1)/(b2+3)" />
+  <div id="ansp33"><div></div></div>
+ </li>
+</ul>
+We push all the variables into a single quotient of polynomials.
+<ul>
+ <li>
+  <input type="submit" id="p34" class="subbut" 
+    onclick="handleFree(['p32','p33','p34']);"
+    value="u:FRAC POLY INT:=t" />
+  <div id="ansp34"><div></div></div>
+ </li>
+</ul>
+Alternatively, we can view this as a polynomial in the variable. This is a
+mode-directed conversion: You indicate as much of the structure as you care
+about and let Axiom decide on the full type and how to do the transformation.
+<ul>
+ <li>
+  <input type="submit" id="p35" class="subbut" 
+    onclick="handleFree(['p32','p33','p34','p35']);"
+    value="u::UP(b1,?)" />
+  <div id="ansp35"><div></div></div>
+ </li>
+</ul>
+See <a href="axbook/section-8.2.xhtml">Polynomial Factorization</a> for a
+discussion of the factorization facilities in Axiom for univariate
+polynomials. For more information on related topics, see
+<a href="axbook/section-1.8.xhtml">Polynomials</a>,
+<a href="axbook/section-2.7.xhtml">Conversion</a>,
+<a href="polyspecifictypes1.xhtml">Polynomial</a>,
+<a href="polyspecifictypes3.xhtml">MultivariatePolynomial</a>, and
+<a href="polyspecifictypes4.xhtml">DistributedMultivariatePolynomial</a>.
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p36" class="subbut" 
+    onclick="showcall('p36');"
+   value=")show UnivariatePolynomial"/>
+  <div id="ansp36"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by
+<a href="db.xhtml?UnivariatePolynomial">UnivariatePolynomial</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyspecifictypes3.xhtml b/src/axiom-website/hyperdoc/polyspecifictypes3.xhtml
new file mode 100644
index 0000000..c9ad4ea
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyspecifictypes3.xhtml
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">MultivariatePolynomial</div>
+  <hr/>
+The domain constructor 
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a> is
+similar to <a href="db.xhtml?Polynomial">Polynomial</a> except that it
+specifies the variables to be used. 
+<a href="db.xhtml?Polynomial">Polynomial</a> are available for 
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a>.
+The abbreviation for 
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a> is
+<a href="db.xhtml?MultivariatePolynomial">MPOLY</a>. The type expressions
+<pre>
+   MultivariatePolynomial([x,y],Integer)
+</pre>
+and
+<pre>
+         MPOLY([x,y],INT)
+</pre>
+refer to the domain of multivariate polynomials in the variables x and y
+where the coefficients are restricted to be integers. The first variable
+specified is the main variable and the display of the polynomial reflects
+this. This polynomial appears with terms in descending powers of the 
+variable x.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="m:MPOLY([x,y],INT):=(x^2-x*y^3+3*y)^2" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+It is easy to see a different variable ordering by doing a conversion.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="m::MPOLY([y,x],INT)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You can use other, unspecified variables, by using
+<a href="db.xhtml?Polynomial">Polynomial</a> in the coefficient type of
+<a href="db.xhtml?MultivariatePolynomial">MPOLY</a>.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="p:MPOLY([x,y],POLY INT):=(a^2*x-b*y^2+1)^2" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Conversions can be used to re-express such polynomials in terms of the
+other variables. For example, you can first push all the variables into a
+polynomial with integer coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p3','p4']);"
+    value="u:=p::POLY INT" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Now pull out the variables of interest.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p4','p5']);"
+    value="u::MPOLY([a,b],POLY INT)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+<hr/>
+<b>Restriction:</b> Axiom does not allow you to create types where
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a> is
+contained in the coefficient type of 
+<a href="db.xhtml?Polynomial">Polynomial</a>. Therefore, 
+<pre>
+     MPOLY([x,y],POLY INT)
+</pre>
+is legal but this is not:
+<pre>
+     POLY MPOLY([x,y],INT)n
+</pre>
+<hr/>
+Multivariate polynomials may be combined with univariate polynomials to 
+create types with special structures.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="q:UP(x,FRAC MPOLY([y,z],INT)):=(x^2-x*(z+1)/y+2)^2" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+This is a polynomial in x whose coefficients are quotients of polynomials
+in y and z. Use conversions for the structural rearrangements. z does not
+appear in a denominator and so it can be made the main variable.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p6','p7']);"
+    value="q::UP(z,FRAC MPOLY([x,y],INT))" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Or you can make a multivariate polynomial in x and z whose coefficients
+are fractions in polynomials in y
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p6','p8']);"
+    value="q::MPOLY([x,z],FRAC UP(y,INT))" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+A conversion like 
+<pre>
+  q::MPOLY([x,y],FRAC UP(z,INT))
+</pre>
+is not possible in this example because y appears in the denominator of
+a fraction. As you can see, Axiom provides extraordinary flexibility in
+the manipulation and display of expressions via its conversion facility.
+
+For more information on related topics, see
+<a href="polyspecifictypes1.xhtml">Polynomial</a>,
+<a href="polyspecifictypes2.xhtml">UnivariatePolynomial</a>, and
+<a href="polyspecifictypes4.xhtml">DistributedMultivariatePolynomial</a>.
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="showcall('p9');"
+   value=")show MultivariatePolynomial"/>
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by 
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a>.
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polyspecifictypes4.xhtml b/src/axiom-website/hyperdoc/polyspecifictypes4.xhtml
new file mode 100644
index 0000000..ecbd7e8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polyspecifictypes4.xhtml
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">DistributedMultivariatePolynomial</div>
+  <hr/>
+<a href="db.xhtml?DistributedMultivariatePolynomial">
+DistributedMultivariatePolynomial</a> and
+<a href="db.xhtml?HomogeneousDistributedMultivariatePolynomial">
+HomogeneousDistributedMultivariatePolynomial</a>, abbreviated
+<a href="db.xhtml?DistributedMultivariatePolynomial">DMP</a> and
+<a href="db.xhtml?HomogeneousDistributedMultivariatePolynomial">HDMP</a>
+repspectively, are very similar to 
+<a href="db.xhtml?MultivariatePolynomial">MultivariatePolynomial</a>
+except that they are represented and displayed in a non-recursive manner.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="(d1,d2,d3):DMP([z,y,x],FRAC INT)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+The construction 
+<a href="db.xhtml?DistributedMultivariatePolynomial">DMP</a> orders its 
+monomials lexicographically while
+<a href="db.xhtml?HomogeneousDistributedMultivariatePolynomial">HDMP</a>
+orders them by total order refined by reverse lexicographic order.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="d1:=-4*z+4*y^2*x+16*x^2+1" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="d2:=2*z*y^2+4*x+1" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="d3:=2*z*x^2-2*y^2-x" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+These constructors are mostly used in Groebner basis calculations.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5']);"
+    value="groebner [d1,d2,d3]" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="(n1,n2,n3):HDMP([z,y,x],FRAC INT)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p6','p7']);"
+    value="(n1,n2,n3):=(d1,d2,d3)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+Note that we get a different Groebner basis when we use the 
+<a href="db.xhtml?HomogeneousDistributedMultivariatePolynomial">HDMP</a>
+polynomials, as expected.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p6','p7','p8']);"
+    value="groebner [n1,n2,n3]" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+<a href="db.xhtml?GeneralDistributedMultivariatePolynomial">
+GeneralDistributedMultivariatePolynomial</a> is somewhat more flexible in
+the sense that as well as accepting a list of variables to specify the
+variable ordering, it also takes a predicate on exponent vectors to specify
+the term ordering. With this polynomial type the user can experiment with 
+the effect of using completely arbitrary term orderings. This flexibility
+is mostly important for algorithms such as Groebner basis calculations
+which can be very sensitive to term orderings.
+
+For more information on related topics, see
+<a href="axbook/section-1.8.xhtml">Polynomials</a>,
+<a href="axbook/section-2.7.xhtml">Conversion</a>,
+<a href="polyspecifictypes1.xhtml">Polynomial</a>,
+<a href="polyspecifictypes2.xhtml">UnivariatePolynomial</a>. and
+<a href="polyspecifictypes3.xhtml">MultivariatePolynomial</a>, 
+Issue the system command
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="showcall('p9');"
+   value=")show DistributedMultivariatePolynomial"/>
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+to display the full list of operations defined by
+<a href="db.xhtml?DistributedMultivariatePolynomial">
+DistributedMultivariatePolynomial</a> and
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/polysubstitutions.xhtml b/src/axiom-website/hyperdoc/polysubstitutions.xhtml
new file mode 100644
index 0000000..55d0d3a
--- /dev/null
+++ b/src/axiom-website/hyperdoc/polysubstitutions.xhtml
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+     // This is a hash table of the values we've evaluated.
+     // This is indexed by a string argument. 
+     // A value of 0 means we need to evaluate the expression
+     // A value of 1 means we have evaluated the expression
+   Evaled = new Array();
+     // this says we should modify the page
+   hiding = 'show';
+     // and this is the id of the div tag to modify (defaulted)
+   thediv = 'mathAns';
+     // commandline will mark that its arg has been evaled so we don't repeat
+   function commandline(arg) {
+     Evaled[arg] = 0;  // remember that we have set this value
+     thediv='ans'+arg; // mark where we should put the output
+     var ans = document.getElementById(arg).value;
+     return(ans);
+   }
+   // the function only modifies the page if when we're showing the
+   // final result, otherwise it does nothing.
+   function showanswer(mathString,indiv) {
+     if (hiding == 'show') { // only do something useful if we're showing
+       indiv = thediv;  // override the argument so we can change it
+       var mystr = mathString.split("</div>");
+       for (var i=0; i < mystr.length; i++) {
+         if (mystr[i].indexOf("mathml") > 0) {
+           var mymathstr = mystr[i].concat("</div>");
+         }
+       }
+       // this turns the string into a dom fragment
+       var mathRange = document.createRange();
+       var mathBox=
+               document.createElementNS('http://www.w3.org/1999/xhtml','div');
+       mathRange.selectNodeContents(mathBox);
+       var mymath = mathRange.createContextualFragment(mymathstr);
+       mathBox.appendChild(mymath);
+       // now we need to format it properly
+       // and we stick the result into the requested div block as a child.
+       var mathAns = document.getElementById(indiv);
+       mathAns.removeChild(mathAns.firstChild);
+       mathAns.appendChild(mathBox);
+     }
+   }
+   // this function takes a list of expressions ids to evaluate
+   // the list contains a list of "free" expression ids that need to
+   // be evaluated before the last expression. 
+   // For each expression id, if it has not yet been evaluated we
+   // evaluate it "hidden" otherwise we can skip the expression.
+   // Once we have evaluated all of the free expressions we can
+   // evaluate the final expression and modify the page.
+   function handleFree(arg) {
+     var placename = arg.pop();      // last array val is real
+     var mycnt = arg.length;         // remaining free vars
+       // we handle all of the prerequired expressions quietly
+     hiding = 'hide';
+     for (var i=0; i<mycnt; i++) {   // for each of the free variables
+       if (Evaled[arg[i]] == null) { // if we haven't evaled it
+         Evaled[arg[i]] = 0;         // remember we evaled it
+         makeRequest(arg[i]);        // initialize the free values
+       }
+     }
+       // and now we start talking to the page again
+     hiding = 'show';                // we want to show this
+     thediv = 'ans'+placename;       // at this div id
+     makeRequest(placename);         // and we eval and show it
+   }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body onload="resetvars();">
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <div align="center">Polynomial Evaluation and Substitution</div>
+  <hr/>
+The function <a href="dbopeval.xhtml">eval</a> is used to substitute values
+into polynomials. Here's an example of how to use it:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="p:=x^2+y^2" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="eval(p,x=5)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+This example would give you the value of the polynomial p at 5. You can 
+also substitute into polynomials with several variables. First, specify
+the polynomial, then give a list of the bindings of the form
+<pre>
+  variable = value
+</pre>
+For examples:
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="eval(p,[x=a+b,y=c+d])" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Here x was replaced by a+b, and y was replaced by c+d. 
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="q:=x^3+5*x-y^4" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p4','p5']);"
+    value="eval(q,[x=y,y=x])" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Substitution is done "in parallel". That is, Axiom takes q(x,y) and
+returns q(y,x). 
+
+You can also substitute numerical values for some or all of the variables.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p1','p6']);"
+    value="px:=eval(p,y=sin(2.0))" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p1','p6','p7']);"
+    value="eval(px,x=cos(2.0))" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/puiseuxseries.xhtml b/src/axiom-website/hyperdoc/puiseuxseries.xhtml
new file mode 100644
index 0000000..3923207
--- /dev/null
+++ b/src/axiom-website/hyperdoc/puiseuxseries.xhtml
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function').value;
+    myivar = document.getElementById('ivar').value;
+    mypvar = document.getElementById('pvar').value;
+    myevar = document.getElementById('evar').value;
+    myival = document.getElementById('ival').value;
+    mysval = document.getElementById('sval').value;
+    ans = 'series('+myivar+'+->'+myfunc+','+mypvar+'='+myevar+','+
+         myival+'..,'+mysval+')';
+    alert(ans);
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td>
+      Enter the formula for the general coefficient of the series:
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <input type="text" id="function" size="80" tabindex="10"
+       value="(-1)^((3*n-4)/6)/factorial(n-1/3)"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the index variable for your formula:
+     <input type="text" id="ivar" size="10" tabindex="20" value="n"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the power series variable:
+     <input type="text" id="pvar" size="10" tabindex="30" value="x"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the point about which to expand:
+     <input type="text" id="evar" size="10" tabindex="40" value="0"/>
+    </td>
+   </tr>
+  </table>
+For Puiseux Series, the exponent of the power series variable ranges
+from an initial value, an arbitrary rational number, to plus
+infinity; the step size is any positive rational number.
+  <table>
+   <tr>
+    <td>
+     Enter the initial value of the index (a rational number):
+     <input type="text" id="ival" size="10" tabindex="50" value="4/3"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the step size (a positive rational number):
+     <input type="text" id="sval" size="10" tabindex="60" value="2"/>
+    </td>
+   </tr>
+  </table>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
+
diff --git a/src/axiom-website/hyperdoc/rcm3720.input b/src/axiom-website/hyperdoc/rcm3720.input
new file mode 100644
index 0000000..5177112
--- /dev/null
+++ b/src/axiom-website/hyperdoc/rcm3720.input
@@ -0,0 +1,39 @@
+str2lst(str) == [ord(str.i)-65 for i in 1..#str]
+
+lst2str(lst) == concat [char(lst.i+65)::String for i in 1..#lst]
+
+str2num(str) ==
+  local strlst
+  strlst:=[ord(str.i) for i in 1..#str]
+  return wholeRadix(strlst)$RadixExpansion(256)::INT
+
+num2str(n) ==
+  local tmp
+  tmp:=wholeRagits(n::RadixExpansion(256))
+  return concat [char(tmp.i)::String for i in 1..#tmp]
+
+superIncreasing?(lst) ==
+  reduce(/\,[lst.i>reduce(+,[lst.j for j in 1..i-1]) for i in 2..#lst])
+
+siSolve(lst,n) ==
+  local res,m,i
+  if not superIncreasing?(lst) then error "The list is not super-increasing"
+  m := n
+  res := [0 for i in 1..#lst]
+  for i in #lst..1 by -1 repeat
+    if lst.i <= m then
+      res.i := 1
+      m := m - lst.i
+      if m = 0 then return res
+  error "Unsolvable"
+
+subsetsum(L:List(INT),N:INT):List(INT) ==
+  local x,Y
+  if N=0 then return([])
+  if N<0 or #L=0 then return([-1])
+  for x in L repeat
+    Y:=subsetsum(remove(x,L),N)
+    if Y~=[-1] then return(Y)
+    Y:=subsetsum(remove(x,L),N-x)
+    if Y~=[-1] then return(cons(x,Y))
+    return([-1])
diff --git a/src/axiom-website/hyperdoc/reallimit.xhtml b/src/axiom-website/hyperdoc/reallimit.xhtml
new file mode 100644
index 0000000..ff21001
--- /dev/null
+++ b/src/axiom-website/hyperdoc/reallimit.xhtml
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    var myfunct = myform.expr.value;
+    var myvar = myform.vars.value;
+    var mypoint = "";
+    // decide what the limit point should be
+    var finite = document.getElementById('finite').checked;
+    if (finite == true) 
+      mypoint = document.getElementById('fpoint').value;
+    if (document.getElementById('plus').checked == true) 
+      mypoint = "%plusInfinity";
+    if (document.getElementById('minus').checked == true) 
+      mypoint = "%minusInfinity"; 
+    // decide what the limit statement is
+    if (document.getElementById('both').checked == true) 
+      ans = 'limit('+myform.expr.value+','+myvar+'='+mypoint+')';
+    // note: ignore direction if limit is %plusInfinity
+    if (document.getElementById('right').checked == true) {
+     if (finite == true) {
+       ans = 'limit('+myform.expr.value+','+myvar+'='+mypoint+',"right")';
+     } else {
+       ans = 'limit('+myform.expr.value+','+myvar+'='+mypoint+')';
+     };
+    };
+    // note: ignore direction if limit is %minutInfinity
+    if (document.getElementById('left').checked == true) {
+     if (finite == true) {
+       ans = 'limit('+myform.expr.value+','+myvar+'='+mypoint+',"left")';
+     } else {
+       ans = 'limit('+myform.expr.value+','+myvar+'='+mypoint+')';
+     };
+    };
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <form id="form2">
+   Enter the function you want to compute the limit of:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" 
+     value="x*sin(1/x)"/><br/>
+   Enter the name of the variable:<br/>
+   <input type="text" id="vars" tabindex="20" value="x"/><br/>
+   <input type="radio" id="finite" tabindex="30" checked="checked" 
+     name="point"/>
+    A finite point
+    <input type="text" id="fpoint" tabindex="20" value="0"/><br/>
+   <input type="radio" id="plus" tabindex="40" name="point"/>
+    %plusInfinity<br/>
+   <input type="radio" id="minus" tabindex="50" name="point"/>
+    %minusInfinity<br/><br/><br/>
+   Compute the limit from:<br/>
+   <input type="radio" id="both" tabindex="60" name="direction"
+     checked="checked"/>
+    both directions<br/>
+   <input type="radio" id="right" tabindex="70" name="direction"/>
+    the right<br/>
+   <input type="radio" id="left" tabindex="80" name="direction"/>
+    the left<br/>
+  </form>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
+
diff --git a/src/axiom-website/hyperdoc/refsearchpage.xhtml b/src/axiom-website/hyperdoc/refsearchpage.xhtml
new file mode 100644
index 0000000..7493389
--- /dev/null
+++ b/src/axiom-website/hyperdoc/refsearchpage.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      refsearchpage not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/releasenotes.xhtml b/src/axiom-website/hyperdoc/releasenotes.xhtml
new file mode 100644
index 0000000..2c23962
--- /dev/null
+++ b/src/axiom-website/hyperdoc/releasenotes.xhtml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+The <b>November 2007</b> release of Axiom contains
+<ul>
+ <li>
+   New MathML output mode. This mode allows Axiom to output expressions
+   using standard MathML format. This complements the existing ability
+   to output Fortran, IBM script, Latex, OpenMath, and algebra formats.
+ </li>
+ <li>
+   Ninety-five domains have been documented for the )help command. 
+   Type )help to see the list.
+ </li>
+ <li>
+   New regression tests were added to improve the release testing.
+ </li>
+ <li>
+   Hyperdoc can now be restarted. Type )hd
+ </li>
+ <li>
+   Testing has begun against Spiegel's Mathematical Handbook from the
+   Schaum's Outline Series. These tests include Axiom's solutions and
+   have uncovered mistakes in the published text.
+ </li>
+</ul>
+Bug fixes
+<ul>
+ <li>
+   <b>Bug100</b> integrate((z^a+1)^b,z) no longer loops infinitely.
+ </li>
+ <li>
+   <b>Bug101</b> laplace(log(z),z,w) returns "failed" instead of crashing.
+ </li>
+ <li>
+   <b>Bug103</b> solve(z=z,z) returns the correct answer
+ </li>
+</ul>
+Additional information sources:
+<table>
+ <tr>
+  <td>
+   <a href="http://axiom.axiom-developer.org">
+    <b>Online information is available here</b>
+   </a>
+  </td>
+ </tr>
+ <tr>
+  <td>
+   <a href="CHANGELOG.xhtml">
+    The changelog file contains specific file-by-file changes.
+   </a>
+  </td>
+ </tr>
+</table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/rootpage.xhtml b/src/axiom-website/hyperdoc/rootpage.xhtml
new file mode 100644
index 0000000..f72f3e8
--- /dev/null
+++ b/src/axiom-website/hyperdoc/rootpage.xhtml
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <style>
+   body { background: url(bigbayou.png) no-repeat; }
+  </style>
+ </head>
+ <body>
+ <center><img src="bitmaps/axiom1.bitmap"/></center>
+  What would you like to do?<br/>
+  <table>
+   <tr>
+    <td>
+     <a href="commandline.xhtml">
+      <b>Any Command</b>
+     </a>
+    </td>
+    <td>Try command line input</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="basiccommand.xhtml">
+      <b>Basic Commands</b>
+     </a>
+    </td>
+    <td>Solve problems by filling in templates</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="jenks.xhtml">
+      <b>Axiom Textbook</b>
+     </a>
+    </td>
+    <td>Read Volume 0 -- The Jenks/Sutor Book</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="tutorial.xhtml">
+      <b>Axiom Tutorial</b>
+     </a>
+    </td>
+    <td>Read Volume 1 -- The Tutorial</td>
+   </tr>
+   <tr>
+    <td>
+     <a href="topreferencepage.xhtml">
+      <b>Reference</b>
+     </a>
+    </td>
+    <td>Scan on-line documentation for AXIOM<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="topicspage.xhtml">
+      <b>Topics</b>
+     </a> 
+    </td>
+    <td> Learn how to use Axiom, by topic<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="man0page.xhtml">
+      <b>Browser</b>
+     </a> 
+    </td>
+    <td> Browse through the AXIOM library<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="topexamplepage.xhtml">
+      <b>Examples</b>
+     </a> 
+    </td>
+    <td> See examples of use of the library<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="topsettingspage.xhtml">
+      <b>Settings</b>
+     </a> 
+    </td>
+    <td> Display and change the system environment<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="releasenotes.xhtml">
+      <b>What's New</b>
+     </a>
+    </td>
+    <td> Enhancements in this version of Axiom<br/></td>
+   </tr>
+   <tr>
+    <td>
+     <a href="axiomfonts.xhtml">
+      <b>Fonts</b>
+     </a>
+    </td>
+    <td> Test Axiom Fonts in your Browser<br/></td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/series.xhtml b/src/axiom-website/hyperdoc/series.xhtml
new file mode 100644
index 0000000..d2e82fe
--- /dev/null
+++ b/src/axiom-website/hyperdoc/series.xhtml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  Create a series by
+  <table>
+   <tr>
+    <td width="100">
+     <a href="seriesexpand.xhtml">
+      <b>Expansion</b>
+     </a>
+    </td>
+    <td>
+     Expand a function in a series around a point
+    </td>
+   </tr>
+   <tr>
+    <td width="100">
+     <a href="taylorseries.xhtml">
+      <b>Taylor Series</b>
+     </a>
+    </td>
+    <td><br/>
+     Series where the exponent ranges over the integers from a 
+     non-negative integer value to plus infinity by an arbitrary
+     positive integer step size.
+    </td>
+   </tr>
+   <tr>
+    <td width="100">
+     <a href="laurentseries.xhtml">
+      <b>Laurent Series</b>
+     </a>
+    </td>
+    <td><br/>
+     Series where the exponent ranges from an arbitrary integer value
+     to plus infinity by an arbitrary positive integer step size.
+    </td>
+   </tr>
+   <tr>
+    <td width="100">
+     <a href="puiseuxseries.xhtml">
+      <b>Puiseux Series</b>
+     </a>
+    </td>
+    <td><br/>
+     Series where the exponent ranges from an arbitrary rational value
+     to plus infinity by an arbitrary positive rational number step size.
+    </td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/seriesexpand.xhtml b/src/axiom-website/hyperdoc/seriesexpand.xhtml
new file mode 100644
index 0000000..c43e7ee
--- /dev/null
+++ b/src/axiom-website/hyperdoc/seriesexpand.xhtml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function').value;
+    myvar = document.getElementById('var').value;
+    mypoint = document.getElementById('point').value;
+    ans = 'series('+myfunc+','+myvar+'='+mypoint+')';
+    alert(ans);
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td>
+      What function would you like to expand in a power series?
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <input type="text" id="function" size="80" tabindex="10"
+       value="log(cot(x))"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the power series variable:
+     <input type="text" id="var" size="10" tabindex="20" value="x"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Expand around the point:
+     <input type="text" id="point" size="10" tabindex="30" value="%pi/2"/>
+    </td>
+   </tr>
+  </table>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
+
diff --git a/src/axiom-website/hyperdoc/signatures.txt b/src/axiom-website/hyperdoc/signatures.txt
new file mode 100644
index 0000000..f9cfdf9
--- /dev/null
+++ b/src/axiom-website/hyperdoc/signatures.txt
@@ -0,0 +1,32 @@
+RSA --- 
+n = 2^137-1 e = 17 
+message = "This is my text." 
+signature = 68767027465671577191073128495082795700768 
+n = (6^67-1)/5 e = 17 
+message = "Please feed my dog!" 
+signature = 1703215098456351993605104919259566435843590978852633 
+
+Rabin ----- 
+n = (3^59-1)/2 
+message = "Leave now." 
+signature = 
+n = (7^47-1)/6 
+message = "Arrive Thursday." 
+signature = 189479723122534414019783447271411895509 
+
+El Gamal -------- 
+p = next prime after 2^150 
+a = 2 
+B = 1369851585774063312693119161120024351761244461 
+message = "Leave AT ONCE!" 
+signature r = 1389080525305754392111976715361069425353578198 
+s = 1141326468070168229982976133801721430306004477 
+
+DSS --- 
+p = next prime after 2^170 
+q = 143441505468590696209 
+g = 672396402136852996799074813867123583326389281120278 
+B = 1394256880659595564848116770226045673904445792389839 
+message = "Now's your chance!" 
+signature r = 64609209464638355801 
+s = 13824808741200493330 
diff --git a/src/axiom-website/hyperdoc/solve.xhtml b/src/axiom-website/hyperdoc/solve.xhtml
new file mode 100644
index 0000000..92cf38d
--- /dev/null
+++ b/src/axiom-website/hyperdoc/solve.xhtml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ What do you want to solve?
+  <table>
+   <tr>
+    <td>
+     <a href="solvelinearequations.xhtml">
+      A System of Linear Equations in equation form
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="solvelinearmatrix.xhtml">
+      A System of Linear Equations in matrix form
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="solvesystempolynomials.xhtml">
+      A System of Polynomial Equations
+     </a>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <a href="solvesinglepolynomial.xhtml">
+      A Single Polynomial Equation
+     </a>
+    </td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/solvelinearequations.xhtml b/src/axiom-website/hyperdoc/solvelinearequations.xhtml
new file mode 100644
index 0000000..cb10360
--- /dev/null
+++ b/src/axiom-website/hyperdoc/solvelinearequations.xhtml
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+   function indeps(i) {
+    var ans="";
+    for (var j = 0 ; j < i ; j++) {
+     ans=ans+'x'+j
+     if (j != (i - 1)) ans=ans+',';
+    }
+    return(ans);
+   }
+   function equation(i) {
+    var ans="";
+    for (var j = 0 ; j < i ; j++) {
+     ans=ans+Math.floor(Math.random()*100)+'*x'+j;
+     if (j != (i - 1)) ans=ans+'+';
+    }
+    ans=ans+"="+Math.floor(Math.random()*100);
+    return(ans);
+   }
+   function byelement() {
+      // find out how many rows and columns, must be positive and nonzero
+    var rcnt = parseInt(document.getElementById('rowcnt').value);
+    if (rcnt <= 0) {
+      alert("Rows must be positive and non-zero -- defaulting to 1");
+      rcnt = 1;
+      document.getElementById('rowcnt').value=1;
+      return(false);
+    }
+      // remove the question and the buttons
+    var quest = document.getElementById('question');
+    var clicks = document.getElementById('clicks');
+    quest.removeChild(clicks);
+      // write "Elements"
+    var tbl = document.getElementById('form2');
+    var tblsize = tbl.rows.length;
+    var row = tbl.insertRow(tblsize);
+    var thecell = row.insertCell(0);
+    var tnode = document.createTextNode("Enter the equations:");
+    thecell.appendChild(tnode);
+      // create input boxes for the matrix values
+    for (var i = 0 ; i < rcnt ; i++) {
+     tblsize = tblsize + 1;
+     row = tbl.insertRow(tblsize);
+     thecell = row.insertCell(0);
+     tnode = document.createTextNode('equation '+i+': ');
+     thecell.appendChild(tnode);
+     thecell = row.insertCell(1);
+     tnode = document.createElement('input');
+     tnode.type = 'text';
+     tnode.name = 'a'+i;
+     tnode.id = 'a'+i;
+     tnode.size=50;
+     tnode.value=equation(rcnt);
+     tnode.tabindex=20+i;
+     thecell.appendChild(tnode);
+    }
+      // insert the request for the unknown
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    thecell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the unknowns (comma separated):");
+    thecell.appendChild(tnode);
+    thecell = row.insertCell(1);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'unk';
+    tnode.id = 'unk';
+    tnode.size=10;
+    tnode.value=indeps(rcnt);
+    tnode.tabindex=2000;
+    thecell.appendChild(tnode);
+    tblsize = tblsize + 1;
+      // insert a blank line
+    row = tbl.insertRow(tblsize);
+    thecell = row.insertCell(0);
+    tnode = document.createTextNode("");
+    thecell.appendChild(tnode);
+      // insert the continue button
+    var centnode = document.createElement('center');
+    tbl.parentNode.appendChild(centnode);
+    tnode = document.createElement('input');
+    tnode.type = 'button';
+    tnode.id = 'contbutton';
+    tnode.value = 'Continue';
+    tnode.setAttribute("onclick","makeRequest('');");
+    centnode.appendChild(tnode);
+    return(false);
+   }
+   function commandline(arg) {
+     var rcnt = parseInt(document.getElementById('rowcnt').value);
+     var cmdhead = 'solve(';
+     var cmdtail = '])';
+     var listbody = '[';
+     for (var j = 0 ; j < rcnt ; j++) {
+      var aj = document.getElementById('a'+j).value;
+      listbody = listbody+aj;
+      if (j != (rcnt - 1)) listbody = listbody+',';
+     }
+     listbody = listbody+']';
+     cmdhead = cmdhead+listbody;
+     var ans = cmdhead+',['+document.getElementById('unk').value+cmdtail;
+     alert(ans);
+     return(ans);
+   }
+]]>
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+ <table id="form2">
+  <tr>
+   <td>
+    Enter the number of equations:
+    <input type="text" id="rowcnt" tabindex="10" size="10" value="2"/>
+   </td>
+  </tr>
+ </table>
+ <div id="question">
+  <div id="clicks">
+   <center>
+    <input type="button" value="Continue" onclick="byelement();"/>
+   </center>
+  </div>
+ </div>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/solvelinearmatrix.xhtml b/src/axiom-website/hyperdoc/solvelinearmatrix.xhtml
new file mode 100644
index 0000000..a78d48b
--- /dev/null
+++ b/src/axiom-website/hyperdoc/solvelinearmatrix.xhtml
@@ -0,0 +1,415 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+<![CDATA[
+   function byformula() {
+      // find out how many rows and columns, must be positive and nonzero
+    var rcnt = parseInt(document.getElementById('rowcnt').value);
+     if (rcnt <= 0) {
+      alert("Rows must be positive and non-zero -- defaulting to 1");
+      rcnt = 1;
+      document.getElementById('rowcnt').value=1;
+      return(false);
+     }
+    var ccnt = parseInt(document.getElementById('colcnt').value);
+     if (ccnt <= 0) {
+      alert("Columns must be positive and non-zero -- defaulting to 1");
+      ccnt = 1;
+      document.getElementById('colcnt').value=1;
+      return(false);
+     }
+      // remove the question and the buttons
+    var quest = document.getElementById('question');
+    var clicks = document.getElementById('clicks');
+    quest.removeChild(clicks);
+    var tbl = document.getElementById('form2');
+    var tblsize = tbl.rows.length;
+      // make the row variable question
+      // row variable left cell
+    var row = tbl.insertRow(tblsize);
+    var cell = row.insertCell(0);
+    var tnode = document.createTextNode("Enter the row variable");
+    cell.appendChild(tnode);
+      // row variable right cell
+    cell = row.insertCell(1);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'rowvar';
+    tnode.id = 'rowvar';
+    tnode.size=10;
+    tnode.value='i';
+    tnode.tabindex=21;
+    cell.appendChild(tnode);
+      // make the column variable question
+      // column variable left cell
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the column variable");
+    cell.appendChild(tnode);
+      // column variable right cell
+    cell = row.insertCell(1);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'colvar';
+    tnode.id = 'colvar';
+    tnode.size=10;
+    tnode.tabindex=22;
+    tnode.value='j';
+    cell.appendChild(tnode);
+      // make the formula question
+      // column variable left cell
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the formulas for the elements");
+    cell.appendChild(tnode);
+      // formula input field
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'formula1';
+    tnode.id = 'formula1';
+    tnode.size=50;
+    tnode.value = '1/(x-i-j-1)';
+    tnode.tabindex=23;
+    cell.appendChild(tnode);
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createTextNode("Enter the vector, one per row:");
+    cell.appendChild(tnode);
+      // formula input field
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'text';
+    tnode.name = 'vec1';
+    tnode.id = 'vec1';
+    tnode.size=70;
+    tnode.value = '3,5';
+    tnode.tabindex=24;
+    cell.appendChild(tnode);
+      // insert the continue button
+    tblsize = tblsize + 1;
+    row = tbl.insertRow(tblsize);
+    cell = row.insertCell(0);
+    tnode = document.createElement('input');
+    tnode.type = 'button';
+    tnode.id = 'contbutton';
+    tnode.value = 'Continue';
+    tnode.setAttribute("onclick","makeRequest('formula');");
+    tnode.tabindex=24;
+    cell.appendChild(tnode);
+    return(false);
+   }
+   function byelement() {
+      // find out how many rows and columns, must be positive and nonzero
+    var rcnt = parseInt(document.getElementById('rowcnt').value);
+     if (rcnt <= 0) {
+      alert("Rows must be positive and non-zero -- defaulting to 1");
+      rcnt = 1;
+      document.getElementById('rowcnt').value=1;
+      return(false);
+     }
+    var ccnt = parseInt(document.getElementById('colcnt').value);
+     if (ccnt <= 0) {
+      alert("Columns must be positive and non-zero -- defaulting to 1");
+      ccnt = 1;
+      document.getElementById('colcnt').value=1;
+      return(false);
+     }
+      // remove the question and the buttons
+    var quest = document.getElementById('question');
+    var clicks = document.getElementById('clicks');
+    quest.removeChild(clicks);
+      // write "Elements"
+    var tbl = document.getElementById('form2');
+    var tblsize = tbl.rows.length;
+    var row = tbl.insertRow(tblsize);
+    var thecell = row.insertCell(0);
+    var tnode = document.createTextNode("Elements");
+    thecell.appendChild(tnode);
+      // create input boxes for the matrix values
+    tblsize = tblsize + 1;
+    for (var i = 0 ; i < rcnt ; i++) {
+     row = tbl.insertRow(tblsize);
+     for (var j = 0 ; j < ccnt ; j++) {
+      thecell = row.insertCell(j);
+      tnode = document.createElement('input');
+      tnode.type = 'text';
+      tnode.name = 'a'+i+'c'+j;
+      tnode.id = 'a'+i+'c'+j;
+      tnode.size=10;
+      tnode.tabindex=20+(i*10)+j;
+      thecell.appendChild(tnode);
+     }
+      thecell = row.insertCell(j);
+      tnode = document.createTextNode(' = ');
+      thecell.appendChild(tnode);
+      thecell = row.insertCell(j+1);
+      tnode = document.createElement('input');
+      tnode.type = 'text';
+      tnode.name = 'k'+i;
+      tnode.id = 'k'+i;
+      tnode.size=10;
+      tnode.value='0';
+      tnode.tabindex=20+(i*10)+j+10;
+      thecell.appendChild(tnode);
+      tblsize = tblsize + 1;
+    }
+      // insert a blank line
+    row = tbl.insertRow(tblsize);
+    thecell = row.insertCell(0);
+    tnode = document.createTextNode("");
+    thecell.appendChild(tnode);
+      // insert the continue button
+    var centnode = document.createElement('center');
+    tbl.parentNode.appendChild(centnode);
+    tnode = document.createElement('input');
+    tnode.type = 'button';
+    tnode.id = 'contbutton';
+    tnode.value = 'Continue';
+    tnode.setAttribute("onclick","makeRequest('element');");
+    centnode.appendChild(tnode);
+    return(false);
+   }
+   function commandline(arg) {
+    if (arg == 'element') {
+     var rcnt = parseInt(document.getElementById('rowcnt').value);
+     var ccnt = parseInt(document.getElementById('colcnt').value);
+      // get the right side vector into list form
+     var vecbody = '[';
+     var homogeneous = true;
+     for (var k = 0 ; k < rcnt ; k++) {
+       var ki = document.getElementById('k'+k).value;
+         // is it homogeneous?
+       if (parseInt(ki) != 0) homogeneous = false;
+       vecbody = vecbody+ki;
+       if (k != (rcnt - 1)) vecbody = vecbody+',';
+     }
+     vecbody = vecbody+']';
+     alert('vecbody='+vecbody);
+       // get the matrix elements, make them into lists of lists
+     var listbody = '';
+     for (var i = 0 ; i < rcnt ; i++) {
+      var listbody = listbody+'[';
+      for (var j = 0 ; j < ccnt ; j++) {
+       var aij = document.getElementById('a'+i+'c'+j).value;
+       listbody = listbody+aij;
+       if (j != (ccnt - 1)) listbody = listbody+',';
+      }
+      listbody = listbody+']';
+      if (i != (rcnt - 1)) listbody = listbody+',';
+     }
+     var matcmd = 'matrix(['+listbody+'])';
+     alert('matcmd='+matcmd);
+      // now we decide whether to compute the nullSpace or solve
+     if (homogeneous == true) 
+       cmd = 'nullSpace('+matcmd+')';
+     else
+       cmd = 'solve('+matcmd+','+vecbody+')';
+     alert(cmd);
+     return(cmd);
+    } else {
+     var rcnt = parseInt(document.getElementById('rowcnt').value);
+     var ccnt = parseInt(document.getElementById('colcnt').value);
+     var vec = '['+document.getElementById('vec1').value+']';
+     var cmdhead = 'matrix([[';
+     var cmdtail = '])';
+     var formula = document.getElementById('formula1').value;
+     var rowv = document.getElementById('rowvar').value;
+     var colv = document.getElementById('colvar').value;
+     var cmd = cmdhead+formula+' for '+colv+' in 1..'+ccnt+']'+
+                               ' for '+rowv+' in 1..'+rcnt+cmdtail;
+     return(cmd);
+    }
+   }
+]]>
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+Enter the size of the matrix:
+<table id="form2">
+ <tr>
+  <td size="10">Rows</td>
+  <td><input type="text" id="rowcnt" tabindex="10" size="10" value="2"/></td>
+ </tr>
+ <tr>
+  <td>Columns</td>
+  <td><input type="text" id="colcnt" tabindex="20" size="10" value="3"/></td>
+ </tr>
+</table>
+<div id="question">
+ <div id="clicks">
+  How would you like to enter the matrix elements?
+  <center>
+   <input type="button" value="By Formula" onclick="byformula();"/>
+   <input type="button" value="By Element" onclick="byelement();"/>
+  </center>
+ </div>
+</div>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/solvesinglepolynomial.xhtml b/src/axiom-website/hyperdoc/solvesinglepolynomial.xhtml
new file mode 100644
index 0000000..e4af874
--- /dev/null
+++ b/src/axiom-website/hyperdoc/solvesinglepolynomial.xhtml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      solvesinglepolynomial.xhtml not implemented
+ </body>
+</html>
+
diff --git a/src/axiom-website/hyperdoc/solvesystempolynomials.xhtml b/src/axiom-website/hyperdoc/solvesystempolynomials.xhtml
new file mode 100644
index 0000000..c95bd20
--- /dev/null
+++ b/src/axiom-website/hyperdoc/solvesystempolynomials.xhtml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+     solvesystempolynomials.xhtml  not implemented
+ </body>
+</html>
+
diff --git a/src/axiom-website/hyperdoc/strang.input b/src/axiom-website/hyperdoc/strang.input
new file mode 100644
index 0000000..da18f64
--- /dev/null
+++ b/src/axiom-website/hyperdoc/strang.input
@@ -0,0 +1,30 @@
+rowmatrix(r:List(Fraction(Integer))):Matrix(Fraction(Integer)) ==
+ [r]::Matrix(Fraction(Integer))
+
+columnmatrix(c:List(Fraction(Integer))):Matrix(Fraction(Integer)) ==
+ [[i] for i in c]::Matrix(Fraction(Integer))
+
+k(n) == 
+ M := diagonalMatrix([2 for i in 1..n]) 
+ for i in 1..n-1 repeat M(i,i+1):=-1 
+ for i in 1..n-1 repeat M(i+1,i):=-1 
+ M::SquareMatrix(n,Fraction(Integer))
+
+t(n) == 
+ M:=k(n)
+ N:=M::Matrix(Fraction(Integer)) 
+ qsetelt!(N,1,1,1) 
+ N::SquareMatrix(n,Fraction(Integer))
+
+b(n) == 
+ M:=k(n)
+ N:=M::Matrix(Fraction(Integer)) 
+ qsetelt!(N,1,1,1) 
+ qsetelt!(N,n,n,1)
+ N::SquareMatrix(n,Fraction(Integer))
+
+K:=k(3)
+T:=t(3)
+B:=b(3)
+
+
diff --git a/src/axiom-website/hyperdoc/summation.xhtml b/src/axiom-website/hyperdoc/summation.xhtml
new file mode 100644
index 0000000..28c1ba4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/summation.xhtml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    var myform = document.getElementById("form2");
+    return('sum('+myform.expr.value+','+myform.vars.value+'='+
+                  myform.lower.value+'..'+myform.upper.value+')');
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <form id="form2">
+   Enter the function you want to sum:<br/>
+   <input type="text" id="expr" tabindex="10" size="50" value="i^3"/><br/>
+   Enter the summation index:
+   <input type="text" id="vars" tabindex="20" value="i" size="5"/><br/>
+   Enter the limits of the sum: From:
+   <input type="text" id="lower" tabindex="30" value="1" size="5"/>
+   To:
+   <input type="text" id="upper" tabindex="40" value="n" size="5"/><br/>
+  </form>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/systemvariables.xhtml b/src/axiom-website/hyperdoc/systemvariables.xhtml
new file mode 100644
index 0000000..fa3d8e4
--- /dev/null
+++ b/src/axiom-website/hyperdoc/systemvariables.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      systemvariables not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/taylorseries.xhtml b/src/axiom-website/hyperdoc/taylorseries.xhtml
new file mode 100644
index 0000000..bd26009
--- /dev/null
+++ b/src/axiom-website/hyperdoc/taylorseries.xhtml
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+  <script type="text/javascript">
+   function commandline(arg) {
+    myfunc = document.getElementById('function').value;
+    myivar = document.getElementById('ivar').value;
+    mypvar = document.getElementById('pvar').value;
+    myevar = document.getElementById('evar').value;
+    myival = document.getElementById('ival').value;
+    mysval = document.getElementById('sval').value;
+    ans = 'series('+myivar+'+->'+myfunc+','+mypvar+'='+myevar+','+
+         myival+'..,'+mysval+')';
+    alert(ans);
+    return(ans);
+   }
+// The structure returned from Axiom now is
+// <div class="stepnum"></div>
+// <div class="command"></div>
+// <div class="algebra"></div>
+// <div class="mathml"></div>
+// <div class="type"></div>
+// This function will format the output as a console session
+<![CDATA[
+ function showanswer(mathString,indiv) {
+    var mystr = mathString.split("</div>");
+      // first we prepare the step number
+    var mystept1 = mystr[0].lastIndexOf(">");
+    var mystepstr = mystr[0].substr(mystept1+1);
+      // now we get the command
+    var mycmdt1 = mystr[1].lastIndexOf(">");
+    var mycmdstr = mystr[1].substr(mycmdt1+1);
+    var myprompt = '('+mystepstr+') -> '+mycmdstr;
+      // now we handle the mathml
+    var mymathstr = mystr[3].concat("</div>");
+      // and the type, we need to insert the string "Type: "
+    var mytypet1 = mystr[4].lastIndexOf(">");
+    var mytypet2 = mystr[4].substr(mytypet1+1).concat("</div>");
+    var mytypestr = '<div> Type: '.concat(mytypet2);
+      // bang the whole thing together
+    var finaldiv='<div class="command">'+myprompt+'</div>'+mymathstr+mytypestr;
+      // this turns the string into a dom fragment
+    var mathRange = document.createRange();
+    var mathBox=document.createElementNS('http://www.w3.org/1999/xhtml','div');
+    mathRange.selectNodeContents(mathBox);
+    var answer = mathRange.createContextualFragment(finaldiv);
+    mathBox.appendChild(answer);
+      // and we stick the result into the requested div block as a child.
+    var mathAns = document.getElementById(indiv);
+    mathAns.removeChild(mathAns.firstChild);
+    mathAns.appendChild(mathBox);
+ }
+]]>
+<![CDATA[
+  function ignoreResponse() {}
+  function resetvars() {
+    http_request = new XMLHttpRequest();         
+    http_request.open('POST', '127.0.0.1:8085', true);
+    http_request.onreadystatechange = ignoreResponse;
+    http_request.setRequestHeader('Content-Type', 'text/plain');
+    http_request.send("command=)clear all");
+    return(false);
+  }
+]]>
+ function init() {
+ }
+ function makeRequest(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("command="+command);
+   return(false);
+ }
+ function lispcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("lispcall="+command);
+   return(false);
+ }
+ function showcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("showcall="+command);
+   return(false);
+ }
+ function interpcall(arg) {
+   http_request = new XMLHttpRequest();         
+   var command = commandline(arg);
+   //alert(command);
+   http_request.open('POST', '127.0.0.1:8085', true);
+   http_request.onreadystatechange = handleResponse;
+   http_request.setRequestHeader('Content-Type', 'text/plain');
+   http_request.send("interpcall="+command);
+   return(false);
+ }
+ function handleResponse() {
+  if (http_request.readyState == 4) {
+   if (http_request.status == 200) {
+    showanswer(http_request.responseText,'mathAns');
+   } else
+   {
+     alert('There was a problem with the request.'+ http_request.statusText);
+   }
+  }
+ }
+
+  </script>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td>
+      Enter the formula for the general coefficient of the series:
+    </td>
+   </tr>
+   <tr>
+    <td>
+     <input type="text" id="function" size="80" tabindex="10"
+       value="1/factorial(i)"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the index variable for your formula:
+     <input type="text" id="ivar" size="10" tabindex="20" value="i"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the power series variable:
+     <input type="text" id="pvar" size="10" tabindex="30" value="x"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the point about which to expand:
+     <input type="text" id="evar" size="10" tabindex="40" value="0"/>
+    </td>
+   </tr>
+  </table>
+For Taylor Series, the exponent of the power series variable ranges
+from an initial value, an arbitrary non-negative integer, to plus
+infinity; the step size is any positive integer.
+  <table>
+   <tr>
+    <td>
+     Enter the initial value of the index (an integer):
+     <input type="text" id="ival" size="10" tabindex="50" value="0"/>
+    </td>
+   </tr>
+   <tr>
+    <td>
+     Enter the step size (a positive integer):
+     <input type="text" id="sval" size="10" tabindex="60" value="1"/>
+    </td>
+   </tr>
+  </table>
+   <center>
+     <input type="button" value="Continue" name="continue" 
+       onclick="javascript:makeRequest('');"/>
+   </center>
+  <div id="mathAns"><div></div></div>
+ </body>
+</html>
+
diff --git a/src/axiom-website/hyperdoc/topexamplepage.xhtml b/src/axiom-website/hyperdoc/topexamplepage.xhtml
new file mode 100644
index 0000000..750b008
--- /dev/null
+++ b/src/axiom-website/hyperdoc/topexamplepage.xhtml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td><a href="graphicsexamplepage.xhtml"><b>Graphics</b></a></td>
+    <td>Examples of Axiom Graphics</td>
+   </tr>
+   <tr>
+    <td><a href="examplesexposedpage.xhtml"><b>Domains</b></a></td>
+    <td>Examples of use of Axiom domains and packages</td>
+   </tr>
+   <tr>
+    <td><a href="examplecoverpage.xhtml"><b>Operations</b></a></td>
+    <td>Examples of Axiom Operations, by topic</td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/topicspage.xhtml b/src/axiom-website/hyperdoc/topicspage.xhtml
new file mode 100644
index 0000000..3847a33
--- /dev/null
+++ b/src/axiom-website/hyperdoc/topicspage.xhtml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td><a href="numberspage.xhtml"><b>Numbers</b></a></td>
+    <td>A look at different types of numbers</td>
+   </tr>
+   <tr>
+    <td><a href="polynomialpage.xhtml"><b>Polynomials</b></a></td>
+    <td>Polynomials in Axiom</td>
+   </tr>
+   <tr>
+    <td><a href="functionpage.xhtml"><b>Functions</b></a></td>
+    <td>Built-in and user-defined functions</td>
+   </tr>
+   <tr>
+    <td><a href="equationpage.xhtml"><b>Solving Equations</b></a></td>
+    <td>Facilities for solving equations</td>
+   </tr>
+   <tr>
+    <td><a href="calculuspage.xhtml"><b>Calculus</b></a></td>
+    <td>Using Axiom to do calculus</td>
+   </tr>
+   <tr>
+    <td><a href="linalgpage.xhtml"><b>Linear Algebra</b></a></td>
+    <td>Axiom's linear algebra facilities</td>
+   </tr>
+   <tr>
+    <td><a href="graphicspage.xhtml"><b>Graphics</b></a></td>
+    <td>Axiom's graphics facilities</td>
+   </tr>
+   <tr>
+    <td><a href="algebrapage.xhtml"><b>Algebra</b></a></td>
+    <td>Axiom's abstract algebra facilities</td>
+   </tr>
+   <tr>
+    <td><a href="cryptopage.xhtml"><b>Cryptography</b></a></td>
+    <td>Alasdair McAndrew's Crytography Course Notes</td>
+   </tr>
+   <tr>
+    <td><a href="ocwmit18085.xhtml"><b>Mathematical Methods</b></a></td>
+    <td>MIT 18-08 Mathematical Methods for Engineers Course Notes</td>
+   </tr>
+   <tr>
+    <td><a href="cats.xhtml"><b>CATS</b></a></td>
+    <td>Computer Algebra Test Suite</td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/topreferencepage.xhtml b/src/axiom-website/hyperdoc/topreferencepage.xhtml
new file mode 100644
index 0000000..84b73da
--- /dev/null
+++ b/src/axiom-website/hyperdoc/topreferencepage.xhtml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+  <table>
+   <tr>
+    <td><a href="usersguidepage.xhtml"><b>AXIOM Book</b></a></td>
+    <td>The on-line version of the Jenks/Sutor book.</td>
+   </tr>
+   <tr>
+    <td><a href="aldorusersguidepage.xhtml"><b>Aldor Guide</b></a></td>
+    <td>The on-line Aldor Users Guide.</td>
+   </tr>
+   <tr>
+    <td><a href="foundationlibrarydocpage.xhtml"><b>NAG Library</b></a></td>
+    <td>The on-line NAG Library documentation.</td>
+   </tr>
+   <tr>
+    <td><a href="topicspage.xhtml"><b>Topics</b></a></td>
+    <td>Learn how to use Axiom, by topic.</td>
+   </tr>
+   <tr>
+    <td><a href="uglangpage.xhtml"><b>Language</b></a></td>
+    <td>Introduction to the Axiom language.</td>
+   </tr>
+   <tr>
+    <td><a href="examplesexposedpage.xhtml"><b>Examples</b></a></td>
+    <td>Examples for exposed domains and packages</td>
+   </tr>
+   <tr>
+    <td><a href="ugsyscmdpage.xhtml"><b>Commands</b></a></td>
+    <td>System commands that control your workspace.</td>
+   </tr>
+   <tr>
+    <td><a href="operations.xhtml"><b>Operations</b></a></td>
+    <td>A guide to useful operations</td>
+   </tr>
+   <tr>
+     <td><a href="systemvariables.xhtml"><b>System Variables</b></a></td>
+    <td>View and change a system-defined variable</td>
+   </tr>
+   <tr>
+    <td><a href="glossarypage.xhtml"><b>Glossary</b></a></td>
+    <td>A glossary of Axiom terms.</td>
+   </tr>
+   <tr>
+    <td><a href="htxtoppage.xhtml"><b>HyperDoc</b></a></td>
+    <td>How to write your own HyperDoc pages.</td>
+   </tr>
+   <tr>
+    <td><a href="refsearchpage.xhtml"><b>Search</b></a></td>
+    <td>Reference pages for occurrences of a string.</td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/topsettingspage.xhtml b/src/axiom-website/hyperdoc/topsettingspage.xhtml
new file mode 100644
index 0000000..5310e57
--- /dev/null
+++ b/src/axiom-website/hyperdoc/topsettingspage.xhtml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+System commands are used to perform Axiom environment
+management and change Axiom system variables.
+  <hr/>
+  <table>
+   <tr>
+    <td><a href="ugsyscmdpage.xhtml"><b>Commands</b></a></td>
+    <td>System commands that control your environment.</td>
+   </tr>
+   <tr>
+    <td><a href="htSystemVariables.js"><b>Settings</b></a></td>
+    <td>Change an Axiom variable.</td>
+   </tr>
+  </table>
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/tutorial.xhtml b/src/axiom-website/hyperdoc/tutorial.xhtml
new file mode 100644
index 0000000..aee180c
--- /dev/null
+++ b/src/axiom-website/hyperdoc/tutorial.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      tutorial not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/uglangpage.xhtml b/src/axiom-website/hyperdoc/uglangpage.xhtml
new file mode 100644
index 0000000..5e29451
--- /dev/null
+++ b/src/axiom-website/hyperdoc/uglangpage.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      uglangpage not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/ugsyscmdpage.xhtml b/src/axiom-website/hyperdoc/ugsyscmdpage.xhtml
new file mode 100644
index 0000000..8db9cf7
--- /dev/null
+++ b/src/axiom-website/hyperdoc/ugsyscmdpage.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      ugsyscmdpage not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/hyperdoc/usersguidepage.xhtml b/src/axiom-website/hyperdoc/usersguidepage.xhtml
new file mode 100644
index 0000000..f0ded87
--- /dev/null
+++ b/src/axiom-website/hyperdoc/usersguidepage.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:m="http://www.w3.org/1998/Math/MathML">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
+  <title>Axiom Documentation</title>
+  <style>
+
+   html {
+     background-color: #FFFF66;
+   }
+
+   body { 
+     margin: 0px;
+     padding: 0px;
+   }
+
+   div.command { 
+     color:red;
+   }
+
+   div.center {
+     color:blue;
+   }
+
+   div.reset {
+     visibility:hidden;
+   }
+
+   div.mathml { 
+     color:blue;
+   }
+
+   input.subbut {
+     background-color:#FFFF66;
+     border: 0;
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   input.noresult {
+     background-color:#FFFF66;
+     border: 0;
+     color:black;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   span.cmd { 
+     color:green;
+     font-family: "Courier New", Courier, monospace;
+   }
+
+   pre {
+     font-family: "Courier New", Courier, monospace;
+   }
+  </style>
+ </head>
+ <body>
+  <div align="center"><img align="middle" src="doctitle.png"/></div>
+  <hr/>
+      usersguidepage not implemented
+ </body>
+</html>
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 389c28e..a31ede6 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2320,5 +2320,7 @@ books/bookvol10.4 document RepeatedSquaring<br/>
 books/bookvol5 tree shake code from cformat, remove cformat.lisp<br/>
 <a href="patches/20091219.01.lxd.patch">20091219.01.lxd.patch</a>
 books/bookvol0,1,7.1 Lee Duham fix typos, added to credits<br/>
+<a href="patches/20091219.02.tpd.patch">20091219.02.tpd.patch</a>
+src/axiom-website/hyperdoc brought under git source control<br/>
  </body>
 </html>
